/*		   ACK-3D ( Animation Construction Kit 3D )		      */
/* Global Data	      */
/* Author: Lary Myers */
#include <stdio.h>
#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 };

