From: kub Date: Tue, 28 Sep 2021 19:10:02 +0000 (+0200) Subject: sound, fix minor clipping in psg audio X-Git-Tag: v2.00~484 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6985cdd8a93fb55cc0e98d44d967a90e2bca1df1;p=picodrive.git sound, fix minor clipping in psg audio --- diff --git a/pico/sound/sn76496.c b/pico/sound/sn76496.c index c84bd16a..27764a93 100644 --- a/pico/sound/sn76496.c +++ b/pico/sound/sn76496.c @@ -90,6 +90,7 @@ void SN76496Write(int data) case 4: /* tone 2 : frequency */ R->Period[c] = R->UpdateStep * data; if (R->Period[c] == 0) R->Period[c] = R->UpdateStep; + if (R->Count[c] > R->Period[c]) R->Count[c] = R->Period[c]; if (r == 4) { /* update noise shift frequency */ @@ -155,8 +156,9 @@ void SN76496Update(short *buffer, int length, int stereo) /* and vol[i] incremented only if the exit status of the square */ /* wave is 1. */ if (R->Count[i] < -2*R->Period[i] || R->Volume[i] == 0) { - /* Cut of anything above the Nyquist freqency */ - /* It will only create aliasing anyway */ + /* Cut off anything above the Nyquist frequency. */ + /* It will only create aliasing anyway. This is actually an */ + /* ideal lowpass filter with Nyquist corner frequency. */ vol[i] += STEP/2; // mean value R->Count[i] = R->Output[i] = 0; }