X1-010: fix env slides in low latency mode

This commit is contained in:
tildearrow 2025-03-22 02:05:24 -05:00
parent bdc10b2ca0
commit 76cdc66e05

View file

@ -509,23 +509,25 @@ void DivPlatformX1_010::tick(bool sysTick) {
if (chan[i].keyOff) chan[i].keyOff=false; if (chan[i].keyOff) chan[i].keyOff=false;
chan[i].freqChanged=false; chan[i].freqChanged=false;
} }
if (chan[i].env.slide!=0) { if (sysTick) {
chan[i].env.slidefrac+=chan[i].env.slide; if (chan[i].env.slide!=0) {
while (chan[i].env.slidefrac>0xf) { chan[i].env.slidefrac+=chan[i].env.slide;
chan[i].env.slidefrac-=0x10; while (chan[i].env.slidefrac>0xf) {
if (chan[i].env.period<0xff) { chan[i].env.slidefrac-=0x10;
chan[i].env.period++; if (chan[i].env.period<0xff) {
if (!chan[i].pcm) { chan[i].env.period++;
chWrite(i,4,chan[i].env.period); if (!chan[i].pcm) {
chWrite(i,4,chan[i].env.period);
}
} }
} }
} while (chan[i].env.slidefrac<-0xf) {
while (chan[i].env.slidefrac<-0xf) { chan[i].env.slidefrac+=0x10;
chan[i].env.slidefrac+=0x10; if (chan[i].env.period>0) {
if (chan[i].env.period>0) { chan[i].env.period--;
chan[i].env.period--; if (!chan[i].pcm) {
if (!chan[i].pcm) { chWrite(i,4,chan[i].env.period);
chWrite(i,4,chan[i].env.period); }
} }
} }
} }