\r
#define MAXPAGE 4\r
\r
+#define BDOFSCONV (unsigned __near)\r
+#define BOFS page[1].data\r
+#define DOFS page[0].data\r
+\r
/*\r
* typedefs of the game variables!\r
*/\r
#define NUMCHUNKS 416 //keen\r
#define MAXSCANLINES 240 // size of ylookup table\r
\r
+typedef struct\r
+{\r
+ int width,height;\r
+} pictabletype;\r
+\r
//video\r
typedef struct\r
{\r
word quadwh; //preproccessed quad size of tilewidth and tileheight\r
} tile_dimention_t;\r
\r
+#define MAXSCROLLEDGES 6\r
+typedef struct\r
+{\r
+ unsigned panx,pany; // panning adjustments inside port in pixels\r
+ unsigned pansx,pansy;\r
+ unsigned panadjust; // panx/pany adjusted by screen resolution\r
+ int hscrollblocks,vscrollblocks;\r
+ int hscrolledge[MAXSCROLLEDGES],vscrolledge[MAXSCROLLEDGES];\r
+} pan_t;\r
+\r
typedef struct\r
{\r
+ //ylookup[MAXSCANLINES],\r
unsigned int offscreen_ofs;\r
unsigned int pattern_ofs;\r
- unsigned bufferofs, ylookup[MAXSCANLINES], linewidth,displayofs;\r
+// unsigned bufferofs,linewidth,displayofs;\r
+ pan_t pan;\r
+\r
} ofs_t; //unfinished\r
\r
typedef struct\r
{\r
boolean VL_Started,VL_Initiated;\r
char old_mode; //old video mode before game!\r
+ sword curr_mode; //modex curent mode\r
byte palette[PALSIZE], dpal[PALSIZE]; //palette array\r
page_t page[MAXPAGE]; //can be used as a pointer to root page[0]\r
word vmem_remain; //remaining video memory\r
word bordercolor;\r
boolean fastpalette;\r
byte far palette1[256][3],far palette2[256][3];\r
+ pictabletype _seg *pictable;\r
} video_t;\r
\r
//from scroll16\r
int tx,ty; //appears to be the top left tile position on the viewable screen map\r
word dxThresh,dyThresh; //Threshold for physical tile switch\r
video_t *video; //pointer to game variables of the video\r
+ kurokku_t *kurokku; //pointer to game variables of the kurokku\r
nibble __near *p; // pointer to video's render page num\r
nibble __near *sp; // pointer to video's show page num\r
int dx, dy; // draw row and col var\r
//from 16_mm\r
//==========================================================================\r
\r
-#define MAXBLOCKS 1024//kd=1300 wolf3d=700 cata=600\r
-//----#define MAXUMBS 12\r
+#define MAXBLOCKS 800//kd=1300 wolf3d=700 cata=600\r
\r
typedef struct mmblockstruct\r
{\r
- word start,length;\r
- //word start; dword length;\r
-//++++ word blob; //for data larger than 64k\r
+ unsigned start,length;\r
unsigned attributes;\r
memptr *useptr; // pointer to the segment start\r
struct mmblockstruct far *next;\r
} mmblocktype;\r
\r
+typedef struct mmshowmemoryinfo\r
+{\r
+ word x,y;\r
+ mmblocktype far *scan;\r
+} mmshowmemoryinfo_t;\r
+\r
typedef struct\r
{\r
dword nearheap,farheap,EMSmem,XMSmem,mainmem;\r
\r
//==========================================================================\r
\r
-/*\r
+//for 16_sd\r
+//==========================================================================\r
#pragma pack(push,1)\r
-typedef struct imf_entry {\r
- uint8_t reg,data;\r
- uint16_t delay;\r
+typedef struct imf_entry\r
+{\r
+ byte reg,data;\r
+ word delay;\r
} imf_entry_t;\r
#pragma pack(pop)\r
-*/\r
+\r
+typedef struct\r
+{\r
+ volatile unsigned long irq0_ticks;//=0;\r
+ volatile unsigned int irq0_cnt,irq0_add,irq0_max;//=0;\r
+ imf_entry_t* imf_music;//=NULL;\r
+ imf_entry_t* imf_play_ptr;//=NULL;\r
+ imf_entry_t* imf_music_end;//=NULL;\r
+ word imf_delay_countdown;//=0;\r
+} sd_t;\r
\r
//==========================================================================\r
\r
//from 16_ca\r
//==========================================================================\r
\r
+#define NOMAPS\r
+//#define NOGRAPHICS\r
+#define NOAUDIO\r
+\r
+#define MAPHEADERLINKED\r
+//#define GRHEADERLINKED\r
+#define AUDIOHEADERLINKED\r
+\r
#define NUMMAPS 4//39\r
-#define NUMSNDCHUNKS 84\r
+#define NUMSNDCHUNKS 4//3\r
+//#define NUMPICS 4//132//wolf3d wl6\r
+\r
+#define STRUCTPIC 0\r
+#define CASVT dword //*start var type\r
+\r
+\r
+#define DATADIR "data/"\r
+#define GDICTNAME DATADIR"vgadict."\r
+#define GHEADNAME DATADIR"vgahead."\r
+#define GFILENAME DATADIR"vgagraph."\r
+#define EXTENSION "hb1"\r
+\r
\r
typedef struct\r
{\r
\r
typedef struct\r
{\r
- int maphandle[4]; // handle to MAPTEMP / GAMEMAPS\r
- int grhandle[4]; // handle to EGAGRAPH\r
- int audiohandle[4]; // handle to AUDIOT / AUDIO\r
+ int maphandle; // handle to MAPTEMP / GAMEMAPS\r
+ int grhandle; // handle to EGAGRAPH\r
+ int audiohandle; // handle to AUDIOT / AUDIO\r
} ca_handle_t;\r
/*\r
16/wf3d8086/id_ca.c: grstarts = (long _seg *)FP_SEG(&EGAhead);\r
byte far grneeded[NUMCHUNKS];\r
word _seg *audiosegs[NUMSNDCHUNKS];//long\r
\r
- word _seg *grstarts; // array of offsets in egagraph, -1 for sparse//long\r
- word _seg *audiostarts; // array of offsets in audio / audiot//long\r
+ CASVT _seg *grstarts; // array of offsets in egagraph, -1 for sparse//long\r
+ CASVT _seg *audiostarts; // array of offsets in audio / audiot//long\r
+\r
+#ifdef GRHEADERLINKED\r
+ huffnode *grhuffman;\r
+#else\r
+ huffnode grhuffman[255];\r
+#endif\r
+\r
+#ifdef AUDIOHEADERLINKED\r
+ huffnode *audiohuffman;\r
+#else\r
+ huffnode audiohuffman[255];\r
+#endif\r
\r
- huffnode huffnode;\r
+ CASVT chunkcomplen,chunkexplen;//long\r
\r
+ sd_t sd;\r
//TODO: extend! and learn from keen/wolf/catacomb's code wwww\r
memptr spribuff;\r
} ca_t;\r
player_t player[MaxPlayers]; // player vars\r
map_view_t mv[4];\r
// sw_t sw;\r
+ boolean DLStarted;\r
} global_game_variables_t;\r
\r
#ifdef __WATCOMC__\r