home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti3 / lezione7y4.s < prev    next >
Text File  |  1995-09-29  |  13KB  |  392 lines

  1.  
  2. ; Lezione7y4.s    - Paesaggio fatto con 2 soli sprite!!
  3.  
  4. ;       Questo esempio mostra come sia possibile generare una intera 
  5. ;    schermata usando direttamente i registri degli sprite
  6.  
  7.  
  8.     SECTION    CiriCop,CODE
  9.  
  10. Inizio:
  11.     move.l    4.w,a6        ; Execbase
  12.     jsr    -$78(a6)    ; Disable
  13.     lea    GfxName(PC),a1    ; Nome lib
  14.     jsr    -$198(a6)    ; OpenLibrary
  15.     move.l    d0,GfxBase
  16.     move.l    d0,a6
  17.     move.l    $26(a6),OldCop    ; salviamo la vecchia COP
  18.  
  19. ;    Puntiamo la PIC "vuota"
  20.  
  21.     MOVE.L    #BITPLANE,d0    ; dove puntare
  22.     LEA    BPLPOINTERS,A1    ; puntatori COP
  23.     move.w    d0,6(a1)
  24.     swap    d0
  25.     move.w    d0,2(a1)
  26.  
  27. ;    NON Puntiamo lo sprite !!!!!!!!!!!!!!!!!!!!
  28.  
  29.  
  30.     move.l    #COPPERLIST,$dff080    ; nostra COP
  31.     move.w    d0,$dff088        ; START COP
  32.     move.w    #0,$dff1fc        ; NO AGA!
  33.     move.w    #$c00,$dff106        ; NO AGA!
  34.  
  35. mouse:
  36.     btst    #6,$bfe001    ; mouse premuto?
  37.     bne.s    mouse
  38.  
  39.     move.l    OldCop(PC),$dff080    ; Puntiamo la cop di sistema
  40.     move.w    d0,$dff088        ; facciamo partire la vecchia cop
  41.  
  42.     move.l    4.w,a6
  43.     jsr    -$7e(a6)    ; Enable
  44.     move.l    gfxbase(PC),a1
  45.     jsr    -$19e(a6)    ; Closelibrary
  46.     rts
  47.  
  48. ;    Dati
  49.  
  50. GfxName:
  51.     dc.b    "graphics.library",0,0
  52.  
  53. GfxBase:
  54.     dc.l    0
  55.  
  56. OldCop:
  57.     dc.l    0
  58.  
  59.  
  60.     SECTION    GRAPHIC,DATA_C
  61.  
  62. COPPERLIST:
  63. SpritePointers:
  64.     dc.w    $120,0,$122,0,$124,0,$126,0,$128,0 ; SPRITE
  65.     dc.w    $12a,0,$12c,0,$12e,0,$130,0,$132,0
  66.     dc.w    $134,0,$136,0,$138,0,$13a,0,$13c,0
  67.     dc.w    $13e,0
  68.  
  69.     dc.w    $8E,$2c81    ; DiwStrt
  70.     dc.w    $90,$2cc1    ; DiwStop
  71.     dc.w    $92,$38        ; DdfStart
  72.     dc.w    $94,$d0        ; DdfStop
  73.     dc.w    $102,0        ; BplCon1
  74.     dc.w    $104,0        ; BplCon2
  75.     dc.w    $108,0        ; Bpl1Mod
  76.     dc.w    $10a,0        ; Bpl2Mod
  77.  
  78.             ; 5432109876543210
  79.     dc.w    $100,%0001001000000000    ; bit 12 acceso!! 1 bitplane lowres
  80.  
  81. BPLPOINTERS:
  82.     dc.w $e0,0,$e2,0    ;primo     bitplane
  83.  
  84.     dc.w    $180,$000    ; color0    ; sfondo nero
  85.     dc.w    $182,$123    ; color1    ; colore 1 del bitplane, che
  86.                         ; in questo caso e' vuoto,
  87.                         ; per cui non compare.
  88.  
  89.     dc.w    $01ba,$0fff        ; colore 29
  90.     dc.w    $01bc,$0aaa        ; colore 30
  91.     dc.w    $01be,$0753        ; colore 31
  92.  
  93. ; per comodita` usiamo dei simboli. Ricordo che si puo' definire un simbolo
  94. ; o EQUATE in due modi, e cioe', come in questo caso, ponendo il nome del
  95. ; simbolo che vogliamo creare senza spaziature, seguito da un = e dal valore
  96. ; che tale simbolo dovra' rappresentare, oppure nella stesso modo, ma con il
  97. ; simbolo EQU anziche' l'=.
  98.  
  99. spr6pos        = $170
  100. spr6data    = $174
  101. spr6datb    = $176
  102. spr7pos        = $178
  103. spr7data    = $17c
  104. spr7datb    = $17e
  105.  
  106. ; linea $50
  107.     dc.w    $5025,$fffe
  108.     dc.w    spr6data,$0,spr6datb,$0,spr7data,$f000,spr7datb,$0
  109.     dc.w    spr6pos,$40,spr7pos,$48,$504b,$fffe
  110.     dc.w    spr6pos,$50,spr7pos,$58,$505b,$fffe
  111.     dc.w    spr6pos,$60,spr7pos,$68,$506b,$fffe
  112.     dc.w    spr6pos,$70,spr7pos,$78,$507b,$fffe
  113.     dc.w    spr6pos,$80,spr7pos,$88,$508b,$fffe
  114.     dc.w    spr6pos,$90,spr7pos,$98,$509b,$fffe
  115.     dc.w    spr6pos,$a0,spr7pos,$a8,$50ab,$fffe
  116.     dc.w    spr6pos,$b0,spr7pos,$b8,$50bb,$fffe
  117.     dc.w    spr6pos,$c0,spr7pos,$c8,$50cb,$fffe
  118.     dc.w    spr6pos,$d0,spr7pos,$d8,$50db,$fffe
  119.  
  120. ; linea $51
  121.     dc.w    $5125,$fffe
  122.     dc.w    spr6data,$0001,spr6datb,$0000,spr7data,$b800,spr7datb,$4000
  123.     dc.w    spr6pos,$40,spr7pos,$48,$514b,$fffe
  124.     dc.w    spr6pos,$50,spr7pos,$58,$515b,$fffe
  125.     dc.w    spr6pos,$60,spr7pos,$68,$516b,$fffe
  126.     dc.w    spr6pos,$70,spr7pos,$78,$517b,$fffe
  127.     dc.w    spr6pos,$80,spr7pos,$88,$518b,$fffe
  128.     dc.w    spr6pos,$90,spr7pos,$98,$519b,$fffe
  129.     dc.w    spr6pos,$a0,spr7pos,$a8,$51ab,$fffe
  130.     dc.w    spr6pos,$b0,spr7pos,$b8,$51bb,$fffe
  131.     dc.w    spr6pos,$c0,spr7pos,$c8,$51cb,$fffe
  132.     dc.w    spr6pos,$d0,spr7pos,$d8,$51db,$fffe
  133.  
  134. ; linea $52
  135.     dc.w    $5225,$fffe
  136.     dc.w    spr6data,$0003,spr6datb,$0000,spr7data,$bc00,spr7datb,$4000
  137.     dc.w    spr6pos,$40,spr7pos,$48,$524b,$fffe
  138.     dc.w    spr6pos,$50,spr7pos,$58,$525b,$fffe
  139.     dc.w    spr6pos,$60,spr7pos,$68,$526b,$fffe
  140.     dc.w    spr6pos,$70,spr7pos,$78,$527b,$fffe
  141.     dc.w    spr6pos,$80,spr7pos,$88,$528b,$fffe
  142.     dc.w    spr6pos,$90,spr7pos,$98,$529b,$fffe
  143.     dc.w    spr6pos,$a0,spr7pos,$a8,$52ab,$fffe
  144.     dc.w    spr6pos,$b0,spr7pos,$b8,$52bb,$fffe
  145.     dc.w    spr6pos,$c0,spr7pos,$c8,$52cb,$fffe
  146.     dc.w    spr6pos,$d0,spr7pos,$d8,$52db,$fffe
  147.  
  148. ; linea $53
  149.     dc.w    $5325,$fffe
  150.     dc.w    spr6data,$0002,spr6datb,$0001,spr7data,$ec00,spr7datb,$1200
  151.     dc.w    spr6pos,$40,spr7pos,$48,$534b,$fffe
  152.     dc.w    spr6pos,$50,spr7pos,$58,$535b,$fffe
  153.     dc.w    spr6pos,$60,spr7pos,$68,$536b,$fffe
  154.     dc.w    spr6pos,$70,spr7pos,$78,$537b,$fffe
  155.     dc.w    spr6pos,$80,spr7pos,$88,$538b,$fffe
  156.     dc.w    spr6pos,$90,spr7pos,$98,$539b,$fffe
  157.     dc.w    spr6pos,$a0,spr7pos,$a8,$53ab,$fffe
  158.     dc.w    spr6pos,$b0,spr7pos,$b8,$53bb,$fffe
  159.     dc.w    spr6pos,$c0,spr7pos,$c8,$53cb,$fffe
  160.     dc.w    spr6pos,$d0,spr7pos,$d8,$53db,$fffe
  161.  
  162. ; linea $54
  163.     dc.w    $5425,$fffe
  164.     dc.w    spr6data,$0007,spr6datb,$0000,spr7data,$2b00,spr7datb,$d400
  165.     dc.w    spr6pos,$40,spr7pos,$48,$544b,$fffe
  166.     dc.w    spr6pos,$50,spr7pos,$58,$545b,$fffe
  167.     dc.w    spr6pos,$60,spr7pos,$68,$546b,$fffe
  168.     dc.w    spr6pos,$70,spr7pos,$78,$547b,$fffe
  169.     dc.w    spr6pos,$80,spr7pos,$88,$548b,$fffe
  170.     dc.w    spr6pos,$90,spr7pos,$98,$549b,$fffe
  171.     dc.w    spr6pos,$a0,spr7pos,$a8,$54ab,$fffe
  172.     dc.w    spr6pos,$b0,spr7pos,$b8,$54bb,$fffe
  173.     dc.w    spr6pos,$c0,spr7pos,$c8,$54cb,$fffe
  174.     dc.w    spr6pos,$d0,spr7pos,$d8,$54db,$fffe
  175.  
  176. ; linea $55
  177.     dc.w    $5525,$fffe
  178.     dc.w    spr6data,$001c,spr6datb,$0003,spr7data,$e780,spr7datb,$1800
  179.     dc.w    spr6pos,$40,spr7pos,$48,$554b,$fffe
  180.     dc.w    spr6pos,$50,spr7pos,$58,$555b,$fffe
  181.     dc.w    spr6pos,$60,spr7pos,$68,$556b,$fffe
  182.     dc.w    spr6pos,$70,spr7pos,$78,$557b,$fffe
  183.     dc.w    spr6pos,$80,spr7pos,$88,$558b,$fffe
  184.     dc.w    spr6pos,$90,spr7pos,$98,$559b,$fffe
  185.     dc.w    spr6pos,$a0,spr7pos,$a8,$55ab,$fffe
  186.     dc.w    spr6pos,$b0,spr7pos,$b8,$55bb,$fffe
  187.     dc.w    spr6pos,$c0,spr7pos,$c8,$55cb,$fffe
  188.     dc.w    spr6pos,$d0,spr7pos,$d8,$55db,$fffe
  189.  
  190. ; linea $56
  191.     dc.w    $5625,$fffe
  192.     dc.w    spr6data,$803e,spr6datb,$0001,spr7data,$9ac1,spr7datb,$6500
  193.     dc.w    spr6pos,$40,spr7pos,$48,$564b,$fffe
  194.     dc.w    spr6pos,$50,spr7pos,$58,$565b,$fffe
  195.     dc.w    spr6pos,$60,spr7pos,$68,$566b,$fffe
  196.     dc.w    spr6pos,$70,spr7pos,$78,$567b,$fffe
  197.     dc.w    spr6pos,$80,spr7pos,$88,$568b,$fffe
  198.     dc.w    spr6pos,$90,spr7pos,$98,$569b,$fffe
  199.     dc.w    spr6pos,$a0,spr7pos,$a8,$56ab,$fffe
  200.     dc.w    spr6pos,$b0,spr7pos,$b8,$56bb,$fffe
  201.     dc.w    spr6pos,$c0,spr7pos,$c8,$56cb,$fffe
  202.     dc.w    spr6pos,$d0,spr7pos,$d8,$56db,$fffe
  203.  
  204. ; linea $57
  205.     dc.w    $5725,$fffe
  206.     dc.w    spr6data,$c079,spr6datb,$0006,spr7data,$b6e7,spr7datb,$4910
  207.     dc.w    spr6pos,$40,spr7pos,$48,$574b,$fffe
  208.     dc.w    spr6pos,$50,spr7pos,$58,$575b,$fffe
  209.     dc.w    spr6pos,$60,spr7pos,$68,$576b,$fffe
  210.     dc.w    spr6pos,$70,spr7pos,$78,$577b,$fffe
  211.     dc.w    spr6pos,$80,spr7pos,$88,$578b,$fffe
  212.     dc.w    spr6pos,$90,spr7pos,$98,$579b,$fffe
  213.     dc.w    spr6pos,$a0,spr7pos,$a8,$57ab,$fffe
  214.     dc.w    spr6pos,$b0,spr7pos,$b8,$57bb,$fffe
  215.     dc.w    spr6pos,$c0,spr7pos,$c8,$57cb,$fffe
  216.     dc.w    spr6pos,$d0,spr7pos,$d8,$57db,$fffe
  217.  
  218. ; linea $58
  219.     dc.w    $5825,$fffe
  220.     dc.w    spr6data,$c07f,spr6datb,$0048,spr7data,$fff6,spr7datb,$2009
  221.     dc.w    spr6pos,$40,spr7pos,$48,$584b,$fffe
  222.     dc.w    spr6pos,$50,spr7pos,$58,$585b,$fffe
  223.     dc.w    spr6pos,$60,spr7pos,$68,$586b,$fffe
  224.     dc.w    spr6pos,$70,spr7pos,$78,$587b,$fffe
  225.     dc.w    spr6pos,$80,spr7pos,$88,$588b,$fffe
  226.     dc.w    spr6pos,$90,spr7pos,$98,$589b,$fffe
  227.     dc.w    spr6pos,$a0,spr7pos,$a8,$58ab,$fffe
  228.     dc.w    spr6pos,$b0,spr7pos,$b8,$58bb,$fffe
  229.     dc.w    spr6pos,$c0,spr7pos,$c8,$58cb,$fffe
  230.     dc.w    spr6pos,$d0,spr7pos,$d8,$58db,$fffe
  231.  
  232. ; linea $59
  233.     dc.w    $5925,$fffe
  234.     dc.w    spr6data,$e06f,spr6datb,$0096,spr7data,$7eaf,spr7datb,$a150
  235.     dc.w    spr6pos,$40,spr7pos,$48,$594b,$fffe
  236.     dc.w    spr6pos,$50,spr7pos,$58,$595b,$fffe
  237.     dc.w    spr6pos,$60,spr7pos,$68,$596b,$fffe
  238.     dc.w    spr6pos,$70,spr7pos,$78,$597b,$fffe
  239.     dc.w    spr6pos,$80,spr7pos,$88,$598b,$fffe
  240.     dc.w    spr6pos,$90,spr7pos,$98,$599b,$fffe
  241.     dc.w    spr6pos,$a0,spr7pos,$a8,$59ab,$fffe
  242.     dc.w    spr6pos,$b0,spr7pos,$b8,$59bb,$fffe
  243.     dc.w    spr6pos,$c0,spr7pos,$c8,$59cb,$fffe
  244.     dc.w    spr6pos,$d0,spr7pos,$d8,$59db,$fffe
  245.  
  246. ; linea $5a
  247.     dc.w    $5a25,$fffe
  248.     dc.w    spr6data,$61ed,spr6datb,$9013,spr7data,$dfff,spr7datb,$6cab
  249.     dc.w    spr6pos,$40,spr7pos,$48,$5a4b,$fffe
  250.     dc.w    spr6pos,$50,spr7pos,$58,$5a5b,$fffe
  251.     dc.w    spr6pos,$60,spr7pos,$68,$5a6b,$fffe
  252.     dc.w    spr6pos,$70,spr7pos,$78,$5a7b,$fffe
  253.     dc.w    spr6pos,$80,spr7pos,$88,$5a8b,$fffe
  254.     dc.w    spr6pos,$90,spr7pos,$98,$5a9b,$fffe
  255.     dc.w    spr6pos,$a0,spr7pos,$a8,$5aab,$fffe
  256.     dc.w    spr6pos,$b0,spr7pos,$b8,$5abb,$fffe
  257.     dc.w    spr6pos,$c0,spr7pos,$c8,$5acb,$fffe
  258.     dc.w    spr6pos,$d0,spr7pos,$d8,$5adb,$fffe
  259.  
  260. ; linea $5b
  261.     dc.w    $5b25,$fffe
  262.     dc.w    spr6data,$db9f,spr6datb,$72ed,spr7data,$ffff,spr7datb,$dbee
  263.     dc.w    spr6pos,$40,spr7pos,$48,$5b4b,$fffe
  264.     dc.w    spr6pos,$50,spr7pos,$58,$5b5b,$fffe
  265.     dc.w    spr6pos,$60,spr7pos,$68,$5b6b,$fffe
  266.     dc.w    spr6pos,$70,spr7pos,$78,$5b7b,$fffe
  267.     dc.w    spr6pos,$80,spr7pos,$88,$5b8b,$fffe
  268.     dc.w    spr6pos,$90,spr7pos,$98,$5b9b,$fffe
  269.     dc.w    spr6pos,$a0,spr7pos,$a8,$5bab,$fffe
  270.     dc.w    spr6pos,$b0,spr7pos,$b8,$5bbb,$fffe
  271.     dc.w    spr6pos,$c0,spr7pos,$c8,$5bcb,$fffe
  272.     dc.w    spr6pos,$d0,spr7pos,$d8,$5bdb,$fffe
  273.  
  274. ; linea $5c
  275.     dc.w    $5c25,$fffe
  276.     dc.w    spr6data,$ffff,spr6datb,$cfbf,spr7data,$ffff,spr7datb,$ff3f
  277.     dc.w    spr6pos,$40,spr7pos,$48,$5c4b,$fffe
  278.     dc.w    spr6pos,$50,spr7pos,$58,$5c5b,$fffe
  279.     dc.w    spr6pos,$60,spr7pos,$68,$5c6b,$fffe
  280.     dc.w    spr6pos,$70,spr7pos,$78,$5c7b,$fffe
  281.     dc.w    spr6pos,$80,spr7pos,$88,$5c8b,$fffe
  282.     dc.w    spr6pos,$90,spr7pos,$98,$5c9b,$fffe
  283.     dc.w    spr6pos,$a0,spr7pos,$a8,$5cab,$fffe
  284.     dc.w    spr6pos,$b0,spr7pos,$b8,$5cbb,$fffe
  285.     dc.w    spr6pos,$c0,spr7pos,$c8,$5ccb,$fffe
  286.     dc.w    spr6pos,$d0,spr7pos,$d8,$5cdb,$fffe
  287.  
  288. ; linea $5d
  289.     dc.w    $5d25,$fffe
  290.     dc.w    spr6data,$ffff,spr6datb,$ffff,spr7data,$ffff,spr7datb,$feff
  291.     dc.w    spr6pos,$40,spr7pos,$48,$5d4b,$fffe
  292.     dc.w    spr6pos,$50,spr7pos,$58,$5d5b,$fffe
  293.     dc.w    spr6pos,$60,spr7pos,$68,$5d6b,$fffe
  294.     dc.w    spr6pos,$70,spr7pos,$78,$5d7b,$fffe
  295.     dc.w    spr6pos,$80,spr7pos,$88,$5d8b,$fffe
  296.     dc.w    spr6pos,$90,spr7pos,$98,$5d9b,$fffe
  297.     dc.w    spr6pos,$a0,spr7pos,$a8,$5dab,$fffe
  298.     dc.w    spr6pos,$b0,spr7pos,$b8,$5dbb,$fffe
  299.     dc.w    spr6pos,$c0,spr7pos,$c8,$5dcb,$fffe
  300.     dc.w    spr6pos,$d0,spr7pos,$d8,$5ddb,$fffe
  301.  
  302. ; istruzioni copper per disattivare gli sprite
  303.     dc.w    $5107,$fffe        ; aspetta inizio riga
  304.     dc.w    $172,0            ; spr6ctl
  305.     dc.w    $17a,0            ; spr7ctl
  306.  
  307.     dc.w    $FFFF,$FFFE    ; Fine della copperlist
  308.  
  309.  
  310.     SECTION    PLANEVUOTO,BSS_C    ; Il bitplane azzerato che usiamo,
  311.                     ; perche' per vedere gli sprite
  312.                     ; e' necessario che ci siano bitplanes
  313.                     ; abilitati
  314. BITPLANE:
  315.     ds.b    40*256        ; bitplane azzerato lowres
  316.  
  317.     end
  318.  
  319. Come vedete e` possibile visualizzare anche piu` di 2 volte uno sprite sulla
  320. stessa riga, a patto che si sappia programmare in assembler.
  321. In questo esempio usiamo 2 sprite (6 e 7) visualizzandoli 10 volte ciascuno per
  322. linea, per un totale di 16*20=320 pixel per riga.
  323. In pratica copriamo tutto lo schermo. L'idea e` la stessa dell'esempio
  324. precedente, cioe` di cambiare i valori dei registri degli sprite con il
  325. copper. Questa volta pero` oltre a cambiare la posizione cambiamo ad ogni
  326. riga anche la forma degli sprite modificando i valori dei registri SPRxDATA
  327. e SPRxDATB, in modo da formare un paesaggio. Per semplicita` il nostro
  328. paesaggio e` alto 14 righe, ma si potrebbe riempire lo schermo!
  329. Ogni linea della copperlist e` fatta in questo modo:
  330.  
  331. ; linea $50
  332.     dc.w    $5025,$fffe
  333.     dc.w    spr6data,$0,spr6datb,$0,spr7data,$f000,spr7datb,$0
  334.     dc.w    spr6pos,$40,spr7pos,$48,$504b,$fffe
  335.     dc.w    spr6pos,$50,spr7pos,$58,$505b,$fffe
  336.     dc.w    spr6pos,$60,spr7pos,$68,$506b,$fffe
  337.     dc.w    spr6pos,$70,spr7pos,$78,$507b,$fffe
  338.     dc.w    spr6pos,$80,spr7pos,$88,$508b,$fffe
  339.     dc.w    spr6pos,$90,spr7pos,$98,$509b,$fffe
  340.     dc.w    spr6pos,$a0,spr7pos,$a8,$50ab,$fffe
  341.     dc.w    spr6pos,$b0,spr7pos,$b8,$50bb,$fffe
  342.     dc.w    spr6pos,$c0,spr7pos,$c8,$50cb,$fffe
  343.     dc.w    spr6pos,$d0,spr7pos,$d8,$50db,$fffe
  344.  
  345. In questo caso abbiamo preso la parte di copperlist relativa alla riga $50.
  346. Vediamo il significato di tutte le istruzioni:
  347.  
  348.     dc.w    $5025,$fffe    ; WAIT
  349.  
  350. La prima istruzione serve ad attendere che il pennello elettronico raggiunga
  351. la posizione orizzontale $25 della riga attuale.
  352.  
  353.     dc.w    spr6data,$0,spr6datb,$0,spr7data,$f000,spr7datb,$0
  354.  
  355. Queste istruzioni sevono a settare per questa riga i valori dei registri DATA
  356. che determinano la forma dello sprite.
  357.  
  358.     dc.w    spr6pos,$40,spr7pos,$48,$504b,$fffe
  359.  
  360. queste istruzioni servono per cambiare le posizioni degli sprite.
  361. Lavorano come nell'esempio precedente. Prima vengono aggiornate le posizioni
  362. degli sprite, e poi si attende che i 2 sprite vengano visualizzati.
  363. A questo punto si ripetono 10 gruppi di istruzioni copper come questo, che a
  364. loro volta modificano le posizioni degli sprite e attendono con dei WAIT che
  365. distanziano di 16 pixel orizzontali ($4b, $5b, $6b...) gli sprite visualzzati.
  366. Per es. troviamo
  367.  
  368.     dc.w    spr6pos,$50,spr7pos,$58,$505b,$fffe
  369.     dc.w    spr6pos,$60,spr7pos,$68,$506b,$fffe
  370.  
  371. Dividiamo una linea nei 3 comandi che contiene:
  372.  
  373.     dc.w    spr6pos,$50    ; determina la posizione dello sprite6
  374.     dc.w    spr7pos,$58    ; determina la posizione dello sprite7
  375.     dc.w    $505b,$fffe    ; WAIT - attendi 16 pixel piu' avanti.
  376.  
  377. e cosi` via.
  378. Dopo 10 gruppi cosi` abbiamo disegnato tutta una riga. A questo punto non ci
  379. resta che ripetere tutto quello che abbiamo fatto per la riga $50 anche per
  380. tutte le altre righe del paesaggio. Ovviamente per ogni riga avremo un
  381. diverso valore nei registri SPRxDATx che determinera` una diversa forma per
  382. lo sprite.
  383.  
  384. Naturalmente per generare copperlist cosi' lunghe e complesse vengono scritte
  385. apposite routine "GeneraCopperlist", che pero' per la loro complessita' non
  386. sono ancora state inserite nel corso. L'importante in questo listato e' capire
  387. il meccanismo del riutilizzo degli sprite agendo direttamente sui registri con
  388. la copperlist.
  389.  
  390.  
  391.  
  392.