VSP

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Baustelle Dieser Artikel befindet sich im Aufbau und ist vorläufig als Entwurf einzustufen.


VSP (Variable Screen Positioning) ist ein undokumentierter Effekt des VIC-II-Chips und entspricht einem horizontalen Scrollen. Das "Gegenstück" dazu ist das vertikale Scrolling, oft auch unter dem Begriff "Linecrunching" bekannt. Eine Kombination dieser beiden Effekt wird auch mit AGSP (Any Given Screen Position") bezeichnet, um den Screen beliebig in X- und Y-Richtung zu scrollen.[1]

Effekt[Bearbeiten]

VSP benötigt ein absolut zyklenexaktes Timing (das VIC-Register $D011 muss zum richtigen Zeitpunkt geändert werden). Der Zeitpunkt hängt davon ab, wie weit gescrollt werden soll (Offset). Dabei liegt der Trick darin, dass das Timing stabil bleibt, wofür die entsprechende Wartezyklen exakt eingelegt werden müssen.

Typisches Einstazgebiet ist das horizontales Scrolling bei einem Platformer-Spiel. Gemeinsam mit dem Pixel-Scroll-Register des VIC kann nach 8 Pixel des Fine-Scrollings der Bildschirminhalt effizient "weitergeschaltet" werden. Typischerweise muss nur eine neue Spalte aufgebaut werden (inklusive jener in einem Double-Buffer sind das rund 2x25 Byte).

Die Belastung des Systems ist dabei recht gering, denn man benötigt lediglich ein stabiles Timing für Rasterzeilen-Interrupt am oberen Rand des Schirms und weitere Raster-Interrupts, um die neue Bildspalte zeitlich verteilt aufzufüllen (für Zeichen und Farbe). Der aufwändigere Teil ist dann am Bildschirmende, wenn auf den anderen Double-Buffer-Screen umgeschaltet wird. Für den Zeichen-Screen reicht zwar das Umsetzen eines VIC-Registers, aber das Farb-RAM muss vollständig umkopiert werden.[2]

Bug[Bearbeiten]

Üblicherweise lässt sich der Bug beheben, indem man andere RAM-Bausteine (anderer Hersteller oder andere Zugriffszeit) oder einen anderen VIC-Chip verwendet.[3]


Bug am C64 Reloaded

Auf einem C64 Reloaded findet sich mitunter der VSP-Bug:

  • Ein C64 Reloaded MK1 ist mit neueren VIC-II (8565) nicht 100%ig VSP-sicher.[4]
  • Ein alter VIC-II (6569) ist dagegen auf dem Reloaded MK1- 100%ig VSP-sicher.[4]


VSP-Tests
Thema: C64 Reloaded / Bugs / Auffälligkeiten auf Forum64.de zeigt konkrete Tests
VSP-Bug beheben
  • Das RAM durch SRAM (Umbau C64 auf SRAM[5]) ersetzen. Es gibt auch eine SRAM-Platine, welche einfach in die RAM-Sockel der Reloaded-Platine passt.[6]
  • Beim VIC 8565R2: Neben der Lösung einen 6569-VIC einzusetzen, gibt es auch eine kleine Zusatzplatine, welche in den GAL-Sockel gesteckt wird und so ein verändertes Timing erzeugen kann, damit auch der 8565R2 keine VSP-Probleme mehr verursacht.[7] 8565R2)


Weblinks[Bearbeiten]

Quellen[Bearbeiten]

  1. Thema: FLD-VSP-Effekt vom IRQ-Kurs aus der Magic Disk auf Forum64.de (Begriffe VSP, Linecrunching, AGSP)
  2. Forum lemon64.com: Ugh. Why can't I understand VSP? Sprache:englisch
  3. Thema: VSP Bug auf Forum64.de (VSP-Bug auf Standard-Hardware beheben)
  4. 4,0 4,1 Thema: Super Mario Bros für den C64 auf Forum64.de (VSP-Bug auf C64-Reloaded-Hardware)
  5. Thema: Umbau C64 auf SRAM auf Forum64.de
  6. Thema: C64 Reloaded / Bugs / Auffälligkeiten auf Forum64.de (VSP-Bug-Behebung durch RAM-Umbau)
  7. Thema: C64 Reloaded / Bugs / Auffälligkeiten auf Forum64.de (VSP-Bug-Behebung für VIC)