aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl')
-rw-r--r--src/libui_sdl/main.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp
index 4c19314..9ca829e 100644
--- a/src/libui_sdl/main.cpp
+++ b/src/libui_sdl/main.cpp
@@ -922,6 +922,8 @@ void LoadState(int slot)
NDS::DoSavestate(backup);
delete backup;
+ bool failed = false;
+
Savestate* state = new Savestate(filename, false);
if (state->Error)
{
@@ -931,26 +933,30 @@ void LoadState(int slot)
// current state might be crapoed, so restore from sane backup
state = new Savestate("timewarp.mln", false);
+ failed = true;
}
NDS::DoSavestate(state);
delete state;
- if (Config::SavestateRelocSRAM && ROMPath[0]!='\0')
+ if (!failed)
{
- strncpy(PrevSRAMPath, SRAMPath, 1024);
+ if (Config::SavestateRelocSRAM && ROMPath[0]!='\0')
+ {
+ strncpy(PrevSRAMPath, SRAMPath, 1024);
+
+ strncpy(SRAMPath, filename, 1019);
+ int len = strlen(SRAMPath);
+ strcpy(&SRAMPath[len], ".sav");
+ SRAMPath[len+4] = '\0';
- strncpy(SRAMPath, filename, 1019);
- int len = strlen(SRAMPath);
- strcpy(&SRAMPath[len], ".sav");
- SRAMPath[len+4] = '\0';
+ NDS::RelocateSave(SRAMPath, false);
+ }
- NDS::RelocateSave(SRAMPath, false);
+ SavestateLoaded = true;
+ uiMenuItemEnable(MenuItem_UndoStateLoad);
}
- SavestateLoaded = true;
- uiMenuItemEnable(MenuItem_UndoStateLoad);
-
EmuRunning = prevstatus;
}