aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/GPU3D.cpp4
-rw-r--r--src/Savestate.h2
-rw-r--r--src/libui_sdl/main.cpp26
3 files changed, 19 insertions, 13 deletions
diff --git a/src/GPU3D.cpp b/src/GPU3D.cpp
index 8aaef7d..79863ef 100644
--- a/src/GPU3D.cpp
+++ b/src/GPU3D.cpp
@@ -387,8 +387,8 @@ void DoSavestate(Savestate* file)
file->VarArray(TexMatrix, 16*4);
file->VarArray(ProjMatrixStack, 16*4);
- file->VarArray(PosMatrixStack, 31*16*4);
- file->VarArray(VecMatrixStack, 31*16*4);
+ file->VarArray(PosMatrixStack, 32*16*4);
+ file->VarArray(VecMatrixStack, 32*16*4);
file->VarArray(TexMatrixStack, 16*4);
file->Var32((u32*)&ProjMatrixStackPointer);
diff --git a/src/Savestate.h b/src/Savestate.h
index fa01f6b..81541f9 100644
--- a/src/Savestate.h
+++ b/src/Savestate.h
@@ -22,7 +22,7 @@
#include <stdio.h>
#include "types.h"
-#define SAVESTATE_MAJOR 1
+#define SAVESTATE_MAJOR 2
#define SAVESTATE_MINOR 0
class Savestate
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;
}