diff options
-rw-r--r-- | src/GBACart.cpp | 12 |
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);
|