MTVU: Actually add MTVU to savestates

On loading a savestate, restore the VIF state on the MTVU side
This commit is contained in:
refractionpcsx2 2020-12-29 23:15:14 +00:00
parent c278e6414c
commit 2859123c47
3 changed files with 8 additions and 1 deletions

View File

@ -56,7 +56,13 @@ void SaveStateBase::mtvuFreeze()
FreezeTag("MTVU");
pxAssert(vu1Thread.IsDone());
if (!IsSaving())
{
vu1Thread.Reset();
vu1Thread.WriteCol(vif1);
vu1Thread.WriteRow(vif1);
vu1Thread.WriteMicroMem(0, VU1.Micro, 0x4000);
vu1Thread.WriteDataMem(0, VU1.Mem, 0x4000);
}
for (size_t i = 0; i < 4; ++i)
{
unsigned int v = vu1Thread.vuCycles[i].load();

View File

@ -214,6 +214,7 @@ SaveStateBase& SaveStateBase::FreezeInternals()
gifFreeze();
gifDmaFreeze();
sprFreeze();
mtvuFreeze();
// Fifth Block - iop-related systems
// ---------------------------------

View File

@ -24,7 +24,7 @@
// the lower 16 bit value. IF the change is breaking of all compatibility with old
// states, increment the upper 16 bit value, and clear the lower 16 bits to 0.
static const u32 g_SaveVersion = (0x9A15 << 16) | 0x0000;
static const u32 g_SaveVersion = (0x9A16 << 16) | 0x0000;
// this function is meant to be used in the place of GSfreeze, and provides a safe layer
// between the GS saving function and the MTGS's needs. :)