void PicturePause (void) { id0_int_t y; id0_unsigned_t source; source = displayofs+panadjust; // VW_ColorBorder (15); VW_SetLineWidth (40); VW_SetScreen (0,0); if (source<0x10000l-200*64) { // // copy top line first // for (y=0;y<200;y++) VW_ScreenToScreen (source+y*64,y*40,40,1); } else { // // copy bottom line first // for (y=199;y>=0;y--) VW_ScreenToScreen (source+y*64,y*40,40,1); } IN_Shutdown (); VW_WaitVBL(70); BE_ST_BiosScanCode(0); VW_WaitVBL(70); Quit (NULL); }
static void WaitForKeyRelease (void) { if (IsKeyPressed()) while (IsKeyPressed()) { BE_ST_BiosScanCode(0); //getch(); } }
void Quit (const id0_char_t *error) { void *finscreen; //id0_unsigned_t finscreen; if (refkeen_current_gamever == BE_GAMEVER_CAT3D100) { if (!error) { CA_SetAllPurge (); CA_CacheGrChunk (PIRACY); finscreen = grsegs[PIRACY]; //finscreen = (id0_unsigned_t)grsegs[PIRACY]; } } ShutdownId (); if (error && *error) { BE_ST_puts(error); BE_ST_HandleExit(1); } if (refkeen_current_gamever == BE_GAMEVER_CAT3D100) { if (!NoWait) { // REFKEEN - Alternative controllers support extern BE_ST_ControllerMapping g_ingame_altcontrol_mapping_inackback; BE_ST_AltControlScheme_PrepareControllerMapping(&g_ingame_altcontrol_mapping_inackback); memcpy(BE_ST_GetTextModeMemoryPtr(), finscreen, 4000); //movedata (finscreen,0,0xb800,0,4000); BE_ST_BiosScanCode (0); BE_ST_clrscr(); } } BE_ST_HandleExit(0); }
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 Quit (const id0_char_t *error, ...) { id0_short_t exit_code=0; #ifndef CATALOG void *finscreen; //id0_unsigned_t finscreen; #endif va_list ap; va_start(ap,error); #ifndef CATALOG if (!error) { CA_SetAllPurge (); CA_CacheGrChunk (PIRACY); finscreen = grsegs[PIRACY]; //finscreen = (id0_unsigned_t)grsegs[PIRACY]; } #endif ShutdownId (); if (error && *error) { BE_ST_vprintf(error,ap); exit_code = 1; } #ifndef CATALOG else if (!NoWait) { memcpy(BE_ST_GetTextModeMemoryPtr(), finscreen, 4000); BE_ST_MarkGfxForUpdate(); //movedata (finscreen,0,0xb800,0,4000); BE_ST_BiosScanCode(0); } #endif va_end(ap); #ifndef CATALOG if (!error) { id0_argc = 2; id0_argv[1] = "LAST.SHL"; id0_argv[2] = "ENDSCN.SCN"; id0_argv[3] = NULL; #if 0 if (execv("LOADSCN.EXE", id0_argv) == -1) { BE_ST_clrscr(); BE_ST_puts("Couldn't find executable LOADSCN.EXE.\n"); BE_ST_HandleExit(1); } #endif void loadscn_exe_main(void); BE_Cross_Bexecv(loadscn_exe_main, id0_argv, NULL, false); } #endif BE_ST_HandleExit(exit_code); }
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); }
void Quit (const id0_char_t *error, ...) { id0_short_t exit_code=0; void *finscreen; //id0_unsigned_t finscreen; va_list ap; va_start(ap,error); if (!error) { CA_SetAllPurge (); if (!refkeen_compat_c4_main_def_catalog) { CA_CacheGrChunk (PIRACY); finscreen = grsegs[PIRACY]; //finscreen = (id0_unsigned_t)grsegs[PIRACY]; } } ShutdownId (); if (error && *error) { BE_ST_vprintf(error,ap); exit_code = 1; } else if (!refkeen_compat_c4_main_def_catalog) { if ((refkeen_current_gamever == BE_GAMEVER_CATABYSS124) || !NoWait) { memcpy(BE_ST_GetTextModeMemoryPtr(), finscreen, 4000); BE_ST_MarkGfxForUpdate(); //movedata (finscreen,0,0xb800,0,4000); if (refkeen_current_gamever == BE_GAMEVER_CATABYSS124) { if (BE_ST_KbHit()) { while (BE_ST_KbHit()) BE_ST_BiosScanCode(0); } } BE_ST_BiosScanCode(0); } } va_end(ap); if (!refkeen_compat_c4_main_def_catalog) { if (!error) { id0_argc = 2; id0_argv[1] = "LAST.SHL"; id0_argv[2] = "ENDSCN.SCN"; id0_argv[3] = NULL; #if 0 if (execv("LOADSCN.EXE", id0_argv) == -1) { BE_ST_clrscr(); BE_ST_puts("Couldn't find executable LOADSCN.EXE.\n"); BE_ST_HandleExit(1); } #endif void loadscn_exe_main(void); BE_Cross_Bexecv(loadscn_exe_main, id0_argv, NULL, false); } } BE_ST_HandleExit(exit_code); }