diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 1652b18507..099bde8c81 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -2242,6 +2242,7 @@ namespace BizHawk.MultiClient } bool genSound = false; + bool coreskipaudio = false; if (runFrame) { runloop_fps++; @@ -2278,9 +2279,10 @@ namespace BizHawk.MultiClient HandleMovieOnFrameLoop(); + coreskipaudio = Global.ClientControls["MaxTurbo"] && CurrAviWriter == null; //======================================= MemoryPulse.Pulse(); - Global.Emulator.FrameAdvance(!throttle.skipnextframe, !Global.ClientControls["MaxTurbo"] || CurrAviWriter != null); + Global.Emulator.FrameAdvance(!throttle.skipnextframe, !coreskipaudio); MemoryPulse.Pulse(); //======================================= if (CurrAviWriter != null) @@ -2342,7 +2344,7 @@ namespace BizHawk.MultiClient UpdateFrame = false; } - if (genSound) + if (genSound && !coreskipaudio) { Global.Sound.UpdateSound(); } diff --git a/BizHawk.MultiClient/Sound.cs b/BizHawk.MultiClient/Sound.cs index f58c679706..8d4f5a4dcd 100644 --- a/BizHawk.MultiClient/Sound.cs +++ b/BizHawk.MultiClient/Sound.cs @@ -176,11 +176,12 @@ namespace BizHawk.MultiClient samplesProvided = 2 * nsampgot; - while (samplesNeeded < samplesProvided) - { - System.Threading.Thread.Sleep((samplesProvided - samplesNeeded) / 88); // let audio clock control sleep time - samplesNeeded = SNDDXGetAudioSpace() * 2; - } + if (!Global.ForceNoThrottle) + while (samplesNeeded < samplesProvided) + { + System.Threading.Thread.Sleep((samplesProvided - samplesNeeded) / 88); // let audio clock control sleep time + samplesNeeded = SNDDXGetAudioSpace() * 2; + } } else if (asyncsoundProvider != null) { @@ -189,8 +190,8 @@ namespace BizHawk.MultiClient samples = new short[samplesNeeded]; //if (asyncsoundProvider != null && Muted == false) //{ - semisync.BaseSoundProvider = asyncsoundProvider; - semisync.GetSamples(samples); + semisync.BaseSoundProvider = asyncsoundProvider; + semisync.GetSamples(samples); //} //else asyncsoundProvider.DiscardSamples(); samplesProvided = samplesNeeded;