diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 472038175..e4a0bedc2 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -228,6 +228,7 @@ void DivPlatformSMS::tick(bool sysTick) { if (parent->song.snNoLowPeriods) { if (chan[3].actualNote>0x5d) chan[3].freq=0x01; } + if (chan[3].freq<0) chan[3].freq=0; if (snNoiseMode&2) { // take period from channel 3 if (updateSNMode || resetPhase) { if (snNoiseMode&1) { diff --git a/src/engine/platform/t6w28.cpp b/src/engine/platform/t6w28.cpp index 4578e79c3..5830b4283 100644 --- a/src/engine/platform/t6w28.cpp +++ b/src/engine/platform/t6w28.cpp @@ -146,6 +146,7 @@ void DivPlatformT6W28::tick(bool sysTick) { } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { chan[i].freq=snCalcFreq(i); + if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>1023) chan[i].freq=1023; if (i==3) { rWrite(1,0x80|(2<<5)|(chan[3].freq&15));