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.
This commit is contained in:
Léo Lam 2021-04-22 21:50:05 +02:00
parent 4d37dad20d
commit 568428ca67
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
1 changed files with 8 additions and 0 deletions

View File

@ -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)