From 568428ca679dfd1ca7eeef3927b83597540f8060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 22 Apr 2021 21:50:05 +0200 Subject: [PATCH] HLE: Do not clobber 0x1800-0x3000 when using MIOS to fix IPL crash MIOS puts patch data in low MEM1 (0x1800-0x3000) for its own use. Overwriting data in this range can cause the IPL to crash when launching games that get patched by MIOS. See https://bugs.dolphin-emu.org/issues/11952 for more info. Not applying the Gecko HLE patches means that Gecko codes will not work under MIOS, but this is better than the alternative of having specific games crash. --- Source/Core/Core/HLE/HLE.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Source/Core/Core/HLE/HLE.cpp b/Source/Core/Core/HLE/HLE.cpp index a598e8d2b0..9c9471434d 100644 --- a/Source/Core/Core/HLE/HLE.cpp +++ b/Source/Core/Core/HLE/HLE.cpp @@ -76,6 +76,14 @@ void Patch(u32 addr, std::string_view func_name) void PatchFixedFunctions() { + // MIOS puts patch data in low MEM1 (0x1800-0x3000) for its own use. + // Overwriting data in this range can cause the IPL to crash when launching games + // that get patched by MIOS. See https://bugs.dolphin-emu.org/issues/11952 for more info. + // Not applying the Gecko HLE patches means that Gecko codes will not work under MIOS, + // but this is better than the alternative of having specific games crash. + if (SConfig::GetInstance().m_is_mios) + return; + // HLE jump to loader (homebrew). Disabled when Gecko is active as it interferes with the code // handler if (!SConfig::GetInstance().bEnableCheats)