aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/GPU2D.cpp11
-rw-r--r--src/GPU3D.cpp14
-rw-r--r--src/Savestate.h7
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;
};