diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2026-09-10 19:07:23 +0200 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2026-09-20 22:51:17 +0200 |
| commit | b84323e10898b320c75498909d5acf970d06ee74 (patch) | |
| tree | 3df4cc00d50cbb63d4c99aca20b8e29731ded496 /Source/Core | |
| parent | a2efdf1197be8132674b90fe9cf4761df39752ed (diff) | |
DSPHLE/Zelda: Add bounds check for m_sync_voice_skip_flags in RenderAudio()
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp index 923680e88e..5638a7aab4 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp @@ -628,7 +628,11 @@ void ZeldaUCode::RenderAudio() if (m_rendering_curr_voice == 0) m_renderer.PrepareFrame(); - while (m_rendering_curr_voice < m_rendering_voices_per_frame) + // TODO: Find out the actual hardware behavior for the case where + // (m_rendering_voices_per_frame >> 4) >= m_sync_voice_skip_flags.size() + const u16 number_of_voices = std::min(m_rendering_voices_per_frame, + static_cast<u16>(m_sync_voice_skip_flags.size() << 4)); + while (m_rendering_curr_voice < number_of_voices) { // If we are not meant to render this voice yet, go back to message // processing. |
