



for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
tX = (x * cos(iAngle) - y * sin(iAngle)) % iTileSizeX;
tY = (x * sin(iAngle) + y * cos(iAngle)) % iTileSizeY;
pSurface[y * lSurfacePitch + x] = iTileBuf[tY * iTileSizeX + tX];
}
}
|

iHorizontalIncX = cos(iAngle);
iHorizontalIncY = sin(iAngle);
tX = 0;
tY = 0;
for(int x=0;x<iViewWidth;x++){
pSurface[y * lSurfacePitch + x] = iTileBuf[tY * iTileSizeX + tX];
tX = (tX + iHorizontalIncX) % iTileSizeX;
tY = (tY + iHorizontalIncY) % iTileSizeY;
}
|

iHorizontalIncX = cos(iAngle);
iHorizontalIncY = sin(iAngle);
iVerticalIncX = -sin(iAngle);
iVerticalIncY = cos(iAngle);
tX = iTileStartX = 0;
tY = iTileStartY = 0;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
pSurface[y * lSurfacePitch + x] = iTileBuf[tY * iTileSizeX + tX];
tX = (tX + iHorizontalIncX) % iTileSizeX;
tY = (tY + iHorizontalIncY) % iTileSizeY;
}
tX = iTileStartX = (iTileStartX + iVerticalIncX) % iTileSizeX;
tY = iTileStartY = (iTileStartY + iVerticalIncY) % iTileSizeY;
}
|
lSurfacePitch -= iViewWidth;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
*pSurface = iTileBuf[tY * iTileSizeX + tX];
pSurface++;
tX = (tX + iHorizontalIncX) % iTileSizeX;
tY = (tY + iHorizontalIncY) % iTileSizeY;
}
pSurface += lSurfacePitch;
tX = iTileStartX = (iTileStartX + iVerticalIncX) % iTileSizeX;
tY = iTileStartY = (iTileStartY + iVerticalIncY) % iTileSizeY;
}
|
iHorizontalIncX = (int)(256 * cos(iAngle));
iHorizontalIncY = (int)(256 * sin(iAngle));
iVerticalIncX = -iHorizontalIncY;
iVerticalIncY = iHorizontalIncX;
tX = iTileStartX = 0;
tY = iTileStartY = 0;
lSurfacePitch -= iViewWidth;
iTileSizeMaskX = iTileSizeX <<8;
iTileSizeMaskY = iTileSizeY <<8;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
*pSurface = iTileBuf[(tY >>8) * iTileSizeX + (tX >>8)];
pSurface++;
tX = (tX + iHorizontalIncX) % iTileSizeMaskX;
tY = (tY + iHorizontalIncY) % iTileSizeMaskY;
}
pSurface += lSurfacePitch;
tX = iTileStartX = (iTileStartX + iVerticalIncX) % iTileSizeMaskX;
tY = iTileStartY = (iTileStartY + iVerticalIncY) % iTileSizeMaskY;
}
|
iHorizontalIncX = (int)(256 * cos(iAngle)); iHorizontalIncY = (int)(256 * sin(iAngle)); iVerticalIncX = -iHorizontalIncY; iVerticalIncY = iHorizontalIncX; tX = iTileStartX = 0; tY = iTileStartY = 0; lSurfacePitch -= iViewWidth; iTileSizeMaskX = (iTileSizeX <<8) -1; |
iHorizontalIncX = (int)(64 * cos(iAngle));
iHorizontalIncY = (int)(64 * sin(iAngle));
iVerticalIncX = -iHorizontalIncY;
iVerticalIncY = iHorizontalIncX;
tX = iTileStartX = 0;
tY = iTileStartY = 0;
lSurfacePitch -= iViewWidth;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
*pSurface = iTileBuf[(tY & 0xfc0) + (tX >>6)];
pSurface++;
tX = (tX + iHorizontalIncX) & 0x0fff;
tY = (tY + iHorizontalIncY) & 0x0fff;
}
pSurface += lSurfacePitch;
tX = iTileStartX = (iTileStartX + iVerticalIncX) & 0x0fff;
tY = iTileStartY = (iTileStartY + iVerticalIncY) & 0x0fff;
}
|
iHorizontalIncX = (int)(iScale * cos(iAngle));
iHorizontalIncY = (int)(iScale * sin(iAngle));
iVerticalIncX = -iHorizontalIncY;
iVerticalIncY = iHorizontalIncX;
tX = iTileStartX = 0;
tY = iTileStartY = 0;
lSurfacePitch -= iViewWidth;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
*pSurface = iTileBuf[(tY & 0xfc0) + (tX >>6)];
pSurface++;
tX = (tX + iHorizontalIncX) & 0x0fff;
tY = (tY + iHorizontalIncY) & 0x0fff;
}
pSurface += lSurfacePitch;
tX = iTileStartX = (iTileStartX + iVerticalIncX) & 0x0fff;
tY = iTileStartY = (iTileStartY + iVerticalIncY) & 0x0fff;
}
|

tX = iTileStartX
= iTileSizeX * 64
- (iViewCenterX * iHorizontalIncX + iViewCenterY * iVerticalIncX)
% (iTileSizeX * 64);
tY = iTileStartY
= iTileSizeY * 64
- (iViewCenterX * iHorizontalIncY + iViewCenterY * iVerticalIncY)
% (iTileSizeY * 64);
|
tX = iTileStartX = 0x4000 - (iViewCenterX*iHorizontalIncX+iViewCenterY*iVerticalIncX) & 0x0fff; tY = iTileStartY = 0x4000 - (iViewCenterX*iHorizontalIncY+iViewCenterY*iVerticalIncY) & 0x0fff; |
iHorizontalIncX = (int)(iScale * cos(iAngle));
iHorizontalIncY = (int)(iScale * sin(iAngle));
iVerticalIncX = -iHorizontalIncY;
iVerticalIncY = iHorizontalIncX;
tX = iTileStartX
= 0x4000 - (iViewCenterX*iHorizontalIncX+iViewCenterY*iVerticalIncX) & 0x0fff;
tY = iTileStartY
= 0x4000 - (iViewCenterX*iHorizontalIncY+iViewCenterY*iVerticalIncY) & 0x0fff;
lSurfacePitch -= iViewWidth;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
*pSurface = iTileBuf[(tY & 0xfc0) + (tX >>6)];
pSurface++;
tX = (tX + iHorizontalIncX) & 0x0fff;
tY = (tY + iHorizontalIncY) & 0x0fff;
}
pSurface += lSurfacePitch;
tX = iTileStartX = (iTileStartX + iVerticalIncX) & 0x0fff;
tY = iTileStartY = (iTileStartY + iVerticalIncY) & 0x0fff;
}
|

tX = iTileStartX
= 0x4000
- (iViewCenterX*iHorizontalIncX+iViewCenterY*iVerticalIncX - iTileCenterX)
& 0x0fff;
tY = iTileStartY
= 0x4000
- (iViewCenterX*iHorizontalIncY+iViewCenterY*iVerticalIncY - iTileCenterY)
& 0x0fff;
|
int iTableX[iViewWidth],iTableY[iViewWidth];
for(int i=0;i<iViewWidth;i++){
iTableX[i] = tX = (tX + iHorizontalIncX) & 0x0fff;
iTableY[i] = tY = (tY + iHorizontalIncY) & 0x0fff;
}
|
iHorizontalIncX = (int)(iScale * cos(iAngle));
iHorizontalIncY = (int)(iScale * sin(iAngle));
iVerticalIncX = -iHorizontalIncY;
iVerticalIncY = iHorizontalIncX;
tX = iTileStartX
= 0x4000
- (iViewCenterX*iHorizontalIncX+iViewCenterY*iVerticalIncX-iTileCenterX)
& 0x0fff;
tY = iTileStartY
= 0x4000
- (iViewCenterX*iHorizontalIncY+iViewCenterY*iVerticalIncy-iTileCenterY)
& 0x0fff;
int iTableX[iViewWidth],iTableY[iViewWidth];
for(int i=0;i<iViewWidth;i++){
iTableX[i] = tX = (tX + iHorizontalIncX) & 0x0fff;
iTableY[i] = tY = (tY + iHorizontalIncY) & 0x0fff;
}
lSurfacePitch -= iViewWidth;
for(int y=0;y<iViewHeight;y++){
for(int x=0;x<iViewWidth;x++){
*pSurface = iTileBuf[((iTileStartX + iTableY[x]) & 0xfc0)
+ ((iTileStartX + iTableX[x]) & 0x0fff) >>6];
pSurface++;
}
pSurface += lSurfacePitch;
iTileStartX = (iTileStartX + iVerticalIncX) & 0x0fff;
iTileStartY = (iTileStartY + iVerticalIncY) & 0x0fff
}
|
WinMain
RotoZoomer
Tunnel
Plasma
Fire
MetaBall