-/* Catacomb Apocalypse Source Code\r
- * Copyright (C) 1993-2014 Flat Rock Software\r
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2021 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
*\r
- * This program is free software; you can redistribute it and/or modify\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
* it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
+ * the Free Software Foundation; either version 3 of the License, or\r
* (at your option) any later version.\r
*\r
- * This program is distributed in the hope that it will be useful,\r
+ * Project 16 is distributed in the hope that it will be useful,\r
* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
* GNU General Public License for more details.\r
*\r
- * You should have received a copy of the GNU General Public License along\r
- * with this program; if not, write to the Free Software Foundation, Inc.,\r
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
*/\r
\r
// ID_CA.C\r
}\r
#endif\r
\r
+//#define EXTENSION "hp1"\r
+\r
/*\r
=============================================================================\r
\r
boolean CA_FarRead(int handle, byte far *dest, dword length, global_game_variables_t *gvar)\r
{\r
boolean flag=0;\r
- //dword fat=0;\r
- //word segm=0;\r
- if(gvar->pm.emm.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;//TODO: EXPAND!!!\r
- }\r
+ if (length>0xfffflu)\r
+ Quit (gvar, "CA_FarRead doesn't support 64K reads yet!");//TODO: EXPAND!!!\r
\r
- //if(!fat&&!segm)\r
- //{\r
__asm {\r
push ds\r
mov bx,[handle]\r
/*\r
==========================\r
=\r
-= CA_SegWrite\r
+= CA_FarWrite\r
=\r
= Write from a file to a far pointer\r
=\r
boolean CA_FarWrite(int handle, byte far *source, dword length, global_game_variables_t *gvar)\r
{\r
boolean flag=0;\r
- //dword fat=0;\r
- //word segm=0;\r
- if(gvar->pm.emm.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_FarWrite doesn't support 64K reads yet!\n");\r
- return 0;\r
- }\r
+ if (length>0xfffflu)\r
+ Quit (gvar, "CA_FarWrite doesn't support 64K reads yet!");//TODO: EXPAND!!!\r
\r
- //if(!fat&&!segm)\r
- //{\r
__asm {\r
push ds\r
mov bx,[handle]\r
{\r
char fname[13];\r
int handle;\r
+#if NUMPICS>0\r
memptr compseg;\r
+#endif\r
\r
#ifdef GRHEADERLINKED\r
\r
//\r
\r
strcpy(fname,GDICTNAME);\r
- strcat(fname,EXTENSION);\r
+ strcat(fname,"hp1");\r
\r
if ((handle = open(fname,\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
MM_GetPtr (MEMPTRCONV gvar->ca.grstarts,(NUMCHUNKS+1)*FILEPOSSIZE, gvar);\r
\r
strcpy(fname,GHEADNAME);\r
- strcat(fname,EXTENSION);\r
+ strcat(fname,"hp1");\r
\r
if ((handle = open(fname,\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
// Open the graphics file, leaving it open until the game is finished\r
//\r
strcpy(fname,GFILENAME);\r
- strcat(fname,EXTENSION);\r
+ strcat(fname,"hp1");\r
\r
gvar->ca.file.grhandle = open(fname, O_RDONLY | O_BINARY);\r
if (gvar->ca.file.grhandle == -1)\r
CAL_GetGrChunkLength(STRUCTPIC,gvar); // position file pointer\r
printf("CAL_SetupGrFile:\n");\r
printf(" gvar->ca.chunkcomplen size is %lu\n", gvar->ca.chunkcomplen);\r
- MM_GetPtr(&compseg,gvar->ca.chunkcomplen,gvar);\r
- IN_Ack(gvar);\r
+ MM_GetPtr(MEMPTRANDPERCONV compseg,gvar->ca.chunkcomplen,gvar); IN_Ack(gvar);\r
CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen,gvar);\r
CAL_HuffExpand (compseg, (byte far *)gvar->video.pictable,NUMPICS*sizeof(pictabletype),gvar->ca.grhuffman);\r
- MM_FreePtr(&compseg,gvar);\r
+ MM_FreePtr(MEMPTRANDPERCONV compseg,gvar);\r
#endif\r
\r
-#if NUMPICM>0\r
+#if 0\r
+ //NUMPICM>0\r
MM_GetPtr(MEMPTRCONV picmtable,NUMPICM*sizeof(pictabletype));\r
CAL_GetGrChunkLength(STRUCTPICM); // position file pointer\r
MM_GetPtr(&compseg,gvar->ca.chunkcomplen);\r
CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen);\r
CAL_HuffExpand (compseg, (byte far *)picmtable,NUMPICS*sizeof(pictabletype),gvar->ca.grhuffman);\r
MM_FreePtr(&compseg);\r
-#endif\r
+//#endif\r
\r
-#if NUMSPRITES>0\r
+//#if NUMSPRITES>0\r
MM_GetPtr(MEMPTRCONV spritetable,NUMSPRITES*sizeof(spritetabletype));\r
CAL_GetGrChunkLength(STRUCTSPRITE); // position file pointer\r
MM_GetPtr(&compseg,gvar->ca.chunkcomplen);\r
#ifndef MAPHEADERLINKED\r
if ((handle = open("maphead.mph",\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open maphead.mph");\r
+ Quit (gvar, "Can't open maphead.mph");\r
length = filelength(handle);\r
MM_GetPtr (MEMPTRCONV gvar->ca.tinf,length,gvar);\r
CA_FarRead(handle, gvar->ca.tinf, length,gvar);\r
close(handle);\r
-//#else\r
+#else\r
\r
gvar->ca.tinf = (byte _seg *)FP_SEG(&maphead);\r
\r
//TODO: multiple files\r
if ((gvar->ca.file.maphandle = open("data/test.map",\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open data/test.map!");\r
+ Quit (gvar, "Can't open data/test.map!");\r
/*#ifdef MAPHEADERLINKED\r
if ((maphandle = open("GAMEMAPS.16"ENSION,\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open GAMEMAPS.16"ENSION"!");\r
+ Quit (gvar, "Can't open GAMEMAPS.16"ENSION"!");\r
#else\r
if ((maphandle = open("MAPTEMP.16"ENSION,\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open MAPTEMP.16"ENSION"!");\r
+ Quit (gvar, "Can't open MAPTEMP.16"ENSION"!");\r
#endif*/\r
}\r
\r
#ifndef AUDIOHEADERLINKED\r
if ((handle = open("AUDIOHED.16",\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open AUDIOHED.16""!");\r
+ Quit (gvar, "Can't open AUDIOHED.16""!");\r
length = filelength(handle);\r
MM_GetPtr (MEMPTRCONV audiostarts,length);\r
CA_FarRead(handle, (byte far *)audiostarts, length);\r
#ifndef AUDIOHEADERLINKED\r
if ((audiohandle = open("AUDIOT.16",\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open AUDIOT.16""!");\r
+ Quit (gvar, "Can't open AUDIOT.16""!");\r
#else\r
if ((audiohandle = open("AUDIO.16",\r
O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
- Quit ("Can't open AUDIO.16""!");\r
+ Quit (gvar, "Can't open AUDIO.16""!");\r
#endif\r
}*/\r
\r
#endif\r
#endif//profile\r
\r
+#ifdef SHOWMEMINFO\r
#ifdef __BORLANDC__\r
unlink("meminfo.16b");\r
gvar->handle.showmemhandle = open("meminfo.16b", O_CREAT | O_WRONLY | O_TEXT);\r
unlink("meminfo.16w");\r
gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT);\r
#endif\r
+#endif\r
\r
\r
#ifndef NOMAPS\r
CAL_SetupMapFile (gvar);\r
#endif\r
\r
- gvar->ca.camap.mapon = -1;\r
+ gvar->ca.mapon = -1;\r
gvar->ca.ca_levelbit = 1;\r
gvar->ca.ca_levelnum = 0;\r
\r
#ifdef PROFILE\r
close(gvar->handle.profilehandle);\r
#endif\r
+#ifdef SHOWMEMINFO\r
close(gvar->handle.showmemhandle);\r
+#endif\r
\r
close(gvar->ca.file.maphandle);\r
close(gvar->ca.file.grhandle);\r
// MDM begin - (GAMERS EDGE)\r
//\r
if (!FindFile("AUDIO.16",NULL,2))\r
- Quit ("CA_CacheAudioChunk(): Can't find audio files.");\r
+ Quit (gvar, "CA_CacheAudioChunk(): Can't find audio files.");\r
//\r
// MDM end\r
\r
//===========================================================================\r
\r
//????#if GRMODE == EGAGR\r
-#if 0\r
\r
/*\r
======================\r
=\r
======================\r
*/\r
-\r
+/*++++\r
unsigned static sheight,swidth;\r
boolean static dothemask;\r
\r
void CAL_ShiftSprite (unsigned segment,unsigned source,unsigned dest,\r
- unsigned width, unsigned height, unsigned pixshift, boolean domask)\r
+ unsigned width, unsigned height, unsigned pixshift, boolean domask, global_game_variables_t *gvar)\r
{\r
\r
sheight = height; // because we are going to reassign bp\r
mov bp,[pixshift]\r
shl bp,1\r
mov bp,WORD PTR [shifttabletable+bp] // bp holds pointer to shift table\r
+// mov bp,WORD PTR [gvar->video.shifttabletable+bp] // bp holds pointer to shift table\r
\r
cmp [ss:dothemask],0\r
je skipmask\r
}\r
\r
#endif\r
-\r
+*/\r
//===========================================================================\r
\r
/*\r
======================\r
*/\r
/*++++\r
-void CAL_CacheSprite (int chunk, byte far *compressed)\r
+void CAL_CacheSprite (int chunk, byte far *compressed, global_game_variables_t *gvar)\r
{\r
int i;\r
unsigned shiftstarts[5];\r
spritetabletype far *spr;\r
spritetype _seg *dest;\r
\r
-#if GRMODE == CGAGR\r
+#if 0\r
+//GRMODE == CGAGR\r
//\r
// CGA has no pel panning, so shifts are never needed\r
//\r
- spr = &spritetable[chunk-STARTSPRITES];\r
+ spr = &gvar->video.spritetable[chunk-STARTSPRITES];\r
smallplane = spr->width*spr->height;\r
MM_GetPtr (&grsegs[chunk],smallplane*2+MAXSHIFTS*6);\r
if (mmerror)\r
#endif\r
\r
\r
-#if GRMODE == EGAGR\r
+//#if GRMODE == EGAGR\r
\r
//\r
// calculate sizes\r
//\r
- spr = &spritetable[chunk-STARTSPRITES];\r
+ spr = &gvar->video.spritetable[chunk-STARTSPRITES];\r
smallplane = spr->width*spr->height;\r
bigplane = (spr->width+1)*spr->height;\r
\r
shiftstarts[4] = shiftstarts[3] + bigplane*5; // nothing ever put here\r
\r
expanded = shiftstarts[spr->shifts];\r
- MM_GetPtr (&grsegs[chunk],expanded);\r
- if (mmerror)\r
+ MM_GetPtr (MEMPTRCONV gvar->ca.grsegs[chunk],expanded, gvar);\r
+ if (gvar->mm.mmerror)\r
return;\r
- dest = (spritetype _seg *)grsegs[chunk];\r
+ dest = (spritetype _seg *)gvar->ca.grsegs[chunk];\r
\r
//\r
// expand the unshifted shape\r
dest->planesize[i] = bigplane;\r
dest->width[i] = spr->width+1;\r
}\r
- CAL_ShiftSprite ((unsigned)grsegs[chunk],dest->sourceoffset[0],\r
- dest->sourceoffset[2],spr->width,spr->height,4,true);\r
+ CAL_ShiftSprite ((unsigned)gvar->ca.grsegs[chunk],dest->sourceoffset[0],\r
+ dest->sourceoffset[2],spr->width,spr->height,4,true,gvar);\r
break;\r
\r
case 4:\r
dest->sourceoffset[1] = shiftstarts[1];\r
dest->planesize[1] = bigplane;\r
dest->width[1] = spr->width+1;\r
- CAL_ShiftSprite ((unsigned)grsegs[chunk],dest->sourceoffset[0],\r
- dest->sourceoffset[1],spr->width,spr->height,2,true);\r
+ CAL_ShiftSprite ((unsigned)gvar->ca.grsegs[chunk],dest->sourceoffset[0],\r
+ dest->sourceoffset[1],spr->width,spr->height,2,true,gvar);\r
\r
dest->sourceoffset[2] = shiftstarts[2];\r
dest->planesize[2] = bigplane;\r
dest->width[2] = spr->width+1;\r
- CAL_ShiftSprite ((unsigned)grsegs[chunk],dest->sourceoffset[0],\r
- dest->sourceoffset[2],spr->width,spr->height,4,true);\r
+ CAL_ShiftSprite ((unsigned)gvar->ca.grsegs[chunk],dest->sourceoffset[0],\r
+ dest->sourceoffset[2],spr->width,spr->height,4,true,gvar);\r
\r
dest->sourceoffset[3] = shiftstarts[3];\r
dest->planesize[3] = bigplane;\r
dest->width[3] = spr->width+1;\r
- CAL_ShiftSprite ((unsigned)grsegs[chunk],dest->sourceoffset[0],\r
- dest->sourceoffset[3],spr->width,spr->height,6,true);\r
+ CAL_ShiftSprite ((unsigned)gvar->ca.grsegs[chunk],dest->sourceoffset[0],\r
+ dest->sourceoffset[3],spr->width,spr->height,6,true,gvar);\r
\r
break;\r
\r
default:\r
- Quit ("CAL_CacheSprite: Bad shifts number!");\r
+ Quit (gvar, "CAL_CacheSprite: Bad shifts number!");\r
}\r
\r
-#endif\r
+//#endif\r
}*/\r
\r
//===========================================================================\r
// MDM begin - (GAMERS EDGE)\r
//\r
if (!FindFile("EGAGRAPH.16",NULL,2))\r
- Quit ("CA_CacheGrChunk(): Can't find graphics files.");\r
+ Quit (gvar, "CA_CacheGrChunk(): Can't find graphics files.");\r
//\r
// MDM end\r
\r
CAL_ExpandGrChunk (chunk,source);\r
\r
if (compressed>BUFFERSIZE)\r
- MM_FreePtr(&bigbufferseg);\r
+ MM_FreePtr (MEMPTRCONV bigbufferseg);\r
}\r
*/\r
\r
=\r
======================\r
*/\r
-/*++++ segments!\r
+\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.camap.mapon>-1 && gvar->ca.camap.mapheaderseg[gvar->ca.camap.mapon])\r
- MM_SetPurge (((memptr)gvar->ca.camap.mapheaderseg[(gvar->ca.camap.mapon)]), 3, gvar);\r
+ if (gvar->ca.mapon>-1 && gvar->ca.mapheaderseg[gvar->ca.mapon])\r
+ MM_SetPurge ((MEMPTRCONV gvar->ca.mapheaderseg[(gvar->ca.mapon)]), 3, gvar);\r
for (plane=0;plane<MAPPLANES;plane++)\r
- if (gvar->ca.camap.mapsegs[plane])\r
- MM_FreePtr ((memptr)gvar->ca.camap.mapsegs[plane], gvar);\r
+ if (gvar->ca.mapsegs[plane])\r
+ MM_FreePtr (MEMPTRCONV gvar->ca.mapsegs[plane], gvar);\r
\r
- gvar->ca.camap.mapon = gvar->ca.camap.mapnum;\r
+ gvar->ca.mapon = gvar->ca.mapnum;\r
\r
\r
//\r
// load map header\r
// The header will be cached if it is still around\r
//\r
-// if (!gvar->ca.camap.mapheaderseg[gvar->ca.camap.mapnum])\r
-// {\r
-// //pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum];\r
-// //pos = ((_seg *)gvar->ca.camap.tinf)->headeroffsets[gvar->ca.camap.mapnum];\r
-// pos = ((memptr)gvar->ca.camap.tinf)->headeroffsets[gvar->ca.camap.mapnum];\r
-// if (pos<0) // $FFFFFFFF start is a sparse map\r
-// printf("CA_CacheMap: Tried to load a non existent map!");\r
+ if (!gvar->ca.mapheaderseg[gvar->ca.mapnum])\r
+ {\r
+ pos = ((mapfiletype _seg *)gvar->ca.tinf)->headeroffsets[gvar->ca.mapnum];\r
+ if (pos<0) // $FFFFFFFF start is a sparse map\r
+ Quit (gvar, "CA_CacheMap: Tried to load a non existent map!");\r
\r
-// MM_GetPtr(MEMPTRCONV gvar->ca.camapheaderseg[mapnum],sizeof(maptype));\r
-// lseek(maphandle,pos,SEEK_SET);\r
-// CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype));\r
-// }\r
-// else\r
-// MM_SetPurge (MEMPTRCONV mapheaderseg[mapnum], 0, &(gvar->mm));\r
+ MM_GetPtr(MEMPTRCONV gvar->ca.mapheaderseg[gvar->ca.mapnum],sizeof(maptype), gvar);\r
+ lseek(gvar->ca.file.maphandle,pos,SEEK_SET);\r
+#ifdef MAPHEADERLINKED\r
+//#if BUFFERSIZE < sizeof(maptype)\r
+//The general buffer size is too small!\r
+//#endif\r
+ //\r
+ // load in, then unhuffman to the destination\r
+ //\r
+ CA_FarRead (gvar->ca.file.maphandle,gvar->mm.bufferseg,((mapfiletype _seg *)gvar->ca.tinf)->headersize[gvar->ca.mapnum], gvar);\r
+ CAL_HuffExpand ((byte huge *)bufferseg,\r
+ (byte huge *)gvar->ca.mapheaderseg[gvar->ca.mapnum],sizeof(maptype),maphuffman, gvar);\r
+#else\r
+ CA_FarRead (gvar->ca.file.maphandle,(memptr)gvar->ca.mapheaderseg[gvar->ca.mapnum],sizeof(maptype), gvar);\r
+#endif\r
+ }\r
+ else\r
+ MM_SetPurge (MEMPTRCONV gvar->ca.mapheaderseg[gvar->ca.mapnum], 0, gvar);\r
\r
//\r
// load the planes in\r
// allways reloaded, never cached)\r
//\r
\r
- size = mapheaderseg[mapnum]->width * mapheaderseg[mapnum]->height * 2;\r
+ size = gvar->ca.mapheaderseg[gvar->ca.mapnum]->width * gvar->ca.mapheaderseg[gvar->ca.mapnum]->height * 2;\r
\r
for (plane = 0; plane<MAPPLANES; plane++)\r
{\r
- //pos = mapheaderseg[mapnum]->planestart[plane];\r
- //compressed = mapheaderseg[mapnum]->planelength[plane];\r
+ pos = gvar->ca.mapheaderseg[gvar->ca.mapnum]->planestart[plane];\r
+ compressed = gvar->ca.mapheaderseg[gvar->ca.mapnum]->planelength[plane];\r
\r
if (!compressed)\r
continue; // the plane is not used in this game\r
\r
- dest = MEMPTRCONV mapsegs[plane];\r
- MM_GetPtr(dest,size);\r
+ dest = MEMPTRCONV gvar->ca.mapsegs[plane];\r
+ MM_GetPtr(dest,size, gvar);\r
\r
- lseek(maphandle,pos,SEEK_SET);\r
+ lseek(gvar->ca.file.maphandle,pos,SEEK_SET);\r
if (compressed<=BUFFERSIZE)\r
- source = bufferseg;\r
+ source = gvar->mm.bufferseg;\r
else\r
{\r
- MM_GetPtr(&bigbufferseg,compressed);\r
- MM_SetLock (&bigbufferseg,true);\r
+ MM_GetPtr(MEMPTRCONV bigbufferseg,compressed, gvar);\r
+ MM_SetLock (MEMPTRCONV bigbufferseg,true, gvar);\r
source = bigbufferseg;\r
}\r
\r
- CA_FarRead(maphandle,(byte far *)source,compressed);\r
+ CA_FarRead(gvar->ca.file.maphandle,(byte far *)source,compressed, gvar);\r
#ifdef MAPHEADERLINKED\r
//\r
// unhuffman, then unRLEW\r
//\r
expanded = *source;\r
source++;\r
- MM_GetPtr (&buffer2seg,expanded);\r
+ MM_GetPtr (&buffer2seg,expanded, gvar);\r
CAL_CarmackExpand (source, (unsigned far *)buffer2seg,expanded);\r
CA_RLEWexpand (((unsigned far *)buffer2seg)+1,*dest,size,\r
((mapfiletype _seg *)tinf)->RLEWtag);\r
// unRLEW, skipping expanded length\r
//\r
CA_RLEWexpand (source+1, *dest,size,\r
- ((mapfiletype _seg *)tinf)->RLEWtag);\r
+ ((mapfiletype _seg *)gvar->ca.tinf)->RLEWtag);\r
#endif\r
\r
if (compressed>BUFFERSIZE)\r
- MM_FreePtr(&bigbufferseg);\r
+ MM_FreePtr(MEMPTRCONV bigbufferseg, gvar);\r
}\r
-}//*/\r
+}\r
\r
//===========================================================================\r
\r
\r
for (i=0;i<NUMCHUNKS;i++)\r
if (gvar->ca.grsegs[i])\r
- MM_SetPurge (gvar->ca.grsegs[i],3, gvar);\r
+ MM_SetPurge (MEMPTRCONV gvar->ca.grsegs[i],3, gvar);\r
}\r
\r
\r
//\r
// free map headers and map planes\r
//\r
-// for (i=0;i<NUMMAPS;i++)\r
-// if (gvar->ca.camap.mapheaderseg[i])\r
-// MM_SetPurge (gvar->ca.camap.mapheaderseg[i],3, gvar);\r
+ for (i=0;i<NUMMAPS;i++)\r
+ if (gvar->ca.mapheaderseg[i])\r
+ MM_SetPurge (MEMPTRCONV gvar->ca.mapheaderseg[i],3, gvar);\r
\r
for (i=0;i<3;i++)\r
if (gvar->ca.mapsegs[i])\r
- MM_FreePtr ((memptr *)&gvar->ca.mapsegs[i], gvar);\r
+ MM_FreePtr (MEMPTRCONV gvar->ca.mapsegs[i], gvar);\r
\r
//\r
// free sounds\r
//\r
for (i=0;i<NUMSNDCHUNKS;i++)\r
if (gvar->ca.audiosegs[i])\r
- MM_SetPurge ((memptr *)&gvar->ca.audiosegs[i],3, gvar);\r
+ MM_SetPurge (MEMPTRCONV gvar->ca.audiosegs[i],3, gvar);\r
\r
//\r
// free graphics\r
= CA_CacheMarks\r
=\r
======================\r
-*//*++++\r
+*/\r
#define MAXEMPTYREAD 1024\r
-\r
+/*++++ segments\r
void CAL_CacheMarks (char *title, global_game_variables_t *gvar)\r
{\r
boolean dialog;\r
\r
// MDM begin - (GAMERS EDGE)\r
//\r
-// if (!FindFile("EGAGRAPH.16",NULL,2))\r
-// Quit ("CA_CacheMarks(): Can't find graphics files.");\r
+//???? if (!FindFile("EGAGRAPH.16",NULL,2))\r
+//???? Quit (gvar, "CA_CacheMarks(): Can't find graphics files.");\r
//\r
// MDM end\r
\r
//\r
if (dialog && finishcachebox)\r
finishcachebox();\r
-}*/\r
+}//*/\r
\r
void CA_CannotOpen(char *string, global_game_variables_t *gvar)\r
{\r
strcpy(str,"Can't open ");\r
strcat(str,string);\r
strcat(str,"!\n");\r
- Quit (str);\r
+ Quit (gvar, str);\r
}\r