E' da stamattina che mi sto leggendo l'articolo di Pasi Ojala sulla sincronizzazione dei raster usando gli sprite... I concetti che ci stanno dietro li sto capendo abbastanza ma e' il perche' questa tecnica funziona che non mi vuole entrare in testa.
Come esperimento ho anche fatto un programma sulla falsa riga del tutorial ma non mi ha aiutato molto...
Qualcuno di voi riesce a chiarirmi le idee?
processor 6502
org $0900
RASTER = $fa
sei
lda #$7f
sta $dc0d ; Disabilito interrupt del CIA
lda #$01
sta $d01a ; Abilito raster IRQ
lda #%0000001
sta $d015 ; Abilito lo sprite 0
lda #<irq_routine
sta $0314
lda #>irq_routine
sta $0315
lda #$1b
sta $d011
lda #RASTER
sta $d012 ; Interrupt a $0fb
lda #RASTER-20
sta $d001 ; L'ultima riga dello sprite coincide con
; il raster su cui voglio l'interrupt
lda #$00
sta $d017 ; Gli sprite non sono espansi
cli
rts
irq_routine
nop
nop
nop
nop
nop
nop
nop
nop
nop
ldy #0
draw_bar
lda color,y
ldx color2,y
sta $d020
stx $d020
sta $d020
stx $d020
sta $d020
stx $d020
sta $d020
stx $d020
sta $d020
stx $d020
sta $d020
stx $d020
iny
cpy #color_end-color
bne draw_bar
lda #$00
sta $d020
;jsr rotate_color
lda #$01
sta $d019
jmp $ea31
color
dc.b 0,1,2,3,4,5,6,7
dc.b 7,0,1,2,3,4,5,6
dc.b 6,7,0,1,2,3,4,5
color_end
color2
dc.b 8,9,10,11,12,13,14,15
dc.b 15,8,9,10,11,12,13,14
dc.b 14,15,8,9,10,11,12,13
color2_end
rotate_color
lda color2_end-2
sta $fe
ldx #(color2_end-color-2)
rotr
lda color-1,x
sta color ,x
dex
bne rotr
lda $fe
sta color
rts