From d0457a2e1bf4fdccf36d3385065396ecc7afdaf2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 6 Feb 2022 16:47:12 -0500 Subject: [PATCH] VGM export: improvements - use shorthand command for waiting at 50/60Hz - don't write stream rate change if DAC is off --- src/engine/engine.cpp | 10 ++++++++-- src/engine/platform/genesis.cpp | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 27bf2ad36..92c4fa38d 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3960,8 +3960,14 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop) { } // write wait if (totalWait>0) { - w->writeC(0x61); - w->writeS(totalWait); + if (totalWait==735) { + w->writeC(0x62); + } else if (totalWait==882) { + w->writeC(0x63); + } else { + w->writeC(0x61); + w->writeS(totalWait); + } tickCount+=totalWait; } if (writeLoop) { diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 67ee18e02..7c5a84e78 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -292,7 +292,7 @@ void DivPlatformGenesis::tick() { int freqt=toFreq(chan[i].freq); immWrite(chanOffs[i]+ADDR_FREQH,freqt>>8); immWrite(chanOffs[i]+ADDR_FREQ,freqt&0xff); - if (chan[i].furnaceDac) { + if (chan[i].furnaceDac && dacMode) { double off=1.0; if (dacSample>=0 && dacSamplesong.sampleLen) { DivSample* s=parent->song.sample[dacSample];