diff --git a/pcsx2/Sio.h b/pcsx2/Sio.h index afcb851b93..171af30741 100644 --- a/pcsx2/Sio.h +++ b/pcsx2/Sio.h @@ -121,6 +121,7 @@ extern void sioWrite8(u8 value); extern void sioWriteCtrl16(u16 value); extern void sioInterrupt(); extern void sioInterruptR(); +extern void SetForceMcdEjectTimeoutNow(uint port, uint slot); extern void SetForceMcdEjectTimeoutNow(); extern void ClearMcdEjectTimeoutNow(); extern void sioStatRead(); diff --git a/pcsx2/VMManager.cpp b/pcsx2/VMManager.cpp index 07f41a3a98..7c348304d8 100644 --- a/pcsx2/VMManager.cpp +++ b/pcsx2/VMManager.cpp @@ -1535,6 +1535,21 @@ void VMManager::CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config) FileMcd_EmuClose(); FileMcd_EmuOpen(); + // force card eject when files change + for (u32 port = 0; port < 2; port++) + { + for (u32 slot = 0; slot < 4; slot++) + { + const uint index = FileMcd_ConvertToSlot(port, slot); + if (EmuConfig.Mcd[index].Enabled != old_config.Mcd[index].Enabled || + EmuConfig.Mcd[index].Filename != old_config.Mcd[index].Filename) + { + Console.WriteLn("Replugging memory card %u (port %u slot %u) due to source change", index, port, slot); + SetForceMcdEjectTimeoutNow(port, slot); + } + } + } + // force reindexing, mc folder code is janky std::string sioSerial; {