From 529b696fcbce385beb89aeb47bb479eeb15b558c Mon Sep 17 00:00:00 2001 From: Lilly Jade Katrin Date: Fri, 20 Mar 2026 21:37:09 -0400 Subject: [PATCH] Remove AchievementManager ChangeDisc call from Eject This was causing the achievement runtime to shutdown in the middle of a disc change even if the resulting disc was valid, which was causing achievements like the ones in Resident Evil for completing the entire game in a single session to break midway through. Also adds a log to notify the user when the disc change is invalid (e.g. different game inserted). --- Source/Core/Core/AchievementManager.cpp | 2 ++ Source/Core/Core/HW/DVD/DVDInterface.cpp | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index a88fb463e1..ab9974f2cd 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -168,6 +168,8 @@ void AchievementManager::LoadGame(const DiscIO::Volume* volume) WARN_LOG_FMT(ACHIEVEMENTS, "Software format unsupported by AchievementManager."); if (rc_client_get_game_info(m_client)) { + OSD::AddMessage("Unsupported media change; disabling achievements.", OSD::Duration::VERY_LONG, + OSD::Color::RED); CloseGame(); } else diff --git a/Source/Core/Core/HW/DVD/DVDInterface.cpp b/Source/Core/Core/HW/DVD/DVDInterface.cpp index 376aeb4add..640023344e 100644 --- a/Source/Core/Core/HW/DVD/DVDInterface.cpp +++ b/Source/Core/Core/HW/DVD/DVDInterface.cpp @@ -442,7 +442,6 @@ void DVDInterface::AutoChangeDiscCallback(Core::System& system, u64 userdata, s6 void DVDInterface::EjectDiscCallback(Core::System& system, u64 userdata, s64 cyclesLate) { - AchievementManager::GetInstance().ChangeDisc(nullptr); system.GetDVDInterface().SetDisc(nullptr, {}); }