diff --git a/src/GPU.cpp b/src/GPU.cpp index 558c3bc6..6f545d77 100644 --- a/src/GPU.cpp +++ b/src/GPU.cpp @@ -272,12 +272,14 @@ void GPU::DoSavestate(Savestate* file) noexcept VRAMPtr_BOBJ[i] = GetUniqueBankPtr(VRAMMap_BOBJ[i], i << 14); } + // This should happen before re-rendering the 3D buffer. + if (!file->Saving) + ResetVRAMCache(); + GPU2D_A.DoSavestate(file); GPU2D_B.DoSavestate(file); GPU3D.DoSavestate(file); - if (!file->Saving) - ResetVRAMCache(); } void GPU::AssignFramebuffers() noexcept diff --git a/src/GPU3D.cpp b/src/GPU3D.cpp index 970e712e..7a5d3a51 100644 --- a/src/GPU3D.cpp +++ b/src/GPU3D.cpp @@ -555,11 +555,9 @@ void GPU3D::DoSavestate(Savestate* file) noexcept file->Var32(&CurPolygonAttr); file->Var32(&TexParam); file->Var32(&TexPalette); + RenderFrameIdentical = false; - if (softRenderer && softRenderer->IsThreaded()) - { - softRenderer->EnableRenderThread(); - } + CurrentRenderer->RenderFrame(); }