Hab nur kurz raufgeschaut, aber überspringst du deine Flash-Routine nicht immer - ausser wenn die Position *genau* "Sprite_BorderBottom" entspricht?
cmp spr_BorderBottom // Unterer Rand erreicht?
*bne* spr_NoFlashing // Nein? Dann Sprung
Bei Zeile 14 vielleicht mal bmi statt bne nehmen..?