summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2026-09-21 18:23:48 +0200
committerGitHub <noreply@github.com>2026-09-21 18:23:48 +0200
commit4619af1be06fb6ccb0499083848bc9ee0d8afc3b (patch)
tree0611cb5c0a7da04b90e7988063c7c49caa03b4f5 /Source/Core
parent22342c2303401393a404f11ae35bad490029e33f (diff)
parentb84323e10898b320c75498909d5acf970d06ee74 (diff)
Merge pull request #14883 from AdmiralCurtiss/zelda-hle-voice-flags
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.cpp6
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.