aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/GBACart.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/GBACart.cpp b/src/GBACart.cpp
index 1829ca7..f6bed86 100644
--- a/src/GBACart.cpp
+++ b/src/GBACart.cpp
@@ -96,18 +96,24 @@ void DoSavestate(Savestate* file)
u32 oldlen = SRAMLength;
file->Var32(&SRAMLength);
+
if (SRAMLength != oldlen)
{
- printf("savestate (GBA): VERY BAD!!!! SRAM LENGTH DIFFERENT. %d -> %d\n", oldlen, SRAMLength);
- printf("oh well. loading it anyway. iojkjkojo\n");
-
+ // reallocate save memory
if (oldlen) delete[] SRAM;
if (SRAMLength) SRAM = new u8[SRAMLength];
}
if (SRAMLength)
{
+ // fill save memory if data is present
file->VarArray(SRAM, SRAMLength);
}
+ else
+ {
+ // no save data, nothing left to do
+ SRAMType = SaveType::S_NULL;
+ return;
+ }
// persist some extra state info
file->Var8(&SRAMFlashState.bank);