diff options
-rw-r--r-- | src/GPU2D.cpp | 11 | ||||
-rw-r--r-- | src/GPU3D.cpp | 14 | ||||
-rw-r--r-- | src/Savestate.h | 7 |
3 files changed, 29 insertions, 3 deletions
diff --git a/src/GPU2D.cpp b/src/GPU2D.cpp index d08dc4a..db58268 100644 --- a/src/GPU2D.cpp +++ b/src/GPU2D.cpp @@ -188,6 +188,17 @@ void GPU2D::DoSavestate(Savestate* file) file->Var32(&CaptureCnt); } + if (file->IsAtleastVersion(2, 1)) + { + file->Var32(&Win0Active); + file->Var32(&Win1Active); + } + else + { + Win0Active = 0; + Win1Active = 0; + } + if (!file->Saving) { // refresh those diff --git a/src/GPU3D.cpp b/src/GPU3D.cpp index 91c01a3..12073df 100644 --- a/src/GPU3D.cpp +++ b/src/GPU3D.cpp @@ -518,18 +518,26 @@ void DoSavestate(Savestate* file) // probably not worth storing the vblank-latched Renderxxxxxx variables - if (file->Saving || - file->VersionMajor > 2 || - (file->VersionMajor == 2 && file->VersionMinor >= 1)) + if (file->IsAtleastVersion(2, 1)) { // command stall queue, only in version 2.1 and up CmdStallQueue->DoSavestate(file); + file->Var32((u32*)&VertexPipeline); + file->Var32((u32*)&NormalPipeline); + file->Var32((u32*)&PolygonPipeline); + file->Var32((u32*)&VertexSlotCounter); + file->Var32(&VertexSlotsFree); } else { // for version 2.0, just clear it. not having it doesn't matter // if this comes from older melonDS revisions. CmdStallQueue->Clear(); + VertexPipeline = 0; + NormalPipeline = 0; + PolygonPipeline = 0; + VertexSlotCounter = 0; + VertexSlotsFree = 1; } if (!file->Saving) diff --git a/src/Savestate.h b/src/Savestate.h index e217bc1..6ca3b51 100644 --- a/src/Savestate.h +++ b/src/Savestate.h @@ -48,6 +48,13 @@ public: void VarArray(void* data, u32 len); + bool IsAtleastVersion(u32 major, u32 minor) + { + if (VersionMajor > major) return true; + if (VersionMajor == major && VersionMinor >= minor) return true; + return false; + } + private: FILE* file; }; |