Fixed Op 02 Cx/Cy - Fixes map offset!

Fixed Op 18 - Rings doesn't get detected mysteriously now.
This commit is contained in:
zsknight
2001-05-08 05:56:51 +00:00
parent 99d2612f65
commit 9cd64c2e4e

View File

@@ -233,7 +233,7 @@ void C4Op0D()
void InitDSP(void) void InitDSP(void)
{ {
#ifdef __OPT__ #ifdef __OPT__
unsigned short i; unsigned int i;
CosTable2 = malloc(INCR*sizeof(double)); CosTable2 = malloc(INCR*sizeof(double));
SinTable2 = malloc(INCR*sizeof(double)); SinTable2 = malloc(INCR*sizeof(double));
for (i=0; i<INCR; i++){ for (i=0; i<INCR; i++){
@@ -449,10 +449,6 @@ void DSPOp02()
Op02CX=(short)(Op02CXF=ViewerX+ViewerX1*NumberOfSlope); Op02CX=(short)(Op02CXF=ViewerX+ViewerX1*NumberOfSlope);
Op02CY=(short)(Op02CYF=ViewerY+ViewerY1*NumberOfSlope); Op02CY=(short)(Op02CYF=ViewerY+ViewerY1*NumberOfSlope);
ViewerXc=ViewerX;//-Op02FX);
ViewerYc=ViewerY;//-Op02FY);
ViewerZc=ViewerZ;//-Op02FZ);
Op02VOF=0x0000; Op02VOF=0x0000;
ReversedLES=0; ReversedLES=0;
Op02LESb=Op02LES; Op02LESb=Op02LES;
@@ -479,12 +475,23 @@ void DSPOp02()
CXdistance=1/tan(NAzsB); CXdistance=1/tan(NAzsB);
ViewerXc=Op02FX;
ViewerYc=Op02FY;
ViewerZc=Op02FZ;
CenterX = (-sin(NAasB)*ViewerZc*CXdistance)+ViewerXc;
CenterY = (cos(NAasB)*ViewerZc*CXdistance)+ViewerYc;
Op02CX = (short)CenterX;
Op02CY = (short)CenterY;
ViewerXc=ViewerX;//-Op02FX);
ViewerYc=ViewerY;//-Op02FY);
ViewerZc=ViewerZ;//-Op02FZ);
CenterX = (-sin(NAasB)*ViewerZc*CXdistance)+ViewerXc; CenterX = (-sin(NAasB)*ViewerZc*CXdistance)+ViewerXc;
if (CenterX<-32768) CenterX = -32768; if (CenterX>32767) CenterX=32767; if (CenterX<-32768) CenterX = -32768; if (CenterX>32767) CenterX=32767;
Op02CX = (short)CenterX;
CenterY = (cos(NAasB)*ViewerZc*CXdistance)+ViewerYc; CenterY = (cos(NAasB)*ViewerZc*CXdistance)+ViewerYc;
if (CenterY<-32768) CenterY = -32768; if (CenterY>32767) CenterY=32767; if (CenterY<-32768) CenterY = -32768; if (CenterY>32767) CenterY=32767;
Op02CY = (short)CenterY;
TValDebug = (NAzsB*65536/6.28); TValDebug = (NAzsB*65536/6.28);
TValDebug2 = ScrDispl; TValDebug2 = ScrDispl;
@@ -1344,7 +1351,10 @@ void DSPOp18()
{ {
double x,y,z,r; double x,y,z,r;
x=Op18X; y=Op18Y; z=Op18Z; r=Op18R; x=Op18X; y=Op18Y; z=Op18Z; r=Op18R;
Op18D=(short)(x*x+y*y+z*z-r*r); r = (x*x+y*y+z*z-r*r);
if (r>32767) r=32767;
if (r<-32768) r=-32768;
Op18D=(short)r;
#ifdef DebugDSP1 #ifdef DebugDSP1
Log_Message("OP18 X: %d Y: %d Z: %d R: %D DIFF %d",Op18X,Op18Y,Op18Z,Op18D); Log_Message("OP18 X: %d Y: %d Z: %d R: %D DIFF %d",Op18X,Op18Y,Op18Z,Op18D);
#endif #endif