home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti9 / lezione15c5.s < prev    next >
Text File  |  1995-04-26  |  17KB  |  429 lines

  1.  
  2. ; Lezione15c5.s    -     Fade a 24bit in tempo reale, non precalcolato
  3.  
  4.     SECTION    AgaRulez,CODE
  5.  
  6. ;    Include    "DaWorkBench.s"    ; togliere il ; prima di salvare con "WO"
  7.  
  8. *****************************************************************************
  9.     include    "startup2.s"    ; Salva Copperlist Etc.
  10. *****************************************************************************
  11.  
  12.         ;5432109876543210
  13. DMASET    EQU    %1000001110000000    ; copper, bitplane DMA
  14.  
  15. WaitDisk    EQU    30    ; 50-150 al salvataggio (secondo i casi)
  16.  
  17. START:
  18.  
  19. ;    Puntiamo la pic AGA
  20.  
  21.     MOVE.L    #PICTURE,d0
  22.     LEA    BPLPOINTERS,A1    
  23.     MOVEQ    #8-1,D7        ; num of bitplanes -1
  24. POINTB:
  25.     move.w    d0,6(a1)
  26.     swap    d0
  27.     move.w    d0,2(a1)
  28.     swap    d0
  29.     addi.l    #10240,d0    ; lenght of bitplane
  30.     addq.w    #8,a1
  31.     dbra    d7,POINTB    ; Rifai D7 volte (D7=num of bitplanes)
  32.  
  33.     MOVE.W    #DMASET,$96(a5)        ; DMACON - abilita bitplane, copper
  34.     move.l    #CopList,$80(a5)    ; Puntiamo la nostra COP
  35.     move.w    d0,$88(a5)        ; Facciamo partire la COP
  36.     move.w    #0,$1fc(a5)        ; Fmode azzerato, burst normale
  37.     move.w    #$c00,$106(a5)        ; BPLCON3 resettato
  38.     move.w    #$11,$10c(a5)        ; BPLCON4 resettato
  39.  
  40. LOOP:
  41.     MOVE.L    #$1ff00,d1    ; bit per la selezione tramite AND
  42.     MOVE.L    #$08000,d2    ; linea da aspettare = $80
  43. Waity1:
  44.     MOVE.L    4(A5),D0    ; VPOSR e VHPOSR - $dff004/$dff006
  45.     ANDI.L    D1,D0        ; Seleziona solo i bit della pos. verticale
  46.     CMPI.L    D2,D0        ; aspetta la linea $80
  47.     BNE.S    Waity1
  48.  
  49.     bsr.s    MainFadeInOut    ; Routine che sfuma dal nero al colore pieno
  50.                 ; e viceversa.
  51.  
  52.     MOVE.L    #$1ff00,d1    ; bit per la selezione tramite AND
  53.     MOVE.L    #$08000,d2    ; linea da aspettare = $110
  54. Aspetta:
  55.     MOVE.L    4(A5),D0    ; VPOSR e VHPOSR - $dff004/$dff006
  56.     ANDI.L    D1,D0        ; Seleziona solo i bit della pos. verticale
  57.     CMPI.L    D2,D0        ; aspetta la linea $110
  58.     BEQ.S    Aspetta
  59.  
  60.     BTST    #6,$BFE001
  61.     BNE.S    LOOP
  62.     RTS
  63.  
  64. *****************************************************************************
  65. * Questa routine incrementa o decrementa il MULTIPLIER per il fadeIn/Out    *
  66. * FlagFadeInOut e' usata per controllare se il fade e' In o Out.        *
  67. *****************************************************************************
  68.  
  69. MainFadeInOut:
  70.     BSR.w    CalcolaMettiCol ; Calcola i 256 colori in questa fase del
  71.                 ; fade, a seconda del MULTIPLIER, li converte
  72.                 ; nelle word per la copperlist AGA e li copia
  73.                 ; nella copperlist stessa.
  74.  
  75.     BTST.b    #1,FlagFadeInOut ; Fade In o fade Out?
  76.     BNE.S    FadeOut
  77. FadeIn:
  78.     ADDQ.W    #1,MULTIPLIER    ; Prossima fase del fade (piu' chiaro)
  79.     CMP.W    #255,MULTIPLIER    ; Siamo arrivati alla massima chiarezza
  80.                 ; del fade? (Colori pieni e lucenti)
  81.     BNE.s    NonFinito    ; Se non ancora, -> NonFinito
  82.     BCHG.B    #1,FlagFadeInOut ; Altrimenti cambia la direzione del fade
  83. FadeOut:
  84.     SUBQ.W    #1,MULTIPLIER    ; Prossima fase del fade (piu' scuro)
  85.     BNE.W    NonFinito    ; multiplier=zero? Se non ancora -> Nonfinito
  86.     BCHG.B    #1,FlagFadeInOut ; Altrimenti cambia la direzione del fade
  87. NonFinito:
  88.     RTS
  89.  
  90. FlagFadeInOut:        ; Usato per decidere se FadeIn o FadeOut
  91.     dc.w    0
  92.  
  93. MULTIPLIER:
  94.     dc.w    0
  95.  
  96. Temporaneo:
  97.     dc.l    0
  98.  
  99. ******************************************************************************
  100. * Questa routine converte i colori a 24 bit, che si presentano come una      *
  101. * longword $00RrGgBb, (dove R = nibble alto di RED, r = nibble basso di RED, *
  102. * G = nibble alto di GREEN eccetera), nel formato della copperlist aga,      *
  103. * ossia in due word: $0RGB con i nibble alti e $0rgb con i nibble bassi.     *
  104. ******************************************************************************
  105.  
  106. CalcolaMettiCol:
  107.     LEA    temporaneo(PC),A0     ; Long temporanea per colore a 24
  108.                     ; bit nel formato $00RrGgBb
  109.     LEA    COLP0+2,A1        ; Indirizzo del primo registro
  110.                     ; settato per i nibble ALTI
  111.     LEA    COLP0B+2,A2        ; Indirizzo del primo registro
  112.                     ; settato per i nibble BASSI
  113.     LEA    palettepic(PC),A3    ; 24bit colors tab address
  114.  
  115.     MOVEQ    #8-1,d7            ; 8 banchi da 32 registri ciascuno
  116. ConvertiPaletteBank:
  117.     moveq    #0,d0
  118.     moveq    #0,d2
  119.     moveq    #0,d3
  120.     moveq    #32-1,d6    ; 32 registri colore per banco
  121.  
  122. DaLongARegistri:    ; loop che trasforma i colori $00RrGgBb.l nelle 2
  123.             ; word $0RGB, $0rgb adatte ai registri copper.
  124.  
  125. ;    CALCOLA IL ROSSO
  126.  
  127.     MOVE.L    (A3),D4            ; READ COLOR FROM TAB
  128.     ANDI.L    #%000011111111,D4    ; SELECT BLUE
  129.     MULU.W    MULTIPLIER(PC),D4        ; MULTIPLIER
  130.     ASR.w    #8,D4            ; -> 8 BITS
  131.     ANDI.L    #%000011111111,D4    ; SELECT BLUE VAL
  132.     MOVE.L    D4,D5            ; SAVE BLUE TO D5
  133.  
  134. ;    CALCOLA IL VERDE
  135.  
  136.     MOVE.L    (A3),D4            ; READ COLOR FROM TAB
  137.     ANDI.L    #%1111111100000000,D4    ; SELECT GREEN
  138.     LSR.L    #8,D4            ; -> 8 bits (so from 0 to 7)
  139.     MULU.W    MULTIPLIER(PC),D4    ; MULTIPLIER
  140.     ASR.w    #8,D4            ; -> 8 BITS
  141.     ANDI.L    #%0000000011111111,D4    ; SELECT GREEN
  142.     LSL.L    #8,D4            ; <- 8 bits (so from 8 to 15)
  143.     OR.L    D4,D5            ; SAVE GREEN TO D5
  144.  
  145. ;    CALCOLA IL BLU
  146.  
  147.     MOVE.L    (A3)+,D4        ; READ COLOR FROM TAB AND GO TO NEXT
  148.     ANDI.L    #%111111110000000000000000,D4    ; SELECT RED
  149.     LSR.L    #8,D4            ; -> 8 bits (so from 8 to 15)
  150.     LSR.L    #8,D4            ; -> 8 bits (so from 0 to 7)
  151.     MULU.W    MULTIPLIER(PC),D4    ; MULTIPLIER
  152.     ASR.w    #8,D4            ; -> 8 BITS
  153.     ANDI.L    #%0000000011111111,D4    ; SELECT RED
  154.     LSL.L    #8,D4            ; <- 8 bits (so from 8 to 15)
  155.     LSL.L    #8,D4            ; <- 8 bits (so from 0 to 7)
  156.     OR.L    D4,D5            ; SAVE RED TO D5
  157.     MOVE.L    D5,(A0)            ; SAVE 24 BIT VALUE IN temporaneo
  158.  
  159. ; Conversione dei nibble bassi da $00RgGgBb (long) al colore aga $0rgb (word)
  160.  
  161.     MOVE.B    1(A0),(a2)    ; Byte alto del colore $00Rr0000 copiato
  162.                 ; nel registro cop per nibble bassi
  163.     ANDI.B    #%00001111,(a2) ; Seleziona solo il nibble BASSO ($0r)
  164.     move.b    2(a0),d2    ; Prendi il byte $0000Gg00 dal colore a 24bit
  165.     lsl.b    #4,d2        ; Sposta a sinistra di 4 bit il nibble basso
  166.                 ; del GREEN, "trasformandolo" in nibble alto
  167.                 ; di del byte basso di D2 ($g0)
  168.     move.b    3(a0),d3    ; Prendi il byte $000000Bb dal colore a 24bit
  169.     ANDI.B    #%00001111,d3    ; Seleziona solo il nibble BASSO ($0b)
  170.     or.b    d2,d3        ; "FONDI" i nibble bassi di green e blu...
  171.     move.b    d3,1(a2)    ; Formando il byte basso finale $gb da mettere
  172.                 ; nel registro colore, dopo il byte $0r, per
  173.                 ; formare la word $0rgb dei nibble bassi
  174.  
  175. ; Conversione dei nibble alti da $00RgGgBb (long) al colore aga $0RGB (word)
  176.  
  177.     MOVE.B    1(A0),d0    ; Byte alto del colore $00Rr0000 in d0
  178.     ANDI.B    #%11110000,d0    ; Seleziona solo il nibble ALTO ($R0)
  179.     lsr.b    #4,d0        ; Shifta a destra di 4 bit il nibble, in modo
  180.                 ; che diventi il nibble basso del byte ($0R)
  181.     move.b    d0,(a1)        ; Copia il byte alto $0R nel color register
  182.     move.b    2(a0),d2    ; Prendi il byte $0000Gg00 dal colore a 24bit
  183.     ANDI.B    #%11110000,d2    ; Seleziona solo il nibble ALTO ($G0)
  184.     move.b    3(a0),d3    ; Prendi il byte $000000Bb dal colore a 24 bit
  185.     ANDI.B    #%11110000,d3    ; Seleziona solo il nibble ALTO ($B0)
  186.     lsr.b    #4,d3        ; Shiftalo di 4 bit a destra trasformandolo in
  187.                 ; nibble basso del byte basso di d3 ($0B)
  188.     ori.b    d2,d3        ; Fondi i nibble alti di green e blu ($G0+$0B)
  189.     move.b    d3,1(a1)    ; Formando il byte basso finale $GB da mettere
  190.                 ; nel registro colore, dopo il byte $0R, per
  191.                 ; formare la word $0RGB dei nibble alti.
  192.  
  193.     addq.w    #4,a1        ; Saltiamo al prossimo registro colore per i
  194.                 ; nibble ALTI in Copperlist
  195.     addq.w    #4,a2        ; Saltiamo al prossimo registro colore per i
  196.                 ; nibble BASSI in Copperlist
  197.  
  198.     dbra    d6,DaLongARegistri
  199.  
  200.     add.w    #(128+8),a1    ; salta i registri colore + il dc.w $106,xxx
  201.                 ; dei nibble ALTI
  202.     add.w    #(128+8),a2    ; salta i registri colore + il dc.w $106,xxx
  203.                 ; dei nibble BASSI
  204.  
  205.     dbra    d7,ConvertiPaletteBank    ; Converte un banco da 32 colori per
  206.     rts                ; loop. 8 loop per i 256 colori.
  207.  
  208. ; Tabella con la palette a 24 bit in formato $00RRGGBB. Avremmo potuto anche
  209. ; usare quella attaccata in fondo alla PIC, ma per variare eccola in dc.l!
  210. ; Si puo' salvare da PicCon se non si seleziona "Copperlist".
  211.  
  212. PalettePic:
  213.     dc.l    $021104,$150f04,$001115,$191609,$092206,$182707
  214.     dc.l    $052420,$2f1506,$17291c,$1f3108,$341613,$35230b
  215.     dc.l    $1c331c,$2c3409,$00203d,$35241f,$323420,$21470a
  216.     dc.l    $103937,$4a2007,$47201b,$243a32,$002a4a,$35440d
  217.     dc.l    $492822,$443c0a,$21550a,$54280b,$483421,$3a3931
  218.     dc.l    $07364f,$233e45,$1d4d3c,$32590c,$01335d,$27503d
  219.     dc.l    $484f11,$5a3e0e,$354e3c,$5c3921,$593431,$70230e
  220.     dc.l    $4c5b12,$064066,$5b442c,$5d4d11,$465a30,$104367
  221.     dc.l    $732e11,$316143,$5b4838,$324662,$506714,$763b0f
  222.     dc.l    $704023,$655711,$4d5d44,$733f31,$19536e,$8a2012
  223.     dc.l    $2b6261,$6c552e,$784f19,$0d4c7d,$79492e,$8f2713
  224.     dc.l    $716217,$6c612b,$455e61,$8f370f,$1b5081,$705845
  225.     dc.l    $716e16,$943c17,$516463,$8b4e1f,$1e5f83,$8f510f
  226.     dc.l    $746d2d,$89512e,$588a24,$776a45,$8c631d,$8e5e2f
  227.     dc.l    $72635d,$8c5644,$b02015,$1d6791,$aa3c15,$af2d14
  228.     dc.l    $8d7419,$2b6d90,$a1552d,$788a2a,$a25f13,$936d31
  229.     dc.l    $ac4e13,$6e7071,$3a7192,$bd2a16,$878b1e,$a1672e
  230.     dc.l    $926f47,$a46e13,$5d8e67,$8d7054,$a06546,$2f739f
  231.     dc.l    $a37331,$c92b16,$b66110,$8e8b3b,$818d55,$c74013
  232.     dc.l    $3d79a4,$8c7173,$b36e2b,$ba6c11,$ad7244,$a77253
  233.     dc.l    $a58b27,$8f8c60,$a58444,$4489a4,$a59720,$a77661
  234.     dc.l    $cd6214,$ba763e,$a78f41,$db4114,$a48b55,$4589b0
  235.     dc.l    $b87754,$608fa2,$c97728,$8ba268,$d46d10,$c58428
  236.     dc.l    $b8894a,$c88614,$a48c6e,$d86b22,$a59e59,$898f97
  237.     dc.l    $5a94b3,$e46217,$c59427,$c98940,$b99259,$df6a39
  238.     dc.l    $c39443,$c2a025,$a79a74,$da734c,$5595c1,$8c9f95
  239.     dc.l    $c79156,$b99271,$ef6327,$ea7515,$de8b1a,$a89988
  240.     dc.l    $eb7623,$df8d29,$c7a93e,$dd903f,$669ac7,$c5a55b
  241.     dc.l    $c79770,$5da6c8,$f08a18,$d6995f,$ea971a,$dda043
  242.     dc.l    $f3872b,$e1a42d,$caa472,$a8a2a3,$71a7cb,$ef9341
  243.     dc.l    $80a6c6,$caae6f,$f2982a,$c7a287,$f69a1c,$e99959
  244.     dc.l    $d7a86a,$f2a13e,$ccb678,$c6a499,$efb127,$e8b247
  245.     dc.l    $89b2c9,$e5a868,$c8af94,$e2b363,$bcc28f,$f7af2d
  246.     dc.l    $deb577,$8bb1d6,$d1b295,$beb5aa,$f7b34b,$dbb191
  247.     dc.l    $f5b462,$8cb3e3,$f1b375,$d2ba9f,$fdc42f,$dfc189
  248.     dc.l    $fac34a,$87c0e3,$c3c4ae,$a6bbd4,$e2ba94,$fbd232
  249.     dc.l    $f3c967,$98bee4,$f0bf85,$d6c6a4,$fbd24a,$d3baba
  250.     dc.l    $c1bfcd,$e8ce8d,$fdd457,$a3c3e9,$dbd0a8,$d3cbbd
  251.     dc.l    $f0c4a0,$fcdb66,$adcde0,$f7cf8a,$b3c5e9,$dfcebc
  252.     dc.l    $c4d2d8,$feea66,$f3e489,$b5ceeb,$d2ced4,$f5d0a8
  253.     dc.l    $fee885,$f3dfa7,$d8dfca,$c5d2ec,$f5d2bc,$d1d2e7
  254.     dc.l    $ede1c2,$d9d4e7,$fde7aa,$f2d2d5,$f9e2c0,$d2dfef
  255.     dc.l    $e9dedf,$f9f3c4,$f8efda,$f9f5ee
  256.  
  257. ;*****************************************************************************
  258. ;*                COPPERLIST AGA                     *
  259. ;*****************************************************************************
  260.  
  261.     CNOP    0,8    ; Allineo a 64 bit
  262.  
  263.     section    coppera,data_C
  264.  
  265. COPLIST:
  266.     dc.w    $8E,$2c81    ; DiwStrt
  267.     dc.w    $90,$2cc1    ; DiwStop
  268.     dc.w    $92,$0038    ; DdfStart
  269.     dc.w    $94,$00d0    ; DdfStop
  270.     dc.w    $102,0        ; BplCon1
  271.     dc.w    $104,0        ; BplCon2
  272.     dc.w    $108,0        ; Bpl1Mod
  273.     dc.w    $10a,0        ; Bpl2Mod
  274.  
  275.             ; 5432109876543210
  276.     dc.w    $100,%0000001000010001    ; 8 bitplane LOWRES 320x256. Per
  277.                     ; settare 8 planes setto il bit 4 e
  278.                     ; azzero i bit 12,13,14. Il bit 0 e'
  279.                     ; settato dato che abilita molte
  280.                     ; funzioni AGA che vedremo dopo.
  281.  
  282.     dc.w    $1fc,0        ; Burst mode azzerato (per ora!)
  283.  
  284. BPLPOINTERS:
  285.     dc.w $e0,0,$e2,0    ; primo     bitplane
  286.     dc.w $e4,0,$e6,0    ; secondo       "
  287.     dc.w $e8,0,$ea,0    ; terzo           "
  288.     dc.w $ec,0,$ee,0    ; quarto       "
  289.     dc.w $f0,0,$f2,0    ; quinto       "
  290.     dc.w $f4,0,$f6,0    ; sesto           "
  291.     dc.w $f8,0,$fA,0    ; settimo       "
  292.     dc.w $fC,0,$fE,0    ; ottavo       "
  293.  
  294. ; In questo caso la palette viene aggiornata da una routine, per cui basta
  295. ; lasciare azzerati i valori dei registri.
  296.  
  297.     DC.W    $106,$c00    ; SELEZIONA PALETTE 0 (0-31), NIBBLE ALTI
  298. COLP0:
  299.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  300.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  301.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  302.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  303.  
  304.     DC.W    $106,$e00    ; SELEZIONA PALETTE 0 (0-31), NIBBLE BASSI
  305. COLP0B:
  306.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  307.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  308.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  309.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  310.  
  311.     DC.W    $106,$2C00    ; SELEZIONA PALETTE 1 (32-63), NIBBLE ALTI
  312.  
  313.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  314.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  315.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  316.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  317.  
  318.     DC.W    $106,$2E00    ; SELEZIONA PALETTE 1 (32-63), NIBBLE BASSI
  319.  
  320.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  321.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  322.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  323.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  324.  
  325.     DC.W    $106,$4C00    ; SELEZIONA PALETTE 2 (64-95), NIBBLE ALTI
  326.  
  327.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  328.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  329.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  330.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  331.  
  332.     DC.W    $106,$4E00    ; SELEZIONA PALETTE 2 (64-95), NIBBLE BASSI
  333.  
  334.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  335.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  336.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  337.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  338.  
  339.     DC.W    $106,$6C00    ; SELEZIONA PALETTE 3 (96-127), NIBBLE ALTI
  340.  
  341.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  342.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  343.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  344.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  345.  
  346.     DC.W    $106,$6E00    ; SELEZIONA PALETTE 3 (96-127), NIBBLE BASSI
  347.  
  348.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  349.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  350.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  351.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  352.  
  353.     DC.W    $106,$8C00    ; SELEZIONA PALETTE 4 (128-159), NIBBLE ALTI
  354.  
  355.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  356.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  357.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  358.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  359.  
  360.     DC.W    $106,$8E00    ; SELEZIONA PALETTE 4 (128-159), NIBBLE BASSI
  361.  
  362.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  363.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  364.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  365.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  366.  
  367.     DC.W    $106,$AC00    ; SELEZIONA PALETTE 5 (160-191), NIBBLE ALTI
  368.  
  369.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  370.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  371.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  372.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  373.  
  374.     DC.W    $106,$AE00    ; SELEZIONA PALETTE 5 (160-191), NIBBLE BASSI
  375.  
  376.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  377.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  378.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  379.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  380.  
  381.     DC.W    $106,$CC00    ; SELEZIONA PALETTE 6 (192-223), NIBBLE ALTI
  382.  
  383.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  384.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  385.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  386.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  387.  
  388.     DC.W    $106,$CE00    ; SELEZIONA PALETTE 6 (192-223), NIBBLE BASSI
  389.  
  390.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  391.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  392.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  393.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  394.  
  395.     DC.W    $106,$EC00    ; SELEZIONA PALETTE 7 (224-255), NIBBLE ALTI
  396.  
  397.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  398.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  399.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  400.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  401.  
  402.     DC.W    $106,$EE00    ; SELEZIONA PALETTE 7 (224-255), NIBBLE BASSI
  403.  
  404.     DC.W    $180,0,$182,0,$184,0,$186,0,$188,0,$18A,0,$18C,0,$18E,0
  405.     DC.W    $190,0,$192,0,$194,0,$196,0,$198,0,$19A,0,$19C,0,$19E,0
  406.     DC.W    $1A0,0,$1A2,0,$1A4,0,$1A6,0,$1A8,0,$1AA,0,$1AC,0,$1AE,0
  407.     DC.W    $1B0,0,$1B2,0,$1B4,0,$1B6,0,$1B8,0,$1BA,0,$1BC,0,$1BE,0
  408.  
  409.     dc.w    $FFFF,$FFFE    ; Fine della copperlist
  410.  
  411. ;******************************************************************************
  412.  
  413. ; Figura RAW ad 8 bitplanes, cioe' a 256 colori
  414.  
  415.     CNOP    0,8    ; allineo a 64 bit
  416.  
  417. PICTURE:
  418.     INCBIN    "MURALE320*256*256c.RAW"
  419.  
  420.     end
  421.  
  422. Abbiamo eliminato la COLORTABBY, e questa si puo' chiamare "FADE IN REALTIME",
  423. dato che viene calcolato fotogramma per fotogramma. E' molto piu' lenta di
  424. quelli precalcolati, ma non richiede 256k di buffer. Si puo' usare quando
  425. occorre fare il fade di una figura statica o comunque dove non ci sono
  426. routines molto "mangiatempo". Da notare che la palette viene presa da una
  427. tabella, anziche' dalla fine della pic.
  428.  
  429.