Added some IOS version checks and code to clear memory before loading the dol.

This commit is contained in:
skidau 2012-05-05 22:55:24 +10:00
parent 0c845728cc
commit 05730af724
3 changed files with 8 additions and 2 deletions

View File

@ -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;

View File

@ -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();

View File

@ -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);