From 76cdc66e054be15d3a321ef3a568354fde633cb4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 22 Mar 2025 02:05:24 -0500 Subject: [PATCH] X1-010: fix env slides in low latency mode --- src/engine/platform/x1_010.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index ef0278dd4..7a05eacf4 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -509,23 +509,25 @@ void DivPlatformX1_010::tick(bool sysTick) { if (chan[i].keyOff) chan[i].keyOff=false; chan[i].freqChanged=false; } - if (chan[i].env.slide!=0) { - chan[i].env.slidefrac+=chan[i].env.slide; - while (chan[i].env.slidefrac>0xf) { - chan[i].env.slidefrac-=0x10; - if (chan[i].env.period<0xff) { - chan[i].env.period++; - if (!chan[i].pcm) { - chWrite(i,4,chan[i].env.period); + if (sysTick) { + if (chan[i].env.slide!=0) { + chan[i].env.slidefrac+=chan[i].env.slide; + while (chan[i].env.slidefrac>0xf) { + chan[i].env.slidefrac-=0x10; + if (chan[i].env.period<0xff) { + chan[i].env.period++; + if (!chan[i].pcm) { + chWrite(i,4,chan[i].env.period); + } } } - } - while (chan[i].env.slidefrac<-0xf) { - chan[i].env.slidefrac+=0x10; - if (chan[i].env.period>0) { - chan[i].env.period--; - if (!chan[i].pcm) { - chWrite(i,4,chan[i].env.period); + while (chan[i].env.slidefrac<-0xf) { + chan[i].env.slidefrac+=0x10; + if (chan[i].env.period>0) { + chan[i].env.period--; + if (!chan[i].pcm) { + chWrite(i,4,chan[i].env.period); + } } } }