SegaPCM: fix new arp strat

This commit is contained in:
tildearrow 2022-12-29 15:42:01 -05:00
parent ae4cb78c2c
commit e31f8a2115
2 changed files with 3 additions and 2 deletions

View file

@ -133,9 +133,9 @@ void DivPlatformSegaPCM::tick(bool sysTick) {
chan[i].freq=chan[i].baseFreq+(chan[i].pitch>>1)-64; chan[i].freq=chan[i].baseFreq+(chan[i].pitch>>1)-64;
if (!parent->song.oldArpStrategy) { if (!parent->song.oldArpStrategy) {
if (chan[i].fixedArp) { if (chan[i].fixedArp) {
chan[i].freq=(chan[i].baseNoteOverride<<7)+(chan[i].pitch>>1)-64+chan[i].pitch2; chan[i].freq=(chan[i].baseNoteOverride<<6)+(chan[i].pitch>>1)-64+chan[i].pitch2;
} else { } else {
chan[i].freq+=chan[i].arpOff<<7; chan[i].freq+=chan[i].arpOff<<6;
} }
} }
if (chan[i].furnacePCM) { if (chan[i].furnacePCM) {

View file

@ -1586,6 +1586,7 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi
// logic starts here // logic starts here
for (int i=0; i<song.systemLen; i++) { for (int i=0; i<song.systemLen; i++) {
// TODO: we may have a problem here
disCont[i].lastAvail=blip_samples_avail(disCont[i].bb[0]); disCont[i].lastAvail=blip_samples_avail(disCont[i].bb[0]);
if (disCont[i].lastAvail>0) { if (disCont[i].lastAvail>0) {
disCont[i].flush(disCont[i].lastAvail); disCont[i].flush(disCont[i].lastAvail);