]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_ca.c
wwww yakuji wwww ca use to load maps w hmmm cachemap wwww
[16.git] / src / lib / 16_ca.c
index 8acba51635bcaab7dccde33be6da319f3999a6b3..6511ef176ab649739d61e14ed50b1645c4c27108 100755 (executable)
@@ -37,7 +37,7 @@ loaded into the data segment
 #pragma warn -use\r
 \r
 //#define THREEBYTEGRSTARTS\r
-\r
+//https://github.com/open-watcom/open-watcom-v2/issues/279#issuecomment-244587566 for _seg\r
 /*\r
 =============================================================================\r
 \r
@@ -532,9 +532,8 @@ void CAL_HuffExpand (byte huge *source, byte huge *dest,
 // expand less than 64k of data\r
 //--------------------------\r
 \r
-       __asm\r
-       {\r
-;;;;;          mov     bx,[headptr]\r
+       __asm {\r
+////           mov     bx,[headptr]\r
 \r
                mov     si,[sourceoff]\r
                mov     di,[destoff]\r
@@ -545,35 +544,60 @@ void CAL_HuffExpand (byte huge *source, byte huge *dest,
                mov     ch,[si]                         // load first byte\r
                inc     si\r
                mov     cl,1\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 expandshort:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                test    ch,cl                   // bit set?\r
                jnz     bit1short\r
                mov     dx,[ss:bx]                      // take bit0 path from node\r
                shl     cl,1                            // advance to next bit position\r
                jc      newbyteshort\r
                jnc     sourceupshort\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 bit1short:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                mov     dx,[ss:bx+2]            // take bit1 path\r
                shl     cl,1                            // advance to next bit position\r
                jnc     sourceupshort\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 newbyteshort:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                mov     ch,[si]                         // load next byte\r
                inc     si\r
                mov     cl,1                            // back to first bit\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 sourceupshort:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                or      dh,dh                           // if dx<256 its a byte, else move node\r
                jz      storebyteshort\r
                mov     bx,dx                           // next node = (huffnode *)code\r
                jmp     expandshort\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 storebyteshort:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                mov     [es:di],dl\r
                inc     di                                      // write a decopmpressed byte out\r
-;;;;           mov     bx,[headptr]            // back to the head node for next bit\r
+////           mov     bx,[headptr]            // back to the head node for next bit\r
 \r
                cmp     di,ax                           // done?\r
                jne     expandshort\r
@@ -588,9 +612,8 @@ storebyteshort:
 \r
   length--;\r
 \r
-       __asm\r
-       {\r
-;;;;           mov     bx,[headptr]\r
+       __asm {\r
+////           mov     bx,[headptr]\r
                mov     cl,1\r
 \r
                mov     si,[sourceoff]\r
@@ -599,16 +622,32 @@ storebyteshort:
                mov     ds,[sourceseg]\r
 \r
                lodsb                   // load first byte\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 expand:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                test    al,cl           // bit set?\r
                jnz     bit1\r
                mov     dx,[ss:bx]      // take bit0 path from node\r
                jmp     gotcode\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 bit1:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                mov     dx,[ss:bx+2]    // take bit1 path\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 gotcode:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                shl     cl,1            // advance to next bit position\r
                jnc     sourceup\r
                lodsb\r
@@ -618,19 +657,35 @@ gotcode:
                inc     cx\r
                mov     ds,cx\r
                xor     si,si\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 sinorm:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                mov     cl,1            // back to first bit\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 sourceup:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                or      dh,dh           // if dx<256 its a byte, else move node\r
                jz      storebyte\r
                mov     bx,dx           // next node = (huffnode *)code\r
                jmp     expand\r
-\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 storebyte:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                mov     [es:di],dl\r
                inc     di              // write a decopmpressed byte out\r
-;;;;           mov     bx,[headptr]    // back to the head node for next bit\r
+////           mov     bx,[headptr]    // back to the head node for next bit\r
 \r
                cmp     di,0x10         // normalize es:di\r
                jb      dinorm\r
@@ -638,8 +693,13 @@ storebyte:
                inc     dx\r
                mov     es,dx\r
                xor     di,di\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 dinorm:\r
-\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
                sub     [WORD PTR ss:length],1\r
                jnc     expand\r
                dec     [WORD PTR ss:length+2]\r
@@ -647,8 +707,7 @@ dinorm:
        }\r
        }\r
 \r
-       __asm\r
-       {\r
+       __asm {\r
                mov     ax,ss\r
                mov     ds,ax\r
        }\r
@@ -1018,7 +1077,7 @@ asm       mov     ds,ax
 ======================\r
 */\r
 \r
-/*void CAL_SetupMapFile (void)\r
+void CAL_SetupMapFile (global_game_variables_t *gvar)\r
 {\r
        int handle;\r
        long length;\r
@@ -1026,33 +1085,39 @@ asm     mov     ds,ax
 //\r
 // load maphead.ext (offsets and tileinfo for map file)\r
 //\r
-#ifndef MAPHEADERLINKED\r
-       if ((handle = open("MAPHEAD."EXT,\r
-                O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open MAPHEAD."EXT"!");\r
-       length = filelength(handle);\r
-       MM_GetPtr (&(memptr)tinf,length);\r
-       CA_FarRead(handle, tinf, length);\r
-       close(handle);\r
-#else\r
-\r
-       tinf = (byte _seg *)FP_SEG(&maphead);\r
-\r
-#endif\r
+// #ifndef MAPHEADERLINKED\r
+//     if ((handle = open("MAPHEAD."EXT,\r
+//              O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+//             Quit ("Can't open MAPHEAD."EXT"!");\r
+//     length = filelength(handle);\r
+//     MM_GetPtr (&(memptr)tinf,length);\r
+//     CA_FarRead(handle, tinf, length);\r
+//     close(handle);\r
+// //#else\r
+//\r
+//     tinf = (byte _seg *)FP_SEG(&maphead);\r
+//\r
+// #endif\r
 \r
 //\r
 // open the data file\r
 //\r
-#ifdef MAPHEADERLINKED\r
-       if ((maphandle = open("GAMEMAPS."EXT,\r
-                O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open GAMEMAPS."EXT"!");\r
-#else\r
-       if ((maphandle = open("MAPTEMP."EXT,\r
+//TODO: multiple files\r
+       if ((gvar->ca.file.maphandle[0] = open("data/test.map",\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open MAPTEMP."EXT"!");\r
-#endif\r
-}*/\r
+       {\r
+               printf("Can't open data/test.map!");\r
+       }\r
+// #ifdef MAPHEADERLINKED\r
+//     if ((maphandle = open("GAMEMAPS."EXT,\r
+//              O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+//             Quit ("Can't open GAMEMAPS."EXT"!");\r
+// //#else\r
+//     if ((maphandle = open("MAPTEMP."EXT,\r
+//              O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
+//             Quit ("Can't open MAPTEMP."EXT"!");\r
+// #endif\r
+}\r
 \r
 //==========================================================================\r
 \r
@@ -1125,48 +1190,27 @@ void CA_Startup(global_game_variables_t *gvar)
        unlink("profile.16w");\r
        gvar->handle.profilehandle = open("profile.16w", O_CREAT | O_WRONLY | O_TEXT);\r
 #endif\r
-#endif\r
-//     unlink("debug0.16");\r
-//     gvar->handle.showmemhandle = open("debug0.16", O_CREAT | O_WRONLY | O_TEXT);\r
-/*++++\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
-       if(!FindFile("AUDIO."EXT,NULL,2))\r
-               Quit("CA_Startup(): Can't find audio files.");\r
-//\r
-// MDM end\r
+#endif//profile\r
 \r
-#ifndef NOAUDIO\r
-       CAL_SetupAudioFile();\r
+#ifdef __BORLANDC__\r
+       unlink("meminfo.16b");\r
+       gvar->handle.showmemhandle = open("meminfo.16b", O_CREAT | O_WRONLY | O_TEXT);\r
 #endif\r
-\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
-       if (!FindFile("GAMEMAPS."EXT,NULL,1))\r
-               Quit("CA_Startup(): Can't find level files.");\r
-//\r
-// MDM end\r
-\r
-#ifndef NOMAPS\r
-       CAL_SetupMapFile ();\r
+#ifdef __WATCOMC__\r
+       unlink("meminfo.16w");\r
+       gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT);\r
 #endif\r
-\r
-// MDM begin - (GAMERS EDGE)\r
-//\r
-       if (!FindFile("EGAGRAPH."EXT,NULL,2))\r
-               Quit("CA_Startup(): Can't find graphics files.");\r
-//\r
-// MDM end\r
-\r
-#ifndef NOGRAPHICS\r
+/*\r
        CAL_SetupGrFile ();\r
-#endif\r
+       CAL_SetupAudioFile ();*/\r
+\r
+       CAL_SetupMapFile (gvar);\r
 \r
-       mapon = -1;\r
-       ca_levelbit = 1;\r
-       ca_levelnum = 0;\r
+       gvar->ca.mapon = -1;\r
+       gvar->ca.ca_levelbit = 1;\r
+       gvar->ca.ca_levelnum = 0;\r
 \r
-       drawcachebox    = CAL_DialogDraw;\r
+/*     drawcachebox    = CAL_DialogDraw;\r
        updatecachebox  = CAL_DialogUpdate;\r
        finishcachebox  = CAL_DialogFinish;*/\r
 }\r
@@ -1189,9 +1233,10 @@ void CA_Shutdown(global_game_variables_t *gvar)
 #ifdef PROFILE\r
        close(gvar->handle.profilehandle);\r
 #endif\r
-//     close(gvar->handle.showmemhandle);\r
+       close(gvar->handle.showmemhandle);\r
+\r
+       close(*(gvar->ca.file.maphandle));\r
 /*++++\r
-       close(maphandle);\r
        close(grhandle);\r
        close(audiohandle);*/\r
 }\r
@@ -1772,8 +1817,8 @@ void CA_CacheGrChunk (int chunk)
 =\r
 ======================\r
 */\r
-/*++++\r
-void CA_CacheMap (int mapnum)\r
+/*++++ fuckin segments!\r
+void CA_CacheMap (global_game_variables_t *gvar)\r
 {\r
        long    pos,compressed;\r
        int             plane;\r
@@ -1786,37 +1831,29 @@ void CA_CacheMap (int mapnum)
 #endif\r
 \r
 \r
-// MDM begin - (GAMERS EDGE)\r
-//\r
-       if (!FindFile("GAMEMAPS."EXT,NULL,1))\r
-               Quit("CA_CacheMap(): Can't find level files.");\r
-//\r
-// MDM end\r
-\r
-\r
 //\r
 // free up memory from last map\r
 //\r
-       if (mapon>-1 && mapheaderseg[mapon])\r
-               MM_SetPurge (&(memptr)mapheaderseg[mapon],3);\r
+//     if (gvar->ca.map.mapon>-1 && gvar->ca.map.mapheaderseg[gvar->ca.map.mapon])\r
+//             MM_SetPurge (&(memptr)gvar->ca.map.mapheaderseg[gvar-ca.map.mapon],3);\r
        for (plane=0;plane<MAPPLANES;plane++)\r
-               if (mapsegs[plane])\r
-                       MM_FreePtr (&(memptr)mapsegs[plane]);\r
+               if (gvar->ca.map.mapsegs[plane])\r
+                       MM_FreePtr (&(memptr)gvar->ca.map.mapsegs[plane]);\r
 \r
-       mapon = mapnum;\r
+       gvar->ca.map.mapon = gvar->ca.map.mapnum;\r
 \r
 \r
 //\r
 // load map header\r
 // The header will be cached if it is still around\r
 //\r
-       if (!mapheaderseg[mapnum])\r
+       if (!gvar->ca.map.mapheaderseg[gvar->ca.map.mapnum])\r
        {\r
-               pos = ((mapfiletype     _seg *)tinf)->headeroffsets[mapnum];\r
+               pos = ((__segmement *)tinf)->headeroffsets[gvar->ca.mapnum];\r
                if (pos<0)                                              // $FFFFFFFF start is a sparse map\r
-                 Quit ("CA_CacheMap: Tried to load a non existent map!");\r
+                 printf("CA_CacheMap: Tried to load a non existent map!");\r
 \r
-               MM_GetPtr(&(memptr)mapheaderseg[mapnum],sizeof(maptype));\r
+               MM_GetPtr(&(memptr)gvar->ca.mapheaderseg[mapnum],sizeof(maptype));\r
                lseek(maphandle,pos,SEEK_SET);\r
                CA_FarRead (maphandle,(memptr)mapheaderseg[mapnum],sizeof(maptype));\r
        }\r
@@ -2031,20 +2068,7 @@ void CA_SetAllPurge (void)
 //\r
 // free graphics\r
 //\r
-       CA_FreeGraphics ();\r
-}\r
-\r
-\r
-void CA_SetGrPurge (void)\r
-{\r
-       int i;\r
-\r
-//\r
-// free graphics\r
-//\r
-       for (i=0;i<NUMCHUNKS;i++)\r
-               if (grsegs[i])\r
-                       MM_SetPurge (&(memptr)grsegs[i],3);\r
+       CA_SetGrPurge ();\r
 }*/\r
 \r
 \r