diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.IEmulator.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.IEmulator.cs index 900ebe3067..02668bd7d0 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.IEmulator.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.IEmulator.cs @@ -34,6 +34,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.BSNES IsLagFrame = true; // run the core for one frame Api.core.snes_run(false); + AdvanceRtc(); FrameAdvancePost(); return true; @@ -55,7 +56,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.BSNES int numSamples = UpdateAudioBuffer(); _soundProvider.PutSamples(_audioBuffer, numSamples / 2); Frame++; - AdvanceRtc(); if (IsLagFrame) { diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.cs index b4556b7542..4e4c748aea 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/BsnesCore.cs @@ -348,10 +348,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.BSNES private long _clockTime; private int _clockRemainder; - protected void InitializeRtc(DateTime start) + private void InitializeRtc(DateTime start) => _clockTime = (long)(start - _epoch).TotalSeconds; - private void AdvanceRtc() + internal void AdvanceRtc() { _clockRemainder += VsyncDenominator; if (_clockRemainder >= VsyncNumerator) diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/SubBsnesCore.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/SubBsnesCore.cs index 35b5a9a3ef..f84cf5c905 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/SubBsnesCore.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/BSNES/SubBsnesCore.cs @@ -81,6 +81,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.BSNES } if (!framePassed) _bsnesCore.IsLagFrame = false; + if (framePassed) _bsnesCore.AdvanceRtc(); _bsnesCore.FrameAdvancePost(); return true;