X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_ca.c;h=6ef9806c0d37446c800cbdfb7bbf2c3f233529d6;hb=0902e0e217ef1eb91af959aa8ab47f355f6678e9;hp=dcdcaa1c3bc65b262a78fc6439bcd36eacc7f9ad;hpb=a114e86d527fe3b20409e7a8f01611024b722dab;p=16.git diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index dcdcaa1c..6ef9806c 100755 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -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 /* ============================================================================= @@ -305,7 +305,7 @@ boolean CA_FarWrite(int handle, byte far *source, dword length, global_game_vari //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; } @@ -377,10 +377,10 @@ boolean CA_ReadFile(char *filename, memptr *ptr, global_game_variables_t *gvar) size = filelength(handle); if(!CA_FarRead(handle,*ptr,size, gvar)) { - close (handle); + close(handle); return false; } - close (handle); + close(handle); return true; } @@ -438,7 +438,28 @@ boolean CA_LoadFile(char *filename, memptr *ptr, global_game_variables_t *gvar) return false; 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); @@ -2034,21 +2055,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); } -*/ + /* ====================== @@ -2059,12 +2080,12 @@ 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 @@ -2074,26 +2095,26 @@ void CA_SetAllPurge (void) // // 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 (gvar->ca.mapsegs[i], gvar); // // free sounds // for (i=0;ica.audiosegs[i]) + MM_SetPurge (gvar->ca.audiosegs[i],3, gvar); // // free graphics // - CA_SetGrPurge (); -}*/ + CA_SetGrPurge (gvar); +} //=========================================================================== @@ -2218,10 +2239,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; @@ -2237,17 +2258,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! @@ -2255,8 +2276,8 @@ void CA_CacheMarks (char *title) // MDM begin - (GAMERS EDGE) // - if (!FindFile("EGAGRAPH."EXT,NULL,2)) - Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); +// if (!FindFile("EGAGRAPH."EXT,NULL,2)) +// Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); // // MDM end @@ -2276,7 +2297,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 @@ -2327,7 +2348,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; @@ -2336,12 +2357,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; }