//--------------------------------------------------------------------------- // WritePtr() -- Outputs data to a particular ptr type // // PtrType MUST be of type DEST_TYPE. // // NOTE : For PtrTypes DEST_MEM a ZERO (0) is always returned. // //--------------------------------------------------------------------------- id0_char_t WritePtr(void **outfile, id0_unsigned_char_t data, id0_unsigned_t PtrType) { id0_int_t returnval = 0; switch (PtrType & DEST_TYPES) { case DEST_FILE: // REFKEEN: Actually DEST_FFILE but done for compatibility returnval = BE_Cross_putc(data, *(BE_FILE_T *)outfile); //write(*(int *)outfile,(id0_char_t *)&data,1); break; case DEST_FFILE: returnval = putc(data, *(FILE **)outfile); break; case DEST_IMEM: BE_ST_printf("WritePtr - unsupported ptr type\n"); BE_ST_HandleExit(0); break; case DEST_MEM: //*((id0_char_t id0_far *)*(id0_char_t id0_far **)outfile)++ = data; { id0_char_t **ptrptr = (id0_char_t **)outfile; *((*ptrptr)++) = data; } break; } return(returnval); }
static void show_command_line_help() { char gameverstrbuffer[80] = ""; char *gameverstrptr = gameverstrbuffer, *gameverstrend = gameverstrbuffer + sizeof(gameverstrbuffer); for (int gameVerVal = 0; gameVerVal < BE_GAMEVER_LAST; ++gameVerVal) { if (gameVerVal < BE_GAMEVER_LAST-1) gameverstrptr = BE_Cross_safeandfastcstringcopy_2strs(gameverstrptr, gameverstrend, refkeen_gamever_strs[gameVerVal], ", "); else gameverstrptr = BE_Cross_safeandfastcstringcopy(gameverstrptr, gameverstrend, refkeen_gamever_strs[gameVerVal]); } // HACK - For text mode emulation (and exit handler) BE_ST_PrepareForGameStartupWithoutAudio(); BE_ST_puts("*** " REFKEEN_TITLE_AND_VER_STRING " - Command line arguments ***"); BE_ST_puts(""); #ifdef REFKEEN_ENABLE_LAUNCHER BE_ST_puts("Launcher is started unless any command line argument is passed."); BE_ST_puts(""); #endif BE_ST_puts("List of possible command line arguments:"); BE_ST_puts("-gamever <VER>: Select game version supported by this executable."); #ifdef REFKEEN_VER_CATADVENTURES BE_ST_puts("-skipintro: Skip what is found in the original intro EXE and start game."); #ifdef REFKEEN_VER_CATABYSS BE_ST_puts("-showslides: Show the electronic catalog / hint book."); #else BE_ST_puts("-showslides: Show the hint book."); #endif #endif BE_ST_puts("-passorigargs <...>: Pass all following arguments to the original game port."); BE_ST_puts("-datadir <...>: Specify an alternative path for game data (separated by ver.)."); BE_ST_puts("-cfgdir <...>: Specify an alternative path for new cfg files (not old CONFIG)."); #ifdef REFKEEN_ENABLE_LAUNCHER BE_ST_puts("-fulllauncher: Show a fullscreen launcher window."); BE_ST_puts("-softlauncher: Show a software-rendered launcher window (not fullscreen)."); #endif BE_ST_puts(""); BE_ST_puts("Note: The path passed to -datadir or -cfgdir is assumed to exist."); BE_ST_puts(""); BE_ST_puts("Supported game versions:"); BE_ST_printf("%s\n", gameverstrbuffer); BE_ST_HandleExit(0); }
// 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 kdreams_exe_main (void) { #if (!defined REFKEEN_VER_KDREAMS_CGA_ALL) || (!defined CATALOG) id0_boolean_t LaunchedFromShell = false; id0_short_t i; #endif #ifdef REFKEEN_VER_KDREAMS_CGA_ALL BE_ST_textcolor(7); BE_ST_textbackground(0); if (BE_Cross_strcasecmp(id0_argv[1], "/VER") == 0) { BE_ST_printf("KEEN DREAMS\n"); BE_ST_printf("CGA Version\n"); BE_ST_printf("Copyright 1991-93 Softdisk Publishing\n"); BE_ST_printf("Version 1.05 (rev 1)\n"); BE_ST_HandleExit(0); } if (BE_Cross_strcasecmp(id0_argv[1], "/?") == 0) { BE_ST_printf("\nKeen Dreams CGA version 1.05\n"); BE_ST_printf("Copyright 1991-1993 Softdisk Publishing.\n\n"); BE_ST_printf("Commander Keen is a trademark of Id Software.\n"); BE_ST_printf("Type KDREAMS from the DOS prompt to run.\n\n"); BE_ST_printf("KDREAMS /COMP for SVGA compatibility mode\n"); BE_ST_printf("KDREAMS /NODR stops program hang with the drive still on\n"); BE_ST_printf("KDREAMS /NOAL disables AdLib and Sound Blaster detection\n"); BE_ST_printf("KDREAMS /NOSB disables Sound Blaster detection\n"); BE_ST_printf("KDREAMS /NOJOYS ignores joystick\n"); BE_ST_printf("KDREAMS /NOMOUSE ignores mouse\n"); BE_ST_printf("KDREAMS /HIDDENCARD overrides video card detection\n"); BE_ST_printf("KDREAMS /VER for version and compatibility information\n"); BE_ST_printf("KDREAMS /? for this help information\n"); BE_ST_HandleExit(0); } #endif // VERSION // REFKEEN - The code is also in CGA v1.05 but LaunchedFromShell is ignored (while CATALOG is defined)... #if (!defined REFKEEN_VER_KDREAMS_CGA_ALL) || (!defined CATALOG) #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if (refkeen_current_gamever == BE_GAMEVER_KDREAMSE113) #endif { for (i = 1;i < id0_argc;i++) { switch (US_CheckParm(id0_argv[i],EntryParmStrings)) { case 0: LaunchedFromShell = true; break; } } } #endif #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if (refkeen_current_gamever == BE_GAMEVER_KDREAMSE193) { if (BE_Cross_strcasecmp(id0_argv[1], "/VER") == 0) { BE_ST_printf("\nKeen Dreams version 1.93 (Rev 1)\n"); BE_ST_printf("developed for use with 100%% IBM compatibles\n"); BE_ST_printf("that have 640K memory, DOS version 3.3 or later,\n"); BE_ST_printf("and an EGA or VGA display adapter.\n"); BE_ST_printf("Copyright 1991-1993 Softdisk Publishing.\n"); BE_ST_printf("Commander Keen is a trademark of Id Software.\n"); BE_ST_HandleExit(0); } if (BE_Cross_strcasecmp(id0_argv[1], "/?") == 0) { BE_ST_printf("\nKeen Dreams version 1.93\n"); BE_ST_printf("Copyright 1991-1993 Softdisk Publishing.\n\n"); BE_ST_printf("Commander Keen is a trademark of Id Software.\n"); BE_ST_printf("Type KDREAMS from the DOS prompt to run.\n\n"); BE_ST_printf("KDREAMS /COMP for SVGA compatibility mode\n"); BE_ST_printf("KDREAMS /NODR stops program hang with the drive still on\n"); BE_ST_printf("KDREAMS /NOAL disables AdLib and Sound Blaster detection\n"); BE_ST_printf("KDREAMS /NOSB disables Sound Blaster detection\n"); BE_ST_printf("KDREAMS /NOJOYS ignores joystick\n"); BE_ST_printf("KDREAMS /NOMOUSE ignores mouse\n"); BE_ST_printf("KDREAMS /HIDDENCARD overrides video card detection\n"); BE_ST_printf("KDREAMS /VER for version and compatibility information\n"); BE_ST_printf("KDREAMS /? for this help information\n"); BE_ST_HandleExit(0); } } #endif // VERSION #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if (refkeen_current_gamever == BE_GAMEVER_KDREAMSE120) { for (i = 1;i < id0_argc;i++) { switch (US_CheckParm(id0_argv[i],EntryParmStrings)) { case 0: LaunchedFromShell = true; break; } if (BE_Cross_strcasecmp(id0_argv[i], "/VER") == 0) { BE_ST_printf("\nKeen Dreams Shareware Version 1.20 (Rev 1)\n"); BE_ST_printf("developed for use with 100%% IBM compatibles\n"); BE_ST_printf("that have 640K memory, DOS version 3.3 or later,\n"); BE_ST_printf("and an EGA or VGA display adapter.\n"); BE_ST_printf("Copyright 1991-1993 Softdisk Publishing.\n"); BE_ST_printf("Commander Keen is a trademark of Id Software.\n"); BE_ST_HandleExit(0); } if (BE_Cross_strcasecmp(id0_argv[i], "/?") == 0) { BE_ST_printf("\nKeen Dreams Shareware Version 1.20\n"); BE_ST_printf("Copyright 1991-1993 Softdisk Publishing.\n\n"); BE_ST_printf("Commander Keen is a trademark of Id Software.\n"); BE_ST_printf("Type KDREAMS from the DOS prompt to run.\n\n"); BE_ST_printf("KDREAMS /COMP for SVGA compatibility mode\n"); BE_ST_printf("KDREAMS /NODR stops program hang with the drive still on\n"); BE_ST_printf("KDREAMS /NOAL disables AdLib and Sound Blaster detection\n"); BE_ST_printf("KDREAMS /NOSB disables Sound Blaster detection\n"); BE_ST_printf("KDREAMS /NOJOYS ignores joystick\n"); BE_ST_printf("KDREAMS /NOMOUSE ignores mouse\n"); BE_ST_printf("KDREAMS /HIDDENCARD overrides video card detection\n"); BE_ST_printf("KDREAMS /VER for version and compatibility information\n"); BE_ST_printf("KDREAMS /? for this help information\n"); BE_ST_HandleExit(0); } } } #endif #if (!defined REFKEEN_VER_KDREAMS_CGA_ALL) || (!defined CATALOG) #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if ((refkeen_current_gamever == BE_GAMEVER_KDREAMSE113) || (refkeen_current_gamever == BE_GAMEVER_KDREAMSE120)) #endif { // REFKEEN difference from vanilla Keen Dreams (Shareware releases): // Role of /DETOUR has been flipped. No need to pass it (or use START), // but if /DETOUR is added then you get this message. if (LaunchedFromShell) //if (!LaunchedFromShell) { BE_ST_clrscr(); BE_ST_puts("You must type START at the DOS prompt to run KEEN DREAMS."); BE_ST_HandleExit(0); } } #endif #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if (refkeen_current_gamever != BE_GAMEVER_KDREAMSE113) { BE_ST_textcolor(7); BE_ST_textbackground(0); } #endif InitGame(); DemoLoop(); // DemoLoop calls Quit when everything is done 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); }
void loadscn_exe_main (void) { id0_int_t step; id0_boolean_t pressedkey = false; if (!BE_Cross_strcasecmp(id0_argv[1], "/?")) { BE_ST_clrscr(); BE_ST_textcolor(15); BE_ST_textbackground(1); BE_ST_cprintf("\xD5\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB8\r\n"); BE_ST_cprintf("\xB3 LOADSCN \xB3\r\n"); BE_ST_cprintf("\xB3 by Nolan Martin \xB3\r\n"); BE_ST_cprintf("\xB3 Copyright 1992 - Softdisk Publishing \xB3\r\n"); BE_ST_cprintf("\xD4\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBE\r\n"); BE_ST_printf("\n"); BE_ST_printf("/VER - version number\n"); BE_ST_printf("/? - this help\n"); BE_ST_HandleExit(0); } if (!BE_Cross_strcasecmp(id0_argv[1], "/VER")) { BE_ST_clrscr(); BE_ST_textcolor(15); BE_ST_textbackground(1); BE_ST_cprintf("\xD5\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB8\r\n"); BE_ST_cprintf("\xB3 LOADSCN \xB3\r\n"); BE_ST_cprintf("\xB3 by Nolan Martin \xB3\r\n"); BE_ST_cprintf("\xB3 Copyright 1992 - Softdisk Publishing \xB3\r\n"); BE_ST_cprintf("\xD4\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBE\r\n"); BE_ST_printf("\n"); BE_ST_printf("%s %s\n", "LOADSCN ", " VERSION 1.10s QA[0]"); BE_ST_printf("\n"); BE_ST_printf("This program requires an EGA monitor or better,\n"); BE_ST_printf(" 640K, and MS-DOS 3.0 or better.\n"); BE_ST_HandleExit(0); } if (BE_Cross_strcasecmp(id0_argv[1], "LAST.SHL")) TrashProg("You must type START [ENTER] to run this program.\n"); videocard = VideoID(); if ((videocard != 3) && (videocard != 5)) TrashProg("You need an EGA or VGA monitor to run this program."); screenmode = 3; SetScreenMode(screenmode); SetScreen(0,0); if (ext_LoadShape("ARMAPC.ABS", &imagetoshow)) TrashProg("ERROR : Can't load image."); ext_MoveGfxDst(0, 200); UnpackEGAShapeToScreen(&imagetoshow, 0, 0); // REFKEEN - Alternative controllers support extern BE_ST_ControllerMapping g_ingame_altcontrol_mapping_inackback; BE_ST_AltControlScheme_PrepareControllerMapping(&g_ingame_altcontrol_mapping_inackback); // (REFKEEN) Add an artificial delay (screen not shown immediately on older machines) BE_ST_Delay(250); ScreenToScreen(8000, 0, 40, 200); for (step = 0; step < 10; ++step) { BE_ST_Delay(500); if (IsKeyPressed()) { pressedkey = true; WaitForKeyRelease(); } } if (!pressedkey) BE_ST_BiosScanCode(0); if (!ext_BLoad("LAST.ABS", &endscreen)) TrashProg("Can't load Compressed Text - Possibly corrupt file!"); screenmode = 1; SetScreenMode(screenmode); memcpy(BE_ST_GetTextModeMemoryPtr(), (id0_byte_t *)endscreen+7, 4000); BE_ST_MarkGfxForUpdate(); //_fmemcpy(MK_FP(0xB800,0), (byte far *)endscreen+7, 4000); BE_ST_MoveTextCursorTo(0, 23); // gotoxy(1, 24) BE_ST_HandleExit(0); }
// 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); }