Hallo zusammen,
ich "bastel" gerade an einem kleinen Demo und habe das Problem, das meine Routine nicht auf das Bit 7 von $D011 (Rasterzeile über 256). Die Befehlsfolge wartet nicht darauf, das die Rasterzeile oberhalb 255 ist (sprich Bit 7 gesetzt in $D011). Für mein Verständis dürfte sie nur weiterlaufen, wenn $d012 = 1 & $d011 Bit 7 gesetzt ist. Laut Vice wartet die Routine immer auf Rasterzeile 1 und nicht auf Rasterzeile 256. Irgendwo habe ich einen Denkfehler - nur wo? Ich habe mir schon Tage den Kopf zerbrochen.
Code
- ldy #$07 ; Anzahl der zu schreibenden Farbwerte
- ldx #$27 ; eine Bildschirmzeile
- farb_fading_wait_raster lda #$01 ; auf Rasterzeile 01 warten
- cmp $d012
- bne farb_fading_wait_raster+2
- bit $d011 ; Warten bis Bit 7 gesetzt
- bmi farb_fading_wait_raster
- farb_fading_loop
- lda farb_fading_wert,y ; Farbe holen
- sta $d850,x ; und in Farbram schreiben
- sta $d878,x
- sta $d8a0,x
- sta $d8c8,x
- sta $d8f0,x
- sta $d918,x
- sta $d940,x
- sta $d968,x
- sta $d990,x
- sta $d9b8,x
- sta $d9e0,x
- sta $da08,x
- sta $da30,x
- sta $da58,x
- dex ; Farbramposition verringern
- bpl farb_fading_loop ; und ausgeben
- dey ; Farbwert verringern
- bpl farb_fading+2 ; weiter in Schleife bis 0
- rts
- farb_fading_wert !byte $0f,$0c,$03,$0e,$04,$02,$0c,$00