diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2013-02-04 16:00:11 -0600 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2013-02-04 17:41:10 -0600 |
| commit | 2ad30958d622bb304e2d6ef36e5fdc3d8d7c0f4c (patch) | |
| tree | a86ebb318fd258e5bbd47c951134511d5149e677 /Source | |
| parent | 03d9cca2fee67da0ca73e93bc2e867a02bb1a2bd (diff) | |
Stuck an IPC HLE Update call in WII_IPCInterface::Write32.
While hacky, this seems to fix various problems without increasing IPC HLE freq to infinity.
Thanks to Aristar for helping test.
Increase IPC command reply delay to 1/100th of a second. (fixes DKCR hanging)
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/Src/HW/SystemTimers.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/Core/Src/HW/WII_IPC.cpp | 1 | ||||
| -rw-r--r-- | Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp | 3 |
3 files changed, 6 insertions, 3 deletions
diff --git a/Source/Core/Core/Src/HW/SystemTimers.cpp b/Source/Core/Core/Src/HW/SystemTimers.cpp index 318b1213af..a041a3b0ad 100644 --- a/Source/Core/Core/Src/HW/SystemTimers.cpp +++ b/Source/Core/Core/Src/HW/SystemTimers.cpp @@ -248,10 +248,11 @@ void Init() DSP_PERIOD = (int)(GetTicksPerSecond() * 0.003f); // AyuanX: TO BE TWEAKED - // Now the 1500 is (was) a pure assumption + // Now the 1500 is a pure assumption // We need to figure out the real frequency though - const int freq = 8000; + // FYI, WII_IPC_HLE_Interface::Update is also called in WII_IPCInterface::Write32 + const int freq = 1500; const int fields = SConfig::GetInstance().m_LocalCoreStartupParameter. bVBeam ? 2 : 1; IPC_HLE_PERIOD = GetTicksPerSecond() / (freq * fields); diff --git a/Source/Core/Core/Src/HW/WII_IPC.cpp b/Source/Core/Core/Src/HW/WII_IPC.cpp index 74af1ecdea..3651eef8ab 100644 --- a/Source/Core/Core/Src/HW/WII_IPC.cpp +++ b/Source/Core/Core/Src/HW/WII_IPC.cpp @@ -221,6 +221,7 @@ void Write32(const u32 _Value, const u32 _Address) break; } + WII_IPC_HLE_Interface::Update(); UpdateInterrupts(); } diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp index 4aee5cb045..620d6c7052 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp @@ -515,7 +515,8 @@ void ExecuteCommand(u32 _Address) if (CmdSuccess) { // Generate a reply to the IPC command - EnqReply(_Address, SystemTimers::GetTicksPerSecond() / 150); + // TODO: should probably figure out which commands need delayed replies and which don't + EnqReply(_Address, SystemTimers::GetTicksPerSecond() / 100); } else { |
