Use bsr() in frequency shift calculations
This commit is contained in:
parent
9905981e61
commit
6a58797669
6 changed files with 77 additions and 145 deletions
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "saa.h"
|
||||
#include "../engine.h"
|
||||
#include "../bsr.h"
|
||||
#include "sound/saa1099.h"
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
|
@ -155,22 +156,9 @@ void DivPlatformSAA1099::tick(bool sysTick) {
|
|||
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
||||
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,true,0,chan[i].pitch2,chipClock,CHIP_DIVIDER);
|
||||
if (chan[i].freq>65535) chan[i].freq=65535;
|
||||
if (chan[i].freq>=32768) {
|
||||
chan[i].freqH=7;
|
||||
} else if (chan[i].freq>=16384) {
|
||||
chan[i].freqH=6;
|
||||
} else if (chan[i].freq>=8192) {
|
||||
chan[i].freqH=5;
|
||||
} else if (chan[i].freq>=4096) {
|
||||
chan[i].freqH=4;
|
||||
} else if (chan[i].freq>=2048) {
|
||||
chan[i].freqH=3;
|
||||
} else if (chan[i].freq>=1024) {
|
||||
chan[i].freqH=2;
|
||||
} else if (chan[i].freq>=512) {
|
||||
chan[i].freqH=1;
|
||||
} else {
|
||||
chan[i].freqH=0;
|
||||
chan[i].freqH=0;
|
||||
if (chan[i].freq>511) {
|
||||
chan[i].freqH=bsr((unsigned short)chan[i].freq)-9;
|
||||
}
|
||||
chan[i].freqL=0xff-(chan[i].freq>>chan[i].freqH);
|
||||
chan[i].freqH=7-chan[i].freqH;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue