Removed optimisation for Op04 since it seems to break pilotwings
This commit is contained in:
@@ -32,7 +32,9 @@
|
|||||||
#define __OPT__
|
#define __OPT__
|
||||||
#define __OPT01__
|
#define __OPT01__
|
||||||
#define __OPT02__
|
#define __OPT02__
|
||||||
|
//#define __OPT04__
|
||||||
#define __OPT06__
|
#define __OPT06__
|
||||||
|
#define __OPT0C__ // this optimisation may break pilotwings
|
||||||
#define __OPT11__
|
#define __OPT11__
|
||||||
#define __OPT21__
|
#define __OPT21__
|
||||||
#define __OPT1C__
|
#define __OPT1C__
|
||||||
@@ -81,48 +83,12 @@ void Stop_Log (void)
|
|||||||
* Math tables *
|
* Math tables *
|
||||||
\***************************************************************************/
|
\***************************************************************************/
|
||||||
|
|
||||||
#ifdef __OPT__
|
|
||||||
double *CosTable2;
|
double *CosTable2;
|
||||||
double *SinTable2;
|
double *SinTable2;
|
||||||
#define INCR 1024
|
#define INCR 2048
|
||||||
#define Angle(x) (((x)/(65536/INCR)) & (INCR-1))
|
#define Angle(x) (((x)/(65536/INCR)) & (INCR-1))
|
||||||
#define Cos(x) ((double) CosTable2[x])
|
#define Cos(x) ((double) CosTable2[x])
|
||||||
#define Sin(x) ((double) SinTable2[x])
|
#define Sin(x) ((double) SinTable2[x])
|
||||||
#else
|
|
||||||
int CosTable2[256]={65536,65516,65457,65358,65220,65043,64826,64571,64276,63943,63571,63161,62713,62227,61704,61144,60546,59912,59243,58537,57796,
|
|
||||||
57020,56210,55367,54489,53579,52637,51663,50658,49622,48556,47461,46338,45187,44008,42803,41572,
|
|
||||||
40316,39036,37732,36406,35057,33688,32298,30889,29461,28015,26553,25074,23581,22073,20552,19018,17473,15918,14353,12779,11198,9610,8016,6417,4814,
|
|
||||||
3209,1601,-6,-1615,-3222,-4828,-6430,-8029,-9623,-11211,-12792,-14366,-15931,-17486,-19031,-20565,-22086,-23593,-25087,-26565,-28028,-29473,
|
|
||||||
-30901,-32310,-33700,-35069,-36417,-37743,-39047,-40327,-41583,-42813,-44018,-45197,-46348,-47471,-48565,
|
|
||||||
-49631,-50666,-51671,-52645,-53587,-54497,-55374,-56217,-57027,-57802,-58543,-59248,-59918,-60551,-61148,
|
|
||||||
-61709,-62232,-62717,-63165,-63575,-63946,-64279,-64573,-64828,-65044,-65221,-65359,-65457,-65516,-65535,
|
|
||||||
-65515,-65456,-65357,-65219,-65041,-64824,-64568,-64273,-63940,-63568,-63158,-62709,-62223,-61699,-61139,
|
|
||||||
-60541,-59907,-59237,-58531,-57790,-57014,-56203,-55359,-54482,-53571,-52629,-51654,-50649,-49613,-48547,
|
|
||||||
-47452,-46328,-45177,-43998,-42793,-41562,-40306,-39025,-37721,-36395,-35046,-33676,-32286,-30877,-29449,
|
|
||||||
-28003,-26540,-25062,-23568,-22060,-20539,-19005,-17460,-15905,-14340,-12766,-11184,-9596,-8002,-6403,
|
|
||||||
-4801,-3195,-1588,20,1628,3236,4841,6444,8043,9636,11224,12806,14379,15944,17500,19044,20578,22099,
|
|
||||||
23606,25099,26578,28040,29485,30913,32322,33711,35080,36428,37754,39058,40338,41593,42824,44028,
|
|
||||||
45206,46357,47480,48575,49640,50675,51680,52653,53595,54504,55381,56224,57034,57809,58549,59254,
|
|
||||||
59923,60557,61153,61713,62236,62721,63168,63578,63949,64281,64575,64830,65046,65223,65360,65458,65516};
|
|
||||||
|
|
||||||
int SinTable2[256]={0,1608,3215,4821,6424,8022,9616,11204,12786,14359,15924,17480,19025,20558,22079,
|
|
||||||
23587,25081,26559,28021,29467,30895,32304,33694,35063,36411,37738,39041,40322,41577,42808,44013,
|
|
||||||
45192,46343,47466,48561,49626,50662,51667,52641,53583,54493,55370,56214,57024,57799,58540,59245,
|
|
||||||
59915,60549,61146,61706,62229,62715,63163,63573,63944,64277,64572,64827,65043,65221,65358,65457,
|
|
||||||
65516,65535,65516,65456,65357,65219,65042,64825,64569,64275,63941,63570,63159,62711,62225,61702,
|
|
||||||
61141,60544,59910,59240,58534,57793,57017,56207,55363,54486,53575,52633,51659,50653,49617,48552,
|
|
||||||
47457,46333,45182,44003,42798,41567,40311,39031,37727,36400,35052,33682,32292,30883,29455,28009,
|
|
||||||
26547,25068,23574,22067,20545,19012,17467,15911,14346,12772,11191,9603,8009,6410,4807,3202,1594,
|
|
||||||
-13,-1622,-3229,-4834,-6437,-8036,-9630,-11218,-12799,-14373,-15938,-17493,-19038,-20571,-22092,
|
|
||||||
-23600,-25093,-26571,-28034,-29479,-30907,-32316,-33705,-35075,-36423,-37749,-39052,-40332,-41588,-42818,-44023,-45201,-46352,-47476,-48570,-49635,-50671,-51675,-52649,-53591,-54501,-55377,-56221,-57030,-57806,-58546,-59251,-59921,-60554,-61151,-61711,
|
|
||||||
-62234,-62719,-63167,-63576,-63947,-64280,-64574,-64829,-65045,-65222,-65359,-65458,-65516,-65535,
|
|
||||||
-65515,-65456,-65356,-65218,-65040,-64823,-64567,-64272,-63938,-63566,-63156,-62707,-62221,-61697,
|
|
||||||
-61136,-60538,-59904,-59234,-58528,-57786,-57010,-56200,-55356,-54478,-53567,-52625,-51650,-50645,
|
|
||||||
-49609,-48543,-47447,-46324,-45172,-43993,-42788,-41556,-40300,-39020,-37716,-36389,-35040,-33670,
|
|
||||||
-32280,-30871,-29443,-27997,-26534,-25056,-23562,-22054,-20532,-18999,-17454,-15898,-14333,-12759,
|
|
||||||
-11178,-9589,-7995,-6397,-4794,-3188,-1581};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PI 3.14159265358979323846264338327
|
#define PI 3.14159265358979323846264338327
|
||||||
|
|
||||||
double Atan(double x)
|
double Atan(double x)
|
||||||
@@ -329,6 +295,8 @@ unsigned short Op04Radius;
|
|||||||
short Op04Sin;
|
short Op04Sin;
|
||||||
short Op04Cos;
|
short Op04Cos;
|
||||||
|
|
||||||
|
#ifdef __OPT04__
|
||||||
|
|
||||||
void DSPOp04()
|
void DSPOp04()
|
||||||
{
|
{
|
||||||
int angle;
|
int angle;
|
||||||
@@ -343,7 +311,23 @@ void DSPOp04()
|
|||||||
Log_Message("OP04 SIN:%d COS:%d",Op04Sin,Op04Cos);
|
Log_Message("OP04 SIN:%d COS:%d",Op04Sin,Op04Cos);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
|
void DSPOp04()
|
||||||
|
{
|
||||||
|
double angle;
|
||||||
|
|
||||||
|
angle = Op04Angle*2*PI/65536.0;
|
||||||
|
|
||||||
|
Op04Sin = sin(angle) * Op04Radius;
|
||||||
|
Op04Cos = cos(angle) * Op04Radius;
|
||||||
|
|
||||||
|
#ifdef DebugDSP1
|
||||||
|
Log_Message("OP04 Angle:%d Radius:%d",(Op04Angle/256)&255,Op04Radius);
|
||||||
|
Log_Message("OP04 SIN:%d COS:%d",Op04Sin,Op04Cos);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
unsigned short Op0CA;
|
unsigned short Op0CA;
|
||||||
short Op0CX1;
|
short Op0CX1;
|
||||||
@@ -351,6 +335,7 @@ short Op0CY1;
|
|||||||
short Op0CX2;
|
short Op0CX2;
|
||||||
short Op0CY2;
|
short Op0CY2;
|
||||||
|
|
||||||
|
#ifdef __OPT0C__
|
||||||
void DSPOp0C()
|
void DSPOp0C()
|
||||||
{
|
{
|
||||||
Op0CX2=(Op0CX1*Cos(Angle(Op0CA))+Op0CY1*Sin(Angle(Op0CA)));
|
Op0CX2=(Op0CX1*Cos(Angle(Op0CA))+Op0CY1*Sin(Angle(Op0CA)));
|
||||||
@@ -359,6 +344,18 @@ void DSPOp0C()
|
|||||||
Log_Message("OP0C Angle:%d X:%d Y:%d CX:%d CY:%d",(Op0CA/256)&255,Op0CX1,Op0CY1,Op0CX2,Op0CY2);
|
Log_Message("OP0C Angle:%d X:%d Y:%d CX:%d CY:%d",(Op0CA/256)&255,Op0CX1,Op0CY1,Op0CX2,Op0CY2);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
void DSPOp0C()
|
||||||
|
{
|
||||||
|
|
||||||
|
Op0CX2=(Op0CX1*cos(Op0CA*2*PI/65536.0)+Op0CY1*sin(Op0CA*2*PI/65536.0));
|
||||||
|
Op0CY2=(Op0CX1*-sin(Op0CA*2*PI/65536.0)+Op0CY1*cos(Op0CA*2*PI/65536.0));
|
||||||
|
#ifdef DebugDSP1
|
||||||
|
Log_Message("OP0C Angle:%d X:%d Y:%d CX:%d CY:%d",(Op0CA/256)&255,Op0CX1,Op0CY1,Op0CX2,Op0CY2);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
short Op02FX;
|
short Op02FX;
|
||||||
short Op02FY;
|
short Op02FY;
|
||||||
|
|||||||
Reference in New Issue
Block a user