diff --git a/Source/Core/Core/Boot/Boot_BS2Emu.cpp b/Source/Core/Core/Boot/Boot_BS2Emu.cpp index 4a533cd6ed..9e66a2458a 100644 --- a/Source/Core/Core/Boot/Boot_BS2Emu.cpp +++ b/Source/Core/Core/Boot/Boot_BS2Emu.cpp @@ -461,8 +461,13 @@ bool CBoot::EmulatedBS2_Wii(const DiscIO::VolumeDisc& volume, state->discstate = 0x01; }); - // The system menu clears the RTC flags - ExpansionInterface::g_rtc_flags.m_hex = 0; + // The system menu clears the RTC flags. + // However, the system menu also updates the disc cache when this happens; see + // https://wiibrew.org/wiki/MX23L4005#DI and + // https://wiibrew.org/wiki//title/00000001/00000002/data/cache.dat for details. If we clear the + // RTC flags, then the system menu thinks the disc cache is up to date, and will show the wrong + // disc in the disc channel (and reboot the first time the disc is opened) + // ExpansionInterface::g_rtc_flags.m_hex = 0; // While reading a disc, the system menu reads the first partition table // (0x20 bytes from 0x00040020) and stores a pointer to the data partition entry.