Rename save delay and always spawn at clock town for pause saves (#456)

This commit is contained in:
Garrett Cox 2024-05-22 20:18:07 -05:00 committed by GitHub
parent cfdaac588b
commit 7314531c03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 10 deletions

View File

@ -409,9 +409,13 @@ void DrawEnhancementsMenu() {
{ .tooltip = "Playing the Song Of Time will not reset the Sword back to Kokiri Sword." }); { .tooltip = "Playing the Song Of Time will not reset the Sword back to Kokiri Sword." });
UIWidgets::CVarCheckbox("Do not reset Rupees", "gEnhancements.Cycle.DoNotResetRupees", UIWidgets::CVarCheckbox("Do not reset Rupees", "gEnhancements.Cycle.DoNotResetRupees",
{ .tooltip = "Playing the Song Of Time will not reset the your rupees." }); { .tooltip = "Playing the Song Of Time will not reset the your rupees." });
UIWidgets::CVarSliderInt("Save Delay", "gEnhancements.Save.SaveDelay", 0, 5, 0, ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(255, 255, 0, 255));
{ .tooltip = "Sets the delay between pressing save and the save being marked as " ImGui::SeparatorText("Unstable");
"complete. Original game was 2." }); ImGui::PopStyleColor();
UIWidgets::CVarCheckbox(
"Disable Save Delay", "gEnhancements.Save.DisableSaveDelay",
{ .tooltip = "Removes the arbitrary 2 second timer for saving from the original game. This is known to "
"cause issues when attempting the 0th Day Glitch" });
ImGui::EndMenu(); ImGui::EndMenu();
} }

View File

@ -1996,9 +1996,8 @@ void Sram_UpdateWriteToFlashDefault(SramContext* sramCtx) {
} }
} }
} else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >= } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >=
SECONDS_TO_TIMER(CVarGetInteger( SECONDS_TO_TIMER(CVarGetInteger("gEnhancements.Save.DisableSaveDelay", 0) ? 0 : 2)) {
"gEnhancements.Save.SaveDelay", // 2S2H [Port] Some tricks require a save delay so we can't just force it to zero
0))) { // 2S2H [Port] Some tricks require a save delay so we can't just force it to zero
// Finished status is hardcoded to 2 seconds instead of when the task finishes // Finished status is hardcoded to 2 seconds instead of when the task finishes
sramCtx->status = 0; sramCtx->status = 0;
} }
@ -2037,9 +2036,8 @@ void Sram_UpdateWriteToFlashOwlSave(SramContext* sramCtx) {
} }
} }
} else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >= } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >=
SECONDS_TO_TIMER(CVarGetInteger( SECONDS_TO_TIMER(CVarGetInteger("gEnhancements.Save.DisableSaveDelay", 0) ? 0 : 2)) {
"gEnhancements.Save.SaveDelay", // 2S2H [Port] Some tricks require a save delay so we can't just force it to zero
0))) { // 2S2H [Port] Some tricks require a save delay so we can't just force it to zero
// Finished status is hardcoded to 2 seconds instead of when the task finishes // Finished status is hardcoded to 2 seconds instead of when the task finishes
sramCtx->status = 0; sramCtx->status = 0;
memset(sramCtx->saveBuf, 0, SAVE_BUFFER_SIZE); memset(sramCtx->saveBuf, 0, SAVE_BUFFER_SIZE);

View File

@ -3515,7 +3515,10 @@ void KaleidoScope_Update(PlayState* play) {
Audio_PlaySfx(NA_SE_SY_PIECE_OF_HEART); Audio_PlaySfx(NA_SE_SY_PIECE_OF_HEART);
if (CVarGetInteger("gEnhancements.Kaleido.PauseSave", 0)) { if (CVarGetInteger("gEnhancements.Kaleido.PauseSave", 0)) {
gSaveContext.save.isOwlSave = true; gSaveContext.save.isOwlSave = true;
gSaveContext.save.shipSaveInfo.pauseSaveEntrance = gSaveContext.save.entrance; // 2S2H [Enhancement] Eventually we might allow them to load from their last entrance,
// but we need to first identify and fix edge cases where that doesn't work properly
// like grottos and cutscenes
gSaveContext.save.shipSaveInfo.pauseSaveEntrance = ENTRANCE(SOUTH_CLOCK_TOWN, 0);
} }
Play_SaveCycleSceneFlags(&play->state); Play_SaveCycleSceneFlags(&play->state);
gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId; gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId;