mirror of https://github.com/PCSX2/pcsx2.git
Sio: Only eject memory cards when loading state if changed
[SAVEVERSION+] Regression from #6741.
This commit is contained in:
parent
0e73bf1e6d
commit
c883e9d792
|
@ -33,7 +33,7 @@ enum class FreezeAction
|
||||||
// [SAVEVERSION+]
|
// [SAVEVERSION+]
|
||||||
// This informs the auto updater that the users savestates will be invalidated.
|
// This informs the auto updater that the users savestates will be invalidated.
|
||||||
|
|
||||||
static const u32 g_SaveVersion = (0x9A31 << 16) | 0x0000;
|
static const u32 g_SaveVersion = (0x9A32 << 16) | 0x0000;
|
||||||
|
|
||||||
|
|
||||||
// the freezing data between submodules and core
|
// the freezing data between submodules and core
|
||||||
|
|
|
@ -917,9 +917,34 @@ void SaveStateBase::sio2Freeze()
|
||||||
|
|
||||||
Freeze(sio2);
|
Freeze(sio2);
|
||||||
|
|
||||||
|
// CRCs for memory cards.
|
||||||
|
// If the memory card hasn't changed when loading state, we can safely skip ejecting it.
|
||||||
|
u64 mcdCrcs[SIO::PORTS][SIO::SLOTS];
|
||||||
|
if (IsSaving())
|
||||||
|
{
|
||||||
|
for (u32 port = 0; port < SIO::PORTS; port++)
|
||||||
|
{
|
||||||
|
for (u32 slot = 0; slot < SIO::SLOTS; slot++)
|
||||||
|
mcdCrcs[port][slot] = mcds[port][slot].GetChecksum();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Freeze(mcdCrcs);
|
||||||
|
|
||||||
if (IsLoading())
|
if (IsLoading())
|
||||||
|
{
|
||||||
|
bool ejected = false;
|
||||||
|
for (u32 port = 0; port < SIO::PORTS && !ejected; port++)
|
||||||
|
{
|
||||||
|
for (u32 slot = 0; slot < SIO::SLOTS; slot++)
|
||||||
|
{
|
||||||
|
if (mcdCrcs[port][slot] != mcds[port][slot].GetChecksum())
|
||||||
{
|
{
|
||||||
AutoEject::SetAll();
|
AutoEject::SetAll();
|
||||||
|
ejected = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Restore fifoIn
|
// Restore fifoIn
|
||||||
fifoIn.clear();
|
fifoIn.clear();
|
||||||
|
|
Loading…
Reference in New Issue