From b168a8092fe3959777c67b80ec4b4dba223c4910 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 29 Sep 2024 00:27:08 +0100 Subject: [PATCH] Boot: write Apploader version into memory When HLE-ing the apploader, this is necessary to avoid "Error #002" errors. Homebrew doesn't care. --- Source/Core/Core/Boot/Boot.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Core/Core/Boot/Boot.cpp b/Source/Core/Core/Boot/Boot.cpp index f71806be0e..d84df0a8db 100644 --- a/Source/Core/Core/Boot/Boot.cpp +++ b/Source/Core/Core/Boot/Boot.cpp @@ -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. SetupWiiMemory(system, IOS::HLE::IOSC::ConsoleType::Retail); 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 {