]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_ca.c
wwww cleanings and now the compiler header generated files are shown and so is the...
[16.git] / src / lib / 16_ca.c
old mode 100644 (file)
new mode 100755 (executable)
index abeffbf..f5893d8
@@ -176,8 +176,14 @@ long GRFILEPOS(int c)
 */\r
 void CA_OpenDebug(global_game_variables_t *gvar)\r
 {\r
-       unlink("debug.16");\r
-       gvar->handle.debughandle = open("debug.16", O_CREAT | O_WRONLY | O_TEXT);\r
+#ifdef __BORLANDC__\r
+       unlink("debug.16b");\r
+       gvar->handle.debughandle = open("debug.16b", O_CREAT | O_WRONLY | O_TEXT);\r
+#endif\r
+#ifdef __WATCOMC__\r
+       unlink("debug.16w");\r
+       gvar->handle.debughandle = open("debug.16w", O_CREAT | O_WRONLY | O_TEXT);\r
+#endif\r
 }\r
 \r
 void CA_CloseDebug(global_game_variables_t *gvar)\r
@@ -219,20 +225,21 @@ void CAL_GetGrChunkLength (int chunk)
 boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
 {\r
        boolean flag;\r
-       /*dword fat=0;\r
-       word segm=0;\r
-       //if(mm->EMSVer<0x40)\r
+       //dword fat=0;\r
+       //word segm=0;\r
+       if(mm->EMSVer<0x40)\r
        if(length>0xfffflu)\r
        {\r
                printf("File is a fat bakapee\n");\r
-               segm=(length%0xfffflu)-1;\r
-               fat=segm*0xfffflu;\r
-               length-=fat;\r
-//             printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+               //segm=(length%0xfffflu)-1;\r
+               //fat=segm*0xfffflu;\r
+               //length-=fat;\r
+               printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+               return 0;//TODO: EXPAND!!!\r
        }\r
 \r
-       if(!fat&&!segm)\r
-       {*/\r
+       //if(!fat&&!segm)\r
+       //{\r
                __asm {\r
                        push    ds\r
                        mov     bx,[handle]\r
@@ -274,7 +281,6 @@ End:
                }\r
 #endif\r
        return flag;\r
-       //}else return 0;//todo: EXPAND!!!\r
 }\r
 \r
 \r
@@ -291,20 +297,21 @@ End:
 boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
 {\r
        boolean flag;\r
-       /*dword fat=0;\r
-       word segm=0;\r
-       //if(mm->EMSVer<0x40)\r
+       //dword fat=0;\r
+       //word segm=0;\r
+       if(mm->EMSVer<0x40)\r
        if(length>0xfffflu)\r
        {\r
                printf("File is a fat bakapee\n");\r
-               segm=(length%0xfffflu)-1;\r
-               fat=segm*0xfffflu;\r
-               length-=fat;\r
-//             printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+               //segm=(length%0xfffflu)-1;\r
+               //fat=segm*0xfffflu;\r
+               //length-=fat;\r
+               printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+               return 0;\r
        }\r
 \r
-       if(!fat&&!segm)\r
-       {*/\r
+       //if(!fat&&!segm)\r
+       //{\r
                __asm {\r
                        push    ds\r
                        mov     bx,[handle]\r
@@ -346,7 +353,6 @@ End:
                }\r
 #endif\r
        return flag;\r
-       //}else return 0;\r
 }\r
 \r
 \r
@@ -363,7 +369,7 @@ End:
 boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
 {\r
        int handle;\r
-       dword size;\r
+       sdword size;\r
        //long size;\r
 \r
        if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
@@ -371,6 +377,38 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)
 \r
        size = filelength(handle);\r
        if(!CA_FarRead(handle,*ptr,size, mm))\r
+       {\r
+               close (handle);\r
+               return false;\r
+       }\r
+       close (handle);\r
+       return true;\r
+}\r
+\r
+\r
+/*\r
+==========================\r
+=\r
+= CA_WriteFile\r
+=\r
+= Writes a file from a memory buffer\r
+=\r
+==========================\r
+*/\r
+\r
+boolean CA_WriteFile (char *filename, void far *ptr, long length, mminfo_t *mm)\r
+{\r
+       int handle;\r
+       sdword size;\r
+       //long size;\r
+\r
+       handle = open(filename,O_CREAT | O_BINARY | O_WRONLY,\r
+                               S_IREAD | S_IWRITE | S_IFREG);\r
+\r
+       if (handle == -1)\r
+               return false;\r
+\r
+       if (!CA_FarWrite (handle,ptr,length, mm))\r
        {\r
                close(handle);\r
                return false;\r
@@ -394,7 +432,7 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)
 boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
 {\r
        int handle;\r
-       dword size;\r
+       sdword size;\r
        //long size;\r
 \r
        if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
@@ -882,7 +920,7 @@ asm mov     ds,ax
 =\r
 ======================\r
 */\r
-\r
+////++++ enable!\r
 /*void CAL_SetupGrFile (void)\r
 {\r
        int handle;\r
@@ -1080,9 +1118,17 @@ asm      mov     ds,ax
 void CA_Startup(global_game_variables_t *gvar)\r
 {\r
 #ifdef PROFILE\r
-       unlink("profile.16");\r
-       gvar->handle.profilehandle = open("profile.16", O_CREAT | O_WRONLY | O_TEXT);\r
+#ifdef __BORLANDC__\r
+       unlink("profile.16b");\r
+       gvar->handle.profilehandle = open("profile.16b", O_CREAT | O_WRONLY | O_TEXT);\r
 #endif\r
+#ifdef __WATCOMC__\r
+       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
@@ -1144,6 +1190,7 @@ void CA_Shutdown(global_game_variables_t *gvar)
 #ifdef PROFILE\r
        close(gvar->handle.profilehandle);\r
 #endif\r
+//     close(gvar->handle.showmemhandle);\r
 /*++++\r
        close(maphandle);\r
        close(grhandle);\r
@@ -1930,9 +1977,14 @@ void CA_ClearAllMarks (void)
 ======================\r
 */\r
 /*++++\r
-void CA_FreeGraphics (void)\r
+void CA_SetGrPurge (void)\r
 {\r
-       int     i;\r
+       int i;\r
+\r
+//\r
+// free graphics\r
+//\r
+       CA_ClearMarks ();\r
 \r
        for (i=0;i<NUMCHUNKS;i++)\r
                if (grsegs[i])\r