mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
IOS: Hang PPC when reloading IOS for a PPC title launch
The PPC is supposed to be held in reset when another version of IOS is in the process of being launched for a PPC title launch. Probably doesn't matter in practice, though the inaccuracy was definitely observable from the PPC.
This commit is contained in:
@ -433,7 +433,7 @@ static constexpr SystemTimers::TimeBaseTick GetIOSBootTicks(u32 version)
|
||||
// Passing a boot content path is optional because we do not require IOSes
|
||||
// to be installed at the moment. If one is passed, the boot binary must exist
|
||||
// on the NAND, or the call will fail like on a Wii.
|
||||
bool Kernel::BootIOS(const u64 ios_title_id, const std::string& boot_content_path)
|
||||
bool Kernel::BootIOS(const u64 ios_title_id, HangPPC hang_ppc, const std::string& boot_content_path)
|
||||
{
|
||||
// IOS suspends regular PPC<->ARM IPC before loading a new IOS.
|
||||
// IPC is not resumed if the boot fails for any reason.
|
||||
@ -453,6 +453,9 @@ bool Kernel::BootIOS(const u64 ios_title_id, const std::string& boot_content_pat
|
||||
return false;
|
||||
}
|
||||
|
||||
if (hang_ppc == HangPPC::Yes)
|
||||
ResetAndPausePPC();
|
||||
|
||||
if (Core::IsRunningAndStarted())
|
||||
CoreTiming::ScheduleEvent(GetIOSBootTicks(GetVersion()), s_event_finish_ios_boot, ios_title_id);
|
||||
else
|
||||
|
Reference in New Issue
Block a user