From 578ae3c8a1a6b98ffa9cb2397961829ad4f9bf5c Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Tue, 20 Jun 2017 21:59:33 +0100 Subject: [PATCH] DSPHLE: the light protocol has no sine table The sine table is only used for Dolby mixing which the light protocol doesn't support. --- Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp index eef76401cb..92f0e66ee3 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/Zelda.cpp @@ -483,10 +483,15 @@ void ZeldaUCode::RunPendingCommands() const_patterns[i] = Common::swap16(data_ptr[0x100 + i]); m_renderer.SetConstPatterns(std::move(const_patterns)); - std::array sine_table; - for (size_t i = 0; i < 0x80; ++i) - sine_table[i] = Common::swap16(data_ptr[0x200 + i]); - m_renderer.SetSineTable(std::move(sine_table)); + // The sine table is only used for Dolby mixing + // which the light protocol doesn't support. + if ((m_flags & LIGHT_PROTOCOL) == 0) + { + std::array sine_table; + for (size_t i = 0; i < 0x80; ++i) + sine_table[i] = Common::swap16(data_ptr[0x200 + i]); + m_renderer.SetSineTable(std::move(sine_table)); + } u16* afc_coeffs_ptr = (u16*)HLEMemory_Get_Pointer(Read32()); std::array afc_coeffs;