From d4fcf2697c9a45594e3ee0b8bf82e480ddd0b69b Mon Sep 17 00:00:00 2001 From: Nebuleon Fumika Date: Fri, 8 Feb 2013 03:22:27 -0500 Subject: Require one audio buffer to be free again. Otherwise, if the 4 buffers get full, it's already game over, and getAudiobuff becomes NULL for about 400 milliseconds, stopping all emulation. --- source/nds/entry.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/nds/entry.cpp b/source/nds/entry.cpp index af832f9..77620bf 100644 --- a/source/nds/entry.cpp +++ b/source/nds/entry.cpp @@ -1004,7 +1004,7 @@ void S9xProcessSound (unsigned int) unsigned int Now = getSysTime(); if (Now - LastSoundEmissionTime >= SOUND_EMISSION_INTERVAL) { - if(ds2_checkAudiobuff() > AUDIO_BUFFER_COUNT) + if(ds2_checkAudiobuff() > AUDIO_BUFFER_COUNT - 1) { LastSoundEmissionTime++; return; @@ -1022,7 +1022,7 @@ void S9xProcessSound (unsigned int) { LastSoundEmissionTime += SOUND_EMISSION_INTERVAL; SoundEmissionTimeError += SOUND_EMISSION_INTERVAL_ERROR; - if (SoundEmissionTimeError > FIXED_POINT) + if (SoundEmissionTimeError >= FIXED_POINT) { LastSoundEmissionTime += SoundEmissionTimeError >> FIXED_POINT_SHIFT; SoundEmissionTimeError &= FIXED_POINT_REMAINDER; -- cgit v1.2.3