]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/hb/main/c3_main.c
not done making demohp.c. i gotta get the files to the other lappy4
[16.git] / src / lib / hb / main / c3_main.c
diff --git a/src/lib/hb/main/c3_main.c b/src/lib/hb/main/c3_main.c
deleted file mode 100755 (executable)
index 684cb32..0000000
+++ /dev/null
@@ -1,756 +0,0 @@
-/* Catacomb 3-D Source Code\r
- * Copyright (C) 1993-2014 Flat Rock Software\r
- *\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 2 of the License, or\r
- * (at your option) any later version.\r
- *\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 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
-// C3_MAIN.C\r
-\r
-#include "C3_DEF.H"\r
-#pragma hdrstop\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                  CATACOMB 3-D\r
-\r
-                                         An Id Software production\r
-\r
-                                                  by John Carmack\r
-\r
-=============================================================================\r
-*/\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                LOCAL CONSTANTS\r
-\r
-=============================================================================\r
-*/\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                GLOBAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-memptr         scalesegs[NUMPICS];\r
-char           str[80],str2[20];\r
-unsigned       tedlevelnum;\r
-boolean                tedlevel;\r
-gametype       gamestate;\r
-exittype       playstate;\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                LOCAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-\r
-\r
-//===========================================================================\r
-\r
-// JAB Hack begin\r
-#define        MyInterrupt     0x60\r
-void interrupt (*intaddr)();\r
-void interrupt (*oldintaddr)();\r
-       char    *JHParmStrings[] = {"no386",nil};\r
-\r
-void\r
-jabhack(void)\r
-{\r
-extern void far jabhack2(void);\r
-extern int far CheckIs386(void);\r
-\r
-       int     i;\r
-\r
-       oldintaddr = getvect(MyInterrupt);\r
-\r
-       for (i = 1;i < _argc;i++)\r
-               if (US_CheckParm(_argv[i],JHParmStrings) == 0)\r
-                       return;\r
-\r
-       if (CheckIs386())\r
-       {\r
-               jabhack2();\r
-               setvect(MyInterrupt,intaddr);\r
-       }\r
-}\r
-\r
-void\r
-jabunhack(void)\r
-{\r
-       setvect(MyInterrupt,oldintaddr);\r
-}\r
-//     JAB Hack end\r
-\r
-//===========================================================================\r
-\r
-/*\r
-=====================\r
-=\r
-= NewGame\r
-=\r
-= Set up new game to start from the beginning\r
-=\r
-=====================\r
-*/\r
-\r
-void NewGame (void)\r
-{\r
-       memset (&gamestate,0,sizeof(gamestate));\r
-       gamestate.mapon = 0;\r
-       gamestate.body = MAXBODY;\r
-}\r
-\r
-//===========================================================================\r
-\r
-#define RLETAG 0xABCD\r
-\r
-/*\r
-==================\r
-=\r
-= SaveTheGame\r
-=\r
-==================\r
-*/\r
-\r
-boolean        SaveTheGame(int file)\r
-{\r
-       word    i,compressed,expanded;\r
-       objtype *o;\r
-       memptr  bigbuffer;\r
-\r
-       if (!CA_FarWrite(file,(void far *)&gamestate,sizeof(gamestate)))\r
-               return(false);\r
-\r
-       expanded = mapwidth * mapheight * 2;\r
-       MM_GetPtr (&bigbuffer,expanded);\r
-\r
-       for (i = 0;i < 3;i+=2)  // Write planes 0 and 2\r
-       {\r
-//\r
-// leave a word at start of compressed data for compressed length\r
-//\r
-               compressed = (unsigned)CA_RLEWCompress ((unsigned huge *)mapsegs[i]\r
-                       ,expanded,((unsigned huge *)bigbuffer)+1,RLETAG);\r
-\r
-               *(unsigned huge *)bigbuffer = compressed;\r
-\r
-               if (!CA_FarWrite(file,(void far *)bigbuffer,compressed+2) )\r
-               {\r
-                       MM_FreePtr (&bigbuffer);\r
-                       return(false);\r
-               }\r
-       }\r
-\r
-       for (o = player;o;o = o->next)\r
-               if (!CA_FarWrite(file,(void far *)o,sizeof(objtype)))\r
-               {\r
-                       MM_FreePtr (&bigbuffer);\r
-                       return(false);\r
-               }\r
-\r
-       MM_FreePtr (&bigbuffer);\r
-\r
-       return(true);\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= LoadTheGame\r
-=\r
-==================\r
-*/\r
-\r
-boolean        LoadTheGame(int file)\r
-{\r
-       unsigned        i,x,y;\r
-       objtype         *obj,*prev,*next,*followed;\r
-       unsigned        compressed,expanded;\r
-       unsigned        far *map,tile;\r
-       memptr          bigbuffer;\r
-\r
-       if (!CA_FarRead(file,(void far *)&gamestate,sizeof(gamestate)))\r
-               return(false);\r
-\r
-       SetupGameLevel ();              // load in and cache the base old level\r
-\r
-       expanded = mapwidth * mapheight * 2;\r
-       MM_GetPtr (&bigbuffer,expanded);\r
-\r
-       for (i = 0;i < 3;i+=2)  // Read planes 0 and 2\r
-       {\r
-               if (!CA_FarRead(file,(void far *)&compressed,sizeof(compressed)) )\r
-               {\r
-                       MM_FreePtr (&bigbuffer);\r
-                       return(false);\r
-               }\r
-\r
-               if (!CA_FarRead(file,(void far *)bigbuffer,compressed) )\r
-               {\r
-                       MM_FreePtr (&bigbuffer);\r
-                       return(false);\r
-               }\r
-\r
-               CA_RLEWexpand ((unsigned huge *)bigbuffer,\r
-                       (unsigned huge *)mapsegs[i],expanded,RLETAG);\r
-       }\r
-\r
-       MM_FreePtr (&bigbuffer);\r
-//\r
-// copy the wall data to a data segment array again, to handle doors and\r
-// bomb walls that are allready opened\r
-//\r
-       memset (tilemap,0,sizeof(tilemap));\r
-       memset (actorat,0,sizeof(actorat));\r
-       map = mapsegs[0];\r
-       for (y=0;y<mapheight;y++)\r
-               for (x=0;x<mapwidth;x++)\r
-               {\r
-                       tile = *map++;\r
-                       if (tile<NUMFLOORS)\r
-                       {\r
-                               tilemap[x][y] = tile;\r
-                               if (tile>0)\r
-                                       (unsigned)actorat[x][y] = tile;\r
-                       }\r
-               }\r
-\r
-\r
-       // Read the object list back in - assumes at least one object in list\r
-\r
-       InitObjList ();\r
-       new = player;\r
-       while (true)\r
-       {\r
-               prev = new->prev;\r
-               next = new->next;\r
-               if (!CA_FarRead(file,(void far *)new,sizeof(objtype)))\r
-                       return(false);\r
-               followed = new->next;\r
-               new->prev = prev;\r
-               new->next = next;\r
-               actorat[new->tilex][new->tiley] = new;  // drop a new marker\r
-\r
-               if (followed)\r
-                       GetNewObj (false);\r
-               else\r
-                       break;\r
-       }\r
-\r
-       return(true);\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= ResetGame\r
-=\r
-==================\r
-*/\r
-\r
-void ResetGame(void)\r
-{\r
-       NewGame ();\r
-\r
-       ca_levelnum--;\r
-       ca_levelbit>>=1;\r
-       CA_ClearMarks();\r
-       ca_levelbit<<=1;\r
-       ca_levelnum++;\r
-}\r
-\r
-//===========================================================================\r
-\r
-\r
-/*\r
-==========================\r
-=\r
-= ShutdownId\r
-=\r
-= Shuts down all ID_?? managers\r
-=\r
-==========================\r
-*/\r
-\r
-void ShutdownId (void)\r
-{\r
-  US_Shutdown ();\r
-#ifndef PROFILE\r
-  SD_Shutdown ();\r
-  IN_Shutdown ();\r
-#endif\r
-  VW_Shutdown ();\r
-  CA_Shutdown ();\r
-  MM_Shutdown ();\r
-}\r
-\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==========================\r
-=\r
-= InitGame\r
-=\r
-= Load a few things right away\r
-=\r
-==========================\r
-*/\r
-\r
-void InitGame (void)\r
-{\r
-       unsigned        segstart,seglength;\r
-       int                     i,x,y;\r
-       unsigned        *blockstart;\r
-\r
-//     US_TextScreen();\r
-\r
-       MM_Startup ();\r
-       VW_Startup ();\r
-#ifndef PROFILE\r
-       IN_Startup ();\r
-       SD_Startup ();\r
-#endif\r
-       US_Startup ();\r
-\r
-//     US_UpdateTextScreen();\r
-\r
-       CA_Startup ();\r
-       US_Setup ();\r
-\r
-       US_SetLoadSaveHooks(LoadTheGame,SaveTheGame,ResetGame);\r
-\r
-//\r
-// load in and lock down some basic chunks\r
-//\r
-\r
-       CA_ClearMarks ();\r
-\r
-       CA_MarkGrChunk(STARTFONT);\r
-       CA_MarkGrChunk(STARTTILE8);\r
-       CA_MarkGrChunk(STARTTILE8M);\r
-       CA_MarkGrChunk(HAND1PICM);\r
-       CA_MarkGrChunk(HAND2PICM);\r
-       CA_MarkGrChunk(ENTERPLAQUEPIC);\r
-\r
-       CA_CacheMarks (NULL);\r
-\r
-       MM_SetLock (&grsegs[STARTFONT],true);\r
-       MM_SetLock (&grsegs[STARTTILE8],true);\r
-       MM_SetLock (&grsegs[STARTTILE8M],true);\r
-       MM_SetLock (&grsegs[HAND1PICM],true);\r
-       MM_SetLock (&grsegs[HAND2PICM],true);\r
-       MM_SetLock (&grsegs[ENTERPLAQUEPIC],true);\r
-\r
-       fontcolor = WHITE;\r
-\r
-\r
-//\r
-// build some tables\r
-//\r
-       for (i=0;i<MAPSIZE;i++)\r
-               nearmapylookup[i] = &tilemap[0][0]+MAPSIZE*i;\r
-\r
-       for (i=0;i<PORTTILESHIGH;i++)\r
-               uwidthtable[i] = UPDATEWIDE*i;\r
-\r
-       blockstart = &blockstarts[0];\r
-       for (y=0;y<UPDATEHIGH;y++)\r
-               for (x=0;x<UPDATEWIDE;x++)\r
-                       *blockstart++ = SCREENWIDTH*16*y+x*TILEWIDTH;\r
-\r
-       BuildTables ();                 // 3-d tables\r
-\r
-       SetupScaling ();\r
-\r
-#ifndef PROFILE\r
-//     US_FinishTextScreen();\r
-#endif\r
-\r
-//\r
-// reclaim the memory from the linked in text screen\r
-//\r
-       segstart = FP_SEG(&introscn);\r
-       seglength = 4000/16;\r
-       if (FP_OFF(&introscn))\r
-       {\r
-               segstart++;\r
-               seglength--;\r
-       }\r
-\r
-       MML_UseSpace (segstart,seglength);\r
-\r
-       VW_SetScreenMode (GRMODE);\r
-       VW_ColorBorder (3);\r
-       VW_ClearVideo (BLACK);\r
-\r
-//\r
-// initialize variables\r
-//\r
-       updateptr = &update[0];\r
-       *(unsigned *)(updateptr + UPDATEWIDE*PORTTILESHIGH) = UPDATETERMINATE;\r
-       bufferofs = 0;\r
-       displayofs = 0;\r
-       VW_SetLineWidth(SCREENWIDTH);\r
-}\r
-\r
-//===========================================================================\r
-\r
-void clrscr (void);            // can't include CONIO.H because of name conflicts...\r
-\r
-/*\r
-==========================\r
-=\r
-= Quit\r
-=\r
-==========================\r
-*/\r
-\r
-void Quit (char *error)\r
-{\r
-       unsigned        finscreen;\r
-\r
-#if 0\r
-       if (!error)\r
-       {\r
-               CA_SetAllPurge ();\r
-               CA_CacheGrChunk (PIRACY);\r
-               finscreen = (unsigned)grsegs[PIRACY];\r
-       }\r
-#endif\r
-\r
-       ShutdownId ();\r
-       if (error && *error)\r
-       {\r
-         puts(error);\r
-         exit(1);\r
-       }\r
-\r
-#if 0\r
-       if (!NoWait)\r
-       {\r
-               movedata (finscreen,0,0xb800,0,4000);\r
-               bioskey (0);\r
-               clrscr();\r
-       }\r
-#endif\r
-\r
-       exit(0);\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= TEDDeath\r
-=\r
-==================\r
-*/\r
-\r
-void   TEDDeath(void)\r
-{\r
-       ShutdownId();\r
-       execlp("TED5.EXE","TED5.EXE","/LAUNCH",NULL);\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-=====================\r
-=\r
-= DemoLoop\r
-=\r
-=====================\r
-*/\r
-\r
-static char *ParmStrings[] = {"easy","normal","hard",""};\r
-\r
-void   DemoLoop (void)\r
-{\r
-       int     i,level;\r
-\r
-//\r
-// check for launch from ted\r
-//\r
-       if (tedlevel)\r
-       {\r
-               NewGame();\r
-               gamestate.mapon = tedlevelnum;\r
-               restartgame = gd_Normal;\r
-               for (i = 1;i < _argc;i++)\r
-               {\r
-                       if ( (level = US_CheckParm(_argv[i],ParmStrings)) == -1)\r
-                               continue;\r
-\r
-                       restartgame = gd_Easy+level;\r
-                       break;\r
-               }\r
-               GameLoop();\r
-               TEDDeath();\r
-       }\r
-\r
-\r
-//\r
-// main game cycle\r
-//\r
-       displayofs = bufferofs = 0;\r
-       VW_Bar (0,0,320,200,0);\r
-\r
-       while (1)\r
-       {\r
-               CA_CacheGrChunk (TITLEPIC);\r
-               bufferofs = SCREEN2START;\r
-               displayofs = SCREEN1START;\r
-               VWB_DrawPic (0,0,TITLEPIC);\r
-               MM_SetPurge (&grsegs[TITLEPIC],3);\r
-               UNMARKGRCHUNK(TITLEPIC);\r
-               FizzleFade (bufferofs,displayofs,320,200,true);\r
-\r
-               if (!IN_UserInput(TickBase*3,false))\r
-               {\r
-                       CA_CacheGrChunk (CREDITSPIC);\r
-                       VWB_DrawPic (0,0,CREDITSPIC);\r
-                       MM_SetPurge (&grsegs[CREDITSPIC],3);\r
-                       UNMARKGRCHUNK(CREDITSPIC);\r
-                       FizzleFade (bufferofs,displayofs,320,200,true);\r
-\r
-               }\r
-\r
-               if (!IN_UserInput(TickBase*3,false))\r
-               {\r
-highscores:\r
-                       DrawHighScores ();\r
-                       FizzleFade (bufferofs,displayofs,320,200,true);\r
-                       IN_UserInput(TickBase*3,false);\r
-               }\r
-\r
-               if (IN_IsUserInput())\r
-               {\r
-                       US_ControlPanel ();\r
-\r
-                       if (restartgame || loadedgame)\r
-                       {\r
-                               GameLoop ();\r
-                               goto highscores;\r
-                       }\r
-               }\r
-\r
-       }\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==========================\r
-=\r
-= SetupScalePic\r
-=\r
-==========================\r
-*/\r
-\r
-void SetupScalePic (unsigned picnum)\r
-{\r
-       unsigned        scnum;\r
-\r
-       scnum = picnum-FIRSTSCALEPIC;\r
-\r
-       if (shapedirectory[scnum])\r
-       {\r
-               MM_SetPurge (&(memptr)shapedirectory[scnum],0);\r
-               return;                                 // allready in memory\r
-       }\r
-\r
-       CA_CacheGrChunk (picnum);\r
-       DeplanePic (picnum);\r
-       shapesize[scnum] = BuildCompShape (&shapedirectory[scnum]);\r
-       grneeded[picnum]&= ~ca_levelbit;\r
-       MM_FreePtr (&grsegs[picnum]);\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==========================\r
-=\r
-= SetupScaleWall\r
-=\r
-==========================\r
-*/\r
-\r
-void SetupScaleWall (unsigned picnum)\r
-{\r
-       int             x,y;\r
-       unsigned        scnum;\r
-       byte    far *dest;\r
-\r
-       scnum = picnum-FIRSTWALLPIC;\r
-\r
-       if (walldirectory[scnum])\r
-       {\r
-               MM_SetPurge (&walldirectory[scnum],0);\r
-               return;                                 // allready in memory\r
-       }\r
-\r
-       CA_CacheGrChunk (picnum);\r
-       DeplanePic (picnum);\r
-       MM_GetPtr(&walldirectory[scnum],64*64);\r
-       dest = (byte far *)walldirectory[scnum];\r
-       for (x=0;x<64;x++)\r
-               for (y=0;y<64;y++)\r
-                       *dest++ = spotvis[y][x];\r
-       grneeded[picnum]&= ~ca_levelbit;\r
-       MM_FreePtr (&grsegs[picnum]);\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-==========================\r
-=\r
-= SetupScaling\r
-=\r
-==========================\r
-*/\r
-\r
-void SetupScaling (void)\r
-{\r
-       int             i,x,y;\r
-       byte    far *dest;\r
-\r
-//\r
-// build the compiled scalers\r
-//\r
-       for (i=1;i<=VIEWWIDTH/2;i++)\r
-               BuildCompScale (i*2,&scaledirectory[i]);\r
-}\r
-\r
-//===========================================================================\r
-\r
-int    showscorebox;\r
-\r
-void RF_FixOfs (void)\r
-{\r
-}\r
-\r
-void HelpScreens (void)\r
-{\r
-}\r
-\r
-\r
-/*\r
-==================\r
-=\r
-= CheckMemory\r
-=\r
-==================\r
-*/\r
-\r
-#define MINMEMORY      335000l\r
-\r
-void   CheckMemory(void)\r
-{\r
-       unsigned        finscreen;\r
-\r
-       if (mminfo.nearheap+mminfo.farheap+mminfo.EMSmem+mminfo.XMSmem\r
-               >= MINMEMORY)\r
-               return;\r
-\r
-       CA_CacheGrChunk (OUTOFMEM);\r
-       finscreen = (unsigned)grsegs[OUTOFMEM];\r
-       ShutdownId ();\r
-       movedata (finscreen,7,0xb800,0,4000);\r
-       gotoxy (1,24);\r
-       exit(1);\r
-}\r
-\r
-//===========================================================================\r
-\r
-\r
-/*\r
-==========================\r
-=\r
-= main\r
-=\r
-==========================\r
-*/\r
-\r
-void main (void)\r
-{\r
-       short i;\r
-\r
-       if (stricmp(_argv[1], "/VER") == 0)\r
-       {\r
-               printf("Catacomb 3-D version 1.22  (Rev 1)\n");\r
-               printf("Copyright 1991-93 Softdisk Publishing\n");\r
-               printf("Developed for use with 100%% IBM compatibles\n");\r
-               printf("that have 640K memory and DOS version 3.3 or later\n");\r
-               printf("and EGA graphics or better.\n");\r
-               exit(0);\r
-       }\r
-\r
-       if (stricmp(_argv[1], "/?") == 0)\r
-       {\r
-               printf("Catacomb 3-D version 1.22\n");\r
-               printf("Copyright 1991-93 Softdisk Publishing\n\n");\r
-               printf("Syntax:\n");\r
-               printf("CAT3D [/<switch>]\n\n");\r
-               printf("Switch       What it does\n");\r
-               printf("/?           This Information\n");\r
-               printf("/VER         Display Program Version Information\n");\r
-               printf("/COMP        Fix problems with SVGA screens\n");\r
-               printf("/NOAL        No AdLib or SoundBlaster detection\n");\r
-               printf("/NOJOYS      Tell program to ignore joystick\n");\r
-               printf("/NOMOUSE     Tell program to ignore mouse\n");\r
-               printf("/HIDDENCARD  Overrides video detection\n\n");\r
-               printf("Each switch must include a '/' and multiple switches\n");\r
-               printf("must be seperated by at least one space.\n\n");\r
-\r
-               exit(0);\r
-       }\r
-\r
-       jabhack();\r
-\r
-       InitGame ();\r
-\r
-       CheckMemory ();\r
-\r
-       LoadLatchMem ();\r
-\r
-#ifdef PROFILE\r
-       NewGame ();\r
-       GameLoop ();\r
-#endif\r
-\r
-//NewGame ();\r
-//GameLoop ();\r
-\r
-       DemoLoop();\r
-       Quit("Demo loop exited???");\r
-}\r