diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 5e9793a8..fbe31dae 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -271,9 +271,20 @@ void DivPlatformNES::tick(bool sysTick) { if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { if (i==3) { // noise int ntPos=chan[i].baseFreq; - if (ntPos<0) ntPos=0; - if (ntPos>252) ntPos=252; - chan[i].freq=(parent->song.properNoiseLayout)?(15-(chan[i].baseFreq&15)):(noiseTable[ntPos]); + if (NEW_ARP_STRAT) { + if (chan[i].fixedArp) { + ntPos=chan[i].baseNoteOverride; + } else { + ntPos+=chan[i].arpOff; + } + } + if (parent->song.properNoiseLayout) { + if (ntPos<0) ntPos=0; + if (ntPos>252) ntPos=252; + chan[i].freq=noiseTable[ntPos]; + } else { + chan[i].freq=15-(ntPos&15); + } } else { 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)-1; if (chan[i].freq>2047) chan[i].freq=2047;