Boot: write Apploader version into memory

When HLE-ing the apploader, this is necessary to avoid "Error #002"
errors. Homebrew doesn't care.
This commit is contained in:
Tillmann Karras 2024-09-29 00:27:08 +01:00
parent 2cb124bd3a
commit b168a8092f
1 changed files with 7 additions and 0 deletions

View File

@ -571,6 +571,13 @@ bool CBoot::BootUp(Core::System& system, const Core::CPUThreadGuard& guard,
// we default to IOS58, which is the version used by the Homebrew Channel. // we default to IOS58, which is the version used by the Homebrew Channel.
SetupWiiMemory(system, IOS::HLE::IOSC::ConsoleType::Retail); SetupWiiMemory(system, IOS::HLE::IOSC::ConsoleType::Retail);
system.GetIOS()->BootIOS(Titles::IOS(58)); system.GetIOS()->BootIOS(Titles::IOS(58));
// The Apploader writes an IOS-like version number into memory.
// Older versions of OSInit read it to check IOS compatibility.
constexpr u32 ADDR_IOS_VERSION = 0x3140;
constexpr u32 ADDR_APPLOADER_VERSION = 0x3188;
const u32 ios_version = system.GetMemory().Read_U32(ADDR_IOS_VERSION);
system.GetMemory().Write_U32(ios_version, ADDR_APPLOADER_VERSION);
} }
else else
{ {