Skip to content

Commit

Permalink
Reorder savestates to put memory before CoreTiming.
Browse files Browse the repository at this point in the history
Also, don't clear the JIT for rounding after saving, only after loading.
  • Loading branch information
hrydgard committed Feb 14, 2023
1 parent 5ce4321 commit 718cb9e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
4 changes: 3 additions & 1 deletion Core/MIPS/x86/Jit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ void Jit::DoState(PointerWrap &p) {
Do(p, js.startDefaultPrefix);
if (s >= 2) {
Do(p, js.hasSetRounding);
js.lastSetRounding = 0;
if (p.mode == PointerWrap::MODE_READ) {
js.lastSetRounding = 0;
}
} else {
js.hasSetRounding = 1;
}
Expand Down
12 changes: 9 additions & 3 deletions Core/SaveState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ namespace SaveState

void SaveStart::DoState(PointerWrap &p)
{
auto s = p.Section("SaveStart", 1, 2);
auto s = p.Section("SaveStart", 1, 3);
if (!s)
return;

Expand All @@ -357,8 +357,10 @@ namespace SaveState
saveDataGeneration = 0;
}

// Gotta do CoreTiming first since we'll restore into it.
CoreTiming::DoState(p);
// Gotta do CoreTiming before HLE, but from v3 we've moved it after the memory stuff.
if (s <= 2) {
CoreTiming::DoState(p);
}

// Memory is a bit tricky when jit is enabled, since there's emuhacks in it.
auto savedReplacements = SaveAndClearReplacements();
Expand All @@ -376,6 +378,10 @@ namespace SaveState
Memory::DoState(p);
}

if (s >= 3) {
CoreTiming::DoState(p);
}

// Don't bother restoring if reading, we'll deal with that in KernelModuleDoState.
// In theory, different functions might have been runtime loaded in the state.
if (p.mode != p.MODE_READ)
Expand Down

0 comments on commit 718cb9e

Please sign in to comment.