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." });
UIWidgets::CVarCheckbox("Do not reset Rupees", "gEnhancements.Cycle.DoNotResetRupees",
{ .tooltip = "Playing the Song Of Time will not reset the your rupees." });
UIWidgets::CVarSliderInt("Save Delay", "gEnhancements.Save.SaveDelay", 0, 5, 0,
{ .tooltip = "Sets the delay between pressing save and the save being marked as "
"complete. Original game was 2." });
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(255, 255, 0, 255));
ImGui::SeparatorText("Unstable");
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();
}

View File

@ -1996,9 +1996,8 @@ void Sram_UpdateWriteToFlashDefault(SramContext* sramCtx) {
}
}
} else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >=
SECONDS_TO_TIMER(CVarGetInteger(
"gEnhancements.Save.SaveDelay",
0))) { // 2S2H [Port] Some tricks require a save delay so we can't just force it to zero
SECONDS_TO_TIMER(CVarGetInteger("gEnhancements.Save.DisableSaveDelay", 0) ? 0 : 2)) {
// 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
sramCtx->status = 0;
}
@ -2037,9 +2036,8 @@ void Sram_UpdateWriteToFlashOwlSave(SramContext* sramCtx) {
}
}
} else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >=
SECONDS_TO_TIMER(CVarGetInteger(
"gEnhancements.Save.SaveDelay",
0))) { // 2S2H [Port] Some tricks require a save delay so we can't just force it to zero
SECONDS_TO_TIMER(CVarGetInteger("gEnhancements.Save.DisableSaveDelay", 0) ? 0 : 2)) {
// 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
sramCtx->status = 0;
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);
if (CVarGetInteger("gEnhancements.Kaleido.PauseSave", 0)) {
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);
gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId;