/* ACK-3D ( Animation Construction Kit 3D ) */ /* Global Data */ /* Author: Lary Myers */ #include #include "ack3d.h" MOUSE mouse; KEYBOARD keyBoard; unsigned char scanCode; char numLockKeyStatus; void interrupt (*oldvec)(); void interrupt myInt(); long LastX1; long LastY1; long iLastX; long iLastY; int MaxDistance; int ErrorCode; int xMapPosn; int yMapPosn; int SkyColor; int FloorColor; int FlashColor; int TopColor; int BottomColor; int StartX; int StartY; int StartAngle; int DoorSpeed; int NonSecretCode; int HaveMouse; /* 1 if mouse present, else 0 */ int NoWalls; int PageNum; /* 0,1 - video page to write to */ FILE *dfp; /* Debug file if DEBUG is 1 */ unsigned char far *bMaps[255]; /* Array of wall bitmaps */ unsigned char far *oMaps[255]; /* Array of object bitmaps */ #if 0 void (far *bdfp[MAX_DISTANCE+1])(); #endif void (far *bdfp[1])(); unsigned char Grid[GRID_MAX+1]; unsigned char xGrid[(GRID_WIDTH+2) * (GRID_HEIGHT+2)]; unsigned char yGrid[(GRID_WIDTH+2) * (GRID_HEIGHT+2)]; unsigned char xObjGrid[(GRID_WIDTH+2) * (GRID_HEIGHT+2)]; unsigned char yObjGrid[(GRID_WIDTH+2) * (GRID_HEIGHT+2)]; SPECIALCODE SpecialCodes[MAX_UPDOWN+1]; int TotalSpecial; int PageBegin[4] = {0,19200,38400,57600}; /* Video offsets */ int DistanceTable[MAX_DISTANCE+1]; /* Distance vs height */ long AdjustTable[MAX_DISTANCE+1]; /* Used to scale bitmap */ WALLARRAY Walls[VIEW_WIDTH]; DOORS Door[MAX_DOORS]; int xSecretmPos; int xSecretmPos1; int xSecretColumn; int ySecretmPos; int ySecretmPos1; int ySecretColumn; int TotalSecret; int CurrentLevel; int ViewColumn; int CenterRow; long far *SinTable; long far *CosTable; long far *LongTanTable; long far *LongInvTanTable; long far *InvCosTable; long far *InvSinTable; long far *LongCosTable; long far *ViewCosTable; long far *xNextTable; long far *yNextTable; long txRay,tyRay,tDOW,tFlip; OBJECTS ObjList[MAX_OBJECTS+1]; unsigned char ObjFlags[MAX_OBJECTS+1]; int MaxObjects; int TotalObjects; unsigned char ObjNumber[320]; int ObjMapPosn[320]; long ObjRelDist[320]; int DirDx[] = {0,1,1,1,0,-1,-1,-1}; int DirDy[] = {-1,-1,0,1,1,1,0,-1}; int DirAngle[] = {INT_ANGLE_270,INT_ANGLE_315,0, INT_ANGLE_45,INT_ANGLE_90, INT_ANGLE_135,INT_ANGLE_180, INT_ANGLE_225}; char PalFile[128]; char GridFile[128]; char GoalFile[128]; char GoalPalFile[128]; unsigned mask[4] = { 0x102, 0x202, 0x402, 0x802 }; unsigned char lowmask[4] = { 0x1, 0x2, 0x4, 0x8 };