gay_drums: Cache track_get_state
gay_drums implements partial redraws, which is a somewhat misguided approach - it can fully redraw itself fast enough (about 9 FPS), so while it does provide some additional smoothness, it's not exactly addressing the real issue at all.
What's actually slow are track_get_state
calls in draw_track_step_marker
, which have no reason to be this slow - in fact, they could be entirely omitted if gay_drums maintained its own view of the track state.