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 <[email protected]>
This commit is contained in:
1 parent
61ebfffa97
commit
f9193539fb
1 file changed
+11
-1
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user