Esempio n. 1
0
//---------------------------------------------------------------------------
// 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);

}
Esempio n. 2
0
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);
}
Esempio n. 3
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???");
}
Esempio n. 4
0
// 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???");
}
Esempio n. 5
0
// 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);
}
Esempio n. 6
0
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);
}
Esempio n. 7
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);
}