Writing dummy values doesn't seem to improve it at all, if anything it's worse. However I tried the switching-the-order-depending-on-direction idea like this; triVib: ldx toneIndex lda toneHi,x sec sbc oldHi beq @c bmi @down lda toneHi,x sta $400B sta oldHi @c: lda toneLo,x cmp oldLo beq @next sta $...