// 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???"); }
void InitGame() { MM_Startup(); id0_int_t i; /*#if 0 // Handle piracy screen... // movedata(FP_SEG(PIRACY),(id0_unsigned_t)PIRACY,0xb800,displayofs,4000); while (BE_ST_BiosScanCode(0) != sc_Return); //while ((bioskey(0)>>8) != sc_Return); #endif*/ #if GRMODE == EGAGR if (mminfo.mainmem < 335l*1024) { //#pragma warn -pro //#pragma warn -nod #ifdef REFKEEN_VER_KDREAMS_CGA_ALL BE_ST_textcolor(7); #endif #ifndef REFKEEN_VER_KDREAMS_CGA_ALL if (refkeen_current_gamever == BE_GAMEVER_KDREAMSE113) #endif { BE_ST_textbackground(0); } //#pragma warn +nod //#pragma warn +pro BE_ST_clrscr(); // we can't include CONIO because of a name conflict //#pragma warn +nod //#pragma warn +pro BE_ST_puts ("There is not enough memory available to play the game reliably. You can"); BE_ST_puts ("play anyway, but an out of memory condition will eventually pop up. The"); BE_ST_puts ("correct solution is to unload some TSRs or rename your CONFIG.SYS and"); BE_ST_puts ("AUTOEXEC.BAT to free up more memory.\n"); BE_ST_puts ("Do you want to (Q)uit, or (C)ontinue?"); //i = bioskey (0); //if ( (i>>8) != sc_C) i = BE_ST_BiosScanCode (0); if (i != sc_C) Quit (""); } #endif US_TextScreen(); VW_Startup (); RF_Startup (); IN_Startup (); SD_Startup (); US_Startup (); #ifdef REFKEEN_VER_KDREAMS_CGA_ALL US_UpdateTextScreen(); #endif CA_Startup (); US_Setup (); // // load in and lock down some basic chunks // CA_ClearMarks (); CA_MarkGrChunk(STARTFONT); CA_MarkGrChunk(STARTFONTM); CA_MarkGrChunk(STARTTILE8); CA_MarkGrChunk(STARTTILE8M); for ( id0_int_t j=KEEN_LUMP_START ; j<=KEEN_LUMP_END ; j++) { CA_MarkGrChunk(j); } #ifdef REFKEEN_VER_KDREAMS_CGA_ALL CA_CacheMarks (NULL); #elif defined REFKEEN_VER_KDREAMS_ANYEGA_ALL CA_CacheMarks (NULL, 0); #endif MM_SetLock (&grsegs[STARTFONT],true); MM_SetLock (&grsegs[STARTFONTM],true); MM_SetLock (&grsegs[STARTTILE8],true); MM_SetLock (&grsegs[STARTTILE8M],true); for ( id0_int_t j=KEEN_LUMP_START ; j<=KEEN_LUMP_END ; j++) { MM_SetLock (&grsegs[j],true); } setupAudio(); fontcolor = WHITE; RefKeen_FillObjStatesWithDOSPointers(); // Saved games compatibility US_FinishTextScreen(); }
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); }