show_now_play_link (blinking highlight for the currently playing track
in the list, plus the end-of-track autoplay/parse_url check) still ran
inside int_text_off via pt_play, doing its own extra page switch
(set_Textpage_lite) and an 80-byte write - on top of the analyzer this
was the remaining source of the vertical stripe flicker, specifically
when the playing track is scrolled into view. Split it out of pt_play
and call it from the main loop alongside the analyzer; the player tick
itself is untouched.
Confirmed on hardware: no flicker left, including across autoplay to
the next track.
The AY volume-bar indicator (music_analizator) ran inside int_text_off,
the same precisely-timed interrupt chain that switches between text and
graphics video modes. Its DMA clear + page switching + drawing could
overrun that timing budget on dynamic tracks, causing visible vertical
stripe flicker. Moved it to the main loop (once per frame, after
wait_frame) instead, leaving the player tick (pt_play) and its tempo
timing untouched inside the interrupt.
Also waits for the DMA clear to finish before drawing bars into the
same memory (previously a write race).