void VW_SetScreenMode (id0_int_t grmode) { switch (grmode) { case TEXTGR: BE_ST_SetScreenMode(3); screenseg=BE_ST_GetTextModeMemoryPtr(); break; case CGAGR: BE_ST_SetScreenMode(4); // screenseg is actually a main mem buffer break; case EGAGR: BE_ST_SetScreenMode(0xd); // REFKEEN no need to obtain screenseg // - different EGA planes are accessed with new functions break; #ifdef VGAGAME case VGAGR:{ id0_char_t extern VGAPAL; // deluxepaint vga pallet .OBJ file void id0_far *vgapal = &VGAPAL; SetCool256 (); // custom 256 color mode screenseg=0xa000; _ES = FP_SEG(vgapal); _DX = FP_OFF(vgapal); _BX = 0; _CX = 0x100; _AX = 0x1012; geninterrupt(0x10); // set the deluxepaint pallet break; #endif } VW_SetLineWidth(SCREENWIDTH); } /* ============================================================================= SCREEN FADES ============================================================================= */ id0_char_t colors[7][17]= {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,0}, {0,0,0,0,0,0,0,0,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0}, {0,1,2,3,4,5,6,7,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0}, {0,1,2,3,4,5,6,7,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0}, {0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f}}; // REFKEEN - Patch for 2015 port static id0_char_t fakecgacolors[17] = {0,0x1b,0x1d,0x1f,0,0x1b,0x1d,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0}; void VW_ColorBorder (id0_int_t color) { BE_ST_SetBorderColor(color); bordercolor = color; }
void CheckMemory(void) { id0_byte_t *finscreen; //id0_unsigned_t finscreen; if (mminfo.nearheap+mminfo.farheap+mminfo.EMSmem+mminfo.XMSmem >= MINMEMORY) return; CA_CacheGrChunk (OUTOFMEM); finscreen = (id0_byte_t *)grsegs[OUTOFMEM]; //finscreen = (id0_unsigned_t)grsegs[OUTOFMEM]; ShutdownId (); memcpy(BE_ST_GetTextModeMemoryPtr(), finscreen+7, 4000); //movedata (finscreen,7,0xb800,0,4000); BE_ST_MoveTextCursorTo(0, 23); //gotoxy (1,24); BE_ST_HandleExit(1); }
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 VW_SetScreenMode (id0_int_t grmode) { switch (grmode) { case TEXTGR: BE_ST_SetScreenMode(3); screenseg=BE_ST_GetTextModeMemoryPtr(); break; case CGAGR: BE_ST_SetScreenMode(4); // screenseg is actually a main mem buffer break; case EGAGR: #ifdef REFKEEN_VER_CATADVENTURES case EGA320GR: // MDM start (GAMERS EDGE) MaxX=320; MaxY=200; #endif BE_ST_SetScreenMode(0xd/*|128 for EGA320GR, MDM*/); // REFKEEN no need to obtain screenseg // - different EGA planes are accessed with new functions break; #ifdef REFKEEN_VER_CATADVENTURES case EGA640GR: MaxX=640; MaxY=200; BE_ST_SetScreenMode(0xe/*|128*/); // REFKEEN no need to obtain screenseg // - different EGA planes are accessed with new functions break; // MDM end #endif #ifdef VGAGAME case VGAGR:{ id0_char_t extern VGAPAL; // deluxepaint vga pallet .OBJ file void id0_far *vgapal = &VGAPAL; SetCool256 (); // custom 256 color mode screenseg=0xa000; _ES = FP_SEG(vgapal); _DX = FP_OFF(vgapal); _BX = 0; _CX = 0x100; _AX = 0x1012; geninterrupt(0x10); // set the deluxepaint pallet break; #endif } VW_SetLineWidth(SCREENWIDTH); } /* ============================================================================= SCREEN FADES ============================================================================= */ id0_char_t colors[7][17]= {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,0}, {0,0,0,0,0,0,0,0,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0}, {0,1,2,3,4,5,6,7,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0}, {0,1,2,3,4,5,6,7,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0}, {0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f}}; void VW_ColorBorder (id0_int_t color) { BE_ST_SetBorderColor(color); bordercolor = color; }
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); }