}\r
#endif\r
\r
-#define EXTENSION "hb1"\r
-\r
/*\r
=============================================================================\r
\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(MEMPTRANDPERCONV compseg,gvar->ca.chunkcomplen,gvar); IN_Ack(gvar);\r
+ MM_GetPtr(&compseg,gvar->ca.chunkcomplen,gvar);\r
+ 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(MEMPTRANDPERCONV compseg,gvar);\r
+ MM_FreePtr(&compseg,gvar);\r
#endif\r
\r
-#if 0\r
- //NUMPICM>0\r
+#if 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
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
CAL_SetupMapFile (gvar);\r
#endif\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
-\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.mapon>-1 && gvar->ca.mapheaderseg[gvar->ca.mapon])\r
- MM_SetPurge ((MEMPTRCONV gvar->ca.mapheaderseg[(gvar->ca.mapon)]), 3, gvar);\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
for (plane=0;plane<MAPPLANES;plane++)\r
- if (gvar->ca.mapsegs[plane])\r
- MM_FreePtr (MEMPTRCONV gvar->ca.mapsegs[plane], gvar);\r
+ if (gvar->ca.camap.mapsegs[plane])\r
+ MM_FreePtr ((memptr)gvar->ca.camap.mapsegs[plane], gvar);\r
\r
- gvar->ca.mapon = gvar->ca.mapnum;\r
+ gvar->ca.camap.mapon = gvar->ca.camap.mapnum;\r
\r
\r
//\r
// load map header\r
// The header will be cached if it is still around\r
//\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
+// 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
\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
+// 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
\r
//\r
// load the planes in\r
// allways reloaded, never cached)\r
//\r
\r
- size = gvar->ca.mapheaderseg[gvar->ca.mapnum]->width * gvar->ca.mapheaderseg[gvar->ca.mapnum]->height * 2;\r
+ size = mapheaderseg[mapnum]->width * mapheaderseg[mapnum]->height * 2;\r
\r
for (plane = 0; plane<MAPPLANES; plane++)\r
{\r
- pos = gvar->ca.mapheaderseg[gvar->ca.mapnum]->planestart[plane];\r
- compressed = gvar->ca.mapheaderseg[gvar->ca.mapnum]->planelength[plane];\r
+ //pos = mapheaderseg[mapnum]->planestart[plane];\r
+ //compressed = mapheaderseg[mapnum]->planelength[plane];\r
\r
if (!compressed)\r
continue; // the plane is not used in this game\r
\r
- dest = MEMPTRCONV gvar->ca.mapsegs[plane];\r
- MM_GetPtr(dest,size, gvar);\r
+ dest = MEMPTRCONV mapsegs[plane];\r
+ MM_GetPtr(dest,size);\r
\r
- lseek(gvar->ca.file.maphandle,pos,SEEK_SET);\r
+ lseek(maphandle,pos,SEEK_SET);\r
if (compressed<=BUFFERSIZE)\r
- source = gvar->mm.bufferseg;\r
+ source = bufferseg;\r
else\r
{\r
- MM_GetPtr(&bigbufferseg,compressed, gvar);\r
- MM_SetLock (&bigbufferseg,true, gvar);\r
+ MM_GetPtr(&bigbufferseg,compressed);\r
+ MM_SetLock (&bigbufferseg,true);\r
source = bigbufferseg;\r
}\r
\r
- CA_FarRead(gvar->ca.file.maphandle,(byte far *)source,compressed, gvar);\r
+ CA_FarRead(maphandle,(byte far *)source,compressed);\r
#ifdef MAPHEADERLINKED\r
//\r
// unhuffman, then unRLEW\r
//\r
expanded = *source;\r
source++;\r
- MM_GetPtr (&buffer2seg,expanded, gvar);\r
+ MM_GetPtr (&buffer2seg,expanded);\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 *)gvar->ca.tinf)->RLEWtag);\r
+ ((mapfiletype _seg *)tinf)->RLEWtag);\r
#endif\r
\r
if (compressed>BUFFERSIZE)\r
- MM_FreePtr(&bigbufferseg, gvar);\r
+ MM_FreePtr(&bigbufferseg);\r
}\r
-}\r
+}//*/\r
\r
//===========================================================================\r
\r
//\r
// free map headers and map planes\r
//\r
- for (i=0;i<NUMMAPS;i++)\r
- if (gvar->ca.mapheaderseg[i])\r
- MM_SetPurge (MEMPTRCONV gvar->ca.mapheaderseg[i],3, gvar);\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
\r
for (i=0;i<3;i++)\r
if (gvar->ca.mapsegs[i])\r
- MM_FreePtr (MEMPTRCONV gvar->ca.mapsegs[i], gvar);\r
+ MM_FreePtr ((memptr *)&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 (MEMPTRCONV gvar->ca.audiosegs[i],3, gvar);\r
+ MM_SetPurge ((memptr *)&gvar->ca.audiosegs[i],3, gvar);\r
\r
//\r
// free graphics\r
= CA_CacheMarks\r
=\r
======================\r
-*/\r
+*//*++++\r
#define MAXEMPTYREAD 1024\r
-/*++++ segments\r
+\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 (gvar, "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
};\r
// Array of corresponding vrl line offsets\r
vrl1_vgax_offset_t **vrl_line_offsets;\r
- //sprite buffer\r
- byte far _seg *spribuff;\r
} vrs_container_t;\r
\r
typedef struct vrl_container{\r
};\r
// Pointer to a corresponding vrl line offsets struct\r
vrl1_vgax_offset_t *line_offsets;\r
- //sprite buffer\r
- byte far _seg *spribuff;\r
} vrl_container_t;\r
\r
typedef struct sprite\r
//===================================//\r
#define PALSIZE 768 //vga\r
#define NUMCHUNKS 416 //keen\r
-//#define MAXSCANLINES 240 // size of ylookup table\r
+#define MAXSCANLINES 240 // size of ylookup table\r
\r
#define MAXSHIFTS 4\r
#define STARTSPRITES 0 //temp\r
word quadwh; //preproccessed quad size of tilewidth and tileheight\r
} tile_dimention_t;\r
\r
-#define MAXSCROLLEDGES 2\r
+#define MAXSCROLLEDGES 6\r
typedef struct\r
{\r
unsigned panx,pany; // panning adjustments inside port in pixels\r
word bordercolor;\r
boolean fastpalette;\r
byte far palette1[256][3],far palette2[256][3];\r
-//???? pictabletype _seg *pictable;\r
+ pictabletype _seg *pictable;\r
//keen/cata vars\r
// spritetabletype _seg *spritetable;\r
// unsigned *shifttabletable[8];\r
//from 16_mm\r
//==========================================================================\r
\r
-#define MAXBLOCKS 600//800 //kd=1300 wolf3d=700 cata=600\r
+#define MAXBLOCKS 800//kd=1300 wolf3d=700 cata=600\r
\r
typedef struct mmblockstruct\r
{\r
#define NOGRAPHICS\r
#define NOAUDIO\r
\r
-//#define MAPHEADERLINKED\r
+#define MAPHEADERLINKED\r
//#define GRHEADERLINKED\r
-//#define AUDIOHEADERLINKED\r
+#define AUDIOHEADERLINKED\r
\r
#define NUMMAPS 4//39\r
#define NUMSNDCHUNKS 4//3\r
#define GDICTNAME DATADIR"vgadict."\r
#define GHEADNAME DATADIR"vgahead."\r
#define GFILENAME DATADIR"vgagraph."\r
+#define EXTENSION "hb1"\r
\r
\r
-#define MAPSEGBUF mapsegs\r
-#define MAPSEGPTR MAPSEGBUF[0]\r
-#define MAPSEGINLM (gvar->ca.MAPSEGPTR)\r
-\r
typedef struct\r
{\r
word bit0,bit1; // 0-255 is a character, > is a pointer to a node\r
\r
typedef struct\r
{\r
- unsigned RLEWtag;\r
- long headeroffsets[100];\r
- byte tileinfo[];\r
-} mapfiletype;\r
+ int mapon, mapnum;\r
+ maptype _seg *mapheaderseg[NUMMAPS];\r
+} ca_mapinfo_t;\r
\r
typedef struct\r
{\r
{\r
byte ca_levelbit,ca_levelnum;\r
ca_handle_t file; //files to open\r
+ ca_mapinfo_t camap;\r
\r
byte _seg *tinf;//?? where in the id engine is this used and what is it? --sparky4\r
- int mapon, mapnum;\r
- maptype _seg *mapheaderseg[NUMMAPS];\r
unsigned _seg *mapsegs[MAPPLANES];\r
void _seg *grsegs[NUMCHUNKS];\r
byte far grneeded[NUMCHUNKS];\r
#ifdef GRHEADERLINKED\r
huffnode *grhuffman;\r
#else\r
- huffnode grhuffman[63];\r
+ huffnode grhuffman[255];\r
#endif\r
\r
#ifdef AUDIOHEADERLINKED\r
huffnode *audiohuffman;\r
#else\r
- huffnode audiohuffman[63];\r
+ huffnode audiohuffman[255];\r
#endif\r
\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
\r
//==========================================================================\r