From: sparky4 Date: Fri, 12 May 2017 15:53:34 +0000 (-0500) Subject: 16_ca needs huge amounts of work and I should remember what needs to be done soon... X-Git-Url: http://4ch.mooo.com/gitweb/?p=16.git;a=commitdiff_plain;h=96992fdbb5f922729fde92dc43051fe082e0b47e 16_ca needs huge amounts of work and I should remember what needs to be done soon[going to port rest of code to borland c some time so we can use the core components of id engine here ][going to add 16_us.c eventually but the debug system and CA_ PM_ and MM_ usage is priority now]older zcroll renamed to xcroll][zcroll is now the pre menu game loop system with PROPER data usage with CAMMPM] added 1st scroll back [i work on CA] palette debug show values added wwww and i need to know how to see vrs/vrl imaage data palette index numbers [i am trying to find out how the hell you get the index number values of VRL/VRS] boom has been fixed ^^[CA_CacheMap added seems to be used in start a new game] --- diff --git a/_varsuse.txt b/_varsuse.txt new file mode 100755 index 00000000..7d3f9ad1 --- /dev/null +++ b/_varsuse.txt @@ -0,0 +1,229 @@ +16/keen/id_ca.c:byte _seg *tinf; +16/keen/id_ca.c:unsigned _seg *mapsegs[3]; +16/keen/id_ca.c:maptype _seg *mapheaderseg[NUMMAPS]; +16/keen/id_ca.c:byte _seg *audiosegs[NUMSNDCHUNKS]; +16/keen/id_ca.c:void _seg *grsegs[NUMCHUNKS]; +16/keen/id_ca.c:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse +16/keen/id_ca.c:long _seg *audiostarts; // array of offsets in audio / audiot + +16/keen/id_rf.c: spritetype _seg *block; +16/keen/id_rf.c: block = (spritetype _seg *)grsegs[spritenumber]; +16/keen/id_rf.c: spritetype _seg *block; +16/keen/id_rf.c: block = (spritetype _seg *)grsegs[spritenumber]; + +16/keen/id_vw.c:pictabletype _seg *pictable; +16/keen/id_vw.c:pictabletype _seg *picmtable; +16/keen/id_vw.c:spritetabletype _seg *spritetable; + +16/keen/id_vw.c: spritetype _seg *block; +16/keen/id_vw.c: spritetype _seg *block; +16/keen/id_vw.c: block = (spritetype _seg *)grsegs[chunknum]; + +16/keen/kd_keen.c: spritetype _seg *block; +16/keen/kd_keen.c: block = (spritetype _seg *)grsegs[SCOREBOXSPR]; +16/keen/kd_keen.c: spritetype _seg *dest; +16/keen/kd_keen.c: dest = (spritetype _seg *)grsegs[SCOREBOXSPR]; +16/keen/kd_keen.c: spritetype _seg *block; +16/keen/kd_keen.c: block = (spritetype _seg *)grsegs[SCOREBOXSPR]; +16/keen/kd_keen.c: block = (spritetype _seg *)grsegs[SCOREBOXSPR]; +16/keen/kd_keen.c: block = (spritetype _seg *)grsegs[SCOREBOXSPR]; +16/keen/kd_keen.c: tile = *((unsigned _seg *)mapsegs[2]+mapbwidthtable[y]/2+x); +16/keen/kd_keen.c: map = (unsigned _seg *)mapsegs[1]+ +16/keen/kd_keen.c: map = (unsigned _seg *)mapsegs[1]+ +16/keen/kd_keen.c: map = (unsigned _seg *)mapsegs[1]+mapbwidthtable[ob->tiletop]/2+ob->temp4; +16/keen/kd_keen.c: map = (unsigned _seg *)mapsegs[1]+mapbwidthtable[ob->tilebottom]/2+ob->temp4; +16/keen/kd_main.c: spritetype _seg *block; +16/keen/kd_main.c: block = (spritetype _seg *)grsegs[sprite]; + + + + +16/wf3d8086/contigsc.c:byte _seg *endscalermemory; +16/wf3d8086/contigsc.c: endscalermemory = (void _seg *)(seg+ofs/16); +16/wf3d8086/contigsc.c: t_compshape _seg *shape; +16/wf3d8086/contigsc.c: t_compshape _seg *shape; +16/wf3d8086/id_ca.c:byte _seg *tinf; +16/wf3d8086/id_ca.c:unsigned _seg *mapsegs[MAPPLANES]; +16/wf3d8086/id_ca.c:maptype _seg *mapheaderseg[NUMMAPS]; +16/wf3d8086/id_ca.c:byte _seg *audiosegs[NUMSNDCHUNKS]; +16/wf3d8086/id_ca.c:void _seg *grsegs[NUMCHUNKS]; +16/wf3d8086/id_ca.c:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse +16/wf3d8086/id_ca.c:long _seg *audiostarts; // array of offsets in audio / audiot + +16/wf3d8086/id_pm.c: _seg *PMSegPages; +16/wf3d8086/id_pm.c: void _seg *buf; +16/wf3d8086/id_pm.c: MM_FreePtr(&(void _seg *)PMSegPages); + +16/wf3d8086/id_vh.c:pictabletype _seg *pictable; +16/wf3d8086/id_vh.c: byte _seg *temp, far *dest, far *srcline; +16/wf3d8086/id_vh.c: src = (byte _seg *)grsegs[STARTTILE8]; +16/wf3d8086/id_vh.c: src = (byte _seg *)grsegs[STARTTILE16]; +16/wf3d8086/id_vh.c: src = (byte _seg *)grsegs[STARTTILE16+i]; +16/wf3d8086/wl_debug.c: spritetype _seg *block; +16/wf3d8086/wl_debug.c:extern word _seg *DigiList; +16/wf3d8086/wl_menu.c: fontstruct _seg *font; +16/wf3d8086/wl_scale.c:t_compscale _seg *scaledirectory[MAXSCALEHEIGHT+1]; +16/wf3d8086/wl_scale.c:t_compscale _seg *work; +16/wf3d8086/wl_scale.c: _fmemcpy ((byte _seg *)(*finalspot),(byte _seg *)work,totalsize); +16/wf3d8086/wl_scale.c: t_compshape _seg *shape; +16/wf3d8086/wl_scale.c: t_compscale _seg *comptable; +16/wf3d8086/wl_scale.c: t_compshape _seg *shape; +16/wf3d8086/wl_scale.c: t_compscale _seg *comptable; +16/wf3d8086/wl_text.c: text = (char _seg *)grsegs[artnum]; +16/wf3d8086/wl_text.c: text = (char _seg *)layout; +16/wf3d8086/wl_text.c: text = (char _seg *)grsegs[artnum]; +16/wf3d8086/wl_text.c: text = (char _seg *)layout; +16/wolf3d/WOLFSRC/CONTIGSC.C:byte _seg *endscalermemory; +16/wolf3d/WOLFSRC/CONTIGSC.C: endscalermemory = (void _seg *)(seg+ofs/16); +16/wolf3d/WOLFSRC/CONTIGSC.C: t_compshape _seg *shape; +16/wolf3d/WOLFSRC/CONTIGSC.C: t_compshape _seg *shape; +16/wolf3d/WOLFSRC/ID_CA.C:byte _seg *tinf; +16/wolf3d/WOLFSRC/ID_CA.C:unsigned _seg *mapsegs[MAPPLANES]; +16/wolf3d/WOLFSRC/ID_CA.C:maptype _seg *mapheaderseg[NUMMAPS]; +16/wolf3d/WOLFSRC/ID_CA.C:byte _seg *audiosegs[NUMSNDCHUNKS]; +16/wolf3d/WOLFSRC/ID_CA.C:void _seg *grsegs[NUMCHUNKS]; +16/wolf3d/WOLFSRC/ID_CA.C:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse +16/wolf3d/WOLFSRC/ID_CA.C:long _seg *audiostarts; // array of offsets in audio / audiot +16/wolf3d/WOLFSRC/ID_CA.C: grstarts = (long _seg *)FP_SEG(&EGAhead); +16/wolf3d/WOLFSRC/ID_CA.C: tinf = (byte _seg *)FP_SEG(&maphead); +16/wolf3d/WOLFSRC/ID_CA.C: pos = ((mapfiletype _seg *)tinf)->headeroffsets[i]; +16/wolf3d/WOLFSRC/ID_CA.C: audiostarts = (long _seg *)FP_SEG(&audiohead); +16/wolf3d/WOLFSRC/ID_CA.C: ((mapfiletype _seg *)tinf)->RLEWtag); +16/wolf3d/WOLFSRC/ID_CA.C: ((mapfiletype _seg *)tinf)->RLEWtag); +16/wolf3d/WOLFSRC/ID_CA.C: source = (byte _seg *)bufferseg+(pos-bufferstart); +16/wolf3d/WOLFSRC/ID_IN.C: byte _seg *DemoBuffer; +16/wolf3d/WOLFSRC/ID_PM.C: _seg *PMSegPages; +16/wolf3d/WOLFSRC/ID_PM.C: void _seg *buf; +16/wolf3d/WOLFSRC/ID_PM.C: MM_FreePtr(&(void _seg *)PMSegPages); +16/wolf3d/WOLFSRC/ID_SD.C: word *SoundTable; // Really * _seg *SoundTable, but that don't work +16/wolf3d/WOLFSRC/ID_SD.C: word _seg *DigiList; +16/wolf3d/WOLFSRC/ID_VH.C:pictabletype _seg *pictable; +16/wolf3d/WOLFSRC/ID_VH.C: byte _seg *temp, far *dest, far *srcline; +16/wolf3d/WOLFSRC/ID_VH.C: , fontstruct _seg *font) +16/wolf3d/WOLFSRC/ID_VH.C: VWL_MeasureString(string,width,height,(fontstruct _seg *)grsegs[STARTFONT+fontnumber]); +16/wolf3d/WOLFSRC/ID_VH.C: VWL_MeasureString(string,width,height,(fontstruct _seg *)grsegs[STARTFONTM+fontnumber]); +16/wolf3d/WOLFSRC/ID_VH.C: src = (byte _seg *)grsegs[STARTTILE8]; +16/wolf3d/WOLFSRC/ID_VH.C: src = (byte _seg *)grsegs[STARTTILE16]; +16/wolf3d/WOLFSRC/ID_VH.C: src = (byte _seg *)grsegs[STARTTILE16+i]; +16/wolf3d/WOLFSRC/WL_DEBUG.C: spritetype _seg *block; +16/wolf3d/WOLFSRC/WL_DEBUG.C:extern word _seg *DigiList; +16/wolf3d/WOLFSRC/WL_MENU.C: fontstruct _seg *font; +16/wolf3d/WOLFSRC/WL_SCALE.C:t_compscale _seg *scaledirectory[MAXSCALEHEIGHT+1]; +16/wolf3d/WOLFSRC/WL_SCALE.C:t_compscale _seg *work; +16/wolf3d/WOLFSRC/WL_SCALE.C: _fmemcpy ((byte _seg *)(*finalspot),(byte _seg *)work,totalsize); +16/wolf3d/WOLFSRC/WL_SCALE.C: t_compshape _seg *shape; +16/wolf3d/WOLFSRC/WL_SCALE.C: t_compscale _seg *comptable; +16/wolf3d/WOLFSRC/WL_SCALE.C: t_compshape _seg *shape; +16/wolf3d/WOLFSRC/WL_SCALE.C: t_compscale _seg *comptable; +16/wolf3d/WOLFSRC/WL_TEXT.C: text = (char _seg *)grsegs[artnum]; +16/wolf3d/WOLFSRC/WL_TEXT.C: text = (char _seg *)layout; +16/wolf3d/WOLFSRC/WL_TEXT.C: text = (char _seg *)grsegs[artnum]; +16/wolf3d/WOLFSRC/WL_TEXT.C: text = (char _seg *)layout; +16/Catacomb3D/C3_DEBUG.C: spritetype _seg *block; +16/Catacomb3D/C3_GAME.C: text = (char _seg *)grsegs[LEVEL1TEXT+mapon]; +16/Catacomb3D/C3_GAME.C: src = (byte _seg *)grsegs[STARTTILE8]; +16/Catacomb3D/C3_GAME.C: src = (byte _seg *)grsegs[STARTTILE16]; +16/Catacomb3D/C3_GAME.C: src = (byte _seg *)grsegs[STARTTILE16+i]; +16/Catacomb3D/C3_SCALE.C:t_compscale _seg *scaledirectory[MAXSCALE+1]; +16/Catacomb3D/C3_SCALE.C:t_compshape _seg *shapedirectory[NUMSCALEPICS]; +16/Catacomb3D/C3_SCALE.C: plane0 = (byte _seg *)grsegs[picnum]; +16/Catacomb3D/C3_SCALE.C: t_compscale _seg *work; +16/Catacomb3D/C3_SCALE.C: _fmemcpy ((byte _seg *)(*finalspot),(byte _seg *)work,totalsize); +16/Catacomb3D/C3_SCALE.C:unsigned BuildCompShape (t_compshape _seg **finalspot) +16/Catacomb3D/C3_SCALE.C: t_compshape _seg *work; +16/Catacomb3D/C3_SCALE.C: work = (t_compshape _seg *)(0xa000+(buff+15)/16); +16/Catacomb3D/C3_SCALE.C: _fmemcpy ((byte _seg *)(*finalspot),(byte _seg *)work,totalsize); +16/Catacomb3D/C3_SCALE.C:void ScaleShape (int xcenter, t_compshape _seg *compshape, unsigned scale) +16/Catacomb3D/C3_SCALE.C: t_compscale _seg *comptable; +16/Catacomb3D/C3_WIZ.C: text = (char _seg *)grsegs[LEVEL1TEXT+mapon]+textstarts[number]; +16/Catacomb3D/ID_CA.C:byte _seg *tinf; +16/Catacomb3D/ID_CA.C:unsigned _seg *mapsegs[3]; +16/Catacomb3D/ID_CA.C:maptype _seg *mapheaderseg[NUMMAPS]; +16/Catacomb3D/ID_CA.C:byte _seg *audiosegs[NUMSNDCHUNKS]; +16/Catacomb3D/ID_CA.C:void _seg *grsegs[NUMCHUNKS]; +16/Catacomb3D/ID_CA.C:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse +16/Catacomb3D/ID_CA.C:long _seg *audiostarts; // array of offsets in audio / audiot +16/Catacomb3D/ID_CA.C: grstarts = (long _seg *)FP_SEG(&EGAhead); +16/Catacomb3D/ID_CA.C: grstarts = (long _seg *)FP_SEG(&CGAhead); +16/Catacomb3D/ID_CA.C: tinf = (byte _seg *)FP_SEG(&maphead); +16/Catacomb3D/ID_CA.C: audiostarts = (long _seg *)FP_SEG(&audiohead); +16/Catacomb3D/ID_CA.C: spritetype _seg *dest; +16/Catacomb3D/ID_CA.C: dest = (spritetype _seg *)grsegs[chunk]; +16/Catacomb3D/ID_CA.C: dest = (spritetype _seg *)grsegs[chunk]; +16/Catacomb3D/ID_CA.C: pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum]; +16/Catacomb3D/ID_CA.C: ((mapfiletype _seg *)tinf)->RLEWtag); +16/Catacomb3D/ID_CA.C: ((mapfiletype _seg *)tinf)->RLEWtag); +16/Catacomb3D/ID_CA.C: source = (byte _seg *)bufferseg+(pos-bufferstart); +16/Catacomb3D/ID_IN.C: byte _seg *DemoBuffer; +16/Catacomb3D/ID_IN.C:IN_StartDemoPlayback(byte _seg *buffer,word bufsize) +16/Catacomb3D/ID_RF.C: spritetype _seg *block; +16/Catacomb3D/ID_RF.C: block = (spritetype _seg *)grsegs[spritenumber]; +16/Catacomb3D/ID_RF.C: spritetype _seg *block; +16/Catacomb3D/ID_RF.C: block = (spritetype _seg *)grsegs[spritenumber]; +16/Catacomb3D/ID_SD.C: word *SoundTable; // Really * _seg *SoundTable, but that don't work +16/Catacomb3D/ID_VW.C:pictabletype _seg *pictable; +16/Catacomb3D/ID_VW.C:pictabletype _seg *picmtable; +16/Catacomb3D/ID_VW.C:spritetabletype _seg *spritetable; +16/Catacomb3D/ID_VW.C: fontstruct _seg *font); +16/Catacomb3D/ID_VW.C: spritetype _seg *block; +16/Catacomb3D/ID_VW.C: block = (spritetype _seg *)grsegs[chunknum]; +16/Catacomb3D/ID_VW.C:VWL_MeasureString (char far *string, word *width, word *height, fontstruct _seg *font) +16/Catacomb3D/ID_VW.C: VWL_MeasureString(string,width,height,(fontstruct _seg *)grsegs[STARTFONT+fontnumber]); +16/Catacomb3D/ID_VW.C: VWL_MeasureString(string,width,height,(fontstruct _seg *)grsegs[STARTFONTM+fontnumber]); +16/Catacomb3D/ID_VW.C: spritetype _seg *block; +16/Catacomb3D/ID_VW.C: block = (spritetype _seg *)grsegs[chunknum]; +16/CatacombApocalypse/C6_GAME.C: text = (char _seg *)grsegs[LEVEL1TEXT+mapon]; +16/CatacombApocalypse/C6_GAME.C: src = (byte _seg *)grsegs[STARTTILE8]; +16/CatacombApocalypse/C6_GAME.C: src = (byte _seg *)grsegs[STARTTILE16]; +16/CatacombApocalypse/C6_GAME.C: src = (byte _seg *)grsegs[STARTTILE16+i]; +16/CatacombApocalypse/C6_SCALE.C:t_compscale _seg *scaledirectory[NUMSCALEPICS]; +16/CatacombApocalypse/C6_SCALE.C:t_compshape _seg *shapedirectory[NUMSCALEPICS]; +16/CatacombApocalypse/C6_SCALE.C: plane0 = (byte _seg *)grsegs[picnum]; +16/CatacombApocalypse/C6_SCALE.C: t_compscale _seg *work; +16/CatacombApocalypse/C6_SCALE.C: _fmemcpy ((byte _seg *)(*finalspot),(byte _seg *)work,totalsize); +16/CatacombApocalypse/C6_SCALE.C:unsigned BuildCompShape (t_compshape _seg **finalspot) +16/CatacombApocalypse/C6_SCALE.C: t_compshape _seg *work; +16/CatacombApocalypse/C6_SCALE.C: work = (t_compshape _seg *)(0xa000+(buff+15)/16); +16/CatacombApocalypse/C6_SCALE.C: _fmemcpy ((byte _seg *)(*finalspot),(byte _seg *)work,totalsize); +16/CatacombApocalypse/C6_SCALE.C:void ScaleShape (int xcenter, t_compshape _seg *compshape, unsigned scale) +16/CatacombApocalypse/C6_SCALE.C: t_compscale _seg *comptable; +16/CatacombApocalypse/C6_WIZ.C: text = (char _seg *)grsegs[LEVEL1TEXT+mapon]+textstarts[number]; +16/CatacombApocalypse/C6_WIZ.C: txt = (char _seg *)grsegs[SCROLLTEXT]; +16/CatacombApocalypse/C6_WIZ.C: txt = (char _seg *)grsegs[SCROLLTEXT]+ofset; +16/CatacombApocalypse/GELIB.C: fontstruct _seg *font = (fontstruct _seg *)grsegs[STARTFONT]; +16/CatacombApocalypse/ID_CA.C:byte _seg *tinf; +16/CatacombApocalypse/ID_CA.C:unsigned _seg *mapsegs[3]; +16/CatacombApocalypse/ID_CA.C:maptype _seg *mapheaderseg[NUMMAPS]; +16/CatacombApocalypse/ID_CA.C:byte _seg *audiosegs[NUMSNDCHUNKS]; +16/CatacombApocalypse/ID_CA.C:void _seg *grsegs[NUMCHUNKS]; +16/CatacombApocalypse/ID_CA.C:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse +16/CatacombApocalypse/ID_CA.C:long _seg *audiostarts; // array of offsets in audio / audiot +16/CatacombApocalypse/ID_CA.C: grstarts = (long _seg *)FP_SEG(&EGAhead); +16/CatacombApocalypse/ID_CA.C: grstarts = (long _seg *)FP_SEG(&CGAhead); +16/CatacombApocalypse/ID_CA.C: tinf = (byte _seg *)FP_SEG(&maphead); +16/CatacombApocalypse/ID_CA.C: audiostarts = (long _seg *)FP_SEG(&audiohead); +16/CatacombApocalypse/ID_CA.C: spritetype _seg *dest; +16/CatacombApocalypse/ID_CA.C: dest = (spritetype _seg *)grsegs[chunk]; +16/CatacombApocalypse/ID_CA.C: dest = (spritetype _seg *)grsegs[chunk]; +16/CatacombApocalypse/ID_CA.C: pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum]; +16/CatacombApocalypse/ID_CA.C: ((mapfiletype _seg *)tinf)->RLEWtag); +16/CatacombApocalypse/ID_CA.C: ((mapfiletype _seg *)tinf)->RLEWtag); +16/CatacombApocalypse/ID_CA.C: source = (byte _seg *)bufferseg+(pos-bufferstart); +16/CatacombApocalypse/ID_IN.C:// byte _seg *DemoBuffer; +16/CatacombApocalypse/ID_IN.C:IN_StartDemoPlayback(byte _seg *buffer,word bufsize) +16/CatacombApocalypse/ID_RF.C: spritetype _seg *block; +16/CatacombApocalypse/ID_RF.C: block = (spritetype _seg *)grsegs[spritenumber]; +16/CatacombApocalypse/ID_RF.C: spritetype _seg *block; +16/CatacombApocalypse/ID_RF.C: block = (spritetype _seg *)grsegs[spritenumber]; +16/CatacombApocalypse/ID_SD.C: word *SoundTable; // Really * _seg *SoundTable, but that don't work +16/CatacombApocalypse/ID_VW.C:pictabletype _seg *pictable; +16/CatacombApocalypse/ID_VW.C:pictabletype _seg *picmtable; +16/CatacombApocalypse/ID_VW.C:spritetabletype _seg *spritetable; +16/CatacombApocalypse/ID_VW.C: fontstruct _seg *font); +16/CatacombApocalypse/ID_VW.C: spritetype _seg *block; +16/CatacombApocalypse/ID_VW.C: block = (spritetype _seg *)grsegs[chunknum]; +16/CatacombApocalypse/ID_VW.C:VWL_MeasureString (char far *string, word *width, word *height, fontstruct _seg *font) +16/CatacombApocalypse/ID_VW.C: VWL_MeasureString(string,width,height,(fontstruct _seg *)grsegs[STARTFONT+fontnumber]); +16/CatacombApocalypse/ID_VW.C: VWL_MeasureString(string,width,height,(fontstruct _seg *)grsegs[STARTFONTM+fontnumber]); +16/CatacombApocalypse/ID_VW.C: spritetype _seg *block; +16/CatacombApocalypse/ID_VW.C: block = (spritetype _seg *)grsegs[chunknum]; diff --git a/bcexmm.dsk b/bcexmm.dsk index 5a2cefe4..6ae999a4 100755 Binary files a/bcexmm.dsk and b/bcexmm.dsk differ diff --git a/bcexmm.exe b/bcexmm.exe index cf48e82b..145959bc 100755 Binary files a/bcexmm.exe and b/bcexmm.exe differ diff --git a/bcexmm.prj b/bcexmm.prj index 5c9dca3b..91b20b10 100755 Binary files a/bcexmm.prj and b/bcexmm.prj differ diff --git a/data/G.PAL b/data/G.PAL index 2d98b012..ebf07024 100755 Binary files a/data/G.PAL and b/data/G.PAL differ diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index 4a039203..3204865f 100755 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -163,6 +163,8 @@ CASVT GRFILEPOS(int c, global_game_variables_t *gvar) } #endif +#define EXTENSION "hb1" + /* ============================================================================= @@ -1142,7 +1144,7 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) MM_GetPtr (MEMPTRCONV gvar->ca.tinf,length,gvar); CA_FarRead(handle, gvar->ca.tinf, length,gvar); close(handle); -//#else +#else gvar->ca.tinf = (byte _seg *)FP_SEG(&maphead); @@ -1259,7 +1261,7 @@ void CA_Startup(global_game_variables_t *gvar) CAL_SetupMapFile (gvar); #endif - gvar->ca.camap.mapon = -1; + gvar->ca.mapon = -1; gvar->ca.ca_levelbit = 1; gvar->ca.ca_levelnum = 0; @@ -1893,7 +1895,7 @@ void CA_CacheGrChunk (int chunk) = ====================== */ -/*++++ segments! + void CA_CacheMap (global_game_variables_t *gvar) { long pos,compressed; @@ -1910,33 +1912,43 @@ void CA_CacheMap (global_game_variables_t *gvar) // // free up memory from last map // - if (gvar->ca.camap.mapon>-1 && gvar->ca.camap.mapheaderseg[gvar->ca.camap.mapon]) - MM_SetPurge (((memptr)gvar->ca.camap.mapheaderseg[(gvar->ca.camap.mapon)]), 3, gvar); + if (gvar->ca.mapon>-1 && gvar->ca.mapheaderseg[gvar->ca.mapon]) + MM_SetPurge ((MEMPTRCONV gvar->ca.mapheaderseg[(gvar->ca.mapon)]), 3, gvar); for (plane=0;planeca.camap.mapsegs[plane]) - MM_FreePtr ((memptr)gvar->ca.camap.mapsegs[plane], gvar); + if (gvar->ca.mapsegs[plane]) + MM_FreePtr (MEMPTRCONV gvar->ca.mapsegs[plane], gvar); - gvar->ca.camap.mapon = gvar->ca.camap.mapnum; + gvar->ca.mapon = gvar->ca.mapnum; // // load map header // The header will be cached if it is still around // -// if (!gvar->ca.camap.mapheaderseg[gvar->ca.camap.mapnum]) -// { -// //pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum]; -// //pos = ((_seg *)gvar->ca.camap.tinf)->headeroffsets[gvar->ca.camap.mapnum]; -// pos = ((memptr)gvar->ca.camap.tinf)->headeroffsets[gvar->ca.camap.mapnum]; -// if (pos<0) // $FFFFFFFF start is a sparse map -// printf("CA_CacheMap: Tried to load a non existent map!"); + if (!gvar->ca.mapheaderseg[gvar->ca.mapnum]) + { + pos = ((mapfiletype _seg *)gvar->ca.tinf)->headeroffsets[gvar->ca.mapnum]; + if (pos<0) // $FFFFFFFF start is a sparse map + Quit (gvar, "CA_CacheMap: Tried to load a non existent map!"); -// MM_GetPtr(MEMPTRCONV gvar->ca.camapheaderseg[mapnum],sizeof(maptype)); -// lseek(maphandle,pos,SEEK_SET); -// CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype)); -// } -// else -// MM_SetPurge (MEMPTRCONV mapheaderseg[mapnum], 0, &(gvar->mm)); + MM_GetPtr(MEMPTRCONV gvar->ca.mapheaderseg[gvar->ca.mapnum],sizeof(maptype), gvar); + lseek(gvar->ca.file.maphandle,pos,SEEK_SET); +#ifdef MAPHEADERLINKED +//#if BUFFERSIZE < sizeof(maptype) +//The general buffer size is too small! +//#endif + // + // load in, then unhuffman to the destination + // + CA_FarRead (gvar->ca.file.maphandle,gvar->mm.bufferseg,((mapfiletype _seg *)gvar->ca.tinf)->headersize[gvar->ca.mapnum], gvar); + CAL_HuffExpand ((byte huge *)bufferseg, + (byte huge *)gvar->ca.mapheaderseg[gvar->ca.mapnum],sizeof(maptype),maphuffman, gvar); +#else + CA_FarRead (gvar->ca.file.maphandle,(memptr)gvar->ca.mapheaderseg[gvar->ca.mapnum],sizeof(maptype), gvar); +#endif + } + else + MM_SetPurge (MEMPTRCONV gvar->ca.mapheaderseg[gvar->ca.mapnum], 0, gvar); // // load the planes in @@ -1944,30 +1956,30 @@ void CA_CacheMap (global_game_variables_t *gvar) // allways reloaded, never cached) // - size = mapheaderseg[mapnum]->width * mapheaderseg[mapnum]->height * 2; + size = gvar->ca.mapheaderseg[gvar->ca.mapnum]->width * gvar->ca.mapheaderseg[gvar->ca.mapnum]->height * 2; for (plane = 0; planeplanestart[plane]; - //compressed = mapheaderseg[mapnum]->planelength[plane]; + pos = gvar->ca.mapheaderseg[gvar->ca.mapnum]->planestart[plane]; + compressed = gvar->ca.mapheaderseg[gvar->ca.mapnum]->planelength[plane]; if (!compressed) continue; // the plane is not used in this game - dest = MEMPTRCONV mapsegs[plane]; - MM_GetPtr(dest,size); + dest = MEMPTRCONV gvar->ca.mapsegs[plane]; + MM_GetPtr(dest,size, gvar); - lseek(maphandle,pos,SEEK_SET); + lseek(gvar->ca.file.maphandle,pos,SEEK_SET); if (compressed<=BUFFERSIZE) - source = bufferseg; + source = gvar->mm.bufferseg; else { - MM_GetPtr(&bigbufferseg,compressed); - MM_SetLock (&bigbufferseg,true); + MM_GetPtr(&bigbufferseg,compressed, gvar); + MM_SetLock (&bigbufferseg,true, gvar); source = bigbufferseg; } - CA_FarRead(maphandle,(byte far *)source,compressed); + CA_FarRead(gvar->ca.file.maphandle,(byte far *)source,compressed, gvar); #ifdef MAPHEADERLINKED // // unhuffman, then unRLEW @@ -1977,7 +1989,7 @@ void CA_CacheMap (global_game_variables_t *gvar) // expanded = *source; source++; - MM_GetPtr (&buffer2seg,expanded); + MM_GetPtr (&buffer2seg,expanded, gvar); CAL_CarmackExpand (source, (unsigned far *)buffer2seg,expanded); CA_RLEWexpand (((unsigned far *)buffer2seg)+1,*dest,size, ((mapfiletype _seg *)tinf)->RLEWtag); @@ -1988,13 +2000,13 @@ void CA_CacheMap (global_game_variables_t *gvar) // unRLEW, skipping expanded length // CA_RLEWexpand (source+1, *dest,size, - ((mapfiletype _seg *)tinf)->RLEWtag); + ((mapfiletype _seg *)gvar->ca.tinf)->RLEWtag); #endif if (compressed>BUFFERSIZE) - MM_FreePtr(&bigbufferseg); + MM_FreePtr(&bigbufferseg, gvar); } -}//*/ +} //=========================================================================== @@ -2128,20 +2140,20 @@ void CA_SetAllPurge (global_game_variables_t *gvar) // // free map headers and map planes // -// for (i=0;ica.camap.mapheaderseg[i]) -// MM_SetPurge (gvar->ca.camap.mapheaderseg[i],3, gvar); + for (i=0;ica.mapheaderseg[i]) + MM_SetPurge (MEMPTRCONV gvar->ca.mapheaderseg[i],3, gvar); for (i=0;i<3;i++) if (gvar->ca.mapsegs[i]) - MM_FreePtr ((memptr *)&gvar->ca.mapsegs[i], gvar); + MM_FreePtr (MEMPTRCONV gvar->ca.mapsegs[i], gvar); // // free sounds // for (i=0;ica.audiosegs[i]) - MM_SetPurge ((memptr *)&gvar->ca.audiosegs[i],3, gvar); + MM_SetPurge (MEMPTRCONV gvar->ca.audiosegs[i],3, gvar); // // free graphics diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 324d0f54..e400adc1 100755 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1255,8 +1255,10 @@ void MM_SortMem (global_game_variables_t *gvar) SD_StopSound();*/ +#ifdef __WATCOMC__ oldborder = gvar->video.bordercolor; gvar->video.bordercolor = VL_modexPalOverscan(gvar->video.palette, 4); +#endif if (beforesort) beforesort(); diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index 165b5fd2..c1f2db84 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -676,9 +676,9 @@ typedef struct #define NOGRAPHICS #define NOAUDIO -#define MAPHEADERLINKED +//#define MAPHEADERLINKED //#define GRHEADERLINKED -#define AUDIOHEADERLINKED +//#define AUDIOHEADERLINKED #define NUMMAPS 4//39 #define NUMSNDCHUNKS 4//3 @@ -692,7 +692,6 @@ typedef struct #define GDICTNAME DATADIR"vgadict." #define GHEADNAME DATADIR"vgahead." #define GFILENAME DATADIR"vgagraph." -#define EXTENSION "hb1" typedef struct @@ -710,9 +709,10 @@ typedef struct typedef struct { - int mapon, mapnum; - maptype _seg *mapheaderseg[NUMMAPS]; -} ca_mapinfo_t; + unsigned RLEWtag; + long headeroffsets[100]; + byte tileinfo[]; +} mapfiletype; typedef struct { @@ -733,9 +733,10 @@ typedef struct //TODO: USE THIS!!!! { byte ca_levelbit,ca_levelnum; ca_handle_t file; //files to open - ca_mapinfo_t camap; byte _seg *tinf;//?? where in the id engine is this used and what is it? --sparky4 + int mapon, mapnum; + maptype _seg *mapheaderseg[NUMMAPS]; unsigned _seg *mapsegs[MAPPLANES]; void _seg *grsegs[NUMCHUNKS]; byte far grneeded[NUMCHUNKS]; diff --git a/src/lib/doslib b/src/lib/doslib index 059ad77f..68ae6bb8 160000 --- a/src/lib/doslib +++ b/src/lib/doslib @@ -1 +1 @@ -Subproject commit 059ad77f65a48b9501eca26c0d4811960ada9e54 +Subproject commit 68ae6bb890e460cefefb5f4e3d1ede505142cdfc