diff --git a/src/engine/engine.h b/src/engine/engine.h index 6bcaa38c9..6c1129e9d 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -271,7 +271,7 @@ class DivEngine { void nextRow(); void performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write, int streamOff, double* loopTimer, double* loopFreq, int* loopSample, bool isSecond); // returns true if end of song. - bool nextTick(bool noAccum=false); + bool nextTick(bool noAccum=false, bool inhibitLowLat=false); bool perSystemEffect(int ch, unsigned char effect, unsigned char effectVal); bool perSystemPostEffect(int ch, unsigned char effect, unsigned char effectVal); void recalcChans(); diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index bd8b2b8af..38c7309d7 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1472,11 +1472,11 @@ void DivEngine::nextRow() { firstTick=true; } -bool DivEngine::nextTick(bool noAccum) { +bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { bool ret=false; if (divider<10) divider=10; - if (lowLatency && !skipping) { + if (lowLatency && !skipping && !inhibitLowLat) { tickMult=1000/divider; if (tickMult<1) tickMult=1; } else { diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index b20813489..efac0e482 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -1384,7 +1384,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { writeLoop=true; } } - if (nextTick() || !playing) { + if (nextTick(false,true) || !playing) { done=true; if (!loop) { for (int i=0; i