Der MOS 6567/6569 Videocontroller (VIC-II)
und seine Anwendung im Commodore 64
Inhalt
3. Funktionsweise des VIC
3.14. Effekte/Anwendungen
3.14.4. Linecrunch
english Vorheriger Abschnitt Nächster Abschnitt

Die Manipulation von YSCROLL bietet noch mehr Möglichkeiten, auf Bad Lines Einfluß zu nehmen. Man kann auch eine Bad Line vor ihrer korrekten Beendigung abbrechen, indem man durch Änderung an YSCROLL den Bad-Line-Zustand innerhalb einer angefangenen Bad Line vor Zyklus 14 wieder wegnimmt. Das hat mehrere Konsequenzen:

  • Der Grafikdaten-Sequenzer geht in den Display-Zustand, es wird also Grafik dargestellt.
  • Der RC wird nicht zurückgesetzt. Wenn man gleich die erste Bad Line eines Bilds auf diese Art abbricht, steht der RC noch von der letzten Zeile des vorigen Bildes auf 7.
  • In Zyklus 58 der Zeile ist RC immer noch 7, darum geht der Sequenzer in den Idle-Zustand und VCBASE wird mit VC geladen. Da der Sequenzer aber innerhalb der Zeile im Display-Zustand war, wurde VC nach jedem g-Zugriff erhöht, also ist VCBASE jetzt effektiv um 40 erhöht worden. Der RC macht keinen Überlauf, er bleibt auf 7.

Mit diesem Verfahren hat man also die Darstellung einer Textzeile auf deren letzte Rasterzeile reduziert, denn weil VCBASE um 40 erhöht wird, geht der VIC anschließend zur nächsten Zeile über. Daher wird dieser Effekt als "Linecrunch" bezeichnet: Man kann damit einzelne Textzeilen "wegcrunchen".

Wenn man nun in jeder Rasterzeile so vorgeht, so steht der RC immer auf 7 und es finden keine c-Zugriffe statt, aber VCBASE wird in jeder Zeile um 40 erhöht. Dies führt irgendwann dazu, daß VCBASE die 1000-Byte-Grenze der Videomatrix überschreitet und der VIC auch die letzten, normalerweise unsichtbaren 24 Byte der Matrix darstellt (in denen u.a. die Spritedatenzeiger abgelegt sind) und bei Erreichen von 1024 wieder bei Null anfängt.

Dadurch, daß man ganze Textzeilen auf je eine Rasterzeile crunchen kann, hat man eine Möglichkeit, den Bildschirminhalt schnell um große Distanzen nach oben zu scrollen, ohne den Grafikspeicher zu ändern, ähnlich wie man ihn mit FLD nach unten scrollen kann. Der einzige störende Nebeneffekt dabei ist, daß sich die weggecrunchten Zeilen am oberen Bildschirmrand ansammeln, was unschön aussieht. Hier kann man aber durch Anwendung eines der ungültigen Grafikmodi recht praktisch im Bereich dieser Zeilen auf schwarz schalten.