X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_ca.c;h=8b9aab83be9c2ccb1d922938dfe50657ce47b2a9;hb=7c35eb648613504ac47e5605d79f93112f569134;hp=5934c5ae95c8902821f4fa3b38461d965561bbb7;hpb=0024fc033f62f0784cfeb40fbed8379372146825;p=16.git diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index 5934c5ae..8b9aab83 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 @@ -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,12 +293,12 @@ 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"); @@ -311,45 +311,45 @@ boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm) //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,7 +375,7 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm) return false; size = filelength(handle); - if(!CA_FarRead(handle,*ptr,size, mm)) + if(!CA_FarRead(handle,*ptr,size, gvar)) { close (handle); return false; @@ -395,10 +395,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 +407,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 +428,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 +437,9 @@ 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); + MM_GetPtr(ptr,size, gvar); + if(!CA_FarRead(handle,*ptr,size, gvar)) { close(handle); return false; @@ -498,15 +498,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 +533,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 +597,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 +613,7 @@ storebyteshort: length--; __asm { -//// mov bx,[headptr] + mov bx,[word ptr headptr] mov cl,1 mov si,[sourceoff] @@ -685,7 +685,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 +795,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 +852,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 +902,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 +1028,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); @@ -1040,7 +1040,7 @@ dinorm: 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,7 +1054,7 @@ 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"!"); // @@ -1065,7 +1065,7 @@ dinorm: 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 @@ -1074,7 +1074,7 @@ dinorm: 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 @@ -1083,7 +1083,7 @@ dinorm: 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,8 +1102,8 @@ dinorm: void CAL_SetupMapFile (global_game_variables_t *gvar) { - int handle; - long length; +// int handle; +// long length; // // load maphead.ext (offsets and tileinfo for map file) @@ -1111,7 +1111,7 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) // #ifndef MAPHEADERLINKED // if ((handle = open("MAPHEAD."EXT, // O_RDONLY | O_BINARY, S_IREAD)) == -1) -// Quit ("Can't open MAPHEAD."EXT"!"); +// printf("Can't open MAPHEAD."EXT"!"); // length = filelength(handle); // MM_GetPtr (&(memptr)tinf,length); // CA_FarRead(handle, tinf, length); @@ -1134,11 +1134,11 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) // #ifdef MAPHEADERLINKED // if ((maphandle = open("GAMEMAPS."EXT, // O_RDONLY | O_BINARY, S_IREAD)) == -1) -// Quit ("Can't open GAMEMAPS."EXT"!"); +// Quit (gvar, "Can't open GAMEMAPS."EXT"!"); // //#else // if ((maphandle = open("MAPTEMP."EXT, // O_RDONLY | O_BINARY, S_IREAD)) == -1) -// Quit ("Can't open MAPTEMP."EXT"!"); +// Quit (gvar, "Can't open MAPTEMP."EXT"!"); // #endif } @@ -1164,7 +1164,7 @@ 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); CA_FarRead(handle, (byte far *)audiostarts, length); @@ -1181,11 +1181,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 }*/ @@ -1226,10 +1226,9 @@ void CA_Startup(global_game_variables_t *gvar) /* CAL_SetupGrFile (); CAL_SetupAudioFile ();*/ - CAL_SetupMapFile (gvar); - gvar->ca.map.mapon = -1; + gvar->ca.camap.mapon = -1; gvar->ca.ca_levelbit = 1; gvar->ca.ca_levelnum = 0; @@ -1292,7 +1291,7 @@ void CA_CacheAudioChunk (int chunk) // 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 @@ -1631,7 +1630,7 @@ void CAL_CacheSprite (int chunk, byte far *compressed) break; default: - Quit ("CAL_CacheSprite: Bad shifts number!"); + Quit (gvar, "CAL_CacheSprite: Bad shifts number!"); } #endif @@ -1790,7 +1789,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 +1839,7 @@ void CA_CacheGrChunk (int chunk) = ====================== */ -/*++++ fuckin segments! +/*++++ segments! void CA_CacheMap (global_game_variables_t *gvar) { long pos,compressed; @@ -1858,10 +1857,7 @@ 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, &(gvar->mm)); + MM_SetPurge (&((memptr)gvar->ca.map.mapheaderseg[(gvar->ca.map.mapon)]), 3, &(gvar->mm)); for (plane=0;planeca.map.mapsegs[plane]) MM_FreePtr (&(memptr)gvar->ca.map.mapsegs[plane], &(gvar->mm)); @@ -1875,7 +1871,8 @@ void CA_CacheMap (global_game_variables_t *gvar) // if (!gvar->ca.map.mapheaderseg[gvar->ca.map.mapnum]) { - pos = ((_seg *)gvar->ca.map.tinf)->headeroffsets[gvar->ca.mapnum]; + //pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum]; + pos = ((_seg *)gvar->ca.map.tinf)->headeroffsets[gvar->ca.map.mapnum]; if (pos<0) // $FFFFFFFF start is a sparse map printf("CA_CacheMap: Tried to load a non existent map!"); @@ -2258,7 +2255,7 @@ void CA_CacheMarks (char *title) // MDM begin - (GAMERS EDGE) // if (!FindFile("EGAGRAPH."EXT,NULL,2)) - Quit("CA_CacheMarks(): Can't find graphics files."); + Quit (gvar, "CA_CacheMarks(): Can't find graphics files."); // // MDM end