Merge pull request #2093 from magumagu/gc-bios-hack
Hack around our terrible GC BIOS emulation.
This commit is contained in:
commit
bf61abf22b
|
@ -188,9 +188,28 @@ bool CBoot::Load_BS2(const std::string& _rBootROMFilename)
|
||||||
// Run the descrambler over the encrypted section containing BS1/BS2
|
// Run the descrambler over the encrypted section containing BS1/BS2
|
||||||
CEXIIPL::Descrambler((u8*)data.data()+0x100, 0x1AFE00);
|
CEXIIPL::Descrambler((u8*)data.data()+0x100, 0x1AFE00);
|
||||||
|
|
||||||
|
// TODO: Execution is supposed to start at 0xFFF00000, not 0x81200000;
|
||||||
|
// copying the initial boot code to 0x81200000 is a hack.
|
||||||
|
// For now, HLE the first few instructions and start at 0x81200150
|
||||||
|
// to work around this.
|
||||||
Memory::CopyToEmu(0x01200000, data.data() + 0x100, 0x700);
|
Memory::CopyToEmu(0x01200000, data.data() + 0x100, 0x700);
|
||||||
Memory::CopyToEmu(0x01300000, data.data() + 0x820, 0x1AFE00);
|
Memory::CopyToEmu(0x01300000, data.data() + 0x820, 0x1AFE00);
|
||||||
PC = 0x01200000;
|
PowerPC::ppcState.gpr[3] = 0xfff0001f;
|
||||||
|
PowerPC::ppcState.gpr[4] = 0x00002030;
|
||||||
|
PowerPC::ppcState.gpr[5] = 0x0000009c;
|
||||||
|
PowerPC::ppcState.msr = 0x00002030;
|
||||||
|
PowerPC::ppcState.spr[SPR_HID0] = 0x0011c464;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT0U] = 0x80001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT0L] = 0x00000002;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT3U] = 0xfff0001f;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT3L] = 0xfff00001;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT0U] = 0x80001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT0L] = 0x00000002;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT1U] = 0xc0001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT1L] = 0x0000002a;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT3U] = 0xfff0001f;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT3L] = 0xfff00001;
|
||||||
|
PC = 0x81200150;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue