From 63a6c9058ef704a718e623a317a7626b509cdfd1 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Mon, 15 May 2017 19:53:45 -0500 Subject: [PATCH] xcroll.exe needs testing on real hardware\!\!\!\! it is working but not flexible 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] what is mapsegs? --- XCROLL.LOO | 36 +++++++ _varsuse.txt | 229 +++++++++++++++++++++++++++++++++++++++++++++ makefile | 6 +- src/lib/16_ca.c | 114 ++++++++++++---------- src/lib/16_map.c | 11 ++- src/lib/16_tdef.h | 36 ++++--- src/lib/16_vrs.c | 12 +-- src/lib/scroll16.h | 2 +- 8 files changed, 366 insertions(+), 80 deletions(-) create mode 100755 XCROLL.LOO create mode 100755 _varsuse.txt mode change 100644 => 100755 src/lib/16_ca.c mode change 100644 => 100755 src/lib/16_map.c mode change 100644 => 100755 src/lib/16_tdef.h mode change 100644 => 100755 src/lib/16_vrs.c diff --git a/XCROLL.LOO b/XCROLL.LOO new file mode 100755 index 00000000..781f07da --- /dev/null +++ b/XCROLL.LOO @@ -0,0 +1,36 @@ +objects detected +Object 4's name: 'trunk' + properties: { + "walkable":"0" + } + walkable: 0 +Object 4's name: 'stump' + properties: { + "walkable":"0" + } + walkable: 0 +freeing tok + +Project 16 xcroll.exe. This is just a test file! +version May 15 2017 11:41:36 +page[0]dxy: 16x16 + +player vars: + xy: 144x128 txy: 9x8 triggxy: 8x8 value: 0 + hp: 4 q: 1 info.dir: 2 d: 2 dire: 41 pdir: 1 + delay=1 + +VL_PrintmodexmemInfo: + Virtual Screen: 352x272 Tile: 22x17=((Virtual Screen)/16) + Screen: 320x240 Tile: 20x15=((Screen)/16) + stride: 80 draw_stride: 88 draw_stride_limit: 88 + Free Video Memory: 767 + page [0]=(a000:0000) size=23936 w=352 h=272 sw=320 sh=240 pi=1408 + [1]=(a000:5d80) size=23936 w=352 h=272 sw=320 sh=240 pi=1408 + [2]=(a000:bb00) size=8448 w=352 h=96 sw=352 sh=96 pi=1408 + [3]=(a000:dc00) size=8448 w=352 h=96 sw=352 sh=96 pi=1408 +gvar.video: + r=0 bgps=1 + +detected CPU type: 80386 or newer +detected FPU type: îæí†àþÂìæí†àÿ纕îæí†àþÂîæí†àÿç‹Ë¸ »‚é`R¸`»‹éWR¸a»”éNR¸0»éERf¸„ø 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/makefile b/makefile index bb06aa42..474b5900 100755 --- a/makefile +++ b/makefile @@ -119,7 +119,7 @@ UPXQ=-qqq # # compile flags # -S_FLAGS=-sg -st -of+ -zu -zdf -zff -zgf -k32768#24576 +S_FLAGS=-sg -st -of+ -zu -zdf -zff -zgf -k40960#32768#24576 Z_FLAGS=-zk0 -zc -zm#### -zp4 -ei O_FLAGS=-opnr -oe=24 -oil+ -outback -ohm T_FLAGS=-bt=dos -wx -m$(MEMORYMODE) -0 -fpi87 -d1 -fo=.$(OBJ)## -e=65536 @@ -139,8 +139,8 @@ LIBFLAGS=$(WLIBQ) -b -n # VGMSNDOBJ = vgmSnd.$(OBJ) OLDLIBOBJS=bitmap.$(OBJ) 16render.$(OBJ) -GFXLIBOBJS = 16_vl.$(OBJ) 16_vl_1.$(OBJ) 16_vl_2.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) -16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16text.$(OBJ) 16_sd.$(OBJ) 16_tail_.$(OBJ) 16_dbg_1.$(OBJ) +GFXLIBOBJS = 16_vl.$(OBJ) 16_vl_1.$(OBJ) 16_vl_2.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) +16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16_sd.$(OBJ) 16_tail_.$(OBJ) 16_dbg_1.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) !ifeq DEBUGSERIAL 1 DOSLIBOBJ += 8250.$(OBJ) diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c old mode 100644 new mode 100755 index 4a039203..ce406dd5 --- 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" + /* ============================================================================= @@ -1086,23 +1088,23 @@ void CAL_SetupGrFile (global_game_variables_t *gvar) CAL_GetGrChunkLength(STRUCTPIC,gvar); // position file pointer printf("CAL_SetupGrFile:\n"); printf(" gvar->ca.chunkcomplen size is %lu\n", gvar->ca.chunkcomplen); - MM_GetPtr(&compseg,gvar->ca.chunkcomplen,gvar); - IN_Ack(gvar); + MM_GetPtr(MEMPTRANDPERCONV compseg,gvar->ca.chunkcomplen,gvar); IN_Ack(gvar); CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen,gvar); CAL_HuffExpand (compseg, (byte far *)gvar->video.pictable,NUMPICS*sizeof(pictabletype),gvar->ca.grhuffman); - MM_FreePtr(&compseg,gvar); + MM_FreePtr(MEMPTRANDPERCONV compseg,gvar); #endif -#if NUMPICM>0 +#if 0 + //NUMPICM>0 MM_GetPtr(MEMPTRCONV picmtable,NUMPICM*sizeof(pictabletype)); CAL_GetGrChunkLength(STRUCTPICM); // position file pointer MM_GetPtr(&compseg,gvar->ca.chunkcomplen); CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen); CAL_HuffExpand (compseg, (byte far *)picmtable,NUMPICS*sizeof(pictabletype),gvar->ca.grhuffman); MM_FreePtr(&compseg); -#endif +//#endif -#if NUMSPRITES>0 +//#if NUMSPRITES>0 MM_GetPtr(MEMPTRCONV spritetable,NUMSPRITES*sizeof(spritetabletype)); CAL_GetGrChunkLength(STRUCTSPRITE); // position file pointer MM_GetPtr(&compseg,gvar->ca.chunkcomplen); @@ -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 @@ -2272,9 +2284,9 @@ void CAL_DialogFinish (void) = CA_CacheMarks = ====================== -*//*++++ +*/ #define MAXEMPTYREAD 1024 - +/*++++ segments void CAL_CacheMarks (char *title, global_game_variables_t *gvar) { boolean dialog; @@ -2309,8 +2321,8 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar) // MDM begin - (GAMERS EDGE) // -// if (!FindFile("EGAGRAPH.16",NULL,2)) -// Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); +//???? if (!FindFile("EGAGRAPH.16",NULL,2)) +//???? Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); // // MDM end @@ -2413,7 +2425,7 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar) // if (dialog && finishcachebox) finishcachebox(); -}*/ +}//*/ void CA_CannotOpen(char *string, global_game_variables_t *gvar) { diff --git a/src/lib/16_map.c b/src/lib/16_map.c old mode 100644 new mode 100755 index e598d36b..2d266df1 --- a/src/lib/16_map.c +++ b/src/lib/16_map.c @@ -216,7 +216,6 @@ int newloadmap(char *mn, map_t *map) { //====== -#define MAPBUFINLM *(gvar->ca.mapsegs) int CA_loadmap(char *mn, map_t *map, global_game_variables_t *gvar) { jsmn_parser p; @@ -230,20 +229,22 @@ int CA_loadmap(char *mn, map_t *map, global_game_variables_t *gvar) jsmn_init(&p); file_s = filesize(fh); - CA_LoadFile(mn, (memptr *)&MAPBUFINLM, gvar); - tokcount = jsmn_parse(&p, (char const *)MAPBUFINLM, file_s, NULL, 0); + CA_LoadFile(mn, MEMPTRCONV MAPSEGINLM, gvar); + tokcount = jsmn_parse(&p, (char const *)MAPSEGINLM, file_s, NULL, 0); tok = malloc(tokcount*sizeof(jsmntok_t));//TODO: USE MM_ CA_ AND PM_ // printf("Allocated %d tokens", tokcount); jsmn_init(&p); - if((status = jsmn_parse(&p, (char const *)MAPBUFINLM, file_s, tok, tokcount)) < 0) + if((status = jsmn_parse(&p, (char const *)MAPSEGINLM, file_s, tok, tokcount)) < 0) { printf("Error: %d\n", status); return status; } else if(status != tokcount) { printf("Warning: used %d tok\n", status);} - extract_map((char const *)MAPBUFINLM, tok, tokcount, map); + extract_map((char const *)MAPSEGINLM, tok, tokcount, map); +// printf("freeing tok\n"); free(tok); //TODO: USE MM_ CA_ AND PM_ +// printf("fclose fh\n"); fclose(fh); //TODO: USE MM_ CA_ AND PM_ return 0; diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h old mode 100644 new mode 100755 index 165b5fd2..94fecd95 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -84,6 +84,8 @@ typedef struct vrs_container{ }; // Array of corresponding vrl line offsets vrl1_vgax_offset_t **vrl_line_offsets; + //sprite buffer + byte far _seg *spribuff; } vrs_container_t; typedef struct vrl_container{ @@ -96,6 +98,8 @@ typedef struct vrl_container{ }; // Pointer to a corresponding vrl line offsets struct vrl1_vgax_offset_t *line_offsets; + //sprite buffer + byte far _seg *spribuff; } vrl_container_t; typedef struct sprite @@ -362,7 +366,7 @@ typedef struct //===================================// #define PALSIZE 768 //vga #define NUMCHUNKS 416 //keen -#define MAXSCANLINES 240 // size of ylookup table +//#define MAXSCANLINES 240 // size of ylookup table #define MAXSHIFTS 4 #define STARTSPRITES 0 //temp @@ -396,7 +400,7 @@ typedef struct word quadwh; //preproccessed quad size of tilewidth and tileheight } tile_dimention_t; -#define MAXSCROLLEDGES 6 +#define MAXSCROLLEDGES 2 typedef struct { unsigned panx,pany; // panning adjustments inside port in pixels @@ -453,7 +457,7 @@ typedef struct word bordercolor; boolean fastpalette; byte far palette1[256][3],far palette2[256][3]; - pictabletype _seg *pictable; +//???? pictabletype _seg *pictable; //keen/cata vars // spritetabletype _seg *spritetable; // unsigned *shifttabletable[8]; @@ -493,7 +497,7 @@ typedef struct //from 16_mm //========================================================================== -#define MAXBLOCKS 800//kd=1300 wolf3d=700 cata=600 +#define MAXBLOCKS 600//800 //kd=1300 wolf3d=700 cata=600 typedef struct mmblockstruct { @@ -676,9 +680,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,9 +696,12 @@ typedef struct #define GDICTNAME DATADIR"vgadict." #define GHEADNAME DATADIR"vgahead." #define GFILENAME DATADIR"vgagraph." -#define EXTENSION "hb1" +#define MAPSEGBUF mapsegs +#define MAPSEGPTR MAPSEGBUF[0] +#define MAPSEGINLM (gvar->ca.MAPSEGPTR) + typedef struct { word bit0,bit1; // 0-255 is a character, > is a pointer to a node @@ -710,9 +717,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 +741,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]; @@ -747,20 +756,19 @@ typedef struct //TODO: USE THIS!!!! #ifdef GRHEADERLINKED huffnode *grhuffman; #else - huffnode grhuffman[255]; + huffnode grhuffman[63]; #endif #ifdef AUDIOHEADERLINKED huffnode *audiohuffman; #else - huffnode audiohuffman[255]; + huffnode audiohuffman[63]; #endif CASVT chunkcomplen,chunkexplen;//long sd_t sd; //TODO: extend! and learn from keen/wolf/catacomb's code wwww - memptr spribuff; } ca_t; //========================================================================== diff --git a/src/lib/16_vrs.c b/src/lib/16_vrs.c old mode 100644 new mode 100755 index 056366af..fa1d96de --- a/src/lib/16_vrs.c +++ b/src/lib/16_vrs.c @@ -39,15 +39,15 @@ void VRS_OpenVRS(char *filename, entity_t *enti, boolean rlsw, global_game_varia switch(rlsw) { case 1: - CA_ReadFile(filename, &gvar->ca.spribuff, gvar); + CA_ReadFile(filename, MEMPTRCONV enti->spri.spritesheet.spribuff, gvar); break; case 0: - CA_LoadFile(filename, &gvar->ca.spribuff, gvar); + CA_LoadFile(filename, MEMPTRCONV enti->spri.spritesheet.spribuff, gvar); break; } // Insert sanity cheks later - enti->spri.spritesheet.buffer = gvar->ca.spribuff; + enti->spri.spritesheet.buffer = enti->spri.spritesheet.spribuff; //TODO: merge these 2 vars into 1 enti->spri.spritesheet.data_size = sizeof(enti->spri.spritesheet.buffer) - sizeof(struct vrl1_vgax_header); num_of_vrl = 0; vrl_id_iter = (uint16_t far *)(enti->spri.spritesheet.buffer + enti->spri.spritesheet.vrs_hdr->offset_table[VRS_HEADER_OFFSET_SPRITE_ID_LIST]); @@ -112,15 +112,15 @@ void VRS_OpenVRL(char *filename, entity_t *enti, boolean rlsw, global_game_varia switch(rlsw) { case 1: - CA_ReadFile(filename, &gvar->ca.spribuff, gvar); + CA_ReadFile(filename, &enti->spri.spritesheet.spribuff, gvar); break; case 0: - CA_LoadFile(filename, &gvar->ca.spribuff, gvar); + CA_LoadFile(filename, &enti->spri.spritesheet.spribuff, gvar); break; } // Insert sanity cheks later - enti->spri.sprite_vrl_cont.buffer = gvar->ca.spribuff; + enti->spri.sprite_vrl_cont.buffer = enti->spri.spritesheet.spribuff; enti->spri.sprite_vrl_cont.data_size = sizeof(enti->spri.spritesheet.buffer) - sizeof(struct vrl1_vgax_header); // Allocate memory for vrl line offsets table diff --git a/src/lib/scroll16.h b/src/lib/scroll16.h index 67641fac..784e7cf7 100755 --- a/src/lib/scroll16.h +++ b/src/lib/scroll16.h @@ -41,7 +41,7 @@ #define SPRITE //#define TILERENDER -#define SHOWFPS +//0000#define SHOWFPS //#define OLDWALKSHOWPAGESTUFF #define PLAYERBMPDATAVAR gvar.player[pn].data -- 2.39.2