diff --git a/src/engine/bsr.h b/src/engine/bsr.h index 73e7e7e1d..72191f6bd 100644 --- a/src/engine/bsr.h +++ b/src/engine/bsr.h @@ -64,7 +64,7 @@ static inline int bsr(unsigned short v) { unsigned short mask = 0x8000; for (int i = 15; i >= 0; --i) { if (v&mask) - return (int)i; + return i; mask>>=1; } @@ -75,7 +75,7 @@ static inline int bsr32(unsigned int v) { unsigned int mask = 0x80000000; for (int i = 31; i >= 0; --i) { if (v&mask) - return (int)i; + return i; mask>>=1; } diff --git a/src/engine/platform/powernoise.cpp b/src/engine/platform/powernoise.cpp index 8738723f2..941e8d2ce 100644 --- a/src/engine/platform/powernoise.cpp +++ b/src/engine/platform/powernoise.cpp @@ -210,7 +210,9 @@ void DivPlatformPowerNoise::tick(bool sysTick) { if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>0x7ffffff) chan[i].freq=0x7ffffff; - chan[i].octave=MAX(bsr32(chan[i].freq)-12,0); + int bsr32Val=bsr32(chan[i].freq); + logV("%x: %d",chan[i].freq,bsr32Val); + chan[i].octave=MAX(bsr32Val-12,0); if (chan[i].octave>15) chan[i].octave=15; chan[i].fNum=0x1000-(chan[i].freq>>chan[i].octave); if (chan[i].fNum<0) chan[i].fNum=0;