Advertisement
verz

RollCol 6502

Apr 2nd, 2020
1,159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; 10 SYS2049
  2.  
  3. *=$801
  4.  
  5.         BYTE    $0B, $08, $0A, $00, $9E, $32, $30, $36, $31, $00, $00, $00
  6.  
  7. ScrnBase = $0400
  8. ScrnCol  = $d800
  9. cFC=81
  10.  
  11. ;        ; ---------------------------------------------
  12. ;        ; FillScreen +
  13. ;        ; ColorScreen: posiziona e colora i pallini
  14. ;        ;
  15. ;        ; ad ogni ciclo disegna il pallino e
  16. ;        ; colora la cella video, incrementando il
  17. ;        ; codice colore. Ogni 40 pallini c'è il cambio
  18. ;        ; di riga e quindi aumenta il codice colore di 9;
  19. ;        ; termina quando il puntatore arriva a $dc00
  20.  
  21.  
  22.         ldx #40         ; contatore di colonna
  23.         lda #$4         ; puntatore $fb/fc a $0400
  24.         sta $fc
  25.         lda #$d8
  26.         sta $fe         ; puntatore $fd/fe a $d800
  27. _pp     ldy #0
  28.         sty $fd
  29.         sty $fb
  30.  
  31. _rp     sta ($fd),y     ; memorizza il colore
  32.         lda #cFC        ; codice del pallino
  33.         sta ($fb),y     ; pallino in cella video
  34.         lda ($fd),y
  35.         clc
  36.         adc #1          ; codice colore successivo
  37.         dex             ; colonna precedente
  38.         bne _nxt        ; se non siamo alla prima colonna salta oltre
  39.         ldx #40         ; reset contatore di colonna
  40.         clc
  41.         adc #9          ; codice colore +9 (ogni riga è +9 dal colore dell'ultima colonna della riga precedente)
  42. _nxt    iny             ; prossimi elementi, con gli stessi puntatori
  43.         bne _rp         ; se Y<>0 (cioè se posso usare gli stessi puntatori)
  44.         inc $fc         ; incremento puntatori
  45.         inc $fe
  46.         ldy $fe
  47.         cpy #$dc        ; ho superato la MemCol?
  48.         bne _pp         ; se no cicla
  49.         ; tot 48 bytes
  50.  
  51.  
  52.  
  53. ;        ; ---------------------------------------------
  54. ;        ; RollColors
  55. ;        ;
  56. ;        ; Incrementa il codice colore delle locazioni di
  57. ;        ; memoria colore. C'è un doppio delay per sincronizzarsi
  58. ;        ; con il raster video ed avere un effetto scroll pulito
  59.  
  60.  
  61. RollCol
  62.         ldx #250                ; ciclo (all'indietro) sulla MemCol
  63. lpRCol  inc ScrnCol-1,x         ; incremento ogni singolo byte di MemCol
  64.         inc ScrnCol+249,x
  65.         inc ScrnCol+499,x
  66.         inc ScrnCol+749,x       ; incremento anche 24 byte inutilizzati oltre MemCol
  67.         dex
  68.         bne lpRCol
  69.         ; tot 17 bytes
  70.  
  71.  
  72.         ; ---------------------------------------------
  73.         ; Delay
  74.  
  75.         lda #250
  76. _rit    cmp $d012
  77.         bne _rit
  78.         lda #220
  79. _rit2   cmp $d012
  80.         bne _rit2
  81.         ; tot 14 bytes
  82.  
  83.  
  84.         ; ---------------------------------------------
  85.         ; Repeat
  86.  
  87.         beq RollCol
  88.         ; tot 2 bytes
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement