#include #include "MyPad.h" #include "tmd.h" #include "Address.h" #define OT_LENGTH (12) #define PACKETMAX (8192) #define PACKETMAX2 (PACKETMAX*24) #define SCREEN_WIDTH (512) #define SCREEN_HEIGHT (256) #define MAX_SEGMENTS (1023) #define SEGMENT_LENGTH (64) #define SEGMENT_WIDTH (512) #define SIDE_HEIGHT (128) #define SIDE_WIDTH (80) #define SIDE_OFFSET ((MAX_SEGMENTS+1)*2) #define REST_OFFSET ((MAX_SEGMENTS+1)*4) #define MAX_PARTICLE_TYPES (16) #define MAX_PARTICLES (256) #define MAX_SPEED (128<<8) #define MAX_OBJECTS (64) #define NO_MORE (-1) #define BLOCK (0) #define FACTORY (1) #define HIRISE (2) #define PYRAMID (3) #define TOWER (4) #define TMD_DYNAMIC_START (0x800d0000) #define DotProduct(a, b) ( ((a).vx*(b).vx) + ((a).vy*(b).vy) + ((a).vz*(b).vz) ) #define LimitRange(a, b, c) ( ((a)<(b)) ? (b) : ((a)>(c) ? (c) : (a)) ) #define Greater(a, b) ( (a) = ((a) < (b)) ? (b) : (a) ) #define Less(a, b) ( (a) = ((a) > (b)) ? (b) : (a) ) #define Abs(a) ( ((a) < 0) ? (-(a)) : (a) ) #define Sgn(a) ( ((a) == 0) ? (0) : ((a)>0)*2-1 ) #define SgnRand() ( ((rand()&1)*2)-1 ) #define SetVector(v, x, y, z) \ (v)->vx = (x), \ (v)->vy = (y), \ (v)->vz = (z) #define SetRGB(c, _r, _g, _b) \ (c)->r = (_r), \ (c)->g = (_g), \ (c)->b = (_b) #define SetRGB0(c, _r, _g, _b) \ (c)->r0 = (_r), \ (c)->g0 = (_g), \ (c)->b0 = (_b) #define CrossProduct(a, b, c) \ (c)->vx = ( (a)->vy*(b)->vz - (a)->vz*(b)->vy ), \ (c)->vy = ( (a)->vz*(b)->vx - (a)->vx*(b)->vz ), \ (c)->vz = ( (a)->vx*(b)->vy - (a)->vy*(b)->vx ) #define SqrtStep(k) s=r+(1L<>=1;if(s<=v){v-=s;r|=(1L<