void frontstory_load(void) { wait_for_cd_to_be_available(); frontend_load_data_from_cd(); if (LbDataLoadAll(frontstory_load_files_640)) { ERRORLOG("Unable to Load FRONT STORY FILES"); } else { LbDataLoadSetModifyFilenameFunction(_DK_mdlf_default); LbSpriteSetupAll(frontstory_setup_sprites); LbPaletteSet(frontend_palette); srand(LbTimerClock()); frontstory_text_no = GUIStr_EasterPoems + rand() % 26; } }
void fronttorture_load(void) { struct PlayerInfo *player; char *fname; unsigned char *ptr; long i,k; wait_for_cd_to_be_available(); frontend_load_data_from_cd(); memcpy(frontend_backup_palette, &frontend_palette, PALETTE_SIZE); // Texture blocks memory isn't used here, so reuse it instead of allocating ptr = block_mem; // Load RAW/PAL background fname = prepare_file_path(FGrp_LoData,"torture.raw"); torture_background = ptr; i = LbFileLoadAt(fname, ptr); ptr += i; fname = prepare_file_path(FGrp_LoData,"torture.pal"); torture_palette = ptr; i = LbFileLoadAt(fname, ptr); ptr += i; // Load DAT/TAB sprites for doors k = 0; { fname = prepare_file_fmtpath(FGrp_LoData,"door%02d.dat",k+1); i = LbFileLoadAt(fname, ptr); doors[k].data = ptr; ptr += i; doors[k].data_end = ptr; fname = prepare_file_fmtpath(FGrp_LoData,"door%02d.tab",k+1); i = LbFileLoadAt(fname, ptr); doors[k].sprites = (struct TbSprite *)ptr; ptr += i; doors[k].sprites_end =(struct TbSprite *) ptr; } ptr = &game.land_map_start; for (k=1; k < 8; k++) { fname = prepare_file_fmtpath(FGrp_LoData,"door%02d.dat",k+1); i = LbFileLoadAt(fname, ptr); doors[k].data = ptr; ptr += i; doors[k].data_end = ptr; fname = prepare_file_fmtpath(FGrp_LoData,"door%02d.tab",k+1); i = LbFileLoadAt(fname, ptr); doors[k].sprites = (struct TbSprite *)ptr; ptr += i; doors[k].sprites_end = (struct TbSprite *)ptr; } ptr = poly_pool; k = 8; { fname = prepare_file_fmtpath(FGrp_LoData,"door%02d.dat",k+1); i = LbFileLoadAt(fname, ptr); doors[k].data = ptr; ptr += i; doors[k].data_end = ptr; fname = prepare_file_fmtpath(FGrp_LoData,"door%02d.tab",k+1); i = LbFileLoadAt(fname, ptr); doors[k].sprites = (struct TbSprite *)ptr; ptr += i; doors[k].sprites_end = (struct TbSprite *)ptr; } if ( LbDataLoadAll(torture_load_files) ) ERRORLOG("Unable to load torture load files"); LbSpriteSetupAll(setup_torture_sprites); frontend_load_data_reset(); memcpy(&frontend_palette, torture_palette, PALETTE_SIZE); torture_state.action = 0; torture_door_selected = -1; torture_end_sprite = -1; torture_sprite_direction = 0; LbMemorySet(door_sound_state, 0, TORTURE_DOORS_COUNT*sizeof(struct DoorSoundState)); player = get_my_player(); if (player->victory_state == VicS_WonLevel) { LbMouseChangeSpriteAndHotspot(&fronttor_sprites[1], 0, 0); } else { LbMouseChangeSpriteAndHotspot(0, 0, 0); } torture_left_button = 0; }
short setup_screen_mode_minimal(unsigned short nmode) { unsigned int flg_mem; TbScreenModeInfo *mdinfo; SYNCDBG(4,"Setting up mode %d",(int)nmode); if (!force_video_mode_reset) { if ((nmode == lbDisplay.ScreenMode) && (MinimalResolutionSetup)) return 1; } flg_mem = lbDisplay.DrawFlags; if (LbGraphicsScreenHeight() < 200) { WARNLOG("Unhandled previous Screen Mode %d, Reset skipped",(int)lbDisplay.ScreenMode); } else if (LbGraphicsScreenHeight() < 400) { if (MinimalResolutionSetup) { if ((nmode != lbDisplay.ScreenMode) || (force_video_mode_reset)) LbScreenReset(); LbDataFreeAll(mcga_load_files_minimal); MinimalResolutionSetup = 0; } else { reset_eye_lenses(); reset_heap_manager(); reset_heap_memory(); set_pointer_graphic_none(); unload_pointer_file(0); if ((nmode != lbDisplay.ScreenMode) || (force_video_mode_reset)) LbScreenReset(); LbDataFreeAll(mcga_load_files); } } else { if (MinimalResolutionSetup) { set_pointer_graphic_none(); unload_pointer_file(1); if ((nmode != lbDisplay.ScreenMode) || (force_video_mode_reset)) LbScreenReset(); LbDataFreeAll(vres256_load_files_minimal); MinimalResolutionSetup = 0; } else { reset_eye_lenses(); reset_heap_manager(); reset_heap_memory(); if ((nmode != lbDisplay.ScreenMode) || (force_video_mode_reset)) LbScreenReset(); LbDataFreeAll(vres256_load_files); } } mdinfo = LbScreenGetModeInfo(nmode); if (mdinfo->Height < 200) { ERRORLOG("Unhandled Screen Mode %d, setup failed",(int)nmode); force_video_mode_reset = true; return 0; } else if (mdinfo->Height < 400) { SYNCDBG(17,"Preparing minimal low resolution mode"); MinimalResolutionSetup = 1; if ( !LoadMcgaDataMinimal() ) { ERRORLOG("Unable to load minimal MCGA files"); return 0; } if ((nmode != lbDisplay.ScreenMode) || (force_video_mode_reset)) { if (LbScreenSetup((TbScreenMode)nmode, mdinfo->Width, mdinfo->Height, engine_palette, 2, 0) != 1) { ERRORLOG("Unable to setup screen resolution %s (mode %d)", mdinfo->Desc,(int)nmode); force_video_mode_reset = true; return 0; } } } else { SYNCDBG(17,"Preparing minimal high resolution mode"); MinimalResolutionSetup = 1; frontend_load_data_from_cd(); if ( LbDataLoadAll(vres256_load_files_minimal) ) { ERRORLOG("Unable to load vres256_load_files_minimal files"); force_video_mode_reset = true; return 0; } frontend_load_data_reset(); if ((nmode != lbDisplay.ScreenMode) || (force_video_mode_reset)) { if (LbScreenSetup((TbScreenMode)nmode, mdinfo->Width, mdinfo->Height, engine_palette, 1, 0) != 1) { ERRORLOG("Unable to setup screen resolution %s (mode %d)", mdinfo->Desc,(int)nmode); force_video_mode_reset = true; return 0; } } } LbScreenClear(0); LbScreenSwap(); update_screen_mode_data(mdinfo->Width, mdinfo->Height); lbDisplay.DrawFlags = flg_mem; force_video_mode_reset = false; return 1; }