Ich habe keinen Disassembler verwendet, deswegen muss ich raten:
Das Scrolling von links nach rechts verwendet die CRTC-Register 12 und 13 (Sprünge von vier Pixeln in Mode 0). Durch die Aufteilung der Bewegung auf zwei Puffer verkleinern sich die Sprünge auf zwei Pixel.
Das Scrolling von oben nach unten verwendet CRTC-Register 5, um eine 8-Pixel-Zeile zwischen dem Hauptbild und einem Hilfsbild aufzuteilen. Damit könnte man in Schritten von 1 Pixel scrollen, der Symmetrie halber wird aber 2 Pixel weit gescrollt.
Vermutlich kann man die obige Erklärung größtenteils vergessen, wenn man berücksichtigt, dass die Demo im Overscan arbeitet.