ES HLE / WAD boot: hardcode the entrypoint

NAND titles are always started at address 0x3400 with translation off.
The entrypoint in the DOL is ignored.
This commit is contained in:
Hector Martin 2016-11-23 03:57:33 +09:00
parent 2ceea61bbf
commit 3f11879640
2 changed files with 8 additions and 4 deletions

View File

@ -109,7 +109,11 @@ bool CBoot::Boot_WiiWAD(const std::string& _pFilename)
return false;
pDolLoader->Load();
PC = pDolLoader->GetEntryPoint();
// NAND titles start with address translation off at 0x3400 (via the PPC bootstub)
// The state of other CPU registers (like the BAT registers) doesn't matter much
// because the realmode code at 0x3400 initializes everything itself anyway.
MSR = 0;
PC = 0x3400;
// Pass the "#002 check"
// Apploader should write the IOS version and revision to 0x3140, and compare it

View File

@ -968,12 +968,12 @@ IPCCommandResult CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress)
if (pDolLoader->IsValid())
{
pDolLoader->Load(); // TODO: Check why sysmenu does not load the DOL correctly
// WADs start with address translation off at the given entry point.
// NAND titles start with address translation off at 0x3400 (via the PPC bootstub)
//
// The state of other CPU registers (like the BAT registers) doesn't matter much
// because the WAD initializes everything itself anyway.
// because the realmode code at 0x3400 initializes everything itself anyway.
MSR = 0;
PC = pDolLoader->GetEntryPoint();
PC = 0x3400;
bSuccess = true;
}
else