=============================================================================\r
*/\r
\r
-#include "src/lib/16_head.h"\r
-//#include "ID_STRS.H"\r
+#include "src/lib/16_ca.h"\r
+#pragma hdrstop\r
\r
-//#define THREEBYTEGRSTARTS\r
+#pragma warn -pro\r
+#pragma warn -use\r
\r
+//#define THREEBYTEGRSTARTS\r
+//https://github.com/open-watcom/open-watcom-v2/issues/279#issuecomment-244587566 for _seg\r
/*\r
=============================================================================\r
\r
\r
typedef struct\r
{\r
- unsigned bit0,bit1; // 0-255 is a character, > is a pointer to a node\r
+ word bit0,bit1; // 0-255 is a character, > is a pointer to a node\r
} huffnode;\r
\r
\r
byte _seg *audiosegs[NUMSNDCHUNKS];\r
void _seg *grsegs[NUMCHUNKS];\r
\r
-byte far grneeded[NUMCHUNKS];\r
-byte ca_levelbit,ca_levelnum;\r
-\r
-int profilehandle,debughandle;*/\r
+byte far grneeded[NUMCHUNKS];*/\r
\r
void (*drawcachebox) (char *title, unsigned numcache);\r
void (*updatecachebox) (void);\r
void CAL_DialogDraw (char *title,unsigned numcache);\r
void CAL_DialogUpdate (void);\r
void CAL_DialogFinish (void);*/\r
-void CAL_CarmackExpand (unsigned far *source, unsigned far *dest,\r
- unsigned length);\r
+//void CAL_CarmackExpand (unsigned far *source, unsigned far *dest,unsigned length);\r
\r
\r
-/*#ifdef THREEBYTEGRSTARTS\r
-#define FILEPOSSIZE 3*/\r
+/*++++#ifdef THREEBYTEGRSTARTS\r
+#define FILEPOSSIZE 3\r
//#define GRFILEPOS(c) (*(long far *)(((byte far *)grstarts)+(c)*3)&0xffffff)\r
long GRFILEPOS(int c)\r
{\r
#else\r
#define FILEPOSSIZE 4\r
#define GRFILEPOS(c) (grstarts[c])\r
-#endif\r
+#endif*/\r
\r
/*\r
=============================================================================\r
=\r
============================\r
*/\r
-\r
-void CA_OpenDebug (void)\r
+void CA_OpenDebug(global_game_variables_t *gvar)\r
{\r
- unlink ("DEBUG.TXT");\r
- debughandle = open("DEBUG.TXT", O_CREAT | O_WRONLY | O_TEXT);\r
+#ifdef __BORLANDC__\r
+ unlink("debug.16b");\r
+ gvar->handle.debughandle = open("debug.16b", O_CREAT | O_WRONLY | O_TEXT);\r
+#endif\r
+#ifdef __WATCOMC__\r
+ unlink("debug.16w");\r
+ gvar->handle.debughandle = open("debug.16w", O_CREAT | O_WRONLY | O_TEXT);\r
+#endif\r
}\r
\r
-void CA_CloseDebug (void)\r
+void CA_CloseDebug(global_game_variables_t *gvar)\r
{\r
- close (debughandle);\r
+ close(gvar->handle.debughandle);\r
}\r
\r
\r
=\r
============================\r
*/\r
-\r
+/*++++\r
void CAL_GetGrChunkLength (int chunk)\r
{\r
lseek(grhandle,GRFILEPOS(chunk),SEEK_SET);\r
read(grhandle,&chunkexplen,sizeof(chunkexplen));\r
chunkcomplen = GRFILEPOS(chunk+1)-GRFILEPOS(chunk)-4;\r
-}\r
+}*/\r
\r
\r
/*\r
==========================\r
*/\r
\r
-boolean CA_FarRead (int handle, byte far *dest, long length)\r
-{
- union REGS CPURegs;\r
- if (length>0xffffl)\r
- printf("CA_FarRead doesn't support 64K reads yet!\n");\r
-
- __asm
+boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
+{\r
+ boolean flag;\r
+ //dword fat=0;\r
+ //word segm=0;\r
+ if(mm->EMSVer<0x40)\r
+ if(length>0xfffflu)\r
{\r
- push ds\r
- mov bx,[handle]\r
- mov cx,[WORD PTR length]\r
- mov dx,[WORD PTR dest]\r
- mov ds,[WORD PTR dest+2]\r
- mov ah,0x3f // READ w/handle\r
- int 21h\r
- pop ds\r
- jnc good
+ printf("File is a fat bakapee\n");\r
+ //segm=(length%0xfffflu)-1;\r
+ //fat=segm*0xfffflu;\r
+ //length-=fat;\r
+ printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+ return 0;//TODO: EXPAND!!!\r
}\r
- errno = CPURegs.x.ax;\r
- return false;
- __asm
- {\r
+\r
+ //if(!fat&&!segm)\r
+ //{\r
+ __asm {\r
+ push ds\r
+ mov bx,[handle]\r
+ mov cx,[WORD PTR length]\r
+ mov dx,[WORD PTR dest]\r
+ mov ds,[WORD PTR dest+2]\r
+ mov ah,0x3f // READ w/handle\r
+ int 21h\r
+ pop ds\r
+ jnc good\r
+ mov errno,ax\r
+ mov flag,0\r
+ jmp End\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
good:\r
- cmp ax,[WORD PTR length]\r
- je done\r
- errno = EINVFMT; // user manager knows this is bad read\r
- return false;\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ cmp ax,[WORD PTR length]\r
+ je done\r
+// errno = EINVFMT; // user manager knows this is bad read\r
+ mov flag,0\r
+ jmp End\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
done:\r
- return true;\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov flag,1\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
+End:\r
+#ifdef __WATCOMC__\r
+ }\r
+#endif\r
+ return flag;\r
}\r
\r
\r
==========================\r
*/\r
\r
-boolean CA_FarWrite (int handle, byte far *source, long length)\r
+boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
{\r
- if (length>0xffffl)\r
- Quit ("CA_FarWrite doesn't support 64K reads yet!");\r
-\r
-asm push ds\r
-asm mov bx,[handle]\r
-asm mov cx,[WORD PTR length]\r
-asm mov dx,[WORD PTR source]\r
-asm mov ds,[WORD PTR source+2]\r
-asm mov ah,0x40 // WRITE w/handle\r
-asm int 21h\r
-asm pop ds\r
-asm jnc good\r
- errno = _AX;\r
- return false;\r
-good:\r
-asm cmp ax,[WORD PTR length]\r
-asm je done\r
- errno = ENOMEM; // user manager knows this is bad write\r
- return false;\r
+ boolean flag;\r
+ //dword fat=0;\r
+ //word segm=0;\r
+ if(mm->EMSVer<0x40)\r
+ if(length>0xfffflu)\r
+ {\r
+ printf("File is a fat bakapee\n");\r
+ //segm=(length%0xfffflu)-1;\r
+ //fat=segm*0xfffflu;\r
+ //length-=fat;\r
+ printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+ return 0;\r
+ }\r
\r
+ //if(!fat&&!segm)\r
+ //{\r
+ __asm {\r
+ push ds\r
+ mov bx,[handle]\r
+ mov cx,[WORD PTR length]\r
+ mov dx,[WORD PTR source]\r
+ mov ds,[WORD PTR source+2]\r
+ mov ah,0x40 // WRITE w/handle\r
+ int 21h\r
+ pop ds\r
+ jnc good\r
+ mov errno,ax\r
+ mov flag,0\r
+ jmp End\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
+good:\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ cmp ax,[WORD PTR length]\r
+ je done\r
+ //errno = ENOMEM; // user manager knows this is bad write\r
+ mov flag,0\r
+ jmp End\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
done:\r
- return true;\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov flag,1\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
+End:\r
+#ifdef __WATCOMC__\r
+ }\r
+#endif\r
+ return flag;\r
}\r
\r
\r
==========================\r
*/\r
\r
-boolean CA_ReadFile (char *filename, memptr *ptr)\r
+boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
{\r
int handle;\r
- long size;\r
+ sdword size;\r
+ //long size;\r
\r
- if ((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+ if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
return false;\r
\r
- size = filelength (handle);\r
- if (!CA_FarRead (handle,*ptr,size))\r
+ size = filelength(handle);\r
+ if(!CA_FarRead(handle,*ptr,size, mm))\r
{\r
close (handle);\r
return false;\r
}\r
\r
\r
+/*\r
+==========================\r
+=\r
+= CA_WriteFile\r
+=\r
+= Writes a file from a memory buffer\r
+=\r
+==========================\r
+*/\r
+\r
+boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm)\r
+{\r
+ int handle;\r
+ sdword size;\r
+ //long size;\r
+\r
+ handle = open(filename,O_CREAT | O_BINARY | O_WRONLY,\r
+ S_IREAD | S_IWRITE | S_IFREG);\r
+\r
+ if (handle == -1)\r
+ return false;\r
+\r
+ if (!CA_FarWrite (handle,ptr,length, mm))\r
+ {\r
+ close(handle);\r
+ return false;\r
+ }\r
+ close(handle);\r
+ return true;\r
+}\r
+\r
+\r
\r
/*\r
==========================\r
==========================\r
*/\r
\r
-boolean CA_LoadFile (char *filename, memptr *ptr)\r
+boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
{\r
int handle;\r
- long size;\r
+ sdword size;\r
+ //long size;\r
\r
- if ((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+ if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
return false;\r
\r
size = filelength (handle);\r
- MM_GetPtr (ptr,size);\r
- if (!CA_FarRead (handle,*ptr,size))\r
+ MM_GetPtr(ptr,size, mm, mmi);\r
+ if(!CA_FarRead(handle,*ptr,size, mm))\r
{\r
- close (handle);\r
+ close(handle);\r
return false;\r
}\r
- close (handle);\r
+ close(handle);\r
return true;\r
}\r
\r
// expand less than 64k of data\r
//--------------------------\r
\r
-asm mov bx,[headptr]\r
+ __asm {\r
+//// mov bx,[headptr]\r
\r
-asm mov si,[sourceoff]\r
-asm mov di,[destoff]\r
-asm mov es,[destseg]\r
-asm mov ds,[sourceseg]\r
-asm mov ax,[endoff]\r
-\r
-asm mov ch,[si] // load first byte\r
-asm inc si\r
-asm mov cl,1\r
+ mov si,[sourceoff]\r
+ mov di,[destoff]\r
+ mov es,[destseg]\r
+ mov ds,[sourceseg]\r
+ mov ax,[endoff]\r
\r
+ mov ch,[si] // load first byte\r
+ inc si\r
+ mov cl,1\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
expandshort:\r
-asm test ch,cl // bit set?\r
-asm jnz bit1short\r
-asm mov dx,[ss:bx] // take bit0 path from node\r
-asm shl cl,1 // advance to next bit position\r
-asm jc newbyteshort\r
-asm jnc sourceupshort\r
-\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
+#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
\r
length--;\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
-\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 mov ax,ss\r
-asm mov ds,ax\r
+ __asm {\r
+ mov ax,ss\r
+ mov ds,ax\r
+ }\r
\r
}\r
\r
=\r
======================\r
*/\r
-\r
+/*++++\r
#define NEARTAG 0xa7\r
#define FARTAG 0xa8\r
\r
}\r
}\r
}\r
-\r
+*/\r
\r
\r
/*\r
=\r
======================\r
*/\r
-\r
+/*++++\r
long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest,\r
unsigned rlewtag)\r
{\r
complength = 2*(dest-start);\r
return complength;\r
}\r
-\r
+*/\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CA_RLEWexpand (unsigned huge *source, unsigned huge *dest,long length,\r
unsigned rlewtag)\r
{\r
asm mov ds,ax\r
\r
}\r
-\r
+*/\r
\r
\r
/*\r
=\r
======================\r
*/\r
-\r
-void CAL_SetupGrFile (void)\r
+////++++ enable!\r
+/*void CAL_SetupGrFile (void)\r
{\r
int handle;\r
memptr compseg;\r
MM_FreePtr(&compseg);\r
#endif\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
+ 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
*/\r
\r
-void CAL_SetupAudioFile (void)\r
+/*void CAL_SetupAudioFile (void)\r
{\r
int handle;\r
long length;\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
Quit ("Can't open AUDIO."EXT"!");\r
#endif\r
-}\r
+}*/\r
\r
//==========================================================================\r
\r
======================\r
*/\r
\r
-void CA_Startup (void)\r
+void CA_Startup(global_game_variables_t *gvar)\r
{\r
#ifdef PROFILE\r
- unlink ("PROFILE.TXT");\r
- profilehandle = open("PROFILE.TXT", O_CREAT | O_WRONLY | O_TEXT);\r
+#ifdef __BORLANDC__\r
+ unlink("profile.16b");\r
+ gvar->handle.profilehandle = open("profile.16b", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\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
-\r
-#ifndef NOAUDIO\r
- CAL_SetupAudioFile ();\r
+#ifdef __WATCOMC__\r
+ unlink("profile.16w");\r
+ gvar->handle.profilehandle = open("profile.16w", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\r
+#endif//profile\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 __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("EGAGRAPH."EXT,NULL,2))\r
- Quit("CA_Startup(): Can't find graphics files.");\r
-//\r
-// MDM end\r
-\r
-#ifndef NOGRAPHICS\r
- CAL_SetupGrFile ();\r
+#ifdef __WATCOMC__\r
+ unlink("meminfo.16w");\r
+ gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\r
+/*\r
+ CAL_SetupGrFile ();\r
+ CAL_SetupAudioFile ();*/\r
+\r
+ CAL_SetupMapFile (gvar);\r
\r
- mapon = -1;\r
- ca_levelbit = 1;\r
- ca_levelnum = 0;\r
+ gvar->ca.mapon = -1;\r
+ gvar->ca.ca_levelbit = 1;\r
+ gvar->ca.ca_levelnum = 0;\r
\r
- drawcachebox = CAL_DialogDraw;\r
+/* drawcachebox = CAL_DialogDraw;\r
updatecachebox = CAL_DialogUpdate;\r
- finishcachebox = CAL_DialogFinish;\r
+ finishcachebox = CAL_DialogFinish;*/\r
}\r
\r
//==========================================================================\r
======================\r
*/\r
\r
-void CA_Shutdown (void)\r
+void CA_Shutdown(global_game_variables_t *gvar)\r
{\r
#ifdef PROFILE\r
- close (profilehandle);\r
+ close(gvar->handle.profilehandle);\r
#endif\r
+ close(gvar->handle.showmemhandle);\r
\r
- close (maphandle);\r
- close (grhandle);\r
- close (audiohandle);\r
+ close(*(gvar->ca.file.maphandle));\r
+/*++++\r
+ close(grhandle);\r
+ close(audiohandle);*/\r
}\r
\r
//===========================================================================\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CA_CacheAudioChunk (int chunk)\r
{\r
long pos,compressed;\r
if (compressed>BUFFERSIZE)\r
MM_FreePtr(&bigbufferseg);\r
#endif\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CA_LoadAllSounds (void)\r
{\r
unsigned start,i;\r
CA_CacheAudioChunk (start);\r
\r
oldsoundmode = SoundMode;\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
-#if GRMODE == EGAGR\r
+//++++#if GRMODE == EGAGR\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*++++\r
unsigned static sheight,swidth;\r
boolean static dothemask;\r
\r
}\r
\r
#endif\r
-\r
+*/\r
//===========================================================================\r
\r
/*\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CAL_CacheSprite (int chunk, byte far *compressed)\r
{\r
int i;\r
}\r
\r
#endif\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CAL_ExpandGrChunk (int chunk, byte far *source)\r
{\r
long expanded;\r
CAL_HuffExpand (source,grsegs[chunk],expanded,grhuffman);\r
}\r
}\r
-\r
+*/\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CAL_ReadGrChunk (int chunk)\r
{\r
long pos,compressed;\r
if (compressed>BUFFERSIZE)\r
MM_FreePtr(&bigbufferseg);\r
}\r
-\r
+*/\r
/*\r
======================\r
=\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CA_CacheGrChunk (int chunk)\r
{\r
long pos,compressed;\r
byte far *source;\r
int next;\r
\r
- grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed\r
+ gvar->video.grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed\r
if (grsegs[chunk])\r
{\r
MM_SetPurge (&grsegs[chunk],0);\r
if (compressed>BUFFERSIZE)\r
MM_FreePtr(&bigbufferseg);\r
}\r
-\r
+*/\r
\r
\r
//==========================================================================\r
=\r
======================\r
*/\r
-\r
-void CA_CacheMap (int mapnum)\r
+/*++++ fuckin segments!\r
+void CA_CacheMap (global_game_variables_t *gvar)\r
{\r
long pos,compressed;\r
int plane;\r
#endif\r
\r
\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
- if (!FindFile("GAMEMAPS."EXT,NULL,1))\r
- Quit("CA_CacheMap(): Can't find level files.");\r
-//\r
-// MDM end\r
-\r
-\r
//\r
// free up memory from last map\r
//\r
- if (mapon>-1 && mapheaderseg[mapon])\r
- MM_SetPurge (&(memptr)mapheaderseg[mapon],3);\r
+ if (mapon>-1 && mapheaderseg[gvar->ca.mapon])\r
+ MM_SetPurge (&(memptr)mapheaderseg[gvar-ca.mapon],3);\r
for (plane=0;plane<MAPPLANES;plane++)\r
if (mapsegs[plane])\r
MM_FreePtr (&(memptr)mapsegs[plane]);\r
if (compressed>BUFFERSIZE)\r
MM_FreePtr(&bigbufferseg);\r
}\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
=\r
======================\r
*/\r
-\r
+/*++++\r
void CA_UpLevel (void)\r
{\r
if (ca_levelnum==7)\r
\r
ca_levelbit<<=1;\r
ca_levelnum++;\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
=\r
======================\r
*/\r
-\r
+/*++\r
void CA_DownLevel (void)\r
{\r
if (!ca_levelnum)\r
ca_levelbit>>=1;\r
ca_levelnum--;\r
CA_CacheMarks(NULL);\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
======================\r
*/\r
\r
-void CA_ClearMarks (void)\r
+void CA_ClearMarks (global_game_variables_t *gvar)\r
{\r
int i;\r
\r
for (i=0;i<NUMCHUNKS;i++)\r
- grneeded[i]&=~ca_levelbit;\r
+ gvar->video.grneeded[i]&=~gvar->ca.ca_levelbit;\r
}\r
\r
-\r
//===========================================================================\r
\r
/*\r
======================\r
*/\r
\r
-void CA_ClearAllMarks (void)\r
+void CA_ClearAllMarks (global_game_variables_t *gvar)\r
{\r
- _fmemset (grneeded,0,sizeof(grneeded));\r
- ca_levelbit = 1;\r
- ca_levelnum = 0;\r
+ _fmemset (gvar->video.grneeded,0,sizeof(gvar->video.grneeded));\r
+ gvar->ca.ca_levelbit = 1;\r
+ gvar->ca.ca_levelnum = 0;\r
}\r
\r
-\r
//===========================================================================\r
\r
/*\r
=\r
======================\r
*/\r
-\r
-void CA_FreeGraphics (void)\r
+/*++++\r
+void CA_SetGrPurge (void)\r
{\r
- int i;\r
+ int i;\r
+\r
+//\r
+// free graphics\r
+//\r
+ CA_ClearMarks ();\r
\r
for (i=0;i<NUMCHUNKS;i++)\r
if (grsegs[i])\r
MM_SetPurge (&(memptr)grsegs[i],3);\r
}\r
-\r
+*/\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*++++++++\r
void CA_SetAllPurge (void)\r
{\r
int i;\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
-}\r
+ CA_SetGrPurge ();\r
+}*/\r
\r
\r
//===========================================================================\r
=\r
======================\r
*/\r
-\r
+/*\r
#define NUMBARS (17l*8)\r
#define BARSTEP 8\r
\r
\r
VW_UpdateScreen();\r
}\r
-\r
+*/\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*\r
void CAL_DialogUpdate (void)\r
{\r
unsigned x,xh;\r
lastx = xh;\r
VW_UpdateScreen();\r
}\r
-}\r
+}*/\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*\r
void CAL_DialogFinish (void)\r
{\r
unsigned x,xh;\r
#endif\r
VW_UpdateScreen();\r
\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
= CA_CacheMarks\r
=\r
======================\r
-*/\r
+*//*\r
#define MAXEMPTYREAD 1024\r
\r
void CA_CacheMarks (char *title)\r
// go through and make everything not needed purgable\r
//\r
for (i=0;i<NUMCHUNKS;i++)\r
- if (grneeded[i]&ca_levelbit)\r
+ if (gvar->video.grneeded[i]&ca_levelbit)\r
{\r
if (grsegs[i]) // its allready in memory, make\r
MM_SetPurge(&grsegs[i],0); // sure it stays there!\r
bufferstart = bufferend = 0; // nothing good in buffer now\r
\r
for (i=0;i<NUMCHUNKS;i++)\r
- if ( (grneeded[i]&ca_levelbit) && !grsegs[i])\r
+ if ( (gvar->video.grneeded[i]&ca_levelbit) && !grsegs[i])\r
{\r
//\r
// update thermometer\r
while ( next < NUMCHUNKS )\r
{\r
while (next < NUMCHUNKS &&\r
- !(grneeded[next]&ca_levelbit && !grsegs[next]))\r
+ !(gvar->video.grneeded[next]&ca_levelbit && !grsegs[next]))\r
next++;\r
if (next == NUMCHUNKS)\r
continue;\r
//\r
if (dialog && finishcachebox)\r
finishcachebox();\r
-}\r
+}*/\r