From f9193539fb973ad5d6c6f80095754f3671f81495 Mon Sep 17 00:00:00 2001 From: Yaya48 Date: Tue, 13 Oct 2026 17:49:56 +0200 Subject: [PATCH] StarletBootstrapProbe: back MEM1 and MEM2 as on a retail Wii The probe never initialised Dolphin's MEM1 and MEM2, so any Starlet access there was an access to unmapped memory: StarOS reads its SBR1 record header at 0x00200000 on every boot, which raised two alerts (Unknown Pointer, then Invalid range in CopyFromEmu) and read 0. The probe now initialises both, zeroed, at their retail sizes (24 and 64 MiB), and shuts them down after the run. The read still returns 0. Co-Authored-By: Claude Opus 5.5 --- .../StarletBootstrapProbe/StarletBootstrapProbe.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Tools/StarletBootstrapProbe/StarletBootstrapProbe.cpp b/Tools/StarletBootstrapProbe/StarletBootstrapProbe.cpp index 39b8e96fe7..35d6762c61 100644 --- a/Tools/StarletBootstrapProbe/StarletBootstrapProbe.cpp +++ b/Tools/StarletBootstrapProbe/StarletBootstrapProbe.cpp @@ -10,6 +10,7 @@ #include "Common/MsgHandler.h" #include "Core/Core.h" +#include "Core/HW/Memmap.h" #include "Core/HW/WII_IPC.h" #include "Core/IOS/Starlet/ARMCore.h" #include "Core/IOS/Starlet/BootstrapELF.h" @@ -181,5 +182,14 @@ int main(int argc, char** argv) return 2; } } - return Run(argv[1], jit, expected) ? 0 : 1; + + // The Starlet shares MEM1 and MEM2 with Broadway. Back them as on a retail Wii (24 and 64 MiB, + // zeroed): without them, any Starlet access there, such as StarOS reading its SBR1 record + // header at 0x00200000, is an access to unmapped memory and raises an alert. + auto& system = Core::System::GetInstance(); + system.SetIsWii(true); + system.GetMemory().Init(); + const bool passed = Run(argv[1], jit, expected); + system.GetMemory().Shutdown(); + return passed ? 0 : 1; }