]> 4ch.mooo.com Git - 16.git/commitdiff
reverted
authorsparky4 <sparky4@cock.li>
Sun, 23 Apr 2017 20:44:22 +0000 (15:44 -0500)
committersparky4 <sparky4@cock.li>
Sun, 23 Apr 2017 20:44:22 +0000 (15:44 -0500)
src/lib/16_ca.c
src/lib/16_dbg.h
src/lib/16_mm.c
src/lib/16_mm.h
src/lib/16_pm.c
src/lib/16_tail.c
src/lib/16_tail.h
src/lib/16_tdef.h
src/lib/doslib
src/sountest.c
src/xcroll.c

index d69989c32b1102853c861a77417c2aa1cb8d262d..d55ac7f0d01e2e1739a11db83a04f252e6c4d8cc 100755 (executable)
@@ -1159,7 +1159,7 @@ void CAL_SetupMapFile (global_game_variables_t *gvar)
 #ifndef MAPHEADERLINKED\r
        if ((handle = open("maphead.mph",\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open maphead.mph");\r
+               Quit (gvar, "Can't open maphead.mph");\r
        length = filelength(handle);\r
        MM_GetPtr (MEMPTRCONV gvar->ca.tinf,length,gvar);\r
        CA_FarRead(handle, gvar->ca.tinf, length,gvar);\r
@@ -1176,7 +1176,7 @@ void CAL_SetupMapFile (global_game_variables_t *gvar)
 //TODO: multiple files\r
        if ((gvar->ca.file.maphandle = open("data/test.map",\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open data/test.map!");\r
+               Quit (gvar, "Can't open data/test.map!");\r
 /*#ifdef MAPHEADERLINKED\r
        if ((maphandle = open("GAMEMAPS.16"ENSION,\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
@@ -1210,7 +1210,7 @@ void CAL_SetupMapFile (global_game_variables_t *gvar)
 #ifndef AUDIOHEADERLINKED\r
        if ((handle = open("AUDIOHED.16",\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open AUDIOHED.16""!");\r
+               Quit (gvar, "Can't open AUDIOHED.16""!");\r
        length = filelength(handle);\r
        MM_GetPtr (MEMPTRCONV audiostarts,length);\r
        CA_FarRead(handle, (byte far *)audiostarts, length);\r
@@ -1227,11 +1227,11 @@ void CAL_SetupMapFile (global_game_variables_t *gvar)
 #ifndef AUDIOHEADERLINKED\r
        if ((audiohandle = open("AUDIOT.16",\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open AUDIOT.16""!");\r
+               Quit (gvar, "Can't open AUDIOT.16""!");\r
 #else\r
        if ((audiohandle = open("AUDIO.16",\r
                 O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
-               Quit ("Can't open AUDIO.16""!");\r
+               Quit (gvar, "Can't open AUDIO.16""!");\r
 #endif\r
 }*/\r
 \r
@@ -1343,7 +1343,7 @@ void CA_CacheAudioChunk (int chunk)
 // MDM begin - (GAMERS EDGE)\r
 //\r
        if (!FindFile("AUDIO.16",NULL,2))\r
-               Quit ("CA_CacheAudioChunk(): Can't find audio files.");\r
+               Quit (gvar, "CA_CacheAudioChunk(): Can't find audio files.");\r
 //\r
 // MDM end\r
 \r
@@ -1705,7 +1705,7 @@ void CAL_CacheSprite (int chunk, byte far *compressed)
                break;\r
 \r
        default:\r
-               Quit ("CAL_CacheSprite: Bad shifts number!");\r
+               Quit (gvar, "CAL_CacheSprite: Bad shifts number!");\r
        }\r
 \r
 #endif\r
@@ -1864,7 +1864,7 @@ void CA_CacheGrChunk (int chunk)
 // MDM begin - (GAMERS EDGE)\r
 //\r
        if (!FindFile("EGAGRAPH.16",NULL,2))\r
-               Quit ("CA_CacheGrChunk(): Can't find graphics files.");\r
+               Quit (gvar, "CA_CacheGrChunk(): Can't find graphics files.");\r
 //\r
 // MDM end\r
 \r
@@ -2331,7 +2331,7 @@ void CAL_CacheMarks (char *title, global_game_variables_t *gvar)
 // MDM begin - (GAMERS EDGE)\r
 //\r
 //     if (!FindFile("EGAGRAPH.16",NULL,2))\r
-//             Quit ("CA_CacheMarks(): Can't find graphics files.");\r
+//             Quit (gvar, "CA_CacheMarks(): Can't find graphics files.");\r
 //\r
 // MDM end\r
 \r
@@ -2443,5 +2443,5 @@ void CA_CannotOpen(char *string, global_game_variables_t *gvar)
  strcpy(str,"Can't open ");\r
  strcat(str,string);\r
  strcat(str,"!\n");\r
- Quit (str);\r
+ Quit (gvar, str);\r
 }\r
index 295b7146b9d96abea20ad1a38d0905dd19b5f36d..31666821ca2e8cd53b29301b2f50137c17cdafab 100755 (executable)
@@ -12,7 +12,7 @@
 //#define __DEBUG_2__\r
 //#define __DEBUG_CA__\r
 //#define __DEBUG_PM__\r
-//#define __DEBUG_MM__\r
+#define __DEBUG_MM__\r
 //#define __DEBUG_RF__\r
 #define __DEBUG_SPRI__\r
 \r
index c14632abb93014c2d9ce3057ad480a4f542e5f77..b6d2a26743327cbd250e565f91fbe225b9f33fa5 100755 (executable)
@@ -1,23 +1,19 @@
-/* Project 16 Source Code~\r
- * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+/* Catacomb Apocalypse Source Code\r
+ * Copyright (C) 1993-2014 Flat Rock Software\r
  *\r
- * This file is part of Project 16.\r
- *\r
- * Project 16 is free software; you can redistribute it and/or modify\r
+ * This program is free software; you can redistribute it and/or modify\r
  * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 3 of the License, or\r
+ * the Free Software Foundation; either version 2 of the License, or\r
  * (at your option) any later version.\r
  *\r
- * Project 16 is distributed in the hope that it will be useful,\r
+ * This program is distributed in the hope that it will be useful,\r
  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
  * GNU General Public License for more details.\r
  *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
- * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
- * Fifth Floor, Boston, MA 02110-1301 USA.\r
- *\r
+ * You should have received a copy of the GNU General Public License along\r
+ * with this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
  */\r
 \r
 // NEWMM.C\r
@@ -32,7 +28,7 @@ Primary coder: John Carmack
 \r
 RELIES ON\r
 ---------\r
-Quit (char *error) function\r
+Quit (global_game_variables_t *gvar, char *error) function\r
 \r
 \r
 WORK TO DO\r
@@ -58,37 +54,6 @@ Open Watcom port by sparky4
 #pragma warn -pro\r
 #pragma warn -use\r
 \r
-/*\r
-=============================================================================\r
-\r
-                                                       LOCAL INFO\r
-\r
-=============================================================================\r
-*/\r
-\r
-#define LOCKBIT                0x80    // if set in attributes, block cannot be moved\r
-#define PURGEBITS      3               // 0-3 level, 0= unpurgable, 3= purge first\r
-#define PURGEMASK      0xfffc\r
-#define BASEATTRIBUTES 0       // unlocked, non purgable\r
-\r
-//#define MAXUMBS              10\r
-\r
-/*typedef struct mmblockstruct\r
-{\r
-       unsigned        start,length;\r
-       unsigned        attributes;\r
-       memptr          *useptr;        // pointer to the segment start\r
-       struct mmblockstruct far *next;\r
-} mmblocktype;*/\r
-\r
-\r
-//#define GETNEWBLOCK {if(!(mmnew=mmfree))Quit("MM_GETNEWBLOCK: No free blocks!") ;mmfree=mmfree->next;}\r
-//\r
-\r
-#define GETNEWBLOCK {if(!gvar->mm.mmfree)MML_ClearBlock(gvar);gvar->mm.mmnew=gvar->mm.mmfree;gvar->mm.mmfree=gvar->mm.mmfree->next;}\r
-\r
-#define FREEBLOCK(x) {*x->useptr=NULL;x->next=gvar->mm.mmfree;gvar->mm.mmfree=x;}\r
-\r
 /*\r
 =============================================================================\r
 \r
@@ -97,12 +62,9 @@ Open Watcom port by sparky4
 =============================================================================\r
 */\r
 \r
-/*mminfotype   mminfo;\r
-memptr         bufferseg;\r
-boolean                mmerror;*/\r
-\r
 void           (* beforesort) (void);\r
 void           (* aftersort) (void);\r
+void           (* XMSaddr) (void);             // far pointer to XMS driver\r
 \r
 /*\r
 =============================================================================\r
@@ -111,38 +73,6 @@ void                (* aftersort) (void);
 \r
 =============================================================================\r
 */\r
-\r
-/*boolean              mmstarted;\r
-\r
-void far       *farheap;\r
-void           *nearheap;\r
-\r
-mmblocktype    far mmblocks[MAXBLOCKS]\r
-                       ,far *mmhead,far *mmfree,far *mmrover,far *mmnew;\r
-\r
-boolean                bombonerror;*/\r
-\r
-//unsigned     totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle;\r
-\r
-void           (* XMSaddr) (void);             // far pointer to XMS driver\r
-\r
-/*unsigned     numUMBs,UMBbase[MAXUMBS];*/\r
-\r
-//==========================================================================\r
-\r
-//\r
-// local prototypes\r
-//\r
-\r
-boolean                MML_CheckForEMS (void);\r
-void           MML_ShutdownEMS (void);\r
-void           MM_MapEMS (void);\r
-boolean        MML_CheckForXMS (void);\r
-void           MML_ShutdownXMS (void);\r
-//void         MML_UseSpace (unsigned segstart, unsigned seglength);\r
-//void                 MML_ClearBlock (void);\r
-\r
-//==========================================================================\r
 #ifndef __16_PM__\r
 #if 0\r
 static char *ParmStringsexmm[] = {"noems","noxms",""};\r
@@ -389,7 +319,7 @@ void MML_ShutdownEMS(global_game_variables_t *gvar)
        }\r
 #endif\r
        if(errorflag==true)\r
-               Quit ("MML_ShutdownEMS: Error freeing EMS!\n"); //++++ add something\r
+               Quit (gvar, "MML_ShutdownEMS: Error freeing EMS!\n");   //++++ add something\r
 }\r
 \r
 /*\r
@@ -694,10 +624,10 @@ void MML_ShutdownXMS(global_game_variables_t *gvar)
        }\r
 //++++todo: linked list of segment!\r
 */\r
-void MML_UseSpace (unsigned segstart, unsigned seglength, global_game_variables_t *gvar)\r
+void MML_UseSpace(word segstart, dword seglength, global_game_variables_t *gvar)\r
 {\r
        mmblocktype far *scan,far *last;\r
-       unsigned        oldend;\r
+       word    oldend;\r
        sdword          extra;\r
        //word segm=1;\r
 \r
@@ -726,9 +656,8 @@ void MML_UseSpace (unsigned segstart, unsigned seglength, global_game_variables_
 // take the given range out of the block\r
 //\r
        oldend = scan->start + scan->length;\r
-       extra = oldend - (segstart+seglength);\r
+       extra = oldend - (segstart+((unsigned)seglength));\r
        if (extra < 0)\r
-#ifdef __DEBUG_MM__\r
        {\r
                printf("========================================\n");\r
                printf("start=%x        ", scan->start);\r
@@ -742,9 +671,6 @@ void MML_UseSpace (unsigned segstart, unsigned seglength, global_game_variables_
                printf("========================================\n");\r
                //return;\r
        }\r
-#else\r
-               Quit ("MML_UseSpace: Segment spans two blocks!");\r
-#endif\r
 \r
        if (segstart == scan->start)\r
        {\r
@@ -781,7 +707,7 @@ void MML_UseSpace (unsigned segstart, unsigned seglength, global_game_variables_
 ====================\r
 */\r
 \r
-void MML_ClearBlock (global_game_variables_t *gvar)\r
+void MML_ClearBlock(global_game_variables_t *gvar)\r
 {\r
        mmblocktype far *scan;//,far *last;\r
 \r
@@ -797,7 +723,7 @@ void MML_ClearBlock (global_game_variables_t *gvar)
                scan = scan->next;\r
        }\r
 \r
-       Quit ("MM_ClearBlock: No purgable blocks!\n");\r
+       printf("MM_ClearBlock: No purgable blocks!\n");\r
 }\r
 \r
 \r
@@ -814,24 +740,26 @@ void MML_ClearBlock (global_game_variables_t *gvar)
 ===================\r
 */\r
 \r
-void MM_Startup (global_game_variables_t *gvar)\r
+void MM_Startup(global_game_variables_t *gvar)\r
 {\r
        int i;\r
-       dword length;\r
+       //dword length,seglength;\r
+       dword length; word seglength;\r
        void far        *start;\r
-       unsigned        segstart,seglength;//,endfree;\r
+       word    segstart;//,endfree;\r
 \r
        if(gvar->mm.mmstarted)\r
-               MM_Shutdown (gvar);\r
+               MM_Shutdown(gvar);\r
 \r
        gvar->mm.mmstarted = true;\r
        gvar->mm.bombonerror = true;\r
+\r
 //\r
 // set up the linked list (everything in the free list;\r
 //\r
        gvar->mm.mmhead = NULL;\r
        gvar->mm.mmfree = &(gvar->mm.mmblocks[0]);\r
-       for (i=0;i<MAXBLOCKS-1;i++)\r
+       for(i=0;i<MAXBLOCKS-1;i++)\r
                gvar->mm.mmblocks[i].next = &(gvar->mm.mmblocks[i+1]);\r
        gvar->mm.mmblocks[i].next = NULL;\r
 \r
@@ -846,7 +774,6 @@ void MM_Startup (global_game_variables_t *gvar)
        gvar->mm.mmnew->next = NULL;\r
        gvar->mm.mmrover = gvar->mm.mmhead;\r
 \r
-\r
 //\r
 // get all available near conventional memory segments\r
 //\r
@@ -866,7 +793,7 @@ void MM_Startup (global_game_variables_t *gvar)
        length -= SAVENEARHEAP;\r
        seglength = length / 16;                        // now in paragraphs\r
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;\r
-       MML_UseSpace (segstart,seglength, gvar);\r
+       MML_UseSpace(segstart,seglength, gvar);\r
        gvar->mmi.nearheap = length;\r
        //0000printf("near:     start=%Fp       segstart=%x     seglen=%lu      len=%lu\n", start, segstart, (dword)seglength, length);\r
 \r
@@ -887,7 +814,7 @@ void MM_Startup (global_game_variables_t *gvar)
        length -= SAVEFARHEAP;\r
        seglength = length / 16;                        // now in paragraphs\r
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;\r
-       MML_UseSpace (segstart,seglength, gvar);\r
+       MML_UseSpace(segstart,seglength, gvar);\r
        gvar->mmi.farheap = length;\r
        //0000printf("far:      start=%Fp       segstart=%x     seglen=%lu      len=%lu\n", start, segstart, (dword)seglength, length);\r
 \r
@@ -942,7 +869,7 @@ xmsskip:
 //\r
        gvar->mm.mmrover = gvar->mm.mmhead;             // start looking for space after low block\r
 \r
-       MM_GetPtr (&(gvar->mm.bufferseg),BUFFERSIZE, gvar);\r
+       MM_GetPtr(&(gvar->mm.bufferseg),BUFFERSIZE, gvar);\r
 }\r
 \r
 //==========================================================================\r
@@ -957,7 +884,7 @@ xmsskip:
 ====================\r
 */\r
 \r
-void MM_Shutdown (global_game_variables_t *gvar)\r
+void MM_Shutdown(global_game_variables_t *gvar)\r
 {\r
        if(!(gvar->mm.mmstarted))\r
                return;\r
@@ -995,10 +922,10 @@ void MM_Shutdown (global_game_variables_t *gvar)
 ====================\r
 */\r
 \r
-void MM_GetPtr (memptr *baseptr,dword size, global_game_variables_t *gvar)\r
+void MM_GetPtr (memptr *baseptr, dword size, global_game_variables_t *gvar)\r
 {\r
        mmblocktype far *scan,far *lastscan,far *endscan\r
-                               ,far *purge,far *next;\r
+                                               ,far *purge,far *next;\r
        int                     search;\r
        unsigned        needed,startseg;\r
 \r
@@ -1007,7 +934,6 @@ void MM_GetPtr (memptr *baseptr,dword size, global_game_variables_t *gvar)
        GETNEWBLOCK;                            // fill in start and next after a spot is found\r
        gvar->mm.mmnew->length = needed;\r
        gvar->mm.mmnew->useptr = baseptr;\r
-       gvar->mm.mmnew->attributes = BASEATTRIBUTES;\r
        //if(gvar->mm.mmnew->useptr==NULL){\r
 #ifdef __DEBUG_MM__\r
        printf("MM_GetPtr\n");\r
@@ -1020,6 +946,7 @@ void MM_GetPtr (memptr *baseptr,dword size, global_game_variables_t *gvar)
        printf("        size is %lu\n", size);\r
 #endif\r
        //Quit(gvar, "gvar->mm.mmnew->useptr==NULL"); }\r
+       gvar->mm.mmnew->attributes = BASEATTRIBUTES;\r
 \r
 //tryagain:\r
        for (search = 0; search<3; search++)\r
@@ -1097,7 +1024,7 @@ void MM_GetPtr (memptr *baseptr,dword size, global_game_variables_t *gvar)
                //heapdump();\r
 #endif\r
                printf(OUT_OF_MEM_MSG,(size-gvar->mmi.nearheap));\r
-               Quit("for stability reasons the program will shut down! wwww\n");\r
+               Quit(gvar, "for stability reasons the program will shut down! wwww\n");\r
        }\r
        else\r
                gvar->mm.mmerror = true;\r
@@ -1125,14 +1052,14 @@ void MM_FreePtr (memptr *baseptr, global_game_variables_t *gvar)
        if (baseptr == gvar->mm.mmrover->useptr)        // removed the last allocated block\r
                gvar->mm.mmrover = gvar->mm.mmhead;\r
 \r
-       while (scan->useptr != baseptr && scan)\r
+       while(scan->useptr != baseptr && scan)\r
        {\r
                last = scan;\r
                scan = scan->next;\r
        }\r
 \r
-       if (!scan)\r
-               Quit ("MM_FreePtr: Block not found!");\r
+       if(!scan)\r
+               Quit (gvar, "MM_FreePtr: Block not found!");\r
 \r
        last->next = scan->next;\r
 \r
@@ -1166,9 +1093,9 @@ void MM_SetPurge (memptr *baseptr, int purge, global_game_variables_t *gvar)
                if (!gvar->mm.mmrover)\r
                        gvar->mm.mmrover = gvar->mm.mmhead;\r
                else if (gvar->mm.mmrover == start)\r
-                       Quit ("MM_SetPurge: Block not found!");\r
+                       Quit (gvar, "MM_SetPurge: Block not found!");\r
 \r
-       } while (1);\r
+       } while(1);\r
 \r
        gvar->mm.mmrover->attributes &= ~PURGEBITS;\r
        gvar->mm.mmrover->attributes |= purge;\r
@@ -1202,7 +1129,7 @@ void MM_SetLock (memptr *baseptr, boolean locked, global_game_variables_t *gvar)
                if (!gvar->mm.mmrover)\r
                        gvar->mm.mmrover = gvar->mm.mmhead;\r
                else if (gvar->mm.mmrover == start)\r
-                       Quit ("MM_SetLock: Block not found!");\r
+                       Quit (gvar, "MM_SetLock: Block not found!");\r
 \r
        } while(1);\r
 \r
@@ -1243,7 +1170,7 @@ void MM_SortMem (global_game_variables_t *gvar)
                        playing += STARTADLIBSOUNDS;\r
                        break;\r
                }\r
-               MM_SetLock(MEMPTRCONV audiosegs[playing],true);\r
+               MM_SetLock((memptr *)&audiosegs[playing],true);\r
        }\r
 \r
 \r
@@ -1251,16 +1178,16 @@ void MM_SortMem (global_game_variables_t *gvar)
        oldborder = gvar->video.bordercolor;\r
        gvar->video.bordercolor = modexPalOverscan(15);\r
 \r
-       if (beforesort)\r
+       if(beforesort)\r
                beforesort();\r
 \r
        scan = gvar->mm.mmhead;\r
 \r
        last = NULL;            // shut up compiler warning\r
 \r
-       while (scan)\r
+       while(scan)\r
        {\r
-               if (scan->attributes & LOCKBIT)\r
+               if(scan->attributes & LOCKBIT)\r
                {\r
                //\r
                // block is locked, so try to pile later blocks right after it\r
@@ -1269,7 +1196,7 @@ void MM_SortMem (global_game_variables_t *gvar)
                }\r
                else\r
                {\r
-                       if (scan->attributes & PURGEBITS)\r
+                       if(scan->attributes & PURGEBITS)\r
                        {\r
                        //\r
                        // throw out the purgable block\r
@@ -1285,12 +1212,12 @@ void MM_SortMem (global_game_variables_t *gvar)
                        //\r
                        // push the non purgable block on top of the last moved block\r
                        //\r
-                               if (scan->start != start)\r
+                               if(scan->start != start)\r
                                {\r
                                        length = scan->length;\r
                                        source = scan->start;\r
                                        dest = start;\r
-                                       while (length > 0xf00)\r
+                                       while(length > 0xf00)\r
                                        {\r
                                                movedata(source,0,dest,0,0xf00*16);\r
                                                length -= 0xf00;\r
@@ -1312,7 +1239,7 @@ void MM_SortMem (global_game_variables_t *gvar)
 \r
        gvar->mm.mmrover = gvar->mm.mmhead;\r
 \r
-       if (aftersort)\r
+       if(aftersort)\r
                aftersort();\r
 \r
        VL_ColorBorder (oldborder, &gvar->video);\r
@@ -1385,7 +1312,7 @@ void MM_ShowMemory (global_game_variables_t *gvar)
                        ultoa (scan->start,str,10);\r
                        strcat (scratch,str);\r
                        write(gvar->handle.debughandle,scratch,strlen(scratch));\r
-                       Quit ("MM_ShowMemory: Memory block order currupted!");\r
+                       Quit (gvar, "MM_ShowMemory: Memory block order currupted!");\r
                }\r
                end = scan->length-1;\r
                y = scan->start/width;\r
index 4516571d4f4492ef43ae7cea00b6c7c6f354cb32..c5e89a2b2869eaac574c18e4dc4e09612e0bc4f8 100755 (executable)
@@ -1,23 +1,19 @@
-/* Project 16 Source Code~\r
- * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+/* Catacomb Apocalypse Source Code\r
+ * Copyright (C) 1993-2014 Flat Rock Software\r
  *\r
- * This file is part of Project 16.\r
- *\r
- * Project 16 is free software; you can redistribute it and/or modify\r
+ * This program is free software; you can redistribute it and/or modify\r
  * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 3 of the License, or\r
+ * the Free Software Foundation; either version 2 of the License, or\r
  * (at your option) any later version.\r
  *\r
- * Project 16 is distributed in the hope that it will be useful,\r
+ * This program is distributed in the hope that it will be useful,\r
  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
  * GNU General Public License for more details.\r
  *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
- * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
- * Fifth Floor, Boston, MA 02110-1301 USA.\r
- *\r
+ * You should have received a copy of the GNU General Public License along\r
+ * with this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
  */\r
 \r
 // ID_MM.H\r
@@ -41,8 +37,8 @@
 \r
 #define FREEBLOCK(x) {*x->useptr=NULL;x->next=gvar->mm.mmfree;gvar->mm.mmfree=x;}\r
 \r
-#define SAVENEARHEAP   0x400           // space to leave in data segment\r
-#define SAVEFARHEAP    0                       // space to leave in far heap\r
+#define SAVENEARHEAP   0x200           // space to leave in data segment\r
+#define SAVEFARHEAP    0x400                   // space to leave in far heap\r
 \r
 #define        BUFFERSIZE              0x1000          // miscelanious, allways available buffer\r
 \r
 \r
 extern void            (* beforesort) (void);\r
 extern void            (* aftersort) (void);\r
-//extern       void            (* XMSaddr) (void);             // far pointer to XMS driver\r
+extern void            (* XMSaddr) (void);             // far pointer to XMS driver\r
 extern dword   XMSDriver;\r
 extern word            XMSVer;\r
 \r
@@ -182,13 +178,13 @@ typedef struct
 boolean MML_CheckForEMS(void);\r
 //byte MML_SetupEMS(mminfo_t *mm);\r
 //void MML_ShutdownEMS(mminfo_t *mm);\r
-//byte MM_MapEMS(global_game_variables_t *gvar);\r
+byte MM_MapEMS(global_game_variables_t *gvar);\r
 //byte MM_MapXEMS(global_game_variables_t *gvar);\r
 boolean MML_CheckForXMS(void);\r
 //void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi);\r
 //void MML_ShutdownXMS(mminfo_t *mm);\r
- void MML_UseSpace (unsigned segstart, unsigned seglength, global_game_variables_t *gvar);\r
- void MML_ClearBlock (global_game_variables_t *gvar);\r
+void MML_UseSpace(word segstart, dword seglength, global_game_variables_t *gvar);\r
+void MML_ClearBlock(global_game_variables_t *gvar);\r
 \r
 void MM_Startup(global_game_variables_t *gvar);\r
 void MM_Shutdown(global_game_variables_t *gvar);\r
index 55a7d3710e96933296e417961cfa348c72b30aac..858bd4b9fe121208edf5393ae64f714c4596978a 100755 (executable)
@@ -139,7 +139,7 @@ PML_MapEMS(word logical, byte physical, global_game_variables_t *gvar)
                strcpy(str,"MM_MapEMS: EMS error ");\r
                MM_EMSerr(str, err);\r
                printf("%s\n",str);\r
-               Quit ("PML_MapEMS: Page mapping failed\n");\r
+               Quit (gvar, "PML_MapEMS: Page mapping failed\n");\r
                return err;\r
        }\r
        return 0;\r
@@ -326,7 +326,7 @@ PML_ShutdownEMS(global_game_variables_t *gvar)
                        strcpy(str,"PML_ShutdownEMS: Error freeing EMS ");\r
                        MM_EMSerr(str, err);\r
                        printf("%s\n",str);\r
-                       Quit ("PML_ShutdownEMS: Error freeing EMS\n");\r
+                       Quit (gvar, "PML_ShutdownEMS: Error freeing EMS\n");\r
                        //return;\r
                }\r
        }\r
@@ -506,7 +506,7 @@ PML_XMSCopy(boolean toxms,byte far *addr,word xmspage,word length, global_game_v
 \r
        if (!addr)\r
        {\r
-               Quit ("PML_XMSCopy: zero address\n");\r
+               Quit (gvar, "PML_XMSCopy: zero address\n");\r
        }\r
 \r
        xoffset = (dword)xmspage * PMPageSize;\r
@@ -527,7 +527,7 @@ PML_XMSCopy(boolean toxms,byte far *addr,word xmspage,word length, global_game_v
        }\r
        if (!_AX)\r
        {\r
-               Quit ("PML_XMSCopy: Error on copy");\r
+               Quit (gvar, "PML_XMSCopy: Error on copy");\r
                //return;\r
        }\r
 }\r
@@ -594,7 +594,7 @@ PML_ShutdownXMS(global_game_variables_t *gvar)
 #endif\r
                if(errorflag==true)\r
                {\r
-                       Quit ("PML_ShutdownXMS: Error freeing XMS");\r
+                       Quit (gvar, "PML_ShutdownXMS: Error freeing XMS");\r
                        //return;\r
                }\r
        }\r
@@ -631,7 +631,7 @@ PM_SetMainMemPurge(int level, global_game_variables_t *gvar)
 \r
        else\r
        {\r
-               Quit ("MainPresent IS NULL\n");\r
+               Quit (gvar, "MainPresent IS NULL\n");\r
        }\r
 }\r
 \r
@@ -740,7 +740,7 @@ PML_StartupMainMem(global_game_variables_t *gvar)
                gvar->mm.mmerror = false;\r
        if (gvar->pm.mm.MainPagesAvail < PMMinMainMem)\r
        {\r
-               Quit ("PM_SetupMainMem: Not enough main memory");\r
+               Quit (gvar, "PM_SetupMainMem: Not enough main memory");\r
                //return;\r
        }\r
        gvar->pm.mm.MainPresent = true;\r
@@ -776,22 +776,22 @@ PML_ReadFromFile(byte far *buf,long offset,word length, global_game_variables_t
 {\r
        if (!buf)\r
        {\r
-               Quit ("PML_ReadFromFile: Null pointer");\r
+               Quit (gvar, "PML_ReadFromFile: Null pointer");\r
                //return;\r
        }\r
        if (!offset)\r
        {\r
-               Quit ("PML_ReadFromFile: Zero offset");\r
+               Quit (gvar, "PML_ReadFromFile: Zero offset");\r
                //return;\r
        }\r
        if (lseek(gvar->pm.fi.PageFile,offset,SEEK_SET) != offset)\r
        {\r
-               Quit ("PML_ReadFromFile: Seek failed");\r
+               Quit (gvar, "PML_ReadFromFile: Seek failed");\r
                //return;\r
        }\r
        if (!CA_FarRead(gvar->pm.fi.PageFile,buf,length, gvar))\r
        {\r
-               Quit ("PML_ReadFromFile: Read failed");\r
+               Quit (gvar, "PML_ReadFromFile: Read failed");\r
                //return;\r
        }\r
 }\r
@@ -812,7 +812,7 @@ PML_OpenPageFile(global_game_variables_t *gvar)
        gvar->pm.fi.PageFile = open(gvar->pm.fi.PageFileName,O_RDONLY + O_BINARY);\r
        if (gvar->pm.fi.PageFile == -1)\r
        {\r
-               Quit ("PML_OpenPageFile: Unable to open page file");\r
+               Quit (gvar, "PML_OpenPageFile: Unable to open page file");\r
                //return;\r
        }\r
 \r
@@ -833,7 +833,7 @@ PML_OpenPageFile(global_game_variables_t *gvar)
        MM_GetPtr((memptr *)&buf, size, gvar);\r
        if (!CA_FarRead(gvar->pm.fi.PageFile,(byte far *)buf,size, gvar))\r
        {\r
-               Quit ("PML_OpenPageFile: Offset read failed");\r
+               Quit (gvar, "PML_OpenPageFile: Offset read failed");\r
                //return;\r
        }\r
        offsetptr = (dword far *)buf;\r
@@ -846,7 +846,7 @@ PML_OpenPageFile(global_game_variables_t *gvar)
        MM_GetPtr(&buf,size, gvar);\r
        if (!CA_FarRead(gvar->pm.fi.PageFile,(byte far *)buf,size, gvar))\r
        {\r
-               Quit ("PML_OpenPageFile: Length read failed");\r
+               Quit (gvar, "PML_OpenPageFile: Length read failed");\r
                //return;\r
        }\r
        lengthptr = (word far *)buf;\r
@@ -923,7 +923,7 @@ PML_GetEMSAddress(int page,PMLockType lock, global_game_variables_t *gvar)
        }\r
 \r
        if (emspage == -1)\r
-               Quit ("PML_GetEMSAddress: EMS find failed");\r
+               Quit (gvar, "PML_GetEMSAddress: EMS find failed");\r
 \r
        gvar->pm.emm.EMSList[emspage].lastHit = gvar->pm.PMFrameCount;\r
        offset = emspage * EMSPageSizeSeg;\r
@@ -992,7 +992,7 @@ PML_GiveLRUPage(boolean mainonly, global_game_variables_t *gvar)
        }\r
 \r
        if (lru == -1)\r
-               Quit ("PML_GiveLRUPage: LRU Search failed");\r
+               Quit (gvar, "PML_GiveLRUPage: LRU Search failed");\r
        return(lru);\r
 }\r
 \r
@@ -1047,7 +1047,7 @@ PML_PutPageInXMS(int pagenum, global_game_variables_t *gvar)
        {\r
                usexms = PML_GiveLRUXMSPage(gvar);\r
                if (usexms == -1)\r
-                       Quit ("PML_PutPageInXMS: No XMS LRU");\r
+                       Quit (gvar, "PML_PutPageInXMS: No XMS LRU");\r
                page->xmsPage = gvar->pm.PMPages[usexms].xmsPage;\r
                gvar->pm.PMPages[usexms].xmsPage = -1;\r
        }\r
@@ -1065,16 +1065,16 @@ PML_TransferPageSpace(int orig,int new, global_game_variables_t *gvar)
        PageListStruct  far *origpage,far *newpage;\r
 \r
        if (orig == new)\r
-               Quit ("PML_TransferPageSpace: Identity replacement");\r
+               Quit (gvar, "PML_TransferPageSpace: Identity replacement");\r
 \r
        origpage = &gvar->pm.PMPages[orig];\r
        newpage = &gvar->pm.PMPages[new];\r
 \r
        if (origpage->locked != pml_Unlocked)\r
-               Quit ("PML_TransferPageSpace: Killing locked page");\r
+               Quit (gvar, "PML_TransferPageSpace: Killing locked page");\r
 \r
        if ((origpage->emsPage == -1) && (origpage->mainPage == -1))\r
-               Quit ("PML_TransferPageSpace: Reusing non-existent page");\r
+               Quit (gvar, "PML_TransferPageSpace: Reusing non-existent page");\r
 \r
        // Copy page that's about to be purged into XMS\r
        PML_PutPageInXMS(orig, gvar);\r
@@ -1090,7 +1090,7 @@ PML_TransferPageSpace(int orig,int new, global_game_variables_t *gvar)
        origpage->mainPage = origpage->emsPage = -1;\r
 \r
        if (!addr)\r
-               Quit ("PML_TransferPageSpace: Zero replacement");\r
+               Quit (gvar, "PML_TransferPageSpace: Zero replacement");\r
 \r
        return(addr);\r
 }\r
@@ -1131,10 +1131,10 @@ PML_GetAPageBuffer(int pagenum,boolean mainonly, global_game_variables_t *gvar)
                        }\r
                }\r
                if (n == -1)\r
-                       Quit ("PML_GetPageBuffer: MainPagesAvail lied");\r
+                       Quit (gvar, "PML_GetPageBuffer: MainPagesAvail lied");\r
                addr = gvar->pm.mm.MainMemPages[n];\r
                if (!addr)\r
-                       Quit ("PML_GetPageBuffer: Purged main block");\r
+                       Quit (gvar, "PML_GetPageBuffer: Purged main block");\r
                page->mainPage = n;\r
                gvar->pm.MainPagesUsed++;\r
        }\r
@@ -1142,7 +1142,7 @@ PML_GetAPageBuffer(int pagenum,boolean mainonly, global_game_variables_t *gvar)
                addr = PML_TransferPageSpace(PML_GiveLRUPage(mainonly, gvar),pagenum, gvar);\r
 \r
        if (!addr)\r
-               Quit ("PML_GetPageBuffer: Search failed");\r
+               Quit (gvar, "PML_GetPageBuffer: Search failed");\r
        return(addr);\r
 }\r
 \r
@@ -1168,7 +1168,7 @@ PML_GetPageFromXMS(int pagenum,boolean mainonly, global_game_variables_t *gvar)
                gvar->pm.xmm.XMSProtectPage = pagenum;\r
                checkaddr = PML_GetAPageBuffer(pagenum,mainonly, gvar);\r
                if (FP_OFF(checkaddr))\r
-                       Quit ("PML_GetPageFromXMS: Non segment pointer");\r
+                       Quit (gvar, "PML_GetPageFromXMS: Non segment pointer");\r
                addr = (memptr)FP_SEG(checkaddr);\r
                PML_CopyFromXMS(addr,page->xmsPage,page->length, gvar);\r
                gvar->pm.xmm.XMSProtectPage = -1;\r
@@ -1206,7 +1206,7 @@ PM_GetPage(int pagenum, global_game_variables_t *gvar)
        memptr  result;\r
 \r
        if (pagenum >= gvar->pm.fi.ChunksInFile)\r
-               Quit ("PM_GetPage: Invalid page request");\r
+               Quit (gvar, "PM_GetPage: Invalid page request");\r
 \r
 //#ifdef __DEBUG_2__   // for debugging\r
        __asm {\r
@@ -1224,7 +1224,7 @@ PM_GetPage(int pagenum, global_game_variables_t *gvar)
        {\r
                boolean mainonly = (pagenum >= gvar->pm.fi.PMSoundStart);\r
 if (!gvar->pm.PMPages[pagenum].offset) // JDC: sparse page\r
-       Quit ("Tried to load a sparse page!");\r
+       Quit (gvar, "Tried to load a sparse page!");\r
                if (!(result = PML_GetPageFromXMS(pagenum,mainonly, gvar)))\r
                {\r
                        if (gvar->pm.PMPages[pagenum].lastHit ==  gvar->pm.PMFrameCount)\r
@@ -1265,7 +1265,7 @@ void
 PM_SetPageLock(int pagenum,PMLockType lock, global_game_variables_t *gvar)\r
 {\r
        if (pagenum < gvar->pm.fi.PMSoundStart)\r
-               Quit ("PM_SetPageLock: Locking/unlocking non-sound page");\r
+               Quit (gvar, "PM_SetPageLock: Locking/unlocking non-sound page");\r
 \r
        gvar->pm.PMPages[pagenum].locked = lock;\r
 }\r
@@ -1332,7 +1332,7 @@ PM_Preload(boolean (*update)(word current,word total), global_game_variables_t *
                        page++;\r
 \r
                if (page >= gvar->pm.fi.ChunksInFile)\r
-                       Quit ("PM_Preload: Pages>=gvar->pm.fi.ChunksInFile");\r
+                       Quit (gvar, "PM_Preload: Pages>=gvar->pm.fi.ChunksInFile");\r
 \r
                PM_GetPage(page, gvar);\r
 \r
@@ -1351,7 +1351,7 @@ PM_Preload(boolean (*update)(word current,word total), global_game_variables_t *
                ;\r
                addr = PM_GetPage(oogypage, gvar);\r
                if (!addr)\r
-                       Quit ("PM_Preload: XMS buffer failed");\r
+                       Quit (gvar, "PM_Preload: XMS buffer failed");\r
 \r
                while (xmstotal)\r
                {\r
@@ -1359,15 +1359,15 @@ PM_Preload(boolean (*update)(word current,word total), global_game_variables_t *
                                page++;\r
 \r
                        if (page >= gvar->pm.fi.ChunksInFile)\r
-                               Quit ("PM_Preload: Pages>=gvar->pm.fi.ChunksInFile");\r
+                               Quit (gvar, "PM_Preload: Pages>=gvar->pm.fi.ChunksInFile");\r
 \r
                        p = &gvar->pm.PMPages[page];\r
 \r
                        p->xmsPage = gvar->pm.XMSPagesUsed++;\r
                        if (gvar->pm.XMSPagesUsed > gvar->pm.xmm.XMSPagesAvail)\r
-                               Quit ("PM_Preload: Exceeded XMS pages");\r
+                               Quit (gvar, "PM_Preload: Exceeded XMS pages");\r
                        if (p->length > PMPageSize)\r
-                               Quit ("PM_Preload: Page too long");\r
+                               Quit (gvar, "PM_Preload: Page too long");\r
 \r
                        PML_ReadFromFile((byte far *)addr,p->offset,p->length, gvar);\r
                        PML_CopyToXMS((byte far *)addr,p->xmsPage,p->length, gvar);\r
@@ -1420,7 +1420,7 @@ PM_NextFrame(global_game_variables_t *gvar)
                {\r
                        char buf[40];\r
                        sprintf(buf,"PM_NextFrame: Page %d is locked",i);\r
-                       Quit (buf);\r
+                       Quit(gvar, buf);\r
                }\r
        }\r
 //#endif\r
@@ -1511,7 +1511,7 @@ PM_Startup(global_game_variables_t *gvar)
 \r
        if (!gvar->pm.mm.MainPresent && !gvar->pm.emm.EMSPresent && !gvar->pm.xmm.XMSPresent)\r
        {\r
-               Quit ("PM_Startup: No main or EMS\n");\r
+               Quit (gvar, "PM_Startup: No main or EMS\n");\r
                //return;\r
        }\r
 \r
index e9b0be9ad9b0ad9f7b4a7750777bf4c82d516859..742e113289140267c3ddb5d2562b46a02556d7bb 100755 (executable)
@@ -475,13 +475,12 @@ void ClearMemory (global_game_variables_t *gvar)
 ==========================\r
 */\r
 \r
-void Quit (char *error)\r
+void Quit (global_game_variables_t *gvar, char *error)\r
 {\r
-\r
        //unsigned              finscreen;\r
        memptr  screen=0;\r
 \r
-       ClearMemory (ggvv);\r
+       ClearMemory (gvar);\r
        if (!*error)\r
        {\r
 // #ifndef JAPAN\r
@@ -495,7 +494,7 @@ void Quit (char *error)
 //             CA_CacheGrChunk (ERRORSCREEN);\r
 //             screen = grsegs[ERRORSCREEN];\r
        }\r
-       Shutdown16(ggvv);\r
+       Shutdown16(gvar);\r
 \r
        if (error && *error)\r
        {\r
index ef3b906609c3d2ff4be9a3b3e4681b884a53e904..93022c261b8c47492ba9a79f4ce25243538c6467 100755 (executable)
@@ -41,8 +41,7 @@
 #include <hw/vga/vrs.h>\r
 #endif\r
 \r
-extern struct glob_game_vars   *ggvv;\r
-\r
+//gvar.video.ofs.bufferofs,gvar.video.ofs.displayofs,\r
 #define FIZZLEFADEFUNCTION \\r
        if(gvar.in.inst->Keyboard[sc_F]){ FizzleFade(\\r
        atoi(gvar.video.page[0].data),atoi(gvar.video.page[1].data),\\r
@@ -136,7 +135,7 @@ void TL_VidInit(global_game_variables_t *gvar);
 boolean FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar);\r
 void DebugMemory_(global_game_variables_t *gvar, boolean q);\r
 void ClearMemory (global_game_variables_t *gvar);\r
-void Quit (char *error);\r
+void Quit (global_game_variables_t *gvar, char *error);\r
 void turboXT(byte bakapee);\r
 void nibbletest();\r
 void booleantest();\r
index 3fa1feb335ced492a655faf2c2195e411e338469..1aa8b53fc3b0252aae008fb0267824a41c16f340 100755 (executable)
@@ -468,11 +468,14 @@ typedef struct
 //from 16_mm\r
 //==========================================================================\r
 \r
-#define MAXBLOCKS              800//kd=1300 wolf3d=700 cata=600\r
+#define MAXBLOCKS              1024//kd=1300 wolf3d=700 cata=600\r
+//----#define MAXUMBS          12\r
 \r
 typedef struct mmblockstruct\r
 {\r
-       unsigned        start,length;\r
+       word    start,length;\r
+       //word  start;  dword length;\r
+//++++ word    blob;   //for data larger than 64k\r
        unsigned        attributes;\r
        memptr          *useptr;        // pointer to the segment start\r
        struct mmblockstruct far *next;\r
index 638c985bf9cf640e2dfc70dda473ca4f6fbfca31..059ad77f65a48b9501eca26c0d4811960ada9e54 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 638c985bf9cf640e2dfc70dda473ca4f6fbfca31
+Subproject commit 059ad77f65a48b9501eca26c0d4811960ada9e54
index e734a8c7cee05b9f722b962f7ca29cb070b4a749..d15a5462fbab440514c02917f1c15c269628e0d5 100755 (executable)
@@ -70,7 +70,7 @@ void main(int argc, char near *argv[])
        //FMSetVoice(0, &testInst);\r
        if(!init_adlib())\r
        {\r
-               Quit ("Cannot init library");\r
+               Quit(&gvar, "Cannot init library");\r
        }\r
 \r
        if (adlib_fm_voices > 9)\r
index 189746da75d57715901c6c94461eae4e11532921..9e968ae5ef7d47dea439277eb7f3c0de3364977d 100755 (executable)
@@ -138,7 +138,7 @@ void main(int argc, char *argv[])
 #ifdef FADE\r
                modexFadeOff(4, &gvar.video.palette);\r
 #endif\r
-               Quit ("Wrong ID for sprite");\r
+               Quit (&gvar, "Wrong ID for sprite");\r
 #ifdef FADE\r
                modexFadeOn(4, &gvar.video.dpal);\r
 #endif\r
@@ -219,7 +219,7 @@ void main(int argc, char *argv[])
 #endif\r
                if(gvar.in.inst->Keyboard[sc_R]){ modexPalOverscan(rand()%56); } //r\r
 \r
-               if((gvar.player[0].enti.q==1) && !(gvar.player[0].enti.x%TILEWH==0 && gvar.player[0].enti.y%TILEWH==0)) Quit ("PLAYER OFF THE RAILS!");//break; //incase things go out of sync!\r
+               if((gvar.player[0].enti.q==1) && !(gvar.player[0].enti.x%TILEWH==0 && gvar.player[0].enti.y%TILEWH==0)) Quit (&gvar, "PLAYER OFF THE RAILS!");//break;  //incase things go out of sync!\r
        }\r
 \r
        /* fade back to text mode */\r