From: sparky4 Date: Fri, 21 Apr 2017 17:54:14 +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=ded380e7aab3ba7460e1f756b576722e996d939a 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] --- diff --git a/data/genvga.sh b/data/genvga.sh new file mode 100755 index 00000000..e81ca21f --- /dev/null +++ b/data/genvga.sh @@ -0,0 +1,3 @@ +dd bs=1 count=275774 vgagraph.hb1 +dd bs=1 count=450 vgahead.hb1 +dd bs=450 count=1 /dos/z/16/data/vgadict.hb1 diff --git a/data/vgadict.hb1 b/data/vgadict.hb1 new file mode 100755 index 00000000..fcfecfec --- /dev/null +++ b/data/vgadict.hb1 @@ -0,0 +1 @@ +ÍëåÝÿ*aܔ³É Ã4e!q‡Ò}ht}Ò7ÓÙ§;äã†QìÃZó«rñþäߔ¾}¦ Kͳ—œºØô²Ï Ï;ª "¢°·™eÅr½,ËáíàFk¬6ˆ©gi…ÎA¹€\°GÐ5ã©+ŸÐ¥¡ ¦ï¯‘«üd}þ^ƒQËÖ8ïV<ØXnۈyÓÐ6ƒ¨PÆþž;É+ë¢Ì ¬iㄆ<§"¦L’i™N¼¶¡6¾Løu°†BŸÜ}¾n pe"”L[\;ÏÏþ_'ŒI?ˆú²`dÊc•µãÍÇ+x½‘+”_ÑÇÌÜø5?›ì}Æ·FÛh(\Õk+À:ÏY瘝äøU™B4¡­;ºŽ^¨Öö­ÍdºÇ;ôó“~¢+mg~nZH֎ɯ? ¯ŠÔ¨òèˆt¶›¾vÐË¡†[Þ˜Æ 1ž4·ú] j”"¹(Iõ=™9´ÇYçOCÛäA‘ У#±…/¬±F'̺½·ŒrüƒNÌï~››pV)PÉ0šH1‹ûááÎ\e£ŒË½#{s¶›¤Û_Ñ5Y¨V0,_<äy…ºv \ No newline at end of file diff --git a/data/vgagraph.hb1 b/data/vgagraph.hb1 new file mode 100755 index 00000000..2ba50688 Binary files /dev/null and b/data/vgagraph.hb1 differ diff --git a/data/vgahead.hb1 b/data/vgahead.hb1 new file mode 100755 index 00000000..4b82e5d5 Binary files /dev/null and b/data/vgahead.hb1 differ diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index fad1a012..87db2377 100755 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -98,16 +98,17 @@ extern byte EGAdict; extern byte far maphead; extern byte mapdict; extern byte far audiohead; -extern byte audiodict; +extern byte audiodict;*/ +void CA_CannotOpen(char *string, global_game_variables_t *gvar); -long _seg *grstarts; // array of offsets in egagraph, -1 for sparse +/*long _seg *grstarts; // array of offsets in egagraph, -1 for sparse long _seg *audiostarts; // array of offsets in audio / audiot #ifdef GRHEADERLINKED -huffnode *grhuffman; +huffnode *gvar->ca.grhuffman; #else -huffnode grhuffman[255]; +huffnode gvar->ca.grhuffman[255]; #endif #ifdef AUDIOHEADERLINKED @@ -121,7 +122,7 @@ int grhandle; // handle to EGAGRAPH int maphandle; // handle to MAPTEMP / GAMEMAPS int audiohandle; // handle to AUDIOT / AUDIO -long chunkcomplen,chunkexplen; +long c hunkcomplen,c hunkexplen; SDMode oldsoundmode; @@ -130,7 +131,8 @@ SDMode oldsoundmode; void CAL_DialogDraw (char *title,unsigned numcache); void CAL_DialogUpdate (void); void CAL_DialogFinish (void);*/ -//void CAL_CarmackExpand (unsigned far *source, unsigned far *dest,unsigned length); +void CAL_CarmackExpand (unsigned far *source, unsigned far *dest, + unsigned length); #ifdef THREEBYTEGRSTARTS @@ -206,9 +208,9 @@ void CA_CloseDebug(global_game_variables_t *gvar) /*++++ void CAL_GetGrChunkLength (int chunk) { - lseek(grhandle,GRFILEPOS(chunk),SEEK_SET); - read(grhandle,&chunkexplen,sizeof(chunkexplen)); - chunkcomplen = GRFILEPOS(chunk+1)-GRFILEPOS(chunk)-4; + lseek(gvar->ca.file.grhandle,GRFILEPOS(chunk),SEEK_SET); + read(gvar->ca.file.grhandle,&gvar->ca.chunkexplen,sizeof(gvar->ca.chunkexplen)); + gvar->ca.chunkcomplen = GRFILEPOS(chunk+1)-GRFILEPOS(chunk)-4; }*/ @@ -1034,24 +1036,19 @@ dinorm: = ====================== */ -////++++ enable! -/*void CAL_SetupGrFile (void) +////++++TODO: enable! +/*void CAL_SetupGrFile (global_game_variables_t *gvar) { + char fname[13]; int handle; memptr compseg; #ifdef GRHEADERLINKED -#if GRMODE == EGAGR - grhuffman = (huffnode *)&EGAdict; - grstarts = (long _seg *)FP_SEG(&EGAhead); -#endif -#if GRMODE == CGAGR - grhuffman = (huffnode *)&CGAdict; - grstarts = (long _seg *)FP_SEG(&CGAhead); -#endif + gvar->ca.grhuffman = (huffnode *)&VGAdict; + grstarts = (long _seg *)FP_SEG(&VGAhead); - CAL_OptimizeNodes (grhuffman); + CAL_OptimizeNodes (gvar->ca.grhuffman); #else @@ -1059,23 +1056,29 @@ dinorm: // load ???dict.ext (huffman dictionary for graphics files) // - if ((handle = open(GREXT"DICT."EXT, + strcpy(fname,GDICTNAME); + strcat(fname,EXTENSION); + + if ((handle = open(fname, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit (gvar, "Can't open "GREXT"DICT."EXT"!"); + CA_CannotOpen(fname,gvar); - read(handle, &grhuffman, sizeof(grhuffman)); + read(handle, &gvar->ca.grhuffman, sizeof(gvar->ca.grhuffman)); close(handle); - CAL_OptimizeNodes (grhuffman); + CAL_OptimizeNodes (gvar->ca.grhuffman); // // load the data offsets from ???head.ext // - MM_GetPtr (MEMPTR grstarts,(NUMCHUNKS+1)*FILEPOSSIZE); + MM_GetPtr (MEMPTR gvar->ca.grstarts,(NUMCHUNKS+1)*FILEPOSSIZE, gvar); + + strcpy(fname,GHEADNAME); + strcat(fname,EXTENSION); - if ((handle = open(GREXT"HEAD."EXT, + if ((handle = open(fname, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit (gvar, "Can't open "GREXT"HEAD."EXT"!"); + CA_CannotOpen(fname,gvar); - CA_FarRead(handle, (memptr)grstarts, (NUMCHUNKS+1)*FILEPOSSIZE); + CA_FarRead(handle, (memptr)gvar->ca.grstarts, (NUMCHUNKS+1)*FILEPOSSIZE, gvar); close(handle); @@ -1085,38 +1088,41 @@ dinorm: // // Open the graphics file, leaving it open until the game is finished // - grhandle = open(GREXT"GRAPH."EXT, O_RDONLY | O_BINARY); - if (grhandle == -1) - Quit (gvar, "Cannot open "GREXT"GRAPH."EXT"!"); + strcpy(fname,GFILENAME); + strcat(fname,EXTENSION); + + gvar->ca.file.grhandle = open(fname, O_RDONLY | O_BINARY); + if (gvar->ca.file.grhandle == -1) + CA_CannotOpen(fname,gvar); // // load the pic and sprite headers into the arrays in the data segment // #if NUMPICS>0 - MM_GetPtr(MEMPTR pictable,NUMPICS*sizeof(pictabletype)); + MM_GetPtr(MEMPTR pictable,NUMPICS*sizeof(pictabletype),gvar); CAL_GetGrChunkLength(STRUCTPIC); // position file pointer - MM_GetPtr(&compseg,chunkcomplen); - CA_FarRead (grhandle,compseg,chunkcomplen); - CAL_HuffExpand (compseg, (byte far *)pictable,NUMPICS*sizeof(pictabletype),grhuffman); - MM_FreePtr(&compseg); + MM_GetPtr(&compseg,gvar->ca.chunkcomplen, gvar); + CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen,gvar); + CAL_HuffExpand (compseg, (byte far *)pictable,NUMPICS*sizeof(pictabletype),gvar->ca.grhuffman); + MM_FreePtr(&compseg,gvar); #endif #if NUMPICM>0 MM_GetPtr(MEMPTR picmtable,NUMPICM*sizeof(pictabletype)); CAL_GetGrChunkLength(STRUCTPICM); // position file pointer - MM_GetPtr(&compseg,chunkcomplen); - CA_FarRead (grhandle,compseg,chunkcomplen); - CAL_HuffExpand (compseg, (byte far *)picmtable,NUMPICS*sizeof(pictabletype),grhuffman); + 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 #if NUMSPRITES>0 MM_GetPtr(MEMPTR spritetable,NUMSPRITES*sizeof(spritetabletype)); CAL_GetGrChunkLength(STRUCTSPRITE); // position file pointer - MM_GetPtr(&compseg,chunkcomplen); - CA_FarRead (grhandle,compseg,chunkcomplen); - CAL_HuffExpand (compseg, (byte far *)spritetable,NUMSPRITES*sizeof(spritetabletype),grhuffman); + MM_GetPtr(&compseg,gvar->ca.chunkcomplen); + CA_FarRead (gvar->ca.file.grhandle,compseg,gvar->ca.chunkcomplen); + CAL_HuffExpand (compseg, (byte far *)spritetable,NUMSPRITES*sizeof(spritetabletype),gvar->ca.grhuffman); MM_FreePtr(&compseg); #endif @@ -1165,13 +1171,13 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) O_RDONLY | O_BINARY, S_IREAD)) == -1) Quit (gvar, "Can't open data/test.map!"); /*#ifdef MAPHEADERLINKED - if ((maphandle = open("GAMEMAPS."EXTENSION, + if ((maphandle = open("GAMEMAPS.16"ENSION, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open GAMEMAPS."EXTENSION"!"); + Quit ("Can't open GAMEMAPS.16"ENSION"!"); #else - if ((maphandle = open("MAPTEMP."EXTENSION, + if ((maphandle = open("MAPTEMP.16"ENSION, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open MAPTEMP."EXTENSION"!"); + Quit ("Can't open MAPTEMP.16"ENSION"!"); #endif*/ } @@ -1195,9 +1201,9 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) // load maphead.ext (offsets and tileinfo for map file) // #ifndef AUDIOHEADERLINKED - if ((handle = open("AUDIOHED."EXT, + if ((handle = open("AUDIOHED.16", O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit (gvar, "Can't open AUDIOHED."EXT"!"); + Quit (gvar, "Can't open AUDIOHED.16""!"); length = filelength(handle); MM_GetPtr (MEMPTR audiostarts,length); CA_FarRead(handle, (byte far *)audiostarts, length); @@ -1212,13 +1218,13 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) // open the data file // #ifndef AUDIOHEADERLINKED - if ((audiohandle = open("AUDIOT."EXT, + if ((audiohandle = open("AUDIOT.16", O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit (gvar, "Can't open AUDIOT."EXT"!"); + Quit (gvar, "Can't open AUDIOT.16""!"); #else - if ((audiohandle = open("AUDIO."EXT, + if ((audiohandle = open("AUDIO.16", O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit (gvar, "Can't open AUDIO."EXT"!"); + Quit (gvar, "Can't open AUDIO.16""!"); #endif }*/ @@ -1329,7 +1335,7 @@ void CA_CacheAudioChunk (int chunk) // MDM begin - (GAMERS EDGE) // - if (!FindFile("AUDIO."EXT,NULL,2)) + if (!FindFile("AUDIO.16",NULL,2)) Quit (gvar, "CA_CacheAudioChunk(): Can't find audio files."); // // MDM end @@ -1604,7 +1610,7 @@ void CAL_CacheSprite (int chunk, byte far *compressed) // // expand the unshifted shape // - CAL_HuffExpand (compressed, &dest->data[0],smallplane*2,grhuffman); + CAL_HuffExpand (compressed, &dest->data[0],smallplane*2,gvar->ca.grhuffman); #endif @@ -1633,7 +1639,7 @@ void CAL_CacheSprite (int chunk, byte far *compressed) // // expand the unshifted shape // - CAL_HuffExpand (compressed, &dest->data[0],smallplane*5,grhuffman); + CAL_HuffExpand (compressed, &dest->data[0],smallplane*5,gvar->ca.grhuffman); // // make the shifts! @@ -1765,7 +1771,7 @@ void CAL_ExpandGrChunk (int chunk, byte far *source) MM_GetPtr (&grsegs[chunk],expanded); if (mmerror) return; - CAL_HuffExpand (source,grsegs[chunk],expanded,grhuffman); + CAL_HuffExpand (source,grsegs[chunk],expanded,gvar->ca.grhuffman); } } */ @@ -1801,11 +1807,11 @@ void CAL_ReadGrChunk (int chunk) compressed = GRFILEPOS(next)-pos; - lseek(grhandle,pos,SEEK_SET); + lseek(gvar->ca.file.grhandle,pos,SEEK_SET); if (compressed<=BUFFERSIZE) { - CA_FarRead(grhandle,bufferseg,compressed); + CA_FarRead(gvar->ca.file.grhandle,bufferseg,compressed); source = bufferseg; } else @@ -1814,7 +1820,7 @@ void CAL_ReadGrChunk (int chunk) if (mmerror) return; MM_SetLock (&bigbufferseg,true); - CA_FarRead(grhandle,bigbufferseg,compressed); + CA_FarRead(gvar->ca.file.grhandle,bigbufferseg,compressed); source = bigbufferseg; } @@ -1850,7 +1856,7 @@ void CA_CacheGrChunk (int chunk) // MDM begin - (GAMERS EDGE) // - if (!FindFile("EGAGRAPH."EXT,NULL,2)) + if (!FindFile("EGAGRAPH.16",NULL,2)) Quit (gvar, "CA_CacheGrChunk(): Can't find graphics files."); // // MDM end @@ -1869,18 +1875,18 @@ void CA_CacheGrChunk (int chunk) compressed = GRFILEPOS(next)-pos; - lseek(grhandle,pos,SEEK_SET); + lseek(gvar->ca.file.grhandle,pos,SEEK_SET); if (compressed<=BUFFERSIZE) { - CA_FarRead(grhandle,bufferseg,compressed); + CA_FarRead(gvar->ca.file.grhandle,bufferseg,compressed); source = bufferseg; } else { MM_GetPtr(&bigbufferseg,compressed); MM_SetLock (&bigbufferseg,true); - CA_FarRead(grhandle,bigbufferseg,compressed); + CA_FarRead(gvar->ca.file.grhandle,bigbufferseg,compressed); source = bigbufferseg; } @@ -2317,7 +2323,7 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar) // MDM begin - (GAMERS EDGE) // -// if (!FindFile("EGAGRAPH."EXT,NULL,2)) +// if (!FindFile("EGAGRAPH.16",NULL,2)) // Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); // // MDM end @@ -2388,8 +2394,8 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar) next = NUMCHUNKS; // read pos to posend } - lseek(grhandle,pos,SEEK_SET); - CA_FarRead(grhandle,(gvar->mm.bufferseg),endpos-pos,gvar); + lseek(gvar->ca.file.grhandle,pos,SEEK_SET); + CA_FarRead(gvar->ca.file.grhandle,(gvar->mm.bufferseg),endpos-pos,gvar); bufferstart = pos; bufferend = endpos; source = bufferseg; @@ -2402,8 +2408,8 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar) if (mmerror) return; MM_SetLock (&bigbufferseg,true); - lseek(grhandle,pos,SEEK_SET); - CA_FarRead(grhandle,bigbufferseg,compressed,gvar); + lseek(gvar->ca.file.grhandle,pos,SEEK_SET); + CA_FarRead(gvar->ca.file.grhandle,bigbufferseg,compressed,gvar); source = bigbufferseg; } @@ -2422,3 +2428,13 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar) if (dialog && finishcachebox) finishcachebox(); }*/ + +void CA_CannotOpen(char *string, global_game_variables_t *gvar) +{ + char str[30]; + + strcpy(str,"Can't open "); + strcat(str,string); + strcat(str,"!\n"); + Quit (gvar, str); +} diff --git a/src/lib/16_ca.h b/src/lib/16_ca.h index bd762016..db9cba58 100755 --- a/src/lib/16_ca.h +++ b/src/lib/16_ca.h @@ -27,7 +27,8 @@ //=========================================================================== -//#define NOMAPS +/*moved to src/lib/16_tdef.h +#define NOMAPS #define NOGRAPHICS #define NOAUDIO @@ -35,8 +36,8 @@ //#define GRHEADERLINKED #define AUDIOHEADERLINKED -//#define NUMMAPS 39 -//#define MAPPLANES 3 +#define NUMMAPS 39 +#define MAPPLANES 3*/ //++++#define PROFILE//++++ //=========================================================================== diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index 3aeb85b1..6fe2c646 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -644,8 +644,26 @@ typedef struct //from 16_ca //========================================================================== +#define NOMAPS +#define NOGRAPHICS +#define NOAUDIO + +#define MAPHEADERLINKED +//#define GRHEADERLINKED +#define AUDIOHEADERLINKED + #define NUMMAPS 4//39 -#define NUMSNDCHUNKS 84 +#define NUMSNDCHUNKS 4//3 +#define NUMPICS 132//wolf3d wl6 + +#define STRUCTPIC 0 + + +#define GDICTNAME "vgadict." +#define GHEADNAME "vgahead." +#define GFILENAME "vgagraph." +#define EXTENSION "hb1" + typedef struct { @@ -696,7 +714,19 @@ typedef struct //TODO: USE THIS!!!! word _seg *grstarts; // array of offsets in egagraph, -1 for sparse//long word _seg *audiostarts; // array of offsets in audio / audiot//long - huffnode huffnode; +#ifdef GRHEADERLINKED + huffnode *grhuffman; +#else + huffnode grhuffman[255]; +#endif + +#ifdef AUDIOHEADERLINKED + huffnode *audiohuffman; +#else + huffnode audiohuffman[255]; +#endif + + long chunkcomplen,chunkexplen; sd_t sd; //TODO: extend! and learn from keen/wolf/catacomb's code wwww diff --git a/src/util/shbat/qwolf.sh b/src/util/shbat/qwolf.sh index d900d481..28ab088c 100755 --- a/src/util/shbat/qwolf.sh +++ b/src/util/shbat/qwolf.sh @@ -5,7 +5,9 @@ dir2="16/wolf3d/WOLFSRC" echo ==== $dir1 ==== grep "$1" "$dir1"/*.c grep "$1" "$dir1"/*.h +grep "$1" "$dir1"/*.asm echo ==== $dir2 ==== grep "$1" "$dir2"/*.C grep "$1" "$dir2"/*.H +grep "$1" "$dir2"/*.ASM . ./src/util/qfoot.sh $0