38 lines
808 B
C
38 lines
808 B
C
void
|
|
f (n, ppt, xrot)
|
|
{
|
|
int tileWidth;
|
|
int nlwSrc;
|
|
int srcx;
|
|
int v3, v4;
|
|
register unsigned long ca1, cx1, ca2, cx2;
|
|
unsigned long *pSrcLine;
|
|
register unsigned long *pDst;
|
|
register unsigned long *pSrc;
|
|
register unsigned long b, tmp;
|
|
unsigned long tileEndMask;
|
|
int v1, v2;
|
|
int tileEndPart;
|
|
int needFirst;
|
|
tileEndPart = 0;
|
|
v1 = tileEndPart << 5;
|
|
v2 = 32 - v1;
|
|
while (n--)
|
|
{
|
|
if ((srcx = (ppt - xrot) % tileWidth) < 0)
|
|
if (needFirst)
|
|
if (nlwSrc == 1)
|
|
{
|
|
tmp = b;
|
|
if (tileEndPart)
|
|
b = (*pSrc & tileEndMask) | (*pSrcLine >> v1);
|
|
}
|
|
if (tileEndPart)
|
|
b = (tmp << v1) | (b >> v2);
|
|
if (v4 != 32)
|
|
*pDst = (*pDst & ((tmp << v3) | (b >> v4) & ca1 ^ cx1)
|
|
^ (((tmp << v3) | (b >> v4)) & ca2 ^ cx2));
|
|
*pDst = *pDst & tmp;
|
|
}
|
|
}
|