]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_ca.c
polishment w
[16.git] / src / lib / 16_ca.c
index e2b6cef9a1ec70871a1e41eb800fb12d5170b745..cd47247434adc40be47826c84e4c4c833ed4962d 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
@@ -46,10 +46,10 @@ loaded into the data segment
 =============================================================================\r
 */\r
 \r
-typedef struct\r
+/*typedef struct\r
 {\r
   word bit0,bit1;      // 0-255 is a character, > is a pointer to a node\r
-} huffnode;\r
+} huffnode;*/\r
 \r
 \r
 /*typedef struct\r
@@ -221,12 +221,12 @@ void CAL_GetGrChunkLength (int chunk)
 ==========================\r
 */\r
 \r
-boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
+boolean CA_FarRead(int handle, byte huge *dest, dword length, global_game_variables_t *gvar)\r
 {\r
-       boolean flag;\r
+       boolean flag=0;\r
        //dword fat=0;\r
        //word segm=0;\r
-       if(mm->EMSVer<0x40)\r
+       if(gvar->pm.emm.EMSVer<0x40)\r
        if(length>0xfffflu)\r
        {\r
                printf("File is a fat bakapee\n");\r
@@ -239,45 +239,45 @@ boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)
 \r
        //if(!fat&&!segm)\r
        //{\r
-               __asm {\r
-                       push    ds\r
-                       mov     bx,[handle]\r
-                       mov     cx,[WORD PTR length]\r
-                       mov     dx,[WORD PTR dest]\r
-                       mov     ds,[WORD PTR dest+2]\r
-                       mov     ah,0x3f                         // READ w/handle\r
-                       int     21h\r
-                       pop     ds\r
-                       jnc     good\r
-                       mov     errno,ax\r
-                       mov     flag,0\r
-                       jmp End\r
+       __asm {\r
+               push    ds\r
+               mov     bx,[handle]\r
+               mov     cx,[WORD PTR length]\r
+               mov     dx,[WORD PTR dest]\r
+               mov     ds,[WORD PTR dest+2]\r
+               mov     ah,0x3f                         // READ w/handle\r
+               int     21h\r
+               pop     ds\r
+               jnc     good\r
+               mov     errno,ax\r
+               mov     flag,0\r
+               jmp End\r
 #ifdef __BORLANDC__\r
-               }\r
+       }\r
 #endif\r
 good:\r
 #ifdef __BORLANDC__\r
-               __asm {\r
+       __asm {\r
 #endif\r
-                       cmp     ax,[WORD PTR length]\r
-                       je      done\r
-//                     errno = EINVFMT;                        // user manager knows this is bad read\r
-                       mov     flag,0\r
-                       jmp End\r
+               cmp     ax,[WORD PTR length]\r
+               je      done\r
+//             errno = EINVFMT;                        // user manager knows this is bad read\r
+               mov     flag,0\r
+               jmp End\r
 #ifdef __BORLANDC__\r
-               }\r
+       }\r
 #endif\r
 done:\r
 #ifdef __BORLANDC__\r
-               __asm {\r
+       __asm {\r
 #endif\r
-                       mov     flag,1\r
+               mov     flag,1\r
 #ifdef __BORLANDC__\r
-               }\r
+       }\r
 #endif\r
 End:\r
 #ifdef __WATCOMC__\r
-               }\r
+       }\r
 #endif\r
        return flag;\r
 }\r
@@ -293,12 +293,12 @@ End:
 ==========================\r
 */\r
 \r
-boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
+boolean CA_FarWrite(int handle, byte huge *source, dword length, global_game_variables_t *gvar)\r
 {\r
-       boolean flag;\r
+       boolean flag=0;\r
        //dword fat=0;\r
        //word segm=0;\r
-       if(mm->EMSVer<0x40)\r
+       if(gvar->pm.emm.EMSVer<0x40)\r
        if(length>0xfffflu)\r
        {\r
                printf("File is a fat bakapee\n");\r
@@ -311,45 +311,45 @@ boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)
 \r
        //if(!fat&&!segm)\r
        //{\r
-               __asm {\r
-                       push    ds\r
-                       mov     bx,[handle]\r
-                       mov     cx,[WORD PTR length]\r
-                       mov     dx,[WORD PTR source]\r
-                       mov     ds,[WORD PTR source+2]\r
-                       mov     ah,0x40                 // WRITE w/handle\r
-                       int     21h\r
-                       pop     ds\r
-                       jnc     good\r
-                       mov     errno,ax\r
-                       mov flag,0\r
-                       jmp End\r
+       __asm {\r
+               push    ds\r
+               mov     bx,[handle]\r
+               mov     cx,[WORD PTR length]\r
+               mov     dx,[WORD PTR source]\r
+               mov     ds,[WORD PTR source+2]\r
+               mov     ah,0x40                 // WRITE w/handle\r
+               int     21h\r
+               pop     ds\r
+               jnc     good\r
+               mov     errno,ax\r
+               mov flag,0\r
+               jmp End\r
 #ifdef __BORLANDC__\r
-               }\r
+       }\r
 #endif\r
 good:\r
 #ifdef __BORLANDC__\r
-               __asm {\r
+       __asm {\r
 #endif\r
-                       cmp     ax,[WORD PTR length]\r
-                       je      done\r
-                       //errno = ENOMEM;                               // user manager knows this is bad write\r
-                       mov     flag,0\r
-                       jmp End\r
+               cmp     ax,[WORD PTR length]\r
+               je      done\r
+//             errno = ENOMEM;                         // user manager knows this is bad write\r
+               mov     flag,0\r
+               jmp End\r
 #ifdef __BORLANDC__\r
-               }\r
+       }\r
 #endif\r
 done:\r
 #ifdef __BORLANDC__\r
-               __asm {\r
+       __asm {\r
 #endif\r
-                       mov     flag,1\r
+               mov     flag,1\r
 #ifdef __BORLANDC__\r
-               }\r
+       }\r
 #endif\r
 End:\r
 #ifdef __WATCOMC__\r
-               }\r
+       }\r
 #endif\r
        return flag;\r
 }\r
@@ -365,7 +365,7 @@ End:
 ==========================\r
 */\r
 \r
-boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
+boolean CA_ReadFile(char *filename, memptr *ptr, global_game_variables_t *gvar)\r
 {\r
        int handle;\r
        sdword size;\r
@@ -375,7 +375,7 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)
                return false;\r
 \r
        size = filelength(handle);\r
-       if(!CA_FarRead(handle,*ptr,size, mm))\r
+       if(!CA_FarRead(handle,*ptr,size, gvar))\r
        {\r
                close (handle);\r
                return false;\r
@@ -395,10 +395,10 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)
 ==========================\r
 */\r
 \r
-boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm)\r
+boolean CA_WriteFile (char *filename, void far *ptr, long length, global_game_variables_t *gvar)\r
 {\r
        int handle;\r
-       sdword size;\r
+       //sdword size;\r
        //long size;\r
 \r
        handle = open(filename,O_CREAT | O_BINARY | O_WRONLY,\r
@@ -407,7 +407,7 @@ boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm)
        if (handle == -1)\r
                return false;\r
 \r
-       if (!CA_FarWrite (handle,ptr,length, mm))\r
+       if (!CA_FarWrite (handle,ptr,length, gvar))\r
        {\r
                close(handle);\r
                return false;\r
@@ -428,7 +428,7 @@ boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm)
 ==========================\r
 */\r
 \r
-boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
+boolean CA_LoadFile(char *filename, memptr *ptr, global_game_variables_t *gvar)\r
 {\r
        int handle;\r
        sdword size;\r
@@ -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)\r
                return false;\r
 \r
-       size = filelength (handle);\r
-       MM_GetPtr(ptr,size, mm, mmi);\r
-       if(!CA_FarRead(handle,*ptr,size, mm))\r
+       size = filelength(handle);\r
+       MM_GetPtr(ptr,size, gvar);\r
+       if(!CA_FarRead(handle,*ptr,size, gvar))\r
        {\r
                close(handle);\r
                return false;\r
@@ -724,7 +724,7 @@ dinorm:
 =\r
 ======================\r
 */\r
-/*++++\r
+\r
 #define NEARTAG        0xa7\r
 #define FARTAG 0xa8\r
 \r
@@ -747,13 +747,13 @@ void CAL_CarmackExpand (unsigned far *source, unsigned far *dest, unsigned lengt
                        count = ch&0xff;\r
                        if (!count)\r
                        {                               // have to insert a word containing the tag byte\r
-                               ch |= *((unsigned char far *)inptr)++;\r
+                               ch |= *(/*(unsigned char far *)*/inptr)++;\r
                                *outptr++ = ch;\r
                                length--;\r
                        }\r
                        else\r
                        {\r
-                               offset = *((unsigned char far *)inptr)++;\r
+                               offset = *(/*(unsigned char far *)*/inptr)++;\r
                                copyptr = outptr - offset;\r
                                length -= count;\r
                                while (count--)\r
@@ -765,7 +765,7 @@ void CAL_CarmackExpand (unsigned far *source, unsigned far *dest, unsigned lengt
                        count = ch&0xff;\r
                        if (!count)\r
                        {                               // have to insert a word containing the tag byte\r
-                               ch |= *((unsigned char far *)inptr)++;\r
+                               ch |= *(/*(unsigned char far *)*/inptr)++;\r
                                *outptr++ = ch;\r
                                length --;\r
                        }\r
@@ -785,7 +785,6 @@ void CAL_CarmackExpand (unsigned far *source, unsigned far *dest, unsigned lengt
                }\r
        }\r
 }\r
-*/\r
 \r
 \r
 /*\r
@@ -795,7 +794,7 @@ void CAL_CarmackExpand (unsigned far *source, unsigned far *dest, unsigned lengt
 =\r
 ======================\r
 */\r
-/*++++\r
+\r
 long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest,\r
   unsigned rlewtag)\r
 {\r
@@ -842,7 +841,7 @@ long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest,
   complength = 2*(dest-start);\r
   return complength;\r
 }\r
-*/\r
+\r
 \r
 /*\r
 ======================\r
@@ -852,7 +851,7 @@ long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest,
 =\r
 ======================\r
 */\r
-/*++++\r
+\r
 void CA_RLEWexpand (unsigned huge *source, unsigned huge *dest,long length,\r
   unsigned rlewtag)\r
 {\r
@@ -903,64 +902,88 @@ void CA_RLEWexpand (unsigned huge *source, unsigned huge *dest,long length,
 //\r
 // NOTE: A repeat count that produces 0xfff0 bytes can blow this!\r
 //\r
-\r
-asm    mov     bx,rlewtag\r
-asm    mov     si,sourceoff\r
-asm    mov     di,destoff\r
-asm    mov     es,destseg\r
-asm    mov     ds,sourceseg\r
-\r
+       __asm {\r
+               mov     bx,rlewtag\r
+               mov     si,sourceoff\r
+               mov     di,destoff\r
+               mov     es,destseg\r
+               mov     ds,sourceseg\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 expand:\r
-asm    lodsw\r
-asm    cmp     ax,bx\r
-asm    je      repeat\r
-asm    stosw\r
-asm    jmp     next\r
-\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               lodsw\r
+               cmp     ax,bx\r
+               je      repeat\r
+               stosw\r
+               jmp     next\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 repeat:\r
-asm    lodsw\r
-asm    mov     cx,ax           // repeat count\r
-asm    lodsw                   // repeat value\r
-asm    rep stosw\r
-\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               lodsw\r
+               mov     cx,ax           // repeat count\r
+               lodsw                   // repeat value\r
+               rep stosw\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 next:\r
-\r
-asm    cmp     si,0x10         // normalize ds:si\r
-asm    jb      sinorm\r
-asm    mov     ax,si\r
-asm    shr     ax,1\r
-asm    shr     ax,1\r
-asm    shr     ax,1\r
-asm    shr     ax,1\r
-asm    mov     dx,ds\r
-asm    add     dx,ax\r
-asm    mov     ds,dx\r
-asm    and     si,0xf\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               cmp     si,0x10         // normalize ds:si\r
+               jb      sinorm\r
+               mov     ax,si\r
+               shr     ax,1\r
+               shr     ax,1\r
+               shr     ax,1\r
+               shr     ax,1\r
+               mov     dx,ds\r
+               add     dx,ax\r
+               mov     ds,dx\r
+               and     si,0xf\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 sinorm:\r
-asm    cmp     di,0x10         // normalize es:di\r
-asm    jb      dinorm\r
-asm    mov     ax,di\r
-asm    shr     ax,1\r
-asm    shr     ax,1\r
-asm    shr     ax,1\r
-asm    shr     ax,1\r
-asm    mov     dx,es\r
-asm    add     dx,ax\r
-asm    mov     es,dx\r
-asm    and     di,0xf\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               cmp     di,0x10         // normalize es:di\r
+               jb      dinorm\r
+               mov     ax,di\r
+               shr     ax,1\r
+               shr     ax,1\r
+               shr     ax,1\r
+               shr     ax,1\r
+               mov     dx,es\r
+               add     dx,ax\r
+               mov     es,dx\r
+               and     di,0xf\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
 dinorm:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               cmp     di,ss:endoff\r
+               jne     expand\r
+               mov     ax,es\r
+               cmp     ax,ss:endseg\r
+               jb      expand\r
 \r
-asm    cmp     di,ss:endoff\r
-asm    jne     expand\r
-asm    mov     ax,es\r
-asm    cmp     ax,ss:endseg\r
-asm    jb      expand\r
-\r
-asm    mov     ax,ss\r
-asm    mov     ds,ax\r
-\r
+               mov     ax,ss\r
+               mov     ds,ax\r
+       }\r
 }\r
-*/\r
 \r
 \r
 /*\r
@@ -1077,41 +1100,47 @@ 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
+//     int handle;\r
+//     long length;\r
 \r
 //\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
+//             printf("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
@@ -1194,44 +1223,12 @@ void CA_Startup(global_game_variables_t *gvar)
        unlink("meminfo.16w");\r
        gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT);\r
 #endif\r
-/*     CAL_SetupMapFile ();\r
+/*\r
        CAL_SetupGrFile ();\r
        CAL_SetupAudioFile ();*/\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
-\r
-#ifndef NOAUDIO\r
-       CAL_SetupAudioFile();\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
-#endif\r
+       CAL_SetupMapFile (gvar);\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
-       CAL_SetupGrFile ();\r
-#endif*/\r
-\r
-       gvar->ca.mapon = -1;\r
+       gvar->ca.camap.mapon = -1;\r
        gvar->ca.ca_levelbit = 1;\r
        gvar->ca.ca_levelnum = 0;\r
 \r
@@ -1259,8 +1256,9 @@ void CA_Shutdown(global_game_variables_t *gvar)
        close(gvar->handle.profilehandle);\r
 #endif\r
        close(gvar->handle.showmemhandle);\r
+\r
+       close(*(gvar->ca.file.maphandle));\r
 /*++++\r
-       close(maphandle);\r
        close(grhandle);\r
        close(audiohandle);*/\r
 }\r
@@ -1841,8 +1839,8 @@ void CA_CacheGrChunk (int chunk)
 =\r
 ======================\r
 */\r
-/*++++\r
-void CA_CacheMap (int mapnum)\r
+/*++++ segments!\r
+void CA_CacheMap (global_game_variables_t *gvar)\r
 {\r
        long    pos,compressed;\r
        int             plane;\r
@@ -1855,42 +1853,35 @@ 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, &(gvar->mm));\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], &(gvar->mm));\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 = ((mapfiletype   _seg *)tinf)->headeroffsets[mapnum];\r
+               pos = ((_seg *)gvar->ca.map.tinf)->headeroffsets[gvar->ca.map.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
        else\r
-               MM_SetPurge (&(memptr)mapheaderseg[mapnum],0);\r
+               MM_SetPurge (&(memptr)mapheaderseg[mapnum], 0, &(gvar->mm));\r
 \r
 //\r
 // load the planes in\r
@@ -1948,7 +1939,7 @@ void CA_CacheMap (int mapnum)
                if (compressed>BUFFERSIZE)\r
                        MM_FreePtr(&bigbufferseg);\r
        }\r
-}*/\r
+}//*/\r
 \r
 //===========================================================================\r
 \r
@@ -1962,15 +1953,15 @@ void CA_CacheMap (int mapnum)
 =\r
 ======================\r
 */\r
-/*++++\r
-void CA_UpLevel (void)\r
+\r
+void CA_UpLevel (global_game_variables_t *gvar)\r
 {\r
-       if (ca_levelnum==7)\r
-               Quit ("CA_UpLevel: Up past level 7!");\r
+       if (gvar->ca.ca_levelnum==7)\r
+               printf("CA_UpLevel: Up past level 7!");\r
 \r
-       ca_levelbit<<=1;\r
-       ca_levelnum++;\r
-}*/\r
+       gvar->ca.ca_levelbit<<=1;\r
+       gvar->ca.ca_levelnum++;\r
+}\r
 \r
 //===========================================================================\r
 \r
@@ -1984,15 +1975,15 @@ void CA_UpLevel (void)
 =\r
 ======================\r
 */\r
-/*++\r
-void CA_DownLevel (void)\r
+\r
+void CA_DownLevel (global_game_variables_t *gvar)\r
 {\r
-       if (!ca_levelnum)\r
-               Quit ("CA_DownLevel: Down past level 0!");\r
-       ca_levelbit>>=1;\r
-       ca_levelnum--;\r
-       CA_CacheMarks(NULL);\r
-}*/\r
+       if (!gvar->ca.ca_levelnum)\r
+               printf("CA_DownLevel: Down past level 0!");\r
+       gvar->ca.ca_levelbit>>=1;\r
+       gvar->ca.ca_levelnum--;\r
+       ////++++++++++++++++++++++++++++++++++++++++++CA_CacheMarks(NULL);\r
+}\r
 \r
 //===========================================================================\r
 \r
@@ -2077,7 +2068,7 @@ void CA_SetAllPurge (void)
 //\r
 // free cursor sprite and background save\r
 //\r
-       VW_FreeCursor ();\r
+       //VW_FreeCursor ();\r
 \r
 //\r
 // free map headers and map planes\r