=============================================================================\r
*/\r
\r
-typedef struct\r
+/*typedef struct\r
{\r
word bit0,bit1; // 0-255 is a character, > is a pointer to a node\r
-} huffnode;\r
+} huffnode;*/\r
\r
\r
/*typedef struct\r
==========================\r
*/\r
\r
-boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
+boolean CA_FarRead(int handle, byte huge *dest, dword length, global_game_variables_t *gvar)\r
{\r
boolean flag;\r
//dword fat=0;\r
//word segm=0;\r
- if(mm->EMSVer<0x40)\r
+ if(gvar->pm.emm.EMSVer<0x40)\r
if(length>0xfffflu)\r
{\r
printf("File is a fat bakapee\n");\r
==========================\r
*/\r
\r
-boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
+boolean CA_FarWrite(int handle, byte huge *source, dword length, global_game_variables_t *gvar)\r
{\r
boolean flag;\r
//dword fat=0;\r
//word segm=0;\r
- if(mm->EMSVer<0x40)\r
+ if(gvar->pm.emm.EMSVer<0x40)\r
if(length>0xfffflu)\r
{\r
printf("File is a fat bakapee\n");\r
==========================\r
*/\r
\r
-boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
+boolean CA_ReadFile(char *filename, memptr *ptr, global_game_variables_t *gvar)\r
{\r
int handle;\r
sdword size;\r
return false;\r
\r
size = filelength(handle);\r
- if(!CA_FarRead(handle,*ptr,size, mm))\r
+ if(!CA_FarRead(handle,*ptr,size, gvar))\r
{\r
close (handle);\r
return false;\r
==========================\r
*/\r
\r
-boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm)\r
+boolean CA_WriteFile (char *filename, void far *ptr, long length, global_game_variables_t *gvar)\r
{\r
int handle;\r
sdword size;\r
if (handle == -1)\r
return false;\r
\r
- if (!CA_FarWrite (handle,ptr,length, mm))\r
+ if (!CA_FarWrite (handle,ptr,length, gvar))\r
{\r
close(handle);\r
return false;\r
==========================\r
*/\r
\r
-boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
+boolean CA_LoadFile(char *filename, memptr *ptr, global_game_variables_t *gvar)\r
{\r
int handle;\r
sdword size;\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, mm, mmi);\r
- if(!CA_FarRead(handle,*ptr,size, mm))\r
+ size = filelength(handle);\r
+ MM_GetPtr(ptr,size, gvar);\r
+ if(!CA_FarRead(handle,*ptr,size, gvar))\r
{\r
close(handle);\r
return false;\r
=\r
======================\r
*/\r
-/*++++\r
+\r
#define NEARTAG 0xa7\r
#define FARTAG 0xa8\r
\r
count = ch&0xff;\r
if (!count)\r
{ // have to insert a word containing the tag byte\r
- ch |= *((unsigned char far *)inptr)++;\r
+ ch |= *(/*(unsigned char far *)*/inptr)++;\r
*outptr++ = ch;\r
length--;\r
}\r
else\r
{\r
- offset = *((unsigned char far *)inptr)++;\r
+ offset = *(/*(unsigned char far *)*/inptr)++;\r
copyptr = outptr - offset;\r
length -= count;\r
while (count--)\r
count = ch&0xff;\r
if (!count)\r
{ // have to insert a word containing the tag byte\r
- ch |= *((unsigned char far *)inptr)++;\r
+ ch |= *(/*(unsigned char far *)*/inptr)++;\r
*outptr++ = ch;\r
length --;\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
//\r
// NOTE: A repeat count that produces 0xfff0 bytes can blow this!\r
//\r
-\r
-asm mov bx,rlewtag\r
-asm mov si,sourceoff\r
-asm mov di,destoff\r
-asm mov es,destseg\r
-asm mov ds,sourceseg\r
-\r
+ __asm{\r
+ mov bx,rlewtag\r
+ mov si,sourceoff\r
+ mov di,destoff\r
+ mov es,destseg\r
+ mov ds,sourceseg\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
expand:\r
-asm lodsw\r
-asm cmp ax,bx\r
-asm je repeat\r
-asm stosw\r
-asm jmp next\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ lodsw\r
+ cmp ax,bx\r
+ je repeat\r
+ stosw\r
+ jmp next\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
repeat:\r
-asm lodsw\r
-asm mov cx,ax // repeat count\r
-asm lodsw // repeat value\r
-asm rep stosw\r
-\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ lodsw\r
+ mov cx,ax // repeat count\r
+ lodsw // repeat value\r
+ rep stosw\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
next:\r
-\r
-asm cmp si,0x10 // normalize ds:si\r
-asm jb sinorm\r
-asm mov ax,si\r
-asm shr ax,1\r
-asm shr ax,1\r
-asm shr ax,1\r
-asm shr ax,1\r
-asm mov dx,ds\r
-asm add dx,ax\r
-asm mov ds,dx\r
-asm and si,0xf\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ cmp si,0x10 // normalize ds:si\r
+ jb sinorm\r
+ mov ax,si\r
+ shr ax,1\r
+ shr ax,1\r
+ shr ax,1\r
+ shr ax,1\r
+ mov dx,ds\r
+ add dx,ax\r
+ mov ds,dx\r
+ and si,0xf\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
sinorm:\r
-asm cmp di,0x10 // normalize es:di\r
-asm jb dinorm\r
-asm mov ax,di\r
-asm shr ax,1\r
-asm shr ax,1\r
-asm shr ax,1\r
-asm shr ax,1\r
-asm mov dx,es\r
-asm add dx,ax\r
-asm mov es,dx\r
-asm and di,0xf\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ cmp di,0x10 // normalize es:di\r
+ jb dinorm\r
+ mov ax,di\r
+ shr ax,1\r
+ shr ax,1\r
+ shr ax,1\r
+ shr ax,1\r
+ mov dx,es\r
+ add dx,ax\r
+ mov es,dx\r
+ and di,0xf\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
dinorm:\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ cmp di,ss:endoff\r
+ jne expand\r
+ mov ax,es\r
+ cmp ax,ss:endseg\r
+ jb expand\r
\r
-asm cmp di,ss:endoff\r
-asm jne expand\r
-asm mov ax,es\r
-asm cmp ax,ss:endseg\r
-asm jb expand\r
-\r
-asm mov ax,ss\r
-asm mov ds,ax\r
-\r
+ mov ax,ss\r
+ mov ds,ax\r
+ }\r
}\r
-*/\r
\r
\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
+// printf("Can't open MAPHEAD."EXT"!");\r
// length = filelength(handle);\r
// MM_GetPtr (&(memptr)tinf,length);\r
// CA_FarRead(handle, tinf, length);\r
/*\r
CAL_SetupGrFile ();\r
CAL_SetupAudioFile ();*/\r
-\r
CAL_SetupMapFile (gvar);\r
\r
- gvar->ca.mapon = -1;\r
+ gvar->ca.camap.mapon = -1;\r
gvar->ca.ca_levelbit = 1;\r
gvar->ca.ca_levelnum = 0;\r
\r
=\r
======================\r
*/\r
-/*++++ fuckin segments!\r
+/*++++ segments!\r
void CA_CacheMap (global_game_variables_t *gvar)\r
{\r
long pos,compressed;\r
//\r
// free up memory from last map\r
//\r
-// if (gvar->ca.map.mapon>-1 && gvar->ca.map.mapheaderseg[gvar->ca.map.mapon])\r
-// MM_SetPurge (&(memptr)gvar->ca.map.mapheaderseg[gvar-ca.map.mapon],3);\r
+ if (gvar->ca.map.mapon>-1 && gvar->ca.map.mapheaderseg[gvar->ca.map.mapon])\r
+ MM_SetPurge (&((memptr)gvar->ca.map.mapheaderseg[(gvar->ca.map.mapon)]), 3, &(gvar->mm));\r
for (plane=0;plane<MAPPLANES;plane++)\r
if (gvar->ca.map.mapsegs[plane])\r
- MM_FreePtr (&(memptr)gvar->ca.map.mapsegs[plane]);\r
+ MM_FreePtr (&(memptr)gvar->ca.map.mapsegs[plane], &(gvar->mm));\r
\r
gvar->ca.map.mapon = gvar->ca.map.mapnum;\r
\r
//\r
if (!gvar->ca.map.mapheaderseg[gvar->ca.map.mapnum])\r
{\r
- pos = ((__segmement *)tinf)->headeroffsets[gvar->ca.mapnum];\r
+ //pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum];\r
+ pos = ((_seg *)gvar->ca.map.tinf)->headeroffsets[gvar->ca.map.mapnum];\r
if (pos<0) // $FFFFFFFF start is a sparse map\r
printf("CA_CacheMap: Tried to load a non existent map!");\r
\r
CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype));\r
}\r
else\r
- MM_SetPurge (&(memptr)mapheaderseg[mapnum],0);\r
+ MM_SetPurge (&(memptr)mapheaderseg[mapnum], 0, &(gvar->mm));\r
\r
//\r
// load the planes in\r
if (compressed>BUFFERSIZE)\r
MM_FreePtr(&bigbufferseg);\r
}\r
-}*/\r
+}//*/\r
\r
//===========================================================================\r
\r
=\r
======================\r
*/\r
-/*++++\r
-void CA_UpLevel (void)\r
+\r
+void CA_UpLevel (global_game_variables_t *gvar)\r
{\r
- if (ca_levelnum==7)\r
- Quit ("CA_UpLevel: Up past level 7!");\r
+ if (gvar->ca.ca_levelnum==7)\r
+ printf("CA_UpLevel: Up past level 7!");\r
\r
- ca_levelbit<<=1;\r
- ca_levelnum++;\r
-}*/\r
+ gvar->ca.ca_levelbit<<=1;\r
+ gvar->ca.ca_levelnum++;\r
+}\r
\r
//===========================================================================\r
\r
=\r
======================\r
*/\r
-/*++\r
-void CA_DownLevel (void)\r
+\r
+void CA_DownLevel (global_game_variables_t *gvar)\r
{\r
- if (!ca_levelnum)\r
- Quit ("CA_DownLevel: Down past level 0!");\r
- ca_levelbit>>=1;\r
- ca_levelnum--;\r
- CA_CacheMarks(NULL);\r
-}*/\r
+ if (!gvar->ca.ca_levelnum)\r
+ printf("CA_DownLevel: Down past level 0!");\r
+ gvar->ca.ca_levelbit>>=1;\r
+ gvar->ca.ca_levelnum--;\r
+ ////++++++++++++++++++++++++++++++++++++++++++CA_CacheMarks(NULL);\r
+}\r
\r
//===========================================================================\r
\r
//\r
// free cursor sprite and background save\r
//\r
- VW_FreeCursor ();\r
+ //VW_FreeCursor ();\r
\r
//\r
// free map headers and map planes\r