static void InitGame(void) { #ifndef SPEARDEMO boolean didjukebox=false; #endif /* initialize SDL */ if(LR_Init(0) < 0) exit(1); atexit(LR_Quit); SignonScreen (); VH_Startup (); IN_Startup (); PM_Startup (); SD_Startup (); CA_Startup (); US_Startup (); /* TODO: Will any memory checking be needed someday?? */ /* build some tables */ InitDigiMap (); ReadConfig (); SetupSaveGames(); /* HOLDING DOWN 'M' KEY? */ #ifndef SPEARDEMO if (Keyboard[sc_M]) { DoJukebox(); didjukebox=true; } else #endif /* draw intro screen stuff */ IntroScreen (); /* load in and lock down some basic chunks */ CA_CacheGrChunk(STARTFONT); CA_CacheGrChunk(STATUSBARPIC); LoadLatchMem (); BuildTables (); /* trig tables */ SetupWalls (); NewViewSize (viewsize); /* initialize variables */ InitRedShifts (); #ifndef SPEARDEMO if(!didjukebox) #endif FinishSignon(); }
// The original starting point of the game EXE void cat3d_exe_main (void) { //id0_short_t i; if (refkeen_current_gamever == BE_GAMEVER_CAT3D122) { if (BE_Cross_strcasecmp(id0_argv[1], "/VER") == 0) { BE_ST_printf("Catacomb 3-D version 1.22 (Rev 1)\n"); BE_ST_printf("Copyright 1991-93 Softdisk Publishing\n"); BE_ST_printf("Developed for use with 100%% IBM compatibles\n"); BE_ST_printf("that have 640K memory and DOS version 3.3 or later\n"); BE_ST_printf("and EGA graphics or better.\n"); BE_ST_HandleExit(0); } if (BE_Cross_strcasecmp(id0_argv[1], "/?") == 0) { BE_ST_printf("Catacomb 3-D version 1.22\n"); BE_ST_printf("Copyright 1991-93 Softdisk Publishing\n\n"); BE_ST_printf("Syntax:\n"); BE_ST_printf("CAT3D [/<switch>]\n\n"); BE_ST_printf("Switch What it does\n"); BE_ST_printf("/? This Information\n"); BE_ST_printf("/VER Display Program Version Information\n"); BE_ST_printf("/COMP Fix problems with SVGA screens\n"); BE_ST_printf("/NOAL No AdLib or SoundBlaster detection\n"); BE_ST_printf("/NOJOYS Tell program to ignore joystick\n"); BE_ST_printf("/NOMOUSE Tell program to ignore mouse\n"); BE_ST_printf("/HIDDENCARD Overrides video detection\n\n"); BE_ST_printf("Each switch must include a '/' and multiple switches\n"); BE_ST_printf("must be seperated by at least one space.\n\n"); BE_ST_HandleExit(0); } } // jabhack(); // REFKEEN - Commented out InitGame (); CheckMemory (); LoadLatchMem (); #ifdef PROFILE NewGame (); GameLoop (); #endif //NewGame (); //GameLoop (); DemoLoop(); Quit("Demo loop exited???"); }
// The original starting point of the game EXE void apocgame_exe_main (void) { id0_short_t i; starting_level = 0; for (i = 1;i < id0_argc;i++) { switch (US_CheckParm(id0_argv[i],MainParmStrings)) { case 0: Flags |= FL_QUICK; break; case 1: starting_level = atoi(id0_argv[i]+1); if ((starting_level < 0) || (starting_level > LASTMAP-1)) starting_level = 0; break; case 2: BE_ST_printf("%s\n", GAMENAME); BE_ST_printf("Copyright 1992-93 Softdisk Publishing\n"); BE_ST_printf("%s %s\n",VERSION,REVISION); BE_ST_printf("\n"); BE_ST_HandleExit(0); break; case 3: Flags |= FL_NOMEMCHECK; break; case 4: Flags |= (FL_HELPTEST|FL_QUICK); break; } } // REFKEEN difference from vanilla Catacomb Adventures: // Role of ^(a@&r` for game EXE has been flipped. No need to pass it // (or use start/intro EXE), but if ^(a@&r` is added then you may get some message. if (!BE_Cross_strcasecmp(id0_argv[1], "^(a@&r`")) //if (BE_Cross_strcasecmp(id0_argv[1], "^(a@&r`")) Quit("You must type CATAPOC to run CATACOMB APOCALYPSE\n"); #if 0 MainHelpText.xl = 0; MainHelpText.yl = 0; MainHelpText.xh = 639; MainHelpText.yh = 199; MainHelpText.bgcolor = 7; MainHelpText.ltcolor = 15; MainHelpText.dkcolor = 8; #endif // jabhack(); BE_Cross_Brandomize(); // REFKEEN - Alternative controllers support extern BE_ST_ControllerMapping g_ingame_altcontrol_mapping_inackback; BE_ST_AltControlScheme_PrepareControllerMapping(&g_ingame_altcontrol_mapping_inackback); InitGame (); // CheckMemory (); LoadLatchMem (); // if (!LoadTextFile("MAINHELP."EXT,&MainHelpText)) // Quit("Can't load MAINHELP."EXT); #ifdef PROFILE NewGame (); GameLoop (); #endif DemoLoop(); Quit(NULL); }
// The original starting point of the game EXE void abysgame_exe_main (void) { id0_short_t i; starting_level = 0; for (i = 1;i < id0_argc;i++) { switch (US_CheckParm(id0_argv[i],MainParmStrings)) { case 0: Flags |= FL_QUICK; break; case 1: starting_level = atoi(id0_argv[i]+1); if ((starting_level < 0) || (starting_level > LASTMAP-1)) starting_level = 0; break; case 2: if (refkeen_current_gamever == BE_GAMEVER_CATABYSS113) { BE_ST_printf("%s %s %s\n",GAMENAME,VERSION,REVISION); } else { BE_ST_printf("%s %s rev %s\n",GAMENAME,VERSION,REVISION); } BE_ST_HandleExit(0); break; case 3: Flags |= FL_NOMEMCHECK; break; } } if (!BE_Cross_strcasecmp(id0_argv[1], "^(a@&r`")) LaunchedFromShell = true; // REFKEEN difference from vanilla Catacomb Adventures: // Role of ^(a@&r` for game EXE has been flipped. No need to pass it // (or use start/intro EXE), but if ^(a@&r` is added then you may get some message. if (LaunchedFromShell) //if (!LaunchedFromShell) { BE_ST_clrscr(); if (refkeen_current_gamever == BE_GAMEVER_CATABYSS113) { BE_ST_puts("You must type START at the DOS prompt to run CATACOMB ABYSS."); } else { BE_ST_puts("You must type CATABYSS at the DOS prompt to run CATACOMB ABYSS 3-D."); } BE_ST_HandleExit(0); } BE_Cross_Brandomize(); // REFKEEN - Alternative controllers support extern BE_ST_ControllerMapping g_ingame_altcontrol_mapping_inackback; BE_ST_AltControlScheme_PrepareControllerMapping(&g_ingame_altcontrol_mapping_inackback); InitGame (); LoadLatchMem (); #ifdef PROFILE NewGame (); GameLoop (); #endif DemoLoop(); Quit(NULL); }
//------------------------------------------------------------------------ // InitGame() //------------------------------------------------------------------------ void InitGame (void) { Sint16 i,x,y; Uint16 *blockstart; //long mmsize; MM_Startup (); // so the signon screen can be freed #if IN_DEVELOPMENT || GEORGE_CHEAT || SHOW_CHECKSUM if (MS_CheckParm("checksum")) { ShowChecksums(); MM_Shutdown(); exit(0); } #endif CA_Startup (); // Any problems with this version of the game? // #if IN_DEVELOPMENT || TECH_SUPPORT_VERSION if (!MS_CheckParm("nochex")) #endif #if !SKIP_CHECKSUMS CheckValidity("MAPTEMP.",MAPTEMP_CHECKSUM); #if GAME_VERSION != SHAREWARE_VERSION if (ChecksumFile("FILE_ID.DIZ",0) != DIZFILE_CHECKSUM) gamestate.flags |= GS_BAD_DIZ_FILE; #endif #endif VL_SetVGAPlaneMode (); VL_SetPalette (0,256,vgapal); VW_Startup (); IN_Startup (); PM_Startup (); SD_Startup (); US_Startup (); if (CheckForSpecialCode(POWERBALLTEXT)) #if IN_DEVELOPMENT DebugOk = true; #else PowerBall = true; #endif if (CheckForSpecialCode(TICSTEXT)) gamestate.flags |= GS_TICS_FOR_SCORE; if (CheckForSpecialCode(MUSICTEXT)) gamestate.flags |= GS_MUSIC_TEST; if (CheckForSpecialCode(RADARTEXT)) gamestate.flags |= GS_SHOW_OVERHEAD; #if IN_DEVELOPMENT // // Clear Monocrome // _fmemset(MK_FP(0xb000,0x0000),0,4000); #endif // // build some tables // InitDigiMap (); for (i=0;i<MAPSIZE;i++) { nearmapylookup[i] = &tilemap[0][0]+MAPSIZE*i; farmapylookup[i] = i*64; } for (i=0;i<PORTTILESHIGH;i++) uwidthtable[i] = UPDATEWIDE*i; blockstart = &blockstarts[0]; for (y=0;y<UPDATEHIGH;y++) for (x=0;x<UPDATEWIDE;x++) *blockstart++ = SCREENWIDTH*16*y+x*TILEWIDTH; updateptr = &update[0]; bufferofs = 0; displayofs = 0; ReadConfig (); // // draw intro screen stuff // // if (!(gamestate.flags & GS_QUICKRUN)) // IntroScreen (); // // load in and lock down some basic chunks // LoadFonts(); LoadLatchMem (); BuildTables (); // trig tables SetupWalls (); NewViewSize (); // // initialize variables // InitRedShifts (); }
static void InitGame() { #ifndef SPEARDEMO boolean didjukebox=false; #endif // initialize SDL #if defined _WIN32 putenv("SDL_VIDEODRIVER=directx"); #endif if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { printf("Unable to init SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); int numJoysticks = SDL_NumJoysticks(); if(param_joystickindex && (param_joystickindex < -1 || param_joystickindex >= numJoysticks)) { if(!numJoysticks) printf("No joysticks are available to SDL!\n"); else printf("The joystick index must be between -1 and %i!\n", numJoysticks - 1); exit(1); } #if defined(GP2X_940) GP2X_MemoryInit(); #endif SignonScreen (); #if defined _WIN32 if(!fullscreen) { struct SDL_SysWMinfo wmInfo; SDL_VERSION(&wmInfo.version); if(SDL_GetWMInfo(&wmInfo) != -1) { HWND hwndSDL = wmInfo.window; DWORD style = GetWindowLong(hwndSDL, GWL_STYLE) & ~WS_SYSMENU; SetWindowLong(hwndSDL, GWL_STYLE, style); SetWindowPos(hwndSDL, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); } } #endif VW_UpdateScreen(); VH_Startup (); IN_Startup (); PM_Startup (); SD_Startup (); CA_Startup (); US_Startup (); // TODO: Will any memory checking be needed someday?? #ifdef NOTYET #ifndef SPEAR if (mminfo.mainmem < 235000L) #else if (mminfo.mainmem < 257000L && !MS_CheckParm("debugmode")) #endif { byte *screen; CA_CacheGrChunk (ERRORSCREEN); screen = grsegs[ERRORSCREEN]; ShutdownId(); /* memcpy((byte *)0xb8000,screen+7+7*160,17*160); gotoxy (1,23);*/ exit(1); } #endif // // build some tables // InitDigiMap (); ReadConfig (); SetupSaveGames(); // // HOLDING DOWN 'M' KEY? // IN_ProcessEvents(); #ifndef SPEARDEMO if (Keyboard[sc_M]) { DoJukebox(); didjukebox=true; } else #endif // // draw intro screen stuff // IntroScreen (); #ifdef _arch_dreamcast //TODO: VMU Selection Screen #endif // // load in and lock down some basic chunks // CA_CacheGrChunk(STARTFONT); CA_CacheGrChunk(STATUSBARPIC); LoadLatchMem (); BuildTables (); // trig tables SetupWalls (); NewViewSize (viewsize); // // initialize variables // InitRedShifts (); #ifndef SPEARDEMO if(!didjukebox) #endif FinishSignon(); #ifdef NOTYET vdisp = (byte *) (0xa0000+PAGE1START); vbuf = (byte *) (0xa0000+PAGE2START); #endif }