From 3cacbe44344b92a9e4f3fb148ea4c18f0032163b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 5 Feb 2023 03:54:30 -0500 Subject: [PATCH] TIA: fix non-working arp macro --- src/engine/platform/tia.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index d46a2b67..1e6db02c 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -135,22 +135,27 @@ void DivPlatformTIA::tick(bool sysTick) { int bf=chan[i].baseFreq; if (!parent->song.oldArpStrategy) { if (!chan[i].fixedArp) { - bf+=chan[i].arpOff; + bf+=chan[i].arpOff<<8; } } - chan[i].freq=dealWithFreq(chan[i].shape,bf,chan[i].pitch+chan[i].pitch2); - if ((chan[i].shape==4 || chan[i].shape==5) && !(chan[i].baseFreq&0x80000000 && ((chan[i].baseFreq&0x7fffffff)<32))) { - if (bf<39*256) { - rWrite(0x15+i,6); - chan[i].freq=dealWithFreq(6,bf,chan[i].pitch+chan[i].pitch2); - } else if (bf<59*256) { - rWrite(0x15+i,12); - chan[i].freq=dealWithFreq(12,bf,chan[i].pitch+chan[i].pitch2); - } else { - rWrite(0x15+i,chan[i].shape); + if (chan[i].fixedArp) { + chan[i].freq=chan[i].baseNoteOverride&31; + } else { + chan[i].freq=dealWithFreq(chan[i].shape,bf,chan[i].pitch+chan[i].pitch2); + if ((chan[i].shape==4 || chan[i].shape==5) && !(chan[i].baseFreq&0x80000000 && ((chan[i].baseFreq&0x7fffffff)<32))) { + if (bf<39*256) { + rWrite(0x15+i,6); + chan[i].freq=dealWithFreq(6,bf,chan[i].pitch+chan[i].pitch2); + } else if (bf<59*256) { + rWrite(0x15+i,12); + chan[i].freq=dealWithFreq(12,bf,chan[i].pitch+chan[i].pitch2); + } else { + rWrite(0x15+i,chan[i].shape); + } } + if (chan[i].freq>31) chan[i].freq=31; } - if (chan[i].freq>31) chan[i].freq=31; + if (chan[i].keyOff) { rWrite(0x19+i,0); }