#pragma warn -use\r
\r
//#define THREEBYTEGRSTARTS\r
-\r
+//https://github.com/open-watcom/open-watcom-v2/issues/279#issuecomment-244587566 for _seg\r
/*\r
=============================================================================\r
\r
=============================================================================\r
*/\r
\r
-/*typedef struct\r
+typedef struct\r
{\r
- unsigned bit0,bit1; // 0-255 is a character, > is a pointer to a node\r
-} huffnode;*/ //moved to src/lib/typdefst.h\r
+ word bit0,bit1; // 0-255 is a character, > is a pointer to a node\r
+} huffnode;\r
\r
\r
/*typedef struct\r
======================\r
*/\r
\r
-/*++++void CAL_HuffExpand (byte huge *source, byte huge *dest,\r
+void CAL_HuffExpand (byte huge *source, byte huge *dest,\r
long length,huffnode *hufftable)\r
{\r
// unsigned bit,byte,node,code;\r
// expand less than 64k of data\r
//--------------------------\r
\r
- __asm\r
- {\r
- mov bx,[headptr]\r
+ __asm {\r
+//// mov bx,[headptr]\r
\r
mov si,[sourceoff]\r
mov di,[destoff]\r
mov ch,[si] // load first byte\r
inc si\r
mov cl,1\r
-\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
expandshort:\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
test ch,cl // bit set?\r
jnz bit1short\r
mov dx,[ss:bx] // take bit0 path from node\r
shl cl,1 // advance to next bit position\r
jc newbyteshort\r
jnc sourceupshort\r
-\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
bit1short:\r
-asm mov dx,[ss:bx+2] // take bit1 path\r
-asm shl cl,1 // advance to next bit position\r
-asm jnc sourceupshort\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov dx,[ss:bx+2] // take bit1 path\r
+ shl cl,1 // advance to next bit position\r
+ jnc sourceupshort\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
newbyteshort:\r
-asm mov ch,[si] // load next byte\r
-asm inc si\r
-asm mov cl,1 // back to first bit\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov ch,[si] // load next byte\r
+ inc si\r
+ mov cl,1 // back to first bit\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
sourceupshort:\r
-asm or dh,dh // if dx<256 its a byte, else move node\r
-asm jz storebyteshort\r
-asm mov bx,dx // next node = (huffnode *)code\r
-asm jmp expandshort\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ or dh,dh // if dx<256 its a byte, else move node\r
+ jz storebyteshort\r
+ mov bx,dx // next node = (huffnode *)code\r
+ jmp expandshort\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
storebyteshort:\r
-asm mov [es:di],dl\r
-asm inc di // write a decopmpressed byte out\r
-asm mov bx,[headptr] // back to the head node for next bit\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov [es:di],dl\r
+ inc di // write a decopmpressed byte out\r
+//// mov bx,[headptr] // back to the head node for next bit\r
\r
-asm cmp di,ax // done?\r
-asm jne expandshort\r
+ cmp di,ax // done?\r
+ jne expandshort\r
}\r
}\r
else\r
\r
length--;\r
\r
- __asm\r
- {\r
-asm mov bx,[headptr]\r
-asm mov cl,1\r
-\r
-asm mov si,[sourceoff]\r
-asm mov di,[destoff]\r
-asm mov es,[destseg]\r
-asm mov ds,[sourceseg]\r
+ __asm {\r
+//// mov bx,[headptr]\r
+ mov cl,1\r
\r
-asm lodsb // load first byte\r
+ mov si,[sourceoff]\r
+ mov di,[destoff]\r
+ mov es,[destseg]\r
+ mov ds,[sourceseg]\r
\r
+ lodsb // load first byte\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
expand:\r
-asm test al,cl // bit set?\r
-asm jnz bit1\r
-asm mov dx,[ss:bx] // take bit0 path from node\r
-asm jmp gotcode\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ test al,cl // bit set?\r
+ jnz bit1\r
+ mov dx,[ss:bx] // take bit0 path from node\r
+ jmp gotcode\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
bit1:\r
-asm mov dx,[ss:bx+2] // take bit1 path\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov dx,[ss:bx+2] // take bit1 path\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
gotcode:\r
-asm shl cl,1 // advance to next bit position\r
-asm jnc sourceup\r
-asm lodsb\r
-asm cmp si,0x10 // normalize ds:si\r
-asm jb sinorm\r
-asm mov cx,ds\r
-asm inc cx\r
-asm mov ds,cx\r
-asm xor si,si\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ shl cl,1 // advance to next bit position\r
+ jnc sourceup\r
+ lodsb\r
+ cmp si,0x10 // normalize ds:si\r
+ jb sinorm\r
+ mov cx,ds\r
+ inc cx\r
+ mov ds,cx\r
+ xor si,si\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
sinorm:\r
-asm mov cl,1 // back to first bit\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov cl,1 // back to first bit\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
sourceup:\r
-asm or dh,dh // if dx<256 its a byte, else move node\r
-asm jz storebyte\r
-asm mov bx,dx // next node = (huffnode *)code\r
-asm jmp expand\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ or dh,dh // if dx<256 its a byte, else move node\r
+ jz storebyte\r
+ mov bx,dx // next node = (huffnode *)code\r
+ jmp expand\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
storebyte:\r
-asm mov [es:di],dl\r
-asm inc di // write a decopmpressed byte out\r
-asm mov bx,[headptr] // back to the head node for next bit\r
-\r
-asm cmp di,0x10 // normalize es:di\r
-asm jb dinorm\r
-asm mov dx,es\r
-asm inc dx\r
-asm mov es,dx\r
-asm xor di,di\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov [es:di],dl\r
+ inc di // write a decopmpressed byte out\r
+//// mov bx,[headptr] // back to the head node for next bit\r
+\r
+ cmp di,0x10 // normalize es:di\r
+ jb dinorm\r
+ mov dx,es\r
+ inc dx\r
+ mov es,dx\r
+ xor di,di\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
dinorm:\r
-\r
-asm sub [WORD PTR ss:length],1\r
-asm jnc expand\r
-asm dec [WORD PTR ss:length+2]\r
-asm jns expand // when length = ffff ffff, done\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ sub [WORD PTR ss:length],1\r
+ jnc expand\r
+ dec [WORD PTR ss:length+2]\r
+ jns expand // when length = ffff ffff, done\r
}\r
}\r
\r
- __asm\r
- {\r
+ __asm {\r
mov ax,ss\r
mov ds,ax\r
}\r
\r
-}*/\r
+}\r
\r
\r
/*\r
======================\r
*/\r
\r
-/*void CAL_SetupMapFile (void)\r
+void CAL_SetupMapFile (global_game_variables_t *gvar)\r
{\r
int handle;\r
long length;\r
//\r
// load maphead.ext (offsets and tileinfo for map file)\r
//\r
-#ifndef MAPHEADERLINKED\r
- if ((handle = open("MAPHEAD."EXT,\r
- O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open MAPHEAD."EXT"!");\r
- length = filelength(handle);\r
- MM_GetPtr (&(memptr)tinf,length);\r
- CA_FarRead(handle, tinf, length);\r
- close(handle);\r
-#else\r
-\r
- tinf = (byte _seg *)FP_SEG(&maphead);\r
-\r
-#endif\r
+// #ifndef MAPHEADERLINKED\r
+// if ((handle = open("MAPHEAD."EXT,\r
+// O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+// Quit ("Can't open MAPHEAD."EXT"!");\r
+// length = filelength(handle);\r
+// MM_GetPtr (&(memptr)tinf,length);\r
+// CA_FarRead(handle, tinf, length);\r
+// close(handle);\r
+// //#else\r
+//\r
+// tinf = (byte _seg *)FP_SEG(&maphead);\r
+//\r
+// #endif\r
\r
//\r
// open the data file\r
//\r
-#ifdef MAPHEADERLINKED\r
- if ((maphandle = open("GAMEMAPS."EXT,\r
+//TODO: multiple files\r
+ if ((gvar->ca.file.maphandle[0] = open("data/test.map",\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open GAMEMAPS."EXT"!");\r
-#else\r
- if ((maphandle = open("MAPTEMP."EXT,\r
- O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open MAPTEMP."EXT"!");\r
-#endif\r
-}*/\r
+ {\r
+ printf("Can't open data/test.map!");\r
+ }\r
+// #ifdef MAPHEADERLINKED\r
+// if ((maphandle = open("GAMEMAPS."EXT,\r
+// O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+// Quit ("Can't open GAMEMAPS."EXT"!");\r
+// //#else\r
+// if ((maphandle = open("MAPTEMP."EXT,\r
+// O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+// Quit ("Can't open MAPTEMP."EXT"!");\r
+// #endif\r
+}\r
\r
//==========================================================================\r
\r
unlink("profile.16w");\r
gvar->handle.profilehandle = open("profile.16w", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\r
-#endif\r
-// unlink("debug0.16");\r
-// gvar->handle.showmemhandle = open("debug0.16", O_CREAT | O_WRONLY | O_TEXT);\r
-/*++++\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
- if(!FindFile("AUDIO."EXT,NULL,2))\r
- Quit("CA_Startup(): Can't find audio files.");\r
-//\r
-// MDM end\r
+#endif//profile\r
\r
-#ifndef NOAUDIO\r
- CAL_SetupAudioFile();\r
+#ifdef __BORLANDC__\r
+ unlink("meminfo.16b");\r
+ gvar->handle.showmemhandle = open("meminfo.16b", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\r
-\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
- if (!FindFile("GAMEMAPS."EXT,NULL,1))\r
- Quit("CA_Startup(): Can't find level files.");\r
-//\r
-// MDM end\r
-\r
-#ifndef NOMAPS\r
- CAL_SetupMapFile ();\r
+#ifdef __WATCOMC__\r
+ unlink("meminfo.16w");\r
+ gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\r
-\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
- if (!FindFile("EGAGRAPH."EXT,NULL,2))\r
- Quit("CA_Startup(): Can't find graphics files.");\r
-//\r
-// MDM end\r
-\r
-#ifndef NOGRAPHICS\r
+/*\r
CAL_SetupGrFile ();\r
-#endif\r
+ CAL_SetupAudioFile ();*/\r
\r
- mapon = -1;\r
- ca_levelbit = 1;\r
- ca_levelnum = 0;\r
+ CAL_SetupMapFile (gvar);\r
\r
- drawcachebox = CAL_DialogDraw;\r
+ gvar->ca.mapon = -1;\r
+ gvar->ca.ca_levelbit = 1;\r
+ gvar->ca.ca_levelnum = 0;\r
+\r
+/* drawcachebox = CAL_DialogDraw;\r
updatecachebox = CAL_DialogUpdate;\r
finishcachebox = CAL_DialogFinish;*/\r
}\r
#ifdef PROFILE\r
close(gvar->handle.profilehandle);\r
#endif\r
-// close(gvar->handle.showmemhandle);\r
+ close(gvar->handle.showmemhandle);\r
+\r
+ close(gvar->ca.file.maphandle);\r
/*++++\r
- close(maphandle);\r
close(grhandle);\r
close(audiohandle);*/\r
}\r
=\r
======================\r
*/\r
+\r
void CA_ClearMarks (global_game_variables_t *gvar)\r
{\r
int i;\r
=\r
======================\r
*/\r
+\r
void CA_ClearAllMarks (global_game_variables_t *gvar)\r
{\r
_fmemset (gvar->video.grneeded,0,sizeof(gvar->video.grneeded));\r
//\r
// free graphics\r
//\r
- CA_FreeGraphics ();\r
-}\r
-\r
-\r
-void CA_SetGrPurge (void)\r
-{\r
- int i;\r
-\r
-//\r
-// free graphics\r
-//\r
- for (i=0;i<NUMCHUNKS;i++)\r
- if (grsegs[i])\r
- MM_SetPurge (&(memptr)grsegs[i],3);\r
+ CA_SetGrPurge ();\r
}*/\r
\r
\r