diff --git a/libultraship/libultraship/SohImGuiImpl.cpp b/libultraship/libultraship/SohImGuiImpl.cpp index ab967cbca..5ea017173 100644 --- a/libultraship/libultraship/SohImGuiImpl.cpp +++ b/libultraship/libultraship/SohImGuiImpl.cpp @@ -817,7 +817,12 @@ namespace SohImGui { { EnhancementCheckbox("OoT Debug Mode", "gDebugEnabled"); Tooltip("Enables Debug Mode, allowing you to select maps with L + R + Z, noclip with L + D-pad Right,\nand open the debug menu with L on the pause screen"); - ImGui::Separator(); + EnhancementCheckbox("Fast File Select", "gSkipLogoTitle"); + Tooltip("Directly load the game to selected slot bellow\nUse slot number 4 to load directly in Zelda Map Select\n(Do not require debug menu but you will be unable to save there)\n(you can also load Zelda map select with Debug mod + slot 0).\nWith Slot : 0 you can go directly in File Select menu\nAttention, Loading an empty save will result in crash"); + if (CVar_GetS32("gSkipLogoTitle",0)) { + EnhancementSliderInt("Loading %d", "##SaveFileID", "gSaveFileID", 0, 4, ""); + } + ImGui::Separator(); EnhancementCheckbox("Stats", "gStatsEnabled"); Tooltip("Shows the stats window, with your FPS and frametimes, and the OS you're playing on"); EnhancementCheckbox("Console", "gConsoleEnabled"); diff --git a/soh/src/overlays/gamestates/ovl_title/z_title.c b/soh/src/overlays/gamestates/ovl_title/z_title.c index 18996f15e..c2657f345 100644 --- a/soh/src/overlays/gamestates/ovl_title/z_title.c +++ b/soh/src/overlays/gamestates/ovl_title/z_title.c @@ -222,6 +222,72 @@ void Title_Draw(TitleContext* this) { void Title_Main(GameState* thisx) { TitleContext* this = (TitleContext*)thisx; + if (CVar_GetS32("gSkipLogoTitle",0)!=0) { + gSaveContext.language = CVar_GetS32("gLanguages", 0); + Sram_InitSram(&this->state, &this->sramCtx); + s16 selectedfile = CVar_GetS32("gSaveFileID", 0); + if (selectedfile == 4) { + selectedfile = 0xFF; + } else if(selectedfile == 0){ + gSaveContext.fileNum = selectedfile; + gSaveContext.gameMode = 0; + this->state.running = false; + SET_NEXT_GAMESTATE(&this->state, FileChoose_Init, SelectContext); + return; + } else { + selectedfile--; + if (selectedfile < 0) { + selectedfile = 0xFF; + } + } + if (selectedfile == 0xFF) { + gSaveContext.fileNum = selectedfile; + Sram_OpenSave(&this->sramCtx); + gSaveContext.gameMode = 0; + this->state.running = false; + SET_NEXT_GAMESTATE(&this->state, Select_Init, SelectContext); + } else { + gSaveContext.fileNum = selectedfile; + Sram_OpenSave(&this->sramCtx); + gSaveContext.gameMode = 0; + this->state.running = false; + //return; + SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext); + } + gSaveContext.respawn[0].entranceIndex = -1; + gSaveContext.respawnFlag = 0; + gSaveContext.seqId = (u8)NA_BGM_DISABLED; + gSaveContext.natureAmbienceId = 0xFF; + gSaveContext.showTitleCard = true; + gSaveContext.dogParams = 0; + gSaveContext.timer1State = 0; + gSaveContext.timer2State = 0; + gSaveContext.eventInf[0] = 0; + gSaveContext.eventInf[1] = 0; + gSaveContext.eventInf[2] = 0; + gSaveContext.eventInf[3] = 0; + gSaveContext.unk_13EE = 0x32; + gSaveContext.nayrusLoveTimer = 0; + gSaveContext.healthAccumulator = 0; + gSaveContext.unk_13F0 = 0; + gSaveContext.unk_13F2 = 0; + gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX; + gSaveContext.skyboxTime = 0; + gSaveContext.nextTransition = 0xFF; + gSaveContext.nextCutsceneIndex = 0xFFEF; + gSaveContext.cutsceneTrigger = 0; + gSaveContext.chamberCutsceneNum = 0; + gSaveContext.nextDayTime = 0xFFFF; + gSaveContext.unk_13C3 = 0; + gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] = gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[4] = BTN_ENABLED; + gSaveContext.unk_13E7 = gSaveContext.unk_13E8 = gSaveContext.unk_13EA = gSaveContext.unk_13EC = gSaveContext.unk_13F4 = 0; + gSaveContext.unk_13F6 = gSaveContext.magic; + gSaveContext.magic = 0; + gSaveContext.magicLevel = gSaveContext.magic; + gSaveContext.naviTimer = 0; + return; + } + OPEN_DISPS(this->state.gfxCtx, "../z_title.c", 494); gSPSegment(POLY_OPA_DISP++, 0, NULL);