diff options
| author | skidau <skidau@gmail.com> | 2013-04-07 07:18:28 +1000 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2013-04-07 07:18:28 +1000 |
| commit | 8a2109691ad6372cc5ad2e10fe7ac5fbb645979e (patch) | |
| tree | 8936a250a19c8de8d78692501ae38694676b170f /Source/Core | |
| parent | ecb4337209486c733ef20a132334df8485c64f01 (diff) | |
Quick fix to get Zelda: Wind Waker booting again.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp | 23 | ||||
| -rw-r--r-- | Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h | 3 |
2 files changed, 17 insertions, 9 deletions
diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp index dc2f20dda1..ba9f4ec222 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp @@ -112,16 +112,23 @@ u8 *CUCode_Zelda::GetARAMPointer(u32 address) void CUCode_Zelda::Update(int cycles) { - if (!IsLightVersion()) - { - if (m_rMailHandler.GetNextMail() == DSP_FRAME_END) - DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); - } + m_cycles += cycles; - if (NeedsResumeMail()) + if (m_cycles >= 243000) { - m_rMailHandler.PushMail(DSP_RESUME); - DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + m_cycles = 0; + + if (!IsLightVersion()) + { + if (m_rMailHandler.GetNextMail() == DSP_FRAME_END) + DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + } + + if (NeedsResumeMail()) + { + m_rMailHandler.PushMail(DSP_RESUME); + DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + } } } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h index f8a69536c2..d105d3dea9 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h @@ -218,7 +218,6 @@ private: s32* m_LeftBuffer; s32* m_RightBuffer; - // If you add variables, remember to keep DoState() and the constructor up to date. s16 m_AFCCoefTable[32]; @@ -276,6 +275,8 @@ private: u32 m_PBAddress; // The main param block array u32 m_PBAddress2; // 4 smaller param blocks + u32 m_cycles; + void ExecuteList(); u8 *GetARAMPointer(u32 address); |
