home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / assembler-kurs / listings3 / listing7s.s < prev    next >
Text File  |  1977-12-31  |  15KB  |  566 lines

  1.  
  2. ; Listing7s.s    ANZEIGEN VON !& SPRITES
  3.  
  4. ;    In diesem Listing wird die Wiederverwendung der Sprite gezeigt.
  5. ;    Mit der linken Maustaste ändern die Sprites Position.
  6. ;    Rechte Taste zum Aussteigen.
  7.  
  8.     SECTION CiriCop,CODE
  9.  
  10. Anfang:
  11.     move.l    4.w,a6        ; Execbase
  12.     jsr    -$78(a6)    ; Disable
  13.     lea    GfxName(PC),a1    ; Name lib
  14.     jsr    -$198(a6)    ; OpenLibrary
  15.     move.l    d0,GfxBase
  16.     move.l    d0,a6
  17.     move.l    $26(a6),OldCop
  18.  
  19.  
  20.     MOVE.L    #BITPLANE,d0
  21.     LEA    BPLPOINTERS,A1
  22.     move.w    d0,6(a1)
  23.     swap    d0
  24.     move.w    d0,2(a1)
  25.  
  26. ;    Pointen auf die Sprite
  27.  
  28.     MOVE.L    #MEINSPRITE0,d0        ; Adresse des Sprite in d0
  29.     LEA    SpritePointers,a1    ; Pointer in der Copperlist
  30.     move.w    d0,6(a1)
  31.     swap    d0
  32.     move.w    d0,2(a1)
  33.     MOVE.L    #MEINSPRITE1,d0    ; Adresse des Sprite in d0
  34.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  35.     move.w    d0,6(a1)
  36.     swap    d0
  37.     move.w    d0,2(a1)
  38.     MOVE.L    #MEINSPRITE2,d0    ; Adresse des Sprite in d0
  39.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  40.     move.w    d0,6(a1)
  41.     swap    d0
  42.     move.w    d0,2(a1)
  43.     MOVE.L    #MEINSPRITE3,d0    ; Adresse des Sprite in d0
  44.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  45.     move.w    d0,6(a1)
  46.     swap    d0
  47.     move.w    d0,2(a1)
  48.     MOVE.L    #MEINSPRITE4,d0    ; Adresse des Sprite in d0
  49.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  50.     move.w    d0,6(a1)
  51.     swap    d0
  52.     move.w    d0,2(a1)
  53.     MOVE.L    #MEINSPRITE5,d0    ; Adresse des Sprite in d0
  54.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  55.     move.w    d0,6(a1)
  56.     swap    d0
  57.     move.w    d0,2(a1)
  58.     MOVE.L    #MEINSPRITE6,d0    ; Adresse des Sprite in d0
  59.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  60.     move.w    d0,6(a1)
  61.     swap    d0
  62.     move.w    d0,2(a1)
  63.     MOVE.L    #MEINSPRITE7,d0    ; Adresse des Sprite in d0
  64.     addq.w    #8,a1        ; nächten SPRITEPOINTERS
  65.     move.w    d0,6(a1)
  66.     swap    d0
  67.     move.w    d0,2(a1)
  68.  
  69. ; Spritepositionen
  70.  
  71.     MOVE.B    #$2C+50,VSTART0
  72.     MOVE.B    #$2C+50+8,VSTOP0
  73.     MOVE.B    #$2C+50,VSTART1
  74.     MOVE.B    #$2C+50+8,VSTOP1
  75.     MOVE.B    #$2C+50,VSTART2
  76.     MOVE.B    #$2C+50+8,VSTOP2
  77.     MOVE.B    #$2C+50,VSTART3
  78.     MOVE.B    #$2C+50+8,VSTOP3
  79.     MOVE.B    #$2C+50,VSTART4
  80.     MOVE.B    #$2C+50+8,VSTOP4
  81.     MOVE.B    #$2C+50,VSTART5
  82.     MOVE.B    #$2C+50+8,VSTOP5
  83.     MOVE.B    #$2C+50,VSTART6
  84.     MOVE.B    #$2C+50+8,VSTOP6
  85.     MOVE.B    #$2C+50,VSTART7
  86.     MOVE.B    #$2C+50+8,VSTOP7
  87.  
  88. ; hier beginnen die "wiederverwendeten" Sprites
  89.  
  90.     MOVE.B    #$2C+90,VSTART8
  91.     MOVE.B    #$2C+90+8,VSTOP8
  92.     MOVE.B    #$2C+90,VSTART9
  93.     MOVE.B    #$2C+90+8,VSTOP9
  94.     MOVE.B    #$2C+90,VSTART10
  95.     MOVE.B    #$2C+90+8,VSTOP10
  96.     MOVE.B    #$2C+90,VSTART11
  97.     MOVE.B    #$2C+90+8,VSTOP11
  98.     MOVE.B    #$2C+90,VSTART12
  99.     MOVE.B    #$2C+90+8,VSTOP12
  100.     MOVE.B    #$2C+90,VSTART13
  101.     MOVE.B    #$2C+90+8,VSTOP13
  102.     MOVE.B    #$2C+90,VSTART14
  103.     MOVE.B    #$2C+90+8,VSTOP14
  104.     MOVE.B    #$2C+90,VSTART15
  105.     MOVE.B    #$2C+90+8,VSTOP15
  106.  
  107.     move.l    #COPPERLIST,$dff080    ; unsere COP
  108.     move.w    d0,$dff088        ; START COP
  109.     move.w    #0,$dff1fc        ; NO AGA!
  110.     move.w    #$c00,$dff106        ; NO AGA!
  111.  
  112. Mouse1:
  113.     btst    #6,$bfe001    ; linke Maustaste gedrückt?
  114.     bne.s    mouse1
  115.  
  116. ; gibt neue vertikale Positionen ein
  117.  
  118.     MOVE.B    #$2C+10,VSTART0
  119.     MOVE.B    #$2C+10+8,VSTOP0
  120.     MOVE.B    #$2C+10+8*1,VSTART1
  121.     MOVE.B    #$2C+10+8*1+8,VSTOP1
  122.     MOVE.B    #$2C+10+8*2,VSTART2
  123.     MOVE.B    #$2C+10+8*2+8,VSTOP2
  124.     MOVE.B    #$2C+10+8*3,VSTART3
  125.     MOVE.B    #$2C+10+8*3+8,VSTOP3
  126.     MOVE.B    #$2C+10+8*4,VSTART4
  127.     MOVE.B    #$2C+10+8*4+8,VSTOP4
  128.     MOVE.B    #$2C+10+8*5,VSTART5
  129.     MOVE.B    #$2C+10+8*5+8,VSTOP5
  130.     MOVE.B    #$2C+10+8*6,VSTART6
  131.     MOVE.B    #$2C+10+8*6+8,VSTOP6
  132.     MOVE.B    #$2C+10+8*7,VSTART7
  133.     MOVE.B    #$2C+10+8*7+8,VSTOP7
  134.  
  135. ; hier beginnen die "wiederverwendeten" Sprites
  136.  
  137.     MOVE.B    #$2C+10+20,VSTART8
  138.     MOVE.B    #$2C+10+20+8,VSTOP8
  139.     MOVE.B    #$2C+10+20+8*1,VSTART9
  140.     MOVE.B    #$2C+10+20+8*1+8,VSTOP9
  141.     MOVE.B    #$2C+10+20+8*2,VSTART10
  142.     MOVE.B    #$2C+10+20+8*2+8,VSTOP10
  143.     MOVE.B    #$2C+10+20+8*3,VSTART11
  144.     MOVE.B    #$2C+10+20+8*3+8,VSTOP11
  145.     MOVE.B    #$2C+10+20+8*4,VSTART12
  146.     MOVE.B    #$2C+10+20+8*4+8,VSTOP12
  147.     MOVE.B    #$2C+10+20+8*5,VSTART13
  148.     MOVE.B    #$2C+10+20+8*5+8,VSTOP13
  149.     MOVE.B    #$2C+10+20+8*6,VSTART14
  150.     MOVE.B    #$2C+10+20+8*6+8,VSTOP14
  151.     MOVE.B    #$2C+10+20+8*7,VSTART15
  152.     MOVE.B    #$2C+10+20+8*7+8,VSTOP15
  153.  
  154. Mouse2:
  155.     btst    #2,$dff016
  156.     bne.s    Mouse2
  157.  
  158.  
  159.     move.l    OldCop(PC),$dff080    ; Pointen auf die SystemCOP
  160.     move.w    d0,$dff088        ; Starten die alte COP
  161.  
  162.     move.l    4.w,a6
  163.     jsr    -$7e(a6)    ; Enable
  164.     move.l    gfxbase(PC),a1
  165.     jsr    -$19e(a6)    ; Closelibrary
  166.     rts
  167.  
  168. ;    Daten
  169.  
  170. GfxName:
  171.     dc.b    "graphics.library",0,0
  172.  
  173. GfxBase:
  174.     dc.l    0
  175.  
  176. OldCop:
  177.     dc.l    0
  178.  
  179.     SECTION GRAPHIC,DATA_C
  180.  
  181. COPPERLIST:
  182. SpritePointers:
  183.     dc.w    $120,0,$122,0,$124,0,$126,0,$128,0 ; SPRITE
  184.     dc.w    $12a,0,$12c,0,$12e,0,$130,0,$132,0
  185.     dc.w    $134,0,$136,0,$138,0,$13a,0,$13c,0
  186.     dc.w    $13e,0
  187.  
  188.     dc.w    $8E,$2c81    ; DiwStrt
  189.     dc.w    $90,$2cc1    ; DiwStop
  190.     dc.w    $92,$38        ; DdfStart
  191.     dc.w    $94,$d0        ; DdfStop
  192.     dc.w    $102,0        ; BplCon1
  193.     dc.w    $104,0        ; BplCon2
  194.     dc.w    $108,0        ; Bpl1Mod
  195.     dc.w    $10a,0        ; Bpl2Mod
  196.  
  197.             ; 5432109876543210
  198.     dc.w    $100,%0001001000000000
  199.  
  200. BPLPOINTERS:
  201.     dc.w $e0,0,$e2,0    ;erstes    Bitplane
  202.  
  203.     dc.w    $180,$000    ; color0    ; schwarzer Hintergrund
  204.     dc.w    $182,$123    ; color1    ; Color 1 des Bitplane, das
  205.                         ; in diesem Fall leer ist,
  206.     dc.w    $1A2,$F00    ; Color17, - Color1 der Sprite0/1 -ROT
  207.     dc.w    $1A4,$0F0    ; Color18, - Color2 der Sprite0/1 -GRÜN
  208.     dc.w    $1A6,$FF0    ; Color19, - Color3 der Sprite0/1 -GELB
  209.  
  210.     dc.w    $1AA,$FFF    ; Color21, - Color1 der Sprite2/3 -WEIß
  211.     dc.w    $1AC,$0BD    ; Color22, - Color2 der Sprite2/3 -WASSER
  212.     dc.w    $1AE,$D50    ; Color23, - Color3 der Sprite2/3 -ORANGE
  213.  
  214.     dc.w    $1B2,$00F    ; Color25, - Color1 der Sprite4/5 -BLAU
  215.     dc.w    $1B4,$F0F    ; Color26, - Color2 der Sprite4/5 -VIOLETT
  216.     dc.w    $1B6,$BBB    ; Color27, - Color3 der Sprite4/5 -GRAU
  217.  
  218.     dc.w    $1BA,$8E0    ; Color29, - Color1 der Sprite6/7 -HELLGRÜN
  219.     dc.w    $1BC,$a70    ; Color30, - Color2 der Sprite6/7 -BRAUN
  220.     dc.w    $1BE,$d00    ; Color31, - Color3 der Sprite6/7 -DUNKELROT
  221.  
  222.     dc.w    $FFFF,$FFFE    ; Ende der Copperlist
  223.  
  224.  
  225. ; ************ Hier die Sprite: KLARERWEISE in CHIP RAM! ************
  226.  
  227.  ; Referenztabelle zur Definition der Farben:
  228.  
  229.  
  230.  ; per gli sprite 0 ed 1
  231.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  232.  ;BINARIO 10=COLORE 1 (ROSSO)
  233.  ;BINARIO 01=COLORE 2 (VERDE)
  234.  ;BINARIO 11=COLORE 3 (GIALLO)
  235.  
  236. MEINSPRITE0:        ; Länge13 Zeilen
  237. VSTART0:
  238.     dc.b 0
  239. HSTART0:
  240.     dc.b $40+12+0*20
  241. VSTOP0:
  242.     dc.b $0
  243.     dc.b $00
  244.  dc.w    %0000001111000000,%0111110000111110
  245.  dc.w    %0000111111110000,%1111001110001111
  246.  dc.w    %0011111111111100,%1100010001000011
  247.  dc.w    %0111111111111110,%1000010001000001
  248.  dc.w    %0111111111111110,%1000010001000001
  249.  dc.w    %0011111111111100,%1100010001000011
  250.  dc.w    %0000111111110000,%1111001110001111
  251.  dc.w    %0000001111000000,%0111110000111110
  252. VSTART8:
  253.     dc.b $0
  254. HSTART8:
  255.     dc.b $40+20+0*12
  256. VSTOP8:
  257.     dc.b $0
  258.     dc.b $00
  259.  dc.w    %0000001111000000,%0111110000111110
  260.  dc.w    %0000111111110000,%1111001110001111
  261.  dc.w    %0011111111111100,%1100010001000011
  262.  dc.w    %0111111111111110,%1000001110000001
  263.  dc.w    %0111111111111110,%1000010001000001
  264.  dc.w    %0011111111111100,%1100010001000011
  265.  dc.w    %0000111111110000,%1111001110001111
  266.  dc.w    %0000001111000000,%0111110000111110
  267.  dc.w    0,0    ; fine sprite
  268.  
  269.  
  270. MEINSPRITE1:        ; Länge13 Zeilen
  271. VSTART1:
  272.     dc.b $0
  273. HSTART1:
  274.     dc.b $40+12+1*20
  275. VSTOP1:
  276.     dc.b $0
  277.     dc.b $00
  278.  dc.w    %0000001111000000,%0111110000111110
  279.  dc.w    %0000111111110000,%1111000010001111
  280.  dc.w    %0011111111111100,%1100000110000011
  281.  dc.w    %0111111111111110,%1000000010000001
  282.  dc.w    %0111111111111110,%1000000010000001
  283.  dc.w    %0011111111111100,%1100000010000011
  284.  dc.w    %0000111111110000,%1111000111001111
  285.  dc.w    %0000001111000000,%0111110000111110
  286. VSTART9:
  287.     dc.b $0
  288. HSTART9:
  289.     dc.b $40+20+1*12
  290. VSTOP9:
  291.     dc.b $0
  292.     dc.b $00
  293.  dc.w    %0000001111000000,%0111110000111110
  294.  dc.w    %0000111111110000,%1111001110001111
  295.  dc.w    %0011111111111100,%1100010001000011
  296.  dc.w    %0111111111111110,%1000001110000001
  297.  dc.w    %0111111111111110,%1000000001000001
  298.  dc.w    %0011111111111100,%1100000001000011
  299.  dc.w    %0000111111110000,%1111001110001111
  300.  dc.w    %0000001111000000,%0111110000111110
  301.  dc.w    0,0    ; fine sprite
  302.  
  303.  ; per gli sprite 2 e 3
  304.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  305.  ;BINARIO 10=COLORE 1 (BIANCO)
  306.  ;BINARIO 01=COLORE 2 (ACQUA)
  307.  ;BINARIO 11=COLORE 3 (ARANCIO)
  308.  
  309. MEINSPRITE2:        ; Länge13 Zeilen
  310. VSTART2:
  311.     dc.b $0
  312. HSTART2:
  313.     dc.b $40+12+2*20
  314. VSTOP2:
  315.     dc.b $0
  316.     dc.b $00
  317.  dc.w    %0000001111000000,%0111110000111110
  318.  dc.w    %0000111111110000,%1111000111001111
  319.  dc.w    %0011111111111100,%1100001000100011
  320.  dc.w    %0111111111111110,%1000000000100001
  321.  dc.w    %0111111111111110,%1000000111000001
  322.  dc.w    %0011111111111100,%1100001000000011
  323.  dc.w    %0000111111110000,%1111001111101111
  324.  dc.w    %0000001111000000,%0111110000111110
  325. VSTART10:
  326.     dc.b $0
  327. HSTART10:
  328.     dc.b $40+20+2*12
  329. VSTOP10:
  330.     dc.b $0
  331.     dc.b $00
  332.  dc.w    %0000001111000000,%0111110000111110
  333.  dc.w    %0000111111110000,%1111000000001111
  334.  dc.w    %0011111111111100,%1100010011100011
  335.  dc.w    %0111111111111110,%1000110010100001
  336.  dc.w    %0111111111111110,%1000010010100001
  337.  dc.w    %0011111111111100,%1100111011100011
  338.  dc.w    %0000111111110000,%1111000000001111
  339.  dc.w    %0000001111000000,%0111110000111110
  340.  dc.w    0,0    ; fine sprite
  341.  
  342. MEINSPRITE3:        ; Länge13 Zeilen
  343. VSTART3:
  344.     dc.b $0
  345. HSTART3:
  346.     dc.b $40+12+3*20
  347. VSTOP3:
  348.     dc.b 0
  349.     dc.b $00
  350.  dc.w    %0000001111000000,%0111110000111110
  351.  dc.w    %0000111111110000,%1111001111101111
  352.  dc.w    %0011111111111100,%1100000000100011
  353.  dc.w    %0111111111111110,%1000000111100001
  354.  dc.w    %0111111111111110,%1000000000100001
  355.  dc.w    %0011111111111100,%1100000000100011
  356.  dc.w    %0000111111110000,%1111001111101111
  357.  dc.w    %0000001111000000,%0111110000111110
  358. VSTART11:
  359.     dc.b $0
  360. HSTART11:
  361.     dc.b $40+20+3*12
  362. VSTOP11:
  363.     dc.b $0
  364.     dc.b $00
  365.  dc.w    %0000001111000000,%0111110000111110
  366.  dc.w    %0000111111110000,%1111000000001111
  367.  dc.w    %0011111111111100,%1100010001000011
  368.  dc.w    %0111111111111110,%1000110011000001
  369.  dc.w    %0111111111111110,%1000010001000001
  370.  dc.w    %0011111111111100,%1100111011100011
  371.  dc.w    %0000111111110000,%1111000000001111
  372.  dc.w    %0000001111000000,%0111110000111110
  373.  dc.w    0,0    ; fine sprite
  374.  
  375.  ; per gli sprite 4 e 5
  376.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  377.  ;BINARIO 10=COLORE 1 (BLU)
  378.  ;BINARIO 01=COLORE 2 (VIOLA)
  379.  ;BINARIO 11=COLORE 3 (GRIGIO)
  380.  
  381. MEINSPRITE4:        ; Länge13 Zeilen
  382. VSTART4:
  383.     dc.b $0
  384. HSTART4:
  385.     dc.b $40+12+4*20
  386. VSTOP4:
  387.     dc.b $0
  388.     dc.b $00
  389.  dc.w    %0000001111000000,%0111110000111110
  390.  dc.w    %0000111111110000,%1111001001001111
  391.  dc.w    %0011111111111100,%1100001001000011
  392.  dc.w    %0111111111111110,%1000001111000001
  393.  dc.w    %0111111111111110,%1000000001000001
  394.  dc.w    %0011111111111100,%1100000001000011
  395.  dc.w    %0000111111110000,%1111000001001111
  396.  dc.w    %0000001111000000,%0111110000111110
  397. VSTART12:
  398.     dc.b $0
  399. HSTART12:
  400.     dc.b $40+20+4*12
  401. VSTOP12:
  402.     dc.b $0
  403.     dc.b $00
  404.  dc.w    %0000001111000000,%0111110000111110
  405.  dc.w    %0000111111110000,%1111000000001111
  406.  dc.w    %0011111111111100,%1100010011000011
  407.  dc.w    %0111111111111110,%1000110001000001
  408.  dc.w    %0111111111111110,%1000010010000001
  409.  dc.w    %0011111111111100,%1100111011100011
  410.  dc.w    %0000111111110000,%1111000000001111
  411.  dc.w    %0000001111000000,%0111110000111110
  412.  dc.w    0,0    ; fine sprite
  413.  
  414. MEINSPRITE5:        ; Länge13 Zeilen
  415. VSTART5:
  416.     dc.b $0
  417. HSTART5:
  418.     dc.b $40+12+5*20
  419. VSTOP5:
  420.     dc.b $0
  421.     dc.b $0
  422.  dc.w    %0000001111000000,%0111110000111110
  423.  dc.w    %0000111111110000,%1111001111001111
  424.  dc.w    %0011111111111100,%1100001000000011
  425.  dc.w    %0111111111111110,%1000001111000001
  426.  dc.w    %0111111111111110,%1000000001000001
  427.  dc.w    %0011111111111100,%1100000001000011
  428.  dc.w    %0000111111110000,%1111001111001111
  429.  dc.w    %0000001111000000,%0111110000111110
  430. VSTART13:
  431.     dc.b $0
  432. HSTART13:
  433.     dc.b $40+20+5*12
  434. VSTOP13:
  435.     dc.b $0
  436.     dc.b $00
  437.  dc.w    %0000001111000000,%0111110000111110
  438.  dc.w    %0000111111110000,%1111000000001111
  439.  dc.w    %0011111111111100,%1100010011100011
  440.  dc.w    %0111111111111110,%1000110001100001
  441.  dc.w    %0111111111111110,%1000010000100001
  442.  dc.w    %0011111111111100,%1100111011000011
  443.  dc.w    %0000111111110000,%1111000000001111
  444.  dc.w    %0000001111000000,%0111110000111110
  445.  dc.w    0,0    ; fine sprite
  446.  
  447.  ; per gli sprite 6 e 7
  448.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  449.  ;BINARIO 10=COLORE 1 (VERDE CHIARO)
  450.  ;BINARIO 01=COLORE 2 (MARRONE)
  451.  ;BINARIO 11=COLORE 3 (ROSSO SCURO)
  452.  
  453. MEINSPRITE6:        ; Länge13 Zeilen
  454. VSTART6:
  455.     dc.b $0
  456. HSTART6:
  457.     dc.b $40+12+6*20
  458. VSTOP6:
  459.     dc.b $0
  460.     dc.b $00
  461.  dc.w    %0000001111000000,%0111110000111110
  462.  dc.w    %0000111111110000,%1111001111001111
  463.  dc.w    %0011111111111100,%1100001000000011
  464.  dc.w    %0111111111111110,%1000001111000001
  465.  dc.w    %0111111111111110,%1000001001000001
  466.  dc.w    %0011111111111100,%1100001001000011
  467.  dc.w    %0000111111110000,%1111001111001111
  468.  dc.w    %0000001111000000,%0111110000111110
  469. VSTART14:
  470.     dc.b $0
  471. HSTART14:
  472.     dc.b $40+20+6*12
  473. VSTOP14:
  474.     dc.b $0
  475.     dc.b $00
  476.  dc.w    %0000001111000000,%0111110000111110
  477.  dc.w    %0000111111110000,%1111000000001111
  478.  dc.w    %0011111111111100,%1100010000100011
  479.  dc.w    %0111111111111110,%1000110010100001
  480.  dc.w    %0111111111111110,%1000010011100001
  481.  dc.w    %0011111111111100,%1100111001000011
  482.  dc.w    %0000111111110000,%1111000000001111
  483.  dc.w    %0000001111000000,%0111110000111110
  484.  dc.w    0,0    ; fine sprite
  485.  
  486. MEINSPRITE7:        ; Länge13 Zeilen
  487. VSTART7:
  488.     dc.b 0
  489. HSTART7:
  490.     dc.b $40+12+7*20
  491. VSTOP7:
  492.     dc.b $0
  493.     dc.b $0
  494.  dc.w    %0000001111000000,%0111110000111110
  495.  dc.w    %0000111111110000,%1111001111001111
  496.  dc.w    %0011111111111100,%1100000001000011
  497.  dc.w    %0111111111111110,%1000000001000001
  498.  dc.w    %0111111111111110,%1000000001000001
  499.  dc.w    %0011111111111100,%1100000001000011
  500.  dc.w    %0000111111110000,%1111000001001111
  501.  dc.w    %0000001111000000,%0111110000111110
  502. VSTART15:
  503.     dc.b $0
  504. HSTART15:
  505.     dc.b $40+20+7*12
  506. VSTOP15:
  507.     dc.b $0
  508.     dc.b $00
  509.  dc.w    %0000001111000000,%0111110000111110
  510.  dc.w    %0000111111110000,%1111000000001111
  511.  dc.w    %0011111111111100,%1100010011100011
  512.  dc.w    %0111111111111110,%1000110011000001
  513.  dc.w    %0111111111111110,%1000010000100001
  514.  dc.w    %0011111111111100,%1100111011100011
  515.  dc.w    %0000111111110000,%1111000000001111
  516.  dc.w    %0000001111000000,%0111110000111110
  517.  dc.w    0,0    ; Ende Sprite
  518.  
  519.         SECTION LEERESPLANE,BSS_C ; Ein auf 0 gesetztes Bitplane, wir
  520.                 ; müssen es verwenden, denn ohne Bitplane
  521.                 ; ist es nicht möglich, die Sprites
  522.                 ; zu aktivieren
  523. BITPLANE:
  524.     ds.b    40*256        ; Bitplane auf 0 Lowres
  525.  
  526.     end
  527.  
  528.  
  529. In  diesem  Listing  wird  gezeigt,  wie  man die Sprites mehrmals auf dem
  530. gleichen Screen wiederverwenden kann. Im Beispiel wird jeder  Sprite  zwei
  531. Mal recycelt.
  532.  
  533. Der Sprite 0 wird wiederverwendet um  Sprite 8 zu zeichnen.
  534. Der Sprite 1 wird wiederverwendet um  Sprite 9 zu zeichnen.
  535. Der Sprite 2 wird wiederverwendet um  Sprite 10 zu zeichnen.
  536. Der Sprite 3 wird wiederverwendet um  Sprite 11 zu zeichnen.
  537. Der Sprite 4 wird wiederverwendet um  Sprite 12 zu zeichnen.
  538. Der Sprite 5 wird wiederverwendet um  Sprite 13 zu zeichnen.
  539. Der Sprite 6 wird wiederverwendet um  Sprite 14 zu zeichnen.
  540. Der Sprite 7 wird wiederverwendet um  Sprite 15 zu zeichnen.
  541.  
  542. Bemerkt ihr,  daß  bei  der  Wiederverwendung  eines  Sprites,  dieser  am
  543. Bildschrim  TIEFER  dargestellt  wird,  als es die letzte Zeile bei seiner
  544. ersten Anzeige war? Das ist einem bestimmten Hardwarelimit  zuzuschreiben.
  545. Zwischen  einer  Verwendung  und  der  nächtsten muß MINDESTENS eine leere
  546. Zeile dazwischenliegen.
  547.  
  548.  
  549. Das Byte VSTART des Sprite 8 muß GRÖßER sein als VSTOP des Sprite 0
  550. Das Byte VSTART des Sprite 9 muß GRÖßER sein als VSTOP des Sprite 1
  551. Das Byte VSTART des Sprite 10 muß GRÖßER sein als VSTOP des Sprite 2
  552. Das Byte VSTART des Sprite 11 muß GRÖßER sein als VSTOP des Sprite 3
  553. Das Byte VSTART des Sprite 12 muß GRÖßER sein als VSTOP des Sprite 4
  554. Das Byte VSTART des Sprite 13 muß GRÖßER sein als VSTOP des Sprite 5
  555. Das Byte VSTART des Sprite 14 muß GRÖßER sein als VSTOP des Sprite 6
  556. Das Byte VSTART des Sprite 15 muß GRÖßER sein als VSTOP des Sprite 7
  557.  
  558. Die  Wiederverwendung  eines Sprite ändert die Farbregister nicht, die ihm
  559. zugeteilt sind.
  560. Ihr bemerkt sicher, daß die Farben eines "wiederverwendeten"  Sprites  die
  561. gleichen  sind  wie  die  des  "Orginals".  Da  die  Sprites  aber  auf
  562. verschiedenen Höhen liegen hindert uns nichts daran, deren Farben mit  dem
  563. Copper  zu  verändern, während wir uns z.B in der "leeren" Zeile befinden.
  564. Ihr könnt es als Übung mal versuchen.
  565.  
  566.