mirror of https://github.com/PCSX2/pcsx2.git
VMManager: Reload save state ELF in internals
We should serialize this in the state at some point.
This commit is contained in:
parent
ffa014f910
commit
99fbe4e9ff
|
@ -215,6 +215,10 @@ SaveStateBase& SaveStateBase::FreezeBios()
|
||||||
|
|
||||||
SaveStateBase& SaveStateBase::FreezeInternals()
|
SaveStateBase& SaveStateBase::FreezeInternals()
|
||||||
{
|
{
|
||||||
|
#ifdef PCSX2_CORE
|
||||||
|
const u32 previousCRC = ElfCRC;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Print this until the MTVU problem in gifPathFreeze is taken care of (rama)
|
// Print this until the MTVU problem in gifPathFreeze is taken care of (rama)
|
||||||
if (THREAD_VU1) Console.Warning("MTVU speedhack is enabled, saved states may not be stable");
|
if (THREAD_VU1) Console.Warning("MTVU speedhack is enabled, saved states may not be stable");
|
||||||
|
|
||||||
|
@ -235,8 +239,24 @@ SaveStateBase& SaveStateBase::FreezeInternals()
|
||||||
StringUtil::Strlcpy(localDiscSerial, DiscSerial.c_str(), sizeof(localDiscSerial));
|
StringUtil::Strlcpy(localDiscSerial, DiscSerial.c_str(), sizeof(localDiscSerial));
|
||||||
Freeze(localDiscSerial);
|
Freeze(localDiscSerial);
|
||||||
if (IsLoading())
|
if (IsLoading())
|
||||||
|
{
|
||||||
DiscSerial = localDiscSerial;
|
DiscSerial = localDiscSerial;
|
||||||
|
|
||||||
|
#ifdef PCSX2_CORE
|
||||||
|
if (ElfCRC != previousCRC)
|
||||||
|
{
|
||||||
|
// HACK: LastELF isn't in the save state... Load it before we go too far into restoring state.
|
||||||
|
// When we next bump save states, we should include it. We need this for achievements, because
|
||||||
|
// we want to load and activate achievements before restoring any of their tracked state.
|
||||||
|
if (const std::string& elf_override = VMManager::Internal::GetElfOverride(); !elf_override.empty())
|
||||||
|
cdvdReloadElfInfo(fmt::format("host:{}", elf_override));
|
||||||
|
else
|
||||||
|
cdvdReloadElfInfo();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Third Block - Cycle Timers and Events
|
// Third Block - Cycle Timers and Events
|
||||||
// -------------------------------------
|
// -------------------------------------
|
||||||
FreezeTag( "Cycles" );
|
FreezeTag( "Cycles" );
|
||||||
|
|
|
@ -1152,13 +1152,6 @@ bool VMManager::DoLoadState(const char* filename)
|
||||||
{
|
{
|
||||||
Host::OnSaveStateLoading(filename);
|
Host::OnSaveStateLoading(filename);
|
||||||
SaveState_UnzipFromDisk(filename);
|
SaveState_UnzipFromDisk(filename);
|
||||||
|
|
||||||
// HACK: LastELF isn't in the save state...
|
|
||||||
if (!s_elf_override.empty())
|
|
||||||
cdvdReloadElfInfo(fmt::format("host:{}", s_elf_override));
|
|
||||||
else
|
|
||||||
cdvdReloadElfInfo();
|
|
||||||
|
|
||||||
UpdateRunningGame(false, false);
|
UpdateRunningGame(false, false);
|
||||||
Host::OnSaveStateLoaded(filename, true);
|
Host::OnSaveStateLoaded(filename, true);
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue