Benutzer:Berni/Rastertrick/Sprite-Multiplexer

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Simpler Sprite-Multiplexer: Ein Sprite wird dreimal auf dem Bildschirm dargestellt.

Da der VIC die Y-Koordinate eines Sprites immer nur in der ersten Zeile eines Sprites berücksichtigt, kann man mit den Y-Koordinaten fast keine Rastertricks machen. Einen wichtigen gibt es aber dennoch: Den Sprite-Multiplexer.

Wenn ein Sprite nämlich vollständig auf den Bildschirm gezeichnet worden ist, kann man die Y-Koordinate verändern. Dann wird es an anderer Stelle (also weiter unten) erneut auf den Bildschirm gezeichnet. Dadurch entsteht der Eindruck, dass es sich um zwei Sprites handelt. Man kann hierbei sogar andere Eigenschaften des Sprites ändern.

Im nachfolgenden Beispiel wird ein Sprite dreimal dargestellt. Wie man im Source-Code sehen kann, kann man die Y-Koordinate bereits in der zweiten Zeile des Sprites ändern. Das Sprite wird dennoch vollständig dargestellt.

*=$c000

         lda #00           ; Hintergrund schwarz
         sta $d020
         sta $d021

         lda #$01          ; Sprite initialisieren
         sta $D015
         lda #100
         sta $D000

         lda #13
         sta 2040

         ldy #62
         lda #255
-        sta 832,y
         dey
         bpl -

         sei                ; Interrupt abschalten

loop
-        lda $d012          ; Auf Zeile 100 warten
         cmp #100
         bne -
         sta $d001

-        lda $d012          ; Auf Zeile 140 warten
         cmp #140
         bne -
         sta $d001

-        lda $d012          ; In Zeile 141 kann man
         cmp #141           ; bereits die neue Y-Position
         bne -              ; des Sprites speichern
         lda #200           ; VIC beachtet diese nicht mehr
         sta $d001

         bne loop