diff --git a/Source/Core/AudioCommon/Src/Mixer.cpp b/Source/Core/AudioCommon/Src/Mixer.cpp index 13ccb4b48a..d7a8092ff5 100644 --- a/Source/Core/AudioCommon/Src/Mixer.cpp +++ b/Source/Core/AudioCommon/Src/Mixer.cpp @@ -136,9 +136,16 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples) void CMixer::PushSamples(short *samples, unsigned int num_samples) { - // The auto throttle function. This loop will put a ceiling on the CPU MHz. - if (m_throttle) + // Audio Throttle is off. On Ayuanx commit 4717, it is used to write Other Audio. + // I've just bring that back, and games like Donkey Kong Jungle Beat (WII) now will + // work properly without using Audio Throttle. + if (!m_throttle) { + return; + { + else + { + // The auto throttle function. This loop will put a ceiling on the CPU MHz. while (Common::AtomicLoad(m_numSamples) >= MAX_SAMPLES - RESERVED_SAMPLES) { if (g_dspInitialize.pEmulatorState) diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda_Voice.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda_Voice.cpp index 9ec5c852ac..2b31507ee4 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda_Voice.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/UCodes/UCode_Zelda_Voice.cpp @@ -579,9 +579,6 @@ void CUCode_Zelda::RenderAddVoice(ZeldaVoicePB &PB, s32* _LeftBuffer, s32* _Righ break; } } - - // Necessary for SMG, not for Zelda. Weird. Where's it from? - PB.NeedsReset = 0; ContinueWithBlock: @@ -733,6 +730,10 @@ ContinueWithBlock: addr++; } } + // 03b2, this is the reason of using PB.NeedsReset. Seems to be necessary for SMG, and maybe other games. + if (PB.IsBlank == 0){ + PB.NeedsReset = 0; + } } // size is in stereo samples.