From 992fefd9d2719ceb2fe4eee78f902965bacc7b4d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Nov 2022 02:14:02 -0500 Subject: [PATCH] C64: fix glitches when one-tick gap is on --- src/engine/playback.cpp | 6 ++++-- src/gui/compatFlags.cpp | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index b8d88e07c..d21f87398 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1045,8 +1045,10 @@ void DivEngine::nextRow() { if (!(pat->data[curRow][0]==0 && pat->data[curRow][1]==0)) { if (pat->data[curRow][0]!=100 && pat->data[curRow][0]!=101 && pat->data[curRow][0]!=102) { if (!chan[i].legato) { + bool wantPreNote=false; if (disCont[dispatchOfChan[i]].dispatch!=NULL) { - if (disCont[dispatchOfChan[i]].dispatch->getWantPreNote()) dispatchCmd(DivCommand(DIV_CMD_PRE_NOTE,i,ticks)); + wantPreNote=disCont[dispatchOfChan[i]].dispatch->getWantPreNote(); + if (wantPreNote) dispatchCmd(DivCommand(DIV_CMD_PRE_NOTE,i,ticks)); } if (song.oneTickCut) { @@ -1064,7 +1066,7 @@ void DivEngine::nextRow() { } } } - if (doPrepareCut && chan[i].cut<=0) chan[i].cut=ticks; + if (doPrepareCut && !wantPreNote && chan[i].cut<=0) chan[i].cut=ticks; } } } diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp index 930531353..165af74f3 100644 --- a/src/gui/compatFlags.cpp +++ b/src/gui/compatFlags.cpp @@ -77,7 +77,7 @@ void FurnaceGUI::drawCompatFlags() { } ImGui::Checkbox("Auto-insert one tick gap between notes",&e->song.oneTickCut); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("when enabled, a one-tick note cut will be inserted between non-legato/non-portamento notes.\nthis simulates the behavior of some Amiga/SNES music engines."); + ImGui::SetTooltip("when enabled, a one-tick note cut will be inserted between non-legato/non-portamento notes.\nthis simulates the behavior of some Amiga/SNES music engines.\n\nineffective on C64."); } ImGui::Checkbox("Broken speed alternation",&e->song.brokenSpeedSel); if (ImGui::IsItemHovered()) {