X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_ca.c;h=1b3020790c144614ee94eff1eaf0b450f0a1cddf;hb=243e22dc4fb6ae069348ac984f79ae7827747be1;hp=762a6bb72da5d6f9a3b8ab598f12e25a506704fc;hpb=db43d7e01f6d3c2fbf5cfd7b4c163e3a6b16888a;p=16.git diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index 762a6bb7..1b302079 100755 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -46,10 +46,10 @@ loaded into the data segment ============================================================================= */ -typedef struct +/*typedef struct { word bit0,bit1; // 0-255 is a character, > is a pointer to a node -} huffnode; +} huffnode;*/ /*typedef struct @@ -132,17 +132,17 @@ void CAL_DialogFinish (void);*/ //void CAL_CarmackExpand (unsigned far *source, unsigned far *dest,unsigned length); -/*++++#ifdef THREEBYTEGRSTARTS +#ifdef THREEBYTEGRSTARTS #define FILEPOSSIZE 3 //#define GRFILEPOS(c) (*(long far *)(((byte far *)grstarts)+(c)*3)&0xffffff) -long GRFILEPOS(int c) +long GRFILEPOS(int c, global_game_variables_t *gvar) { long value; int offset; offset = c*3; - value = *(long far *)(((byte far *)grstarts)+offset); + value = *(long far *)(((byte far *)gvar->ca.grstarts)+offset); value &= 0x00ffffffl; @@ -153,8 +153,8 @@ long GRFILEPOS(int c) }; #else #define FILEPOSSIZE 4 -#define GRFILEPOS(c) (grstarts[c]) -#endif*/ +#define GRFILEPOS(c) (gvar->ca.grstarts[c]) +#endif /* ============================================================================= @@ -221,12 +221,12 @@ void CAL_GetGrChunkLength (int chunk) ========================== */ -boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm) +boolean CA_FarRead(int handle, byte far *dest, dword length, global_game_variables_t *gvar) { - boolean flag; + boolean flag=0; //dword fat=0; //word segm=0; - if(mm->EMSVer<0x40) + if(gvar->pm.emm.EMSVer<0x40) if(length>0xfffflu) { printf("File is a fat bakapee\n"); @@ -239,45 +239,45 @@ boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm) //if(!fat&&!segm) //{ - __asm { - push ds - mov bx,[handle] - mov cx,[WORD PTR length] - mov dx,[WORD PTR dest] - mov ds,[WORD PTR dest+2] - mov ah,0x3f // READ w/handle - int 21h - pop ds - jnc good - mov errno,ax - mov flag,0 - jmp End + __asm { + push ds + mov bx,[handle] + mov cx,[WORD PTR length] + mov dx,[WORD PTR dest] + mov ds,[WORD PTR dest+2] + mov ah,0x3f // READ w/handle + int 21h + pop ds + jnc good + mov errno,ax + mov flag,0 + jmp End #ifdef __BORLANDC__ - } + } #endif good: #ifdef __BORLANDC__ - __asm { + __asm { #endif - cmp ax,[WORD PTR length] - je done -// errno = EINVFMT; // user manager knows this is bad read - mov flag,0 - jmp End + cmp ax,[WORD PTR length] + je done +// errno = EINVFMT; // user manager knows this is bad read + mov flag,0 + jmp End #ifdef __BORLANDC__ - } + } #endif done: #ifdef __BORLANDC__ - __asm { + __asm { #endif - mov flag,1 + mov flag,1 #ifdef __BORLANDC__ - } + } #endif End: #ifdef __WATCOMC__ - } + } #endif return flag; } @@ -293,63 +293,63 @@ End: ========================== */ -boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm) +boolean CA_FarWrite(int handle, byte far *source, dword length, global_game_variables_t *gvar) { - boolean flag; + boolean flag=0; //dword fat=0; //word segm=0; - if(mm->EMSVer<0x40) + if(gvar->pm.emm.EMSVer<0x40) if(length>0xfffflu) { printf("File is a fat bakapee\n"); //segm=(length%0xfffflu)-1; //fat=segm*0xfffflu; //length-=fat; - printf("CA_FarRead doesn't support 64K reads yet!\n"); + printf("CA_FarWrite doesn't support 64K reads yet!\n"); return 0; } //if(!fat&&!segm) //{ - __asm { - push ds - mov bx,[handle] - mov cx,[WORD PTR length] - mov dx,[WORD PTR source] - mov ds,[WORD PTR source+2] - mov ah,0x40 // WRITE w/handle - int 21h - pop ds - jnc good - mov errno,ax - mov flag,0 - jmp End + __asm { + push ds + mov bx,[handle] + mov cx,[WORD PTR length] + mov dx,[WORD PTR source] + mov ds,[WORD PTR source+2] + mov ah,0x40 // WRITE w/handle + int 21h + pop ds + jnc good + mov errno,ax + mov flag,0 + jmp End #ifdef __BORLANDC__ - } + } #endif good: #ifdef __BORLANDC__ - __asm { + __asm { #endif - cmp ax,[WORD PTR length] - je done - //errno = ENOMEM; // user manager knows this is bad write - mov flag,0 - jmp End + cmp ax,[WORD PTR length] + je done +// errno = ENOMEM; // user manager knows this is bad write + mov flag,0 + jmp End #ifdef __BORLANDC__ - } + } #endif done: #ifdef __BORLANDC__ - __asm { + __asm { #endif - mov flag,1 + mov flag,1 #ifdef __BORLANDC__ - } + } #endif End: #ifdef __WATCOMC__ - } + } #endif return flag; } @@ -365,7 +365,7 @@ End: ========================== */ -boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm) +boolean CA_ReadFile(char *filename, memptr *ptr, global_game_variables_t *gvar) { int handle; sdword size; @@ -375,12 +375,23 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm) return false; size = filelength(handle); - if(!CA_FarRead(handle,*ptr,size, mm)) +#ifdef __DEBUG_CA__ + if(dbg_debugca>0){ + printf("===============================================================================\n"); + printf(" CA_ReadFile\n"); + printf("===============================================================================\n"); + //%04x + printf(" ptr=%Fp\n", ptr); + printf(" *ptr=%Fp\n", *ptr); + printf(" &ptr=%Fp\n", &ptr); + } +#endif + if(!CA_FarRead(handle,*ptr,size, gvar)) { - close (handle); + close(handle); return false; } - close (handle); + close(handle); return true; } @@ -395,10 +406,10 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm) ========================== */ -boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm) +boolean CA_WriteFile (char *filename, void far *ptr, long length, global_game_variables_t *gvar) { int handle; - sdword size; + //sdword size; //long size; handle = open(filename,O_CREAT | O_BINARY | O_WRONLY, @@ -407,7 +418,7 @@ boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm) if (handle == -1) return false; - if (!CA_FarWrite (handle,ptr,length, mm)) + if (!CA_FarWrite (handle,ptr,length, gvar)) { close(handle); return false; @@ -428,7 +439,7 @@ boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm) ========================== */ -boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi) +boolean CA_LoadFile(char *filename, memptr *ptr, global_game_variables_t *gvar) { int handle; sdword size; @@ -437,9 +448,30 @@ boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi) if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1) return false; - size = filelength (handle); - MM_GetPtr(ptr,size, mm, mmi); - if(!CA_FarRead(handle,*ptr,size, mm)) + size = filelength(handle); +#ifdef __DEBUG_CA__ + if(dbg_debugca>0){ + printf("===============================================================================\n"); + printf(" CA_LoadFile\n"); + printf("===============================================================================\n"); + //%04x + printf(" ptr=%Fp\n", ptr); + printf(" *ptr=%Fp\n", *ptr); + printf(" &ptr=%Fp\n", &ptr); + } +#endif + MM_GetPtr(ptr,size, gvar); +#ifdef __DEBUG_CA__ + if(dbg_debugca>0){ + //%04x + printf("---------------------------------------\n"); + printf(" ptr=%Fp\n", ptr); + printf(" *ptr=%Fp\n", *ptr); + printf(" &ptr=%Fp\n", &ptr); + printf("-------------------------------------------------------------------------------\n"); + } +#endif + if(!CA_FarRead(handle,*ptr,size, gvar)) { close(handle); return false; @@ -498,15 +530,15 @@ void CAL_OptimizeNodes(huffnode *table) ====================== */ -void CAL_HuffExpand (byte huge *source, byte huge *dest, +void CAL_HuffExpand (byte far *source, byte far *dest, long length,huffnode *hufftable) { // unsigned bit,byte,node,code; unsigned sourceseg,sourceoff,destseg,destoff,endoff; - huffnode *headptr; + huffnode *headptr; // huffnode *nodeon; - headptr = hufftable+254; // head node is allways node 254 + headptr = hufftable+254; // head node is allways node 254 source++; // normalize source--; @@ -533,7 +565,7 @@ void CAL_HuffExpand (byte huge *source, byte huge *dest, //-------------------------- __asm { -//// mov bx,[headptr] + mov bx,[word ptr headptr] mov si,[sourceoff] mov di,[destoff] @@ -597,7 +629,7 @@ storebyteshort: #endif mov [es:di],dl inc di // write a decopmpressed byte out -//// mov bx,[headptr] // back to the head node for next bit + mov bx,[word ptr headptr] // back to the head node for next bit cmp di,ax // done? jne expandshort @@ -613,7 +645,7 @@ storebyteshort: length--; __asm { -//// mov bx,[headptr] + mov bx,[word ptr headptr] mov cl,1 mov si,[sourceoff] @@ -685,7 +717,7 @@ storebyte: #endif mov [es:di],dl inc di // write a decopmpressed byte out -//// mov bx,[headptr] // back to the head node for next bit + mov bx,[word ptr headptr] // back to the head node for next bit cmp di,0x10 // normalize es:di jb dinorm @@ -795,12 +827,12 @@ void CAL_CarmackExpand (unsigned far *source, unsigned far *dest, unsigned lengt ====================== */ -long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest, +long CA_RLEWCompress (unsigned far *source, long length, unsigned far *dest, unsigned rlewtag) { long complength; unsigned value,count,i; - unsigned huge *start,huge *end; + unsigned far *start,far *end; start = dest; @@ -852,11 +884,11 @@ long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest, ====================== */ -void CA_RLEWexpand (unsigned huge *source, unsigned huge *dest,long length, +void CA_RLEWexpand (unsigned far *source, unsigned far *dest,long length, unsigned rlewtag) { // unsigned value,count,i; - unsigned huge *end; + unsigned far *end; unsigned sourceseg,sourceoff,destseg,destoff,endseg,endoff; @@ -902,7 +934,7 @@ void CA_RLEWexpand (unsigned huge *source, unsigned huge *dest,long length, // // NOTE: A repeat count that produces 0xfff0 bytes can blow this! // - __asm{ + __asm { mov bx,rlewtag mov si,sourceoff mov di,destoff @@ -1028,7 +1060,7 @@ dinorm: if ((handle = open(GREXT"DICT."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open "GREXT"DICT."EXT"!"); + Quit (gvar, "Can't open "GREXT"DICT."EXT"!"); read(handle, &grhuffman, sizeof(grhuffman)); close(handle); @@ -1036,11 +1068,11 @@ dinorm: // // load the data offsets from ???head.ext // - MM_GetPtr (&(memptr)grstarts,(NUMCHUNKS+1)*FILEPOSSIZE); + MM_GetPtr (MEMPTR grstarts,(NUMCHUNKS+1)*FILEPOSSIZE); if ((handle = open(GREXT"HEAD."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open "GREXT"HEAD."EXT"!"); + Quit (gvar, "Can't open "GREXT"HEAD."EXT"!"); CA_FarRead(handle, (memptr)grstarts, (NUMCHUNKS+1)*FILEPOSSIZE); @@ -1054,36 +1086,36 @@ dinorm: // grhandle = open(GREXT"GRAPH."EXT, O_RDONLY | O_BINARY); if (grhandle == -1) - Quit ("Cannot open "GREXT"GRAPH."EXT"!"); + Quit (gvar, "Cannot open "GREXT"GRAPH."EXT"!"); // // 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)); CAL_GetGrChunkLength(STRUCTPIC); // position file pointer MM_GetPtr(&compseg,chunkcomplen); CA_FarRead (grhandle,compseg,chunkcomplen); - CAL_HuffExpand (compseg, (byte huge *)pictable,NUMPICS*sizeof(pictabletype),grhuffman); + CAL_HuffExpand (compseg, (byte far *)pictable,NUMPICS*sizeof(pictabletype),grhuffman); MM_FreePtr(&compseg); #endif #if NUMPICM>0 - MM_GetPtr(&(memptr)picmtable,NUMPICM*sizeof(pictabletype)); + 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 huge *)picmtable,NUMPICS*sizeof(pictabletype),grhuffman); + CAL_HuffExpand (compseg, (byte far *)picmtable,NUMPICS*sizeof(pictabletype),grhuffman); MM_FreePtr(&compseg); #endif #if NUMSPRITES>0 - MM_GetPtr(&(memptr)spritetable,NUMSPRITES*sizeof(spritetabletype)); + 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 huge *)spritetable,NUMSPRITES*sizeof(spritetabletype),grhuffman); + CAL_HuffExpand (compseg, (byte far *)spritetable,NUMSPRITES*sizeof(spritetabletype),grhuffman); MM_FreePtr(&compseg); #endif @@ -1102,44 +1134,44 @@ dinorm: void CAL_SetupMapFile (global_game_variables_t *gvar) { +#ifndef MAPHEADERLINKED int handle; long length; +#endif // // load maphead.ext (offsets and tileinfo for map file) // -// #ifndef MAPHEADERLINKED -// if ((handle = open("MAPHEAD."EXT, -// O_RDONLY | O_BINARY, S_IREAD)) == -1) -// Quit ("Can't open MAPHEAD."EXT"!"); -// length = filelength(handle); -// MM_GetPtr (&(memptr)tinf,length); -// CA_FarRead(handle, tinf, length); -// close(handle); -// //#else -// -// tinf = (byte _seg *)FP_SEG(&maphead); -// -// #endif +#ifndef MAPHEADERLINKED + if ((handle = open("maphead.mph", + O_RDONLY | O_BINARY, S_IREAD)) == -1) + Quit (gvar, "Can't open maphead.mph"); + length = filelength(handle); + MM_GetPtr (MEMPTR gvar->ca.tinf,length,gvar); + CA_FarRead(handle, gvar->ca.tinf, length,gvar); + close(handle); +//#else + + gvar->ca.tinf = (byte _seg *)FP_SEG(&maphead); + +#endif // // open the data file // //TODO: multiple files - if ((gvar->ca.file.maphandle[0] = open("data/test.map", + if ((gvar->ca.file.maphandle = open("data/test.map", O_RDONLY | O_BINARY, S_IREAD)) == -1) - { - printf("Can't open data/test.map!"); - } -// #ifdef MAPHEADERLINKED -// if ((maphandle = open("GAMEMAPS."EXT, -// O_RDONLY | O_BINARY, S_IREAD)) == -1) -// Quit ("Can't open GAMEMAPS."EXT"!"); -// //#else -// if ((maphandle = open("MAPTEMP."EXT, -// O_RDONLY | O_BINARY, S_IREAD)) == -1) -// Quit ("Can't open MAPTEMP."EXT"!"); -// #endif + Quit (gvar, "Can't open data/test.map!"); +/*#ifdef MAPHEADERLINKED + if ((maphandle = open("GAMEMAPS."EXTENSION, + O_RDONLY | O_BINARY, S_IREAD)) == -1) + Quit ("Can't open GAMEMAPS."EXTENSION"!"); +#else + if ((maphandle = open("MAPTEMP."EXTENSION, + O_RDONLY | O_BINARY, S_IREAD)) == -1) + Quit ("Can't open MAPTEMP."EXTENSION"!"); +#endif*/ } //========================================================================== @@ -1164,9 +1196,9 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) #ifndef AUDIOHEADERLINKED if ((handle = open("AUDIOHED."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open AUDIOHED."EXT"!"); + Quit (gvar, "Can't open AUDIOHED."EXT"!"); length = filelength(handle); - MM_GetPtr (&(memptr)audiostarts,length); + MM_GetPtr (MEMPTR audiostarts,length); CA_FarRead(handle, (byte far *)audiostarts, length); close(handle); #else @@ -1181,11 +1213,11 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) #ifndef AUDIOHEADERLINKED if ((audiohandle = open("AUDIOT."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open AUDIOT."EXT"!"); + Quit (gvar, "Can't open AUDIOT."EXT"!"); #else if ((audiohandle = open("AUDIO."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit ("Can't open AUDIO."EXT"!"); + Quit (gvar, "Can't open AUDIO."EXT"!"); #endif }*/ @@ -1223,13 +1255,19 @@ void CA_Startup(global_game_variables_t *gvar) unlink("meminfo.16w"); gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT); #endif -/* - CAL_SetupGrFile (); - CAL_SetupAudioFile ();*/ + +#ifndef NOMAPS + CAL_SetupMapFile (gvar); +#endif +#ifndef NOGRAPHICS + CAL_SetupGrFile (gvar); +#endif +#ifndef NOAUDIO CAL_SetupMapFile (gvar); +#endif - gvar->ca.mapon = -1; + gvar->ca.camap.mapon = -1; gvar->ca.ca_levelbit = 1; gvar->ca.ca_levelnum = 0; @@ -1258,10 +1296,9 @@ void CA_Shutdown(global_game_variables_t *gvar) #endif close(gvar->handle.showmemhandle); - close(*(gvar->ca.file.maphandle)); -/*++++ - close(grhandle); - close(audiohandle);*/ + close(gvar->ca.file.maphandle); + close(gvar->ca.file.grhandle); + close(gvar->ca.file.audiohandle); } //=========================================================================== @@ -1285,14 +1322,14 @@ void CA_CacheAudioChunk (int chunk) if (audiosegs[chunk]) { - MM_SetPurge (&(memptr)audiosegs[chunk],0); + MM_SetPurge (MEMPTR audiosegs[chunk],0); return; // allready in memory } // MDM begin - (GAMERS EDGE) // if (!FindFile("AUDIO."EXT,NULL,2)) - Quit("CA_CacheAudioChunk(): Can't find audio files."); + Quit (gvar, "CA_CacheAudioChunk(): Can't find audio files."); // // MDM end @@ -1307,7 +1344,7 @@ void CA_CacheAudioChunk (int chunk) #ifndef AUDIOHEADERLINKED - MM_GetPtr (&(memptr)audiosegs[chunk],compressed); + MM_GetPtr (MEMPTR audiosegs[chunk],compressed); if (mmerror) return; @@ -1332,7 +1369,7 @@ void CA_CacheAudioChunk (int chunk) expanded = *(long far *)source; source += 4; // skip over length - MM_GetPtr (&(memptr)audiosegs[chunk],expanded); + MM_GetPtr (MEMPTR audiosegs[chunk],expanded); if (mmerror) goto done; CAL_HuffExpand (source,audiosegs[chunk],expanded,audiohuffman); @@ -1373,7 +1410,7 @@ void CA_LoadAllSounds (void) for (i=0;ivideo.grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed + gvar->ca.grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed if (grsegs[chunk]) { MM_SetPurge (&grsegs[chunk],0); @@ -1790,7 +1827,7 @@ void CA_CacheGrChunk (int chunk) // MDM begin - (GAMERS EDGE) // if (!FindFile("EGAGRAPH."EXT,NULL,2)) - Quit("CA_CacheGrChunk(): Can't find graphics files."); + Quit (gvar, "CA_CacheGrChunk(): Can't find graphics files."); // // MDM end @@ -1840,7 +1877,7 @@ void CA_CacheGrChunk (int chunk) = ====================== */ -/*++++ fuckin segments! +/*++++ segments! void CA_CacheMap (global_game_variables_t *gvar) { long pos,compressed; @@ -1857,31 +1894,33 @@ void CA_CacheMap (global_game_variables_t *gvar) // // free up memory from last map // -// if (gvar->ca.map.mapon>-1 && gvar->ca.map.mapheaderseg[gvar->ca.map.mapon]) -// MM_SetPurge (&(memptr)gvar->ca.map.mapheaderseg[gvar-ca.map.mapon],3); + 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); for (plane=0;planeca.map.mapsegs[plane]) - MM_FreePtr (&(memptr)gvar->ca.map.mapsegs[plane]); + if (gvar->ca.camap.mapsegs[plane]) + MM_FreePtr ((memptr)gvar->ca.camap.mapsegs[plane], gvar); - gvar->ca.map.mapon = gvar->ca.map.mapnum; + gvar->ca.camap.mapon = gvar->ca.camap.mapnum; // // load map header // The header will be cached if it is still around // - if (!gvar->ca.map.mapheaderseg[gvar->ca.map.mapnum]) - { - pos = ((__segmement *)tinf)->headeroffsets[gvar->ca.mapnum]; - if (pos<0) // $FFFFFFFF start is a sparse map - printf("CA_CacheMap: Tried to load a non existent map!"); +// 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!"); - MM_GetPtr(&(memptr)gvar->ca.mapheaderseg[mapnum],sizeof(maptype)); - lseek(maphandle,pos,SEEK_SET); - CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype)); - } - else - MM_SetPurge (&(memptr)mapheaderseg[mapnum],0); +// MM_GetPtr(MEMPTR gvar->ca.camapheaderseg[mapnum],sizeof(maptype)); +// lseek(maphandle,pos,SEEK_SET); +// CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype)); +// } +// else +// MM_SetPurge (MEMPTR mapheaderseg[mapnum], 0, &(gvar->mm)); // // load the planes in @@ -1893,13 +1932,13 @@ void CA_CacheMap (global_game_variables_t *gvar) for (plane = 0; planeplanestart[plane]; - compressed = mapheaderseg[mapnum]->planelength[plane]; + //pos = mapheaderseg[mapnum]->planestart[plane]; + //compressed = mapheaderseg[mapnum]->planelength[plane]; if (!compressed) continue; // the plane is not used in this game - dest = &(memptr)mapsegs[plane]; + dest = MEMPTR mapsegs[plane]; MM_GetPtr(dest,size); lseek(maphandle,pos,SEEK_SET); @@ -1939,7 +1978,7 @@ void CA_CacheMap (global_game_variables_t *gvar) if (compressed>BUFFERSIZE) MM_FreePtr(&bigbufferseg); } -}*/ +}//*/ //=========================================================================== @@ -1953,15 +1992,15 @@ void CA_CacheMap (global_game_variables_t *gvar) = ====================== */ -/*++++ -void CA_UpLevel (void) + +void CA_UpLevel (global_game_variables_t *gvar) { - if (ca_levelnum==7) - Quit ("CA_UpLevel: Up past level 7!"); + if (gvar->ca.ca_levelnum==7) + printf("CA_UpLevel: Up past level 7!"); - ca_levelbit<<=1; - ca_levelnum++; -}*/ + gvar->ca.ca_levelbit<<=1; + gvar->ca.ca_levelnum++; +} //=========================================================================== @@ -1975,15 +2014,15 @@ void CA_UpLevel (void) = ====================== */ -/*++ -void CA_DownLevel (void) + +void CA_DownLevel (global_game_variables_t *gvar) { - if (!ca_levelnum) - Quit ("CA_DownLevel: Down past level 0!"); - ca_levelbit>>=1; - ca_levelnum--; - CA_CacheMarks(NULL); -}*/ + if (!gvar->ca.ca_levelnum) + printf("CA_DownLevel: Down past level 0!"); + gvar->ca.ca_levelbit>>=1; + gvar->ca.ca_levelnum--; + ////++++++++++++++++++++++++++++++++++++++++++CA_CacheMarks(NULL); +} //=========================================================================== @@ -2002,7 +2041,7 @@ void CA_ClearMarks (global_game_variables_t *gvar) int i; for (i=0;ivideo.grneeded[i]&=~gvar->ca.ca_levelbit; + gvar->ca.grneeded[i]&=~gvar->ca.ca_levelbit; } //=========================================================================== @@ -2019,7 +2058,7 @@ void CA_ClearMarks (global_game_variables_t *gvar) void CA_ClearAllMarks (global_game_variables_t *gvar) { - _fmemset (gvar->video.grneeded,0,sizeof(gvar->video.grneeded)); + _fmemset (gvar->ca.grneeded,0,sizeof(gvar->ca.grneeded)); gvar->ca.ca_levelbit = 1; gvar->ca.ca_levelnum = 0; } @@ -2033,21 +2072,21 @@ void CA_ClearAllMarks (global_game_variables_t *gvar) = ====================== */ -/*++++ -void CA_SetGrPurge (void) + +void CA_SetGrPurge (global_game_variables_t *gvar) { int i; // // free graphics // - CA_ClearMarks (); + CA_ClearMarks (gvar); for (i=0;ica.grsegs[i]) + MM_SetPurge (gvar->ca.grsegs[i],3, gvar); } -*/ + /* ====================== @@ -2058,41 +2097,41 @@ void CA_SetGrPurge (void) = ====================== */ -/*++++++++ -void CA_SetAllPurge (void) + +void CA_SetAllPurge (global_game_variables_t *gvar) { int i; - CA_ClearMarks (); + CA_ClearMarks (gvar); // // free cursor sprite and background save // - VW_FreeCursor (); + //____VW_FreeCursor (); // // 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;i<3;i++) - if (mapsegs[i]) - MM_FreePtr (&(memptr)mapsegs[i]); + if (gvar->ca.mapsegs[i]) + MM_FreePtr ((memptr *)&gvar->ca.mapsegs[i], gvar); // // free sounds // for (i=0;ica.audiosegs[i]) + MM_SetPurge ((memptr *)&gvar->ca.audiosegs[i],3, gvar); // // free graphics // - CA_SetGrPurge (); -}*/ + CA_SetGrPurge (gvar); +} //=========================================================================== @@ -2217,10 +2256,10 @@ void CAL_DialogFinish (void) = CA_CacheMarks = ====================== -*//* +*//*++++ #define MAXEMPTYREAD 1024 -void CA_CacheMarks (char *title) +void CAL_CacheMarks (char *title, global_game_variables_t *gvar) { boolean dialog; int i,next,numcache; @@ -2236,17 +2275,17 @@ void CA_CacheMarks (char *title) // go through and make everything not needed purgable // for (i=0;ivideo.grneeded[i]&ca_levelbit) + if (gvar->ca.grneeded[i]&(gvar->ca.ca_levelbit))//if (grneeded[i]&ca_levelbit) { - if (grsegs[i]) // its allready in memory, make - MM_SetPurge(&grsegs[i],0); // sure it stays there! + if (gvar->ca.grsegs[i]) // its allready in memory, make + MM_SetPurge(gvar->ca.grsegs[i],0,gvar); // sure it stays there! else numcache++; } else { - if (grsegs[i]) // not needed, so make it purgeable - MM_SetPurge(&grsegs[i],3); + if (gvar->ca.grsegs[i]) // not needed, so make it purgeable + MM_SetPurge(gvar->ca.grsegs[i],3,gvar); } if (!numcache) // nothing to cache! @@ -2254,8 +2293,8 @@ void CA_CacheMarks (char *title) // MDM begin - (GAMERS EDGE) // - if (!FindFile("EGAGRAPH."EXT,NULL,2)) - Quit("CA_CacheMarks(): Can't find graphics files."); +// if (!FindFile("EGAGRAPH."EXT,NULL,2)) +// Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); // // MDM end @@ -2275,7 +2314,7 @@ void CA_CacheMarks (char *title) bufferstart = bufferend = 0; // nothing good in buffer now for (i=0;ivideo.grneeded[i]&ca_levelbit) && !grsegs[i]) + if ( (gvar->ca.grneeded[i]&(gvar->ca.ca_levelbit)) && !gvar->ca.grsegs[i]) { // // update thermometer @@ -2326,7 +2365,7 @@ void CA_CacheMarks (char *title) } lseek(grhandle,pos,SEEK_SET); - CA_FarRead(grhandle,bufferseg,endpos-pos); + CA_FarRead(grhandle,(gvar->mm.bufferseg),endpos-pos,gvar); bufferstart = pos; bufferend = endpos; source = bufferseg; @@ -2335,12 +2374,12 @@ void CA_CacheMarks (char *title) else { // big chunk, allocate temporary buffer - MM_GetPtr(&bigbufferseg,compressed); + MM_GetPtr(&bigbufferseg,compressed,gvar); if (mmerror) return; MM_SetLock (&bigbufferseg,true); lseek(grhandle,pos,SEEK_SET); - CA_FarRead(grhandle,bigbufferseg,compressed); + CA_FarRead(grhandle,bigbufferseg,compressed,gvar); source = bigbufferseg; }