Added some IOS version checks and code to clear memory before loading the dol.
This commit is contained in:
parent
0c845728cc
commit
05730af724
|
@ -258,7 +258,7 @@ bool CBoot::BootUp()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan for common HLE functions
|
// Scan for common HLE functions
|
||||||
if (!_StartupPara.bEnableDebugging)
|
if (!_StartupPara.bEnableDebugging && Memory::Read_U16(0x00003140) >= 30)
|
||||||
{
|
{
|
||||||
PPCAnalyst::FindFunctions(0x80004000, 0x811fffff, &g_symbolDB);
|
PPCAnalyst::FindFunctions(0x80004000, 0x811fffff, &g_symbolDB);
|
||||||
SignatureDB db;
|
SignatureDB db;
|
||||||
|
|
|
@ -301,6 +301,12 @@ void HBReload()
|
||||||
|
|
||||||
void ExecuteDOL(u8* dolFile, u32 fileSize)
|
void ExecuteDOL(u8* dolFile, u32 fileSize)
|
||||||
{
|
{
|
||||||
|
// Clear memory before loading the dol
|
||||||
|
for (int i = 0x80004000; i < Memory::Read_U32(0x00000034); i += 4)
|
||||||
|
{
|
||||||
|
// TODO: Should not write over the "save region"
|
||||||
|
Memory::Write_U32(0x00000000, i);
|
||||||
|
}
|
||||||
CDolLoader dolLoader(dolFile, fileSize);
|
CDolLoader dolLoader(dolFile, fileSize);
|
||||||
dolLoader.Load();
|
dolLoader.Load();
|
||||||
|
|
||||||
|
|
|
@ -780,7 +780,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress)
|
||||||
// someone with an affected game should test
|
// someone with an affected game should test
|
||||||
IOSv = TitleID & 0xffff;
|
IOSv = TitleID & 0xffff;
|
||||||
}
|
}
|
||||||
if (!bSuccess)
|
if (!bSuccess && IOSv >= 30 && IOSv != 0xffff)
|
||||||
{
|
{
|
||||||
PanicAlertT("IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available in your nand dump\n"
|
PanicAlertT("IOCTL_ES_LAUNCH: Game tried to reload ios or a title that is not available in your nand dump\n"
|
||||||
"TitleID %016llx.\n Dolphin will likely hang now", TitleID);
|
"TitleID %016llx.\n Dolphin will likely hang now", TitleID);
|
||||||
|
|
Loading…
Reference in New Issue