home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti_darkcoder / shade / shadebobs2.s < prev    next >
Encoding:
Text File  |  1998-02-19  |  14.2 KB  |  615 lines

  1.         ************************************
  2.         *       /\/\                       *
  3.         *      /    \                      *
  4.         *     / /\/\ \ O R B_I D           *
  5.         *    / /    \ \   / /              *
  6.         *   / /    __\ \ / /               *
  7.         *   ¯¯     \ \¯¯/ / I S I O N S    *
  8.         *           \ \/ /                 *
  9.         *            \  /                  *
  10.         *             \/                   *
  11.         *     Feel the DEATH inside!       *
  12.         ************************************
  13.  
  14. ; Codice di autori sconosciuti adattato e migliorato da
  15. ; DeathBringer/Morbid Visions 
  16.  
  17. ***********************************************************
  18. * Shade Bobs
  19. *
  20. ;In questo esempio si puo' vedere un'altra implementazione piu' sofisticata 
  21. ;che permette di risparmiare alcune blittate rispetto al metodo classico e
  22. ;usa una sola area Carry. In particolare e' necessario calcolare un Carry ogni
  23. ;due bitplane in vece che ogni 1. Ha lo svantaggio pero' di usare tutti e 4 
  24. ;i canali DMA del blitter "rubando" piu' tempo al processore.
  25. ;Premendo il bottone destro del mouse si cicla la palette.
  26.  
  27.  
  28.     Section    Demo,Code_C
  29.  
  30.     incdir    "/Include/"
  31.     include    "MVstartup.s"    ; Salva Copperlist Etc.
  32.  
  33.         ;5432109876543210
  34. DMASET    EQU    %1000001111000000    ; copper,bitplane,blitter DMA
  35.  
  36. size1    = 80
  37. size2    = 130
  38. size3    = 70
  39.  
  40. speed1    = 6
  41. speed2    = 8
  42. speed3    = 10
  43. speed4    = 12
  44.  
  45. Start:    
  46.  
  47.     Move.w    #$7fff,$9a(a5)        ; No DMA
  48.     Move.l    #$7fff7fff,$96(a5)    ; No Interupts&Intreq
  49.  
  50.     move.l    StoreVBR(pc),a0
  51.     move.l    #my_level3,$6c(a0)    ; nuovo interrupt Level3 (copper)
  52.     move.l    #my_copper,cop1lc(a5)     ; Copperlist
  53.     move    #$c010,intena(a5)    ; abilita interupt
  54.  
  55.     move    #DMASET,dmacon(a5)    ; DMA=copper+Bplanes+blitter
  56.     move    #1,copjmp1(a5)        ; Fai partire la copperlist
  57.  
  58.     moveq    #5-1,d7            ;numero planes
  59.     move.l    #screena,d0
  60.     lea    planes+2,a0
  61. .loop
  62.     swap    d0
  63.     move    d0,(a0)
  64.     addq.l    #4,a0
  65.     swap    d0
  66.     move    d0,(a0)
  67.     addq.l    #4,a0
  68.     add.l    #40*256,d0
  69.     dbra    d7,.loop
  70.  
  71. wait:
  72.     bsr    sb_setup
  73.     btst    #6,$bfe001
  74.     bne.s    wait        ; aspetta LMB
  75.     rts            ; Exit
  76.  
  77. *****************************************
  78. * Routine di interrupt livello 3 (copper)
  79.  
  80. my_level3:
  81.     btst    #4,intreqr+1(a5);E' veramente un Interrupt?
  82.     beq.s    .Noint        ; N.B: Testare sempre il bit di interrupt, 
  83.     movem.l    d0-d7/a0-a6,-(a7)    ; Copper Interupt
  84.     btst    #10,potinp(a5)        ; bottone destro premuto?
  85.     bne.s    .exit            ; no, esci
  86.  
  87.     lea    shade_map,a0        ; si, cicla la palette
  88.     move    2(a0),d7
  89.     move    #31-1,d0
  90. .cycle    move    6(a0),2(a0)
  91.     add.l    #4,a0
  92.     dbf    d0,.cycle
  93.     move    d7,-2(a0)
  94.  
  95. .exit    movem.l    (a7)+,d0-d7/a0-a6
  96.     move    #$0010,intreq(a5)    ; Cancella la richiesta di Interrupt
  97. .Noint    rte                ; Ritorna al programma principale
  98.  
  99.  
  100. *************************************************
  101.  
  102.  
  103. rnd:                    ;crea un numero pseudocasuale
  104.     move.l    rndnumber(pc),d1    ;partendo da D0
  105.     move.l    d1,d2            ;e ritornandolo in D1
  106.     and.l    #$0ff00000,d1
  107.     swap    d1
  108.     lsr    #4,d1
  109.  
  110.     add.l    d2,d2
  111.     eor.l    #$87654321,d2
  112.     add.l    d2,d2
  113.     eor.l    d1,d2
  114.     eor.l    #$fedcba97,d2
  115.     add.l    d1,d2
  116.     move.l    d2,rndnumber
  117.  
  118.     move.l    d2,d1
  119.     swap    d1
  120.     and.l    #$0000ffff,d1
  121.     ext.l    d0
  122.     divu    d0,d1
  123.  
  124.     move    d1,d2
  125.     ext.l    d2
  126.     add.l    d2,rndnumber
  127.     swap    d1
  128.  
  129.     rts
  130.  
  131. rndnumber:    dc.l    $54d2e507
  132.  
  133. *************************************************
  134.  
  135. sb_setup:
  136.     move    #2,x1step    ;passoX=2
  137.     move    #2,y1step    ;passoY=2
  138.  
  139.     move    #speed1,d0    ;velocita'
  140.     bsr    rnd
  141.     asl    #1,d1
  142.     move    d1,x2step    ;passoX2=random
  143.     move    #speed2,d0
  144.     bsr    rnd
  145.     asl    #1,d1
  146.     move    d1,y2step    ;passoY2=random
  147.  
  148.     move    #speed3,d0
  149.     bsr    rnd
  150.     asl    #1,d1
  151.     move    d1,x3step    ;passoX3=random
  152.     move    #speed4,d0
  153.     bsr    rnd
  154.     asl    #1,d1
  155.     move    d1,y3step    ;passoY3=random
  156.  
  157.     bsr    sb_cls        ;cancella schermo
  158.  
  159.     move    #9,d0
  160.     bsr    rnd
  161.     asl    #6,d1        ;d1=random
  162.     lea    shade_colours(pc),a0
  163.     ext.l    d1
  164.     add.l    d1,a0        ;colori
  165.     lea    shade_map-4(pc),a1
  166.     move    #31-1,d0
  167. .col    move    (a0)+,2(a1)    ;inserisci colori nella copperlist
  168.     add.l    #4,a1
  169.     dbf    d0,.col
  170.  
  171. .wait    move.l    vposr(a5),d0
  172.     lsr.l    #8,d0
  173.     and.w    #$01FF,d0
  174.     cmp.w    #$0010,d0
  175.     bne.s    .wait
  176.  
  177. .sinok    bsr    sb_do        ;SHADE!
  178.  
  179.     btst    #6,$bfe001    ;LMB Premuto?
  180.     beq.s    .exit        ;si esci
  181.  
  182.     cmp    #512,lcount    ;512 Shade?
  183.     blt.s    .wait        ;no continua con questa configurazione
  184.  
  185.     add.l    #4,brush_ptr    ;cambia bob
  186.     move.l    brush_ptr,a0
  187.     cmp.l    #-1,(a0)    ;fine lista?
  188.     bne.s    .exit
  189.     move.l    #brushlist,brush_ptr    ;resetta lista bob
  190. .exit
  191.     rts
  192.  
  193.  
  194. ***********************
  195. * Cancella lo schermo
  196.  
  197.     cnop    0,4
  198. sb_cls:
  199.     lea    screena(pc),a0
  200.  
  201.     move    #$8400,dmacon(a5)    ;Blitternasty
  202.     moveq    #5-1,d0            ; numero planes
  203. .wait
  204.     btst    #6,dmaconr(a5)
  205.     bne.s    .wait
  206.     
  207.     move.l    #$01000000,bltcon0(a5)
  208.     move.l    a0,bltdpt(a5)
  209.     move    #0,bltdmod(a5)
  210.     move    #(256<<6)+20,bltsize(a5)
  211.     
  212.     add.l    #40*256,a0        ;prossimo plane
  213.                     ;il procedimento e' ripetuto per
  214.                     ;tutti i bitplanes
  215.     dbra    d0,.wait
  216.  
  217.     clr    lcount            ;resetta contatore di fotogrammi
  218.     move    #$0400,dmacon(a5)    ;Blitternasty OFF
  219.     rts
  220.     
  221. ***********************************************************
  222. * Routine di Shade
  223.  
  224. sb_do:
  225.     addq    #1,lcount    ;incrementa contatore fotogrammi
  226.  
  227.     lea    sintable(pc),a3    ;tavola coordinate
  228.     lea    186(a3),a4
  229.  
  230.     move    sinepos(pc),d4        ;posizione1
  231.     move    cosinepos(pc),d5    ;posizione1
  232.  
  233.     move    (a3,d4.w),d0    ;X1
  234.     move    (a4,d5.w),d1    ;Y1
  235.     muls    #size1,d0
  236.     muls    #size1,d1
  237.     swap    d0
  238.     swap    d1
  239.  
  240.     move    sinepos2(pc),d4        ;posizione2
  241.     move    cosinepos2(pc),d5    ;posizione2
  242.  
  243.     move    (a3,d4.w),d2        ;X2
  244.     move    (a4,d5.w),d3        ;Y2
  245.     muls    #size2,d2
  246.     muls    #size3,d3
  247.     swap    d2
  248.     swap    d3
  249.     add    d2,d0            ;X=X1+X2
  250.     add    d3,d1            ;Y=Y1+Y2
  251.  
  252.     move    sinepos3(pc),d4        ;posizione3
  253.     move    cosinepos3(pc),d5    ;posizione3
  254.  
  255.     move    (a3,d4.w),d2        ;X2
  256.     move    (a4,d5.w),d3        ;Y2
  257.     muls    #size2,d2
  258.     muls    #size3,d3
  259.     swap    d2
  260.     swap    d3
  261.     add    d2,d0            ;X=X+X3
  262.     add    d3,d1            ;Y=Y+Y3
  263.  
  264.     movem.l    d0-d1,-(a7)
  265.     add    #160-16,d0
  266.     add    #128-16,d1
  267.     bsr    plot_bob        ;plotta il bob
  268.     movem.l    (a7)+,d0-d1
  269.  
  270.     movem.l    d0-d1,-(a7)
  271.     not    d1
  272.     add    #160-16,d0
  273.     add    #128-16,d1
  274.     bsr    plot_bob        ;plotta il bob
  275.     movem.l    (a7)+,d0-d1
  276.     
  277.     move    x2step(pc),d1        ;aggiorna posizioni
  278.     add    d1,sinepos2        ;nella tavola delle
  279.     and    #$3fe,sinepos2        ;coordinate
  280.     move    y2step(pc),d1
  281.     add    d1,cosinepos2
  282.     and    #$3fe,cosinepos2
  283.     
  284.     move    x3step(pc),d1        ;aggiorna posizioni
  285.     add    d1,sinepos3        ;nella tavola 
  286.     and    #$3fe,sinepos3        ;delle coordinate
  287.     move    y3step(pc),d1
  288.     add    d1,cosinepos3
  289.     and    #$3fe,cosinepos3
  290.     
  291.     rts
  292.  
  293. *************************************************
  294.  
  295. plot_bob:
  296.     movem.l    d0-d7/a0-a6,-(a7)
  297.  
  298.     lea    screena(pc),a0        ;plane0
  299.     lea    40*256(a0),a1        ;plane1
  300.     lea    40*256(a1),a2        ;plane2
  301.     lea    40*256(a2),a3        ;plane3
  302.     lea    40*256(a3),a4        ;plane4
  303.  
  304.     move.l    brush_ptr(pc),a6
  305.     move.l    (a6),a6            ;puntatore bob
  306.  
  307.     move    d0,d5            
  308.     and    #$000f,d5        ;Bit offset in word
  309.     lsr    #3,d0            ;byte offset 
  310.     ext.l    d0
  311.     add.l    d0,a0            ;somma x offset nei puntatori ai
  312.     add.l    d0,a1            ;bitplanes
  313.     add.l    d0,a2
  314.     add.l    d0,a3
  315.     add.l    d0,a4
  316.     
  317.     mulu    #40,d1            ;Yoffset
  318.     ext.l    d1
  319.     add.l    d1,a0            ;somma y offset nei puntatori
  320.     add.l    d1,a1            ;ai bitplanes
  321.     add.l    d1,a2
  322.     add.l    d1,a3
  323.     add.l    d1,a4
  324.     
  325.     ror    #4,d5            ;shift
  326.     or    #$0b5a,d5        ;D=A XOR C
  327.  
  328.     move    #$8400,dmacon(a5)    ; Blitternasty ON
  329. .wait
  330.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  331.     bne.s    .wait
  332.  
  333. ; plane 1
  334.  
  335.     move.l    a0,bltdpt(a5)        ; Puntatore D
  336.     move.l    a0,bltcpt(a5)        ; Puntatore C
  337.     move.l    a6,bltapt(a5)        ; Puntatore A
  338.     move.l    #-1,bltafwm(a5)        ; BLTAFWM & BLTALWM
  339.     move    d5,bltcon0(a5)        ; BLTCON0
  340.     move    #0,bltcon1(a5)
  341.     move.l    #(0<<16)+34,bltamod(a5)    ; moduli A e D
  342.     move    #34,bltcmod(a5)        ; modulo C
  343.     move    #(31<<6)+3,bltsize(a5)    ; BLTSIZE (32+16)*31 pixel
  344.  
  345.     and    #$f000,d5
  346.     or    #$0f9a,d5        ; D=(A AND ~B AND ~C) OR (~A AND C) OR
  347.                     ;      OR (B AND C)     
  348.                     ; N.B: il simbolo " ~ " equivale a NOT
  349.  
  350.  
  351. ; plane 2
  352. .wait2
  353.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  354.     bne.s    .wait2
  355.  
  356.     move.l    a6,bltapt(a5)        ; Apt=bob
  357.     move.l    a0,bltbpt(a5)        ; Bpt=plane1
  358.     move.l    a1,bltcpt(a5)        ; Cpt=plane2
  359.     move.l    a1,bltdpt(a5)        ; Dpt=plane2
  360.     move    d5,bltcon0(a5)        ; blit cont reg 0
  361.     move.l    #0<<16+34,bltamod(a5)    ; moduli A e D
  362.     move.l    #34<<16+34,bltcmod(a5)    ; moduli C e B
  363.     move    #(31<<6)+3,bltsize(a5)    ; BLTSIZE
  364.  
  365. ; Spiegazione della funzione:
  366. ; (A AND ~B AND ~C) = se A=1 e B=0 vuol dire che si e' verificato
  367. ; un riporto tra il primo e il secondo bitplane, quindi quest'ultimo varra'
  368. ; NOT C, ovvero verra' cambiato il bit.
  369. ; (~A AND C) = se A=0 allora non si potra' verificare nessun riporto, quindi
  370. ;il bitplane non cambiera' di valore, cioe' varra' C
  371. ; (B AND C) = se il primo bitplane e' uguale a 1 (B=1) significa che non si
  372. ; e' verificato alcun riporto (infatti in questo caso dovrebbe essere B=0, per
  373. ; risolvere ogni dubbio controllare con la tabella della teoria) e quindi il
  374. ; bit rimane invariato.
  375.  
  376.  
  377.     and.w    #$f000,d5
  378.     or.w    #$0f10,d5        ;D= A AND ~B AND ~C
  379.  
  380. .wait3
  381.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  382.     bne.s    .wait3
  383.  
  384. ; temp smear 1            ;Calcola se c'e' stato riporto
  385.     
  386.  
  387.     move.l    a6,bltapt(a5)        ; Apt=bob
  388.     move.l    a0,bltbpt(a5)        ; Bpt=plane1
  389.     move.l    a1,bltcpt(a5)        ; Cpt=plane2
  390.     move.l    #tempsmear1,bltdpt(a5)    ; Dpt=Carry
  391.     move    d5,bltcon0(a5)        ; BLTCON0
  392.  
  393.     move    #0,bltdmod(a5)        ; modulo D
  394. ; stessi valori di prima per moduli A, B e C
  395. ;    move    #0,bltamod(a5)
  396. ;    move.l    #34<<16+34,bltcmod(a5)    ; moduli C e B
  397.  
  398.     move    #(31<<6)+3,bltsize(a5)    ; BLTSIZE
  399.  
  400. .wait4
  401.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  402.     bne.s    .wait4
  403.  
  404.  
  405.                     ;Adesso si ripete il procedimento 
  406.     ; plane 3            ;visto fin qui, usando come bob
  407.                     ;il Carry
  408.                     
  409.     move.l    #tempsmear1,bltapt(a5)    ; Apt=Carry (prende il posto del bob)
  410.     move.l    a2,bltbpt(a5)        ; Bpt=plane2
  411.     move.l    a2,bltdpt(a5)        ; Dpt=plane2
  412.     move.w    #$0d3c,bltcon0(a5)    ; D=A XOR B
  413.  
  414.     move    #34,bltdmod(a5)        ; modulo D
  415. ; stessi valori di prima per moduli A e B
  416. ;    move    #0,bltamod(a5)
  417. ;    move.l    #34<<16+34,bltcmod(a5)    ; moduli C e B
  418.  
  419.     move    #(31<<6)+3,bltsize(a5)
  420.  
  421.  
  422. .wait5
  423.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  424.     bne.s    .wait5
  425.                     
  426.     ; plane 4
  427.  
  428.     move.l    #tempsmear1,bltapt(a5)    ; A=Carry
  429.     move.l    a2,bltbpt(a5)        ; B=plane3
  430.     move.l    a3,bltcpt(a5)        ; C=plane4
  431.     move.l    a3,bltdpt(a5)        ; D=plane4
  432.     move    #$0f9a,bltcon0(a5)    ; D=(A AND ~B AND ~C) OR (~A AND C) OR
  433.                     ;      OR (B AND C)     
  434.  
  435. ; stessi valori di prima per moduli A,B,C e D
  436. ;    move    #0,bltamod(a5)
  437. ;    move    #34,bltdmod(a5)        ; modulo D
  438. ;    move.l    #34<<16+34,bltcmod(a5)    ; moduli C e B
  439.  
  440.     move    #(31<<6)+3,bltsize(a5)
  441.  
  442. .wait6
  443.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  444.     bne.s    .wait6
  445.  
  446. ; temp smear 2            ;ricalcola Carry
  447.  
  448.     move.l    #tempsmear1,bltapt(a5)    ; Apt=VECCHIOcarry
  449.     move.l    a2,bltbpt(a5)        ; Bpt=plane3
  450.     move.l    a3,bltcpt(a5)        ; Cpt=plane4
  451.     move.l    #tempsmear1,bltdpt(a5)    ; Dpt=NUOVOcarry
  452.     move    #$0f10,bltcon0(a5)    ; D= A AND ~B AND ~C
  453.  
  454.     move    #0,bltdmod(a5)        ; modulo D
  455. ; stessi valori di prima per moduli A,B,C
  456. ;    move    #0,bltamod(a5)
  457. ;    move.l    #34<<16+34,bltcmod(a5)    ; moduli C e B
  458.  
  459.     move    #(31<<6)+3,bltsize(a5)
  460.  
  461. .wait7
  462.     btst    #6,dmaconr(a5)        ;aspetta il blitter
  463.     bne.s    .wait7
  464.  
  465. ; plane 5
  466.  
  467.     move.l    #tempsmear1,bltapt(a5)    ; Apt=Carry
  468.     move.l    a4,bltbpt(a5)        ; Bpt=plane5
  469.     move.l    a4,bltdpt(a5)        ; Dpt=plane5
  470.     move    #$0d3c,bltcon0(a5)    ; D=(A AND ~B AND ~C) OR (~A AND C) OR
  471.                     ;      OR (B AND C)     
  472.  
  473.     move    #34,bltdmod(a5)        ; modulo D
  474. ; stessi valori di prima per moduli A,B,C
  475. ;    move    #0,bltamod(a5)
  476. ;    move.l    #34<<16+34,bltcmod(a5)    ; moduli C e B
  477.  
  478.     move    #(31<<6)+3,bltsize(a5)
  479.  
  480.     move    #$0400,dmacon(a5)    ;Blitternasty OFF
  481.     movem.l    (a7)+,d0-d7/a0-a6
  482.     rts
  483.  
  484. *************************************************************
  485.  
  486. sinepos:    dc.w    0    ;puntatori tabelle coordinate
  487. cosinepos:    dc.w    0
  488. sinepos2:    dc.w    0
  489. cosinepos2:    dc.w    0
  490. sinepos3:    dc.w    0
  491. cosinepos3:    dc.w    0
  492.  
  493. x1step:    dc.w    10    ;passi
  494. y1step:    dc.w    80
  495. x2step:    dc.w    10
  496. y2step:    dc.w    80
  497. x3step:    dc.w    10
  498. y3step:    dc.w    80
  499.  
  500. sinoffset:    dc.w    0
  501.  
  502.  
  503. lcount:        dc.w    0
  504.  
  505. sintable:
  506.         incdir  "/shade/"
  507.  
  508.         incbin    "sin.3fe"
  509.         incbin    "sin.3fe"
  510.         incbin    "sin.3fe"
  511.         incbin    "sin.3fe"
  512.  
  513.  
  514. shade_colours:    dc.w    $000,$00f,$11f,$22f,$33f,$44f,$55f,$66f,$77f,$88f,$99f,$aaf,$bbf,$ccf,$ddf,$eef,$fff,$fee,$fdd,$fcc,$fbb,$faa,$f99,$f88,$f77,$f66,$f55,$f44,$f33,$f22,$f11,$f00
  515.         dc.w    $000,$002,$004,$006,$008,$00a,$00c,$00e,$f00,$f0f,$e0e,$c0c,$a0a,$808,$606,$404,$202,$400,$600,$800,$a00,$c00,$e00,$f00,$ff0,$ee0,$cc0,$a00,$880,$660,$440,$220
  516.         dc.w    $000,$200,$400,$600,$800,$a00,$c00,$e00,$f00,$ff0,$ee0,$cc0,$a00,$880,$660,$440,$220,$004,$006,$008,$00a,$00c,$00e,$f00,$f0f,$e0e,$c0c,$a0a,$808,$606,$404,$202
  517.         dc.w    $000,$f00,$f11,$f22,$f33,$f44,$f55,$f66,$f77,$f88,$f99,$faa,$fbb,$fcc,$fdd,$fee,$fff,$eef,$ddf,$ccf,$bbf,$aaf,$99f,$88f,$77f,$66f,$55f,$44f,$33f,$22f,$11f,$00f
  518.         dc.w    $000,$00f,$11f,$22f,$33f,$44f,$55f,$66f,$77f,$88f,$99f,$aaf,$bbf,$ccf,$ddf,$eef,$fff,$fee,$fdd,$fcc,$fbb,$faa,$f99,$f88,$f77,$f66,$f55,$f44,$f33,$f22,$f11,$f00
  519.         dc.w    $000,$002,$004,$006,$008,$00a,$00c,$00e,$f00,$f0f,$e0e,$c0c,$a0a,$808,$606,$404,$202,$400,$600,$800,$a00,$c00,$e00,$f00,$ff0,$ee0,$cc0,$a00,$880,$660,$440,$220
  520.         dc.w    $000,$200,$400,$600,$800,$a00,$c00,$e00,$f00,$ff0,$ee0,$cc0,$a00,$880,$660,$440,$220,$004,$006,$008,$00a,$00c,$00e,$f00,$f0f,$e0e,$c0c,$a0a,$808,$606,$404,$202
  521.         dc.w    $000,$f00,$f11,$f22,$f33,$f44,$f55,$f66,$f77,$f88,$f99,$faa,$fbb,$fcc,$fdd,$fee,$fff,$eef,$ddf,$ccf,$bbf,$aaf,$99f,$88f,$77f,$66f,$55f,$44f,$33f,$22f,$11f,$00f
  522.         dc.w    $000,$00f,$11f,$12f,$22f,$23f,$33f,$43f,$44f,$45f,$55f,$65f,$66f,$76f,$77f,$78f,$88f,$98f,$99f,$9af,$aaf,$baf,$bbf,$bcf,$ccf,$dcf,$ddf,$def,$eef,$fef,$fff,$fff
  523.  
  524. *************************************************
  525.     
  526. my_copper:    
  527.         dc.w    $1fc,0,$106,$0c00    ;resetta AGA
  528.         dc.w    $100,$5200        ; bltcon0= 5 bp lores
  529.         dc.w    $108,0            ; bp modulo 
  530.         dc.w    $10a,0            ; bp modulo 
  531.         dc.w    $102,0            ;bplcon1=Noscroll
  532.         
  533.         dc.w    $08e,$2c81    ; bp window start 
  534.         dc.w    $090,$2cc1    ; bp window stop
  535.         dc.w    $094,$d0    ; DDFSTOP
  536.         dc.w    $92,$38        ; DDFSTRT
  537.         
  538. Planes
  539.         dc.w      $e0
  540. sb_plane0_hi:    dc.w    0,$e2
  541. sb_plane0_lo:    dc.w    0,$e4
  542. sb_plane1_hi:    dc.w    0,$e6
  543. sb_plane1_lo:    dc.w    0,$e8
  544. sb_plane2_hi:    dc.w    0,$ea
  545. sb_plane2_lo:    dc.w    0,$ec
  546. sb_plane3_hi:    dc.w    0,$ee
  547. sb_plane3_lo:    dc.w    0,$f0
  548. sb_plane4_hi:    dc.w    0,$f2
  549. sb_plane4_lo:    dc.w    0
  550.  
  551.         
  552.         dc.w    $180,$000
  553. shade_map:    
  554.         dc.w    $182,$11f
  555.         dc.w    $184,$22f
  556.         dc.w    $186,$33f
  557.         dc.w    $188,$44f
  558.         dc.w    $18a,$55f
  559.         dc.w    $18c,$66f
  560.         dc.w    $18e,$77f
  561.         dc.w    $190,$88f
  562.         dc.w    $192,$99f
  563.         dc.w    $194,$aaf
  564.         dc.w    $196,$bbf
  565.         dc.w    $198,$ccf
  566.         dc.w    $19a,$ddf
  567.         dc.w    $19c,$eef
  568.         dc.w    $19e,$fff
  569.         dc.w    $1a0,$fee
  570.         dc.w    $1a2,$fdd
  571.         dc.w    $1a4,$fcc
  572.         dc.w    $1a6,$fbb
  573.         dc.w    $1a8,$faa
  574.         dc.w    $1aa,$f99
  575.         dc.w    $1ac,$f88
  576.         dc.w    $1ae,$f77
  577.         dc.w    $1b0,$f66
  578.         dc.w    $1b2,$f55
  579.         dc.w    $1b4,$f44
  580.         dc.w    $1b6,$f33
  581.         dc.w    $1b8,$f22
  582.         dc.w    $1ba,$f11
  583.         dc.w    $1bc,$f00
  584.         dc.w    $1be,$f00
  585.         
  586.         dc.w    $ffe1,$fffe    ; Aspetta la riga 255
  587.         dc.w    $9c,$8010    ; Chiama Interrupt Copper
  588.         dc.w    $ffff,$fffe    ; end of copper list
  589.  
  590. tempsmear1:        ds.l    384
  591.  
  592. brushlist:        dc.l    brush1
  593.         dc.l    brush2
  594.         dc.l    brush3
  595.         dc.l    brush4
  596.         dc.l    brush3
  597.         dc.l    brush4
  598.         dc.l    -1
  599.  
  600. brush_ptr:        dc.l    brushlist
  601.  
  602. brush1:        incbin    "shadeb1.bin"
  603. brush2:        incbin    "shadeb2.bin"
  604. brush3:        incbin    "shadeb3.bin"
  605. brush4:        incbin    "shadeb6.bin"
  606.  
  607.  
  608. screena:    ds.l    10*256
  609.         ds.l    10*256
  610.         ds.l    10*256
  611.         ds.l    10*256
  612.         ds.l    10*256
  613.  
  614.  
  615.