From 560ec191761ea3e177f5e5adc16cf97cdb89ae37 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 2 Jan 2023 00:00:23 -0500 Subject: [PATCH] SMS/T6W28: limit upper period --- src/engine/platform/sms.cpp | 1 + src/engine/platform/t6w28.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index cf03b93b..dd639b64 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 b318b174..c1689977 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));