Zunächst können nur Sprites im Randbereich oder ein sich wiederholendes 8-Bit-Muster (8 Pixel breit) angezeigt werden, das vom letzten Byte der Videobank gelesen wird, normalerweise $ 3fff. Beachten Sie, dass Sie diese Sprites oder das 8-Bit-Muster nur sehen können, wenn Sie den VIC-Chip dazu bringen, die Ränder nicht anzuzeigen. Siehe unten.
Die Ränder haben eine höhere Priorität als Sprites. Wenn also ein Sprite in einem Grenzbereich gezeichnet wird, wird der Sprite von der Grenze überdeckt. Mit ein bisschen VIC-Chip-Tricks kannst du die Grenzen abschalten.
Sie können die oberen und unteren Ränder ganz einfach abschalten (ich werde unten erklären), und die Seite grenzt mit sehr kritischen Timing ab.
Zuerst ein paar Informationen darüber, wie der VIC-Chip auf einem c64 funktioniert.
Der VIC-Chip zeichnet den Bildschirm von oben links nach rechts oben, dann eine Zeile nach unten und von links nach rechts, bis der gesamte Bildschirm gezeichnet ist. Es führt dieses Redraw 50 Mal pro Sekunde (für PAL-Einheiten) oder 60 Mal pro Sekunde für (NTSC-Einheiten) aus.
Es gibt ein 8-Bit-VIC-Register, das zu jedem Zeitpunkt die vertikale Position des Rasters enthält. $ d012. Tatsächlich gibt es mehr als 255 mögliche Positionen, so dass das neunte Bit in Bit 7 (höchstes Bit) oder Register $ d011 gespeichert wird. An jedem Punkt können Sie diese Register lesen und die vertikale Position des Rasters herausfinden. Es gibt kein verfügbares Register, um die x-Position des Rasters zu lesen.
Eine weitere coole Funktion des VIC-Chips wurde verwendet, um ein Problem beim Hardware-Scrollen zu beheben. Grundlegendes vertikales Scrollen wurde erreicht, indem ein Hardware-Register verwendet wurde, um den Bildschirm um 0 bis 7 Pixel vertikal zu verschieben. Sobald Sie das Limit erreicht haben (0 oder 7, abhängig von der Richtung des Scrolls), würden Sie jeden Zeichenblock (8x8 Pixel) einen Block vertikal verschieben und die neuen Daten zeichnen, die oben (oder unten) angezeigt werden sollen. Dies funktioniert sehr gut, mit der Ausnahme, dass alle 8 Pixel des Bildlaufs Daten auf dem Bildschirm "Pop" angezeigt werden. Um dies zu beheben, können Sie den Randbereich um 8 Pixel vertikal vergrößern, indem Sie Bit 3 im Register $ d011 löschen. Dies wird als 24-Zeilen-Modus bezeichnet. Standardmäßig war der Bildschirm auf 25 Zeilen mit 8x8 Pixel Zeichen eingestellt. Im 24-Zeilen-Modus könnten Sie immer noch Zeichen in die untere Reihe zeichnen, sie wären nur durch den Rand verdeckt.
So Der Trick, um das Ausschalten der oberen und unteren Grenzen ist:
1) Stellen Sie den Bildschirm 25 Zeilenmodus
2) warten, bis das Raster eine vertikale Position zwischen $ f2 zu erreichen, und $ fa (die 8 Pixel zwischen denen der Rand sowohl im 24-Zeilen-Modus als auch im 25-Zeilen-Modus beginnt).
3) Stellen um den Bildschirm zu 24 Zeilenmodus ... den vertikalen Start der Grenze über die aktuelle Rasterposition zu bewegen
4) warten, bis nach vertikaler Rasterposition ($ fa)
5) Wiederholen Sie jeden Frame
Schritt 3) Tricks der VIC-Chip zu denken, dass es bereits begonnen hat, die Grenze zu zeichnen, so dass es nie beginnt, es zu zeichnen. Voila, die oberen und unteren Grenzen sind offen.
In Bezug auf Seitenränder können Sie dasselbe mit verschiedenen Registern tun, aber da die horizontale Bewegung des Rasters viel schneller ist als die vertikale Bewegung, muss das Timing viel enger sein. Und es gibt ein anderes Problem, das als Jitter bezeichnet wird. < - das werde ich hier nicht erklären. Suchen Sie im Web nach "Stable Raster C64", um dieses Problem eingehend zu erklären.
wow ... auch wenn Sie eine Antwort bekommen - haben Sie die Möglichkeit, es zu testen? – Dani
Mein c64 wartet im Keller –
Ich bin mir ziemlich sicher, dass mein Vater immer noch unseren alten C64 irgendwo im Keller weggeschleudert hat. – gnovice