From 47be21df4db1a3f0bb42a308a14e655b2d65acdc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 26 Dec 2022 16:09:38 -0500 Subject: [PATCH] f-num/block range fix --- src/engine/engine.cpp | 4 ++++ src/engine/platform/ym2203.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 6ee8513f5..c75d86fae 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2104,6 +2104,10 @@ double DivEngine::calcBaseFreq(double clock, double divider, int note, bool peri if (tuning>500.0) tuning=500.0; \ int boundaryBottom=tuning*pow(2.0,0.25)*(divider/clock); \ int boundaryTop=2.0*tuning*pow(2.0,0.25)*(divider/clock); \ + while (boundaryTop>((1<>=1; \ + boundaryBottom>>=1; \ + } \ int block=(note)/12; \ if (block<0) block=0; \ if (block>7) block=7; \ diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index a968d49d2..cd6df57f8 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -449,7 +449,7 @@ void DivPlatformYM2203::tick(bool sysTick) { if (parent->song.linearPitch==2) { chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,4,chan[i].pitch2,chipClock,CHIP_FREQBASE,11); } else { - int fNum=parent->calcFreq(chan[i].baseFreq&0x7ff,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,4,chan[i].pitch2); + int fNum=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,4,chan[i].pitch2); int block=(chan[i].baseFreq&0xf800)>>11; if (fNum<0) fNum=0; if (fNum>2047) {