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

  1.  
  2. ; Listing7v1.s    PRIORITÄT SPRITE-PLAYFIELD
  3. ;        In diesem Listing werden die Prioritäten zwischen den Sprite
  4. ;        und den Playfield vorgeführt. Die Sprites durchqueren
  5. ;        vier Zeilen auf dem Bildschirm. Bei jedem Durchgang werden
  6. ;        die Prioritäten mittels Copperlist verändert.
  7.  
  8.  
  9.     SECTION CipundCop,CODE
  10.  
  11. Anfang:
  12.     move.l    4.w,a6        ; Execbase
  13.     jsr    -$78(a6)    ; Disable
  14.     lea    GfxName(PC),a1    ; Name lib
  15.     jsr    -$198(a6)    ; OpenLibrary
  16.     move.l    d0,GfxBase
  17.     move.l    d0,a6
  18.     move.l    $26(a6),OldCop    ; speichern die alte COP
  19.  
  20. ;    Pointen auf die übliche Art unser Pic an
  21.  
  22.     MOVE.L    #PIC,d0
  23.     LEA    BPLPOINTERS,A1
  24.     MOVEQ    #3-1,D1
  25. POINTBP:
  26.     move.w    d0,6(a1)
  27.     swap    d0
  28.     move.w    d0,2(a1)
  29.     swap    d0
  30.     ADD.L    #40*256,d0
  31.     addq.w    #8,a1
  32.     dbra    d1,POINTBP
  33.  
  34. ;    Pointen auf die Sprites
  35.  
  36.     MOVE.L    #MEINSPRITE0,d0      ; Adresse des Sprite in d0
  37.     LEA    SpritePointers,a1 ; Pointer in der Copperlist
  38.     move.w    d0,6(a1)
  39.     swap    d0
  40.     move.w    d0,2(a1)
  41.     MOVE.L    #MEINSPRITE1,d0     ; Adresse des Sprite in d0
  42.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  43.     move.w    d0,6(a1)
  44.     swap    d0
  45.     move.w    d0,2(a1)
  46.     MOVE.L    #MEINSPRITE2,d0     ; Adresse des Sprite in d0
  47.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  48.     move.w    d0,6(a1)
  49.     swap    d0
  50.     move.w    d0,2(a1)
  51.     MOVE.L    #MEINSPRITE3,d0     ; Adresse des Sprite in d0
  52.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  53.     move.w    d0,6(a1)
  54.     swap    d0
  55.     move.w    d0,2(a1)
  56.     MOVE.L    #MEINSPRITE4,d0     ; Adresse des Sprite in d0
  57.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  58.     move.w    d0,6(a1)
  59.     swap    d0
  60.     move.w    d0,2(a1)
  61.     MOVE.L    #MEINSPRITE5,d0     ; Adresse des Sprite in d0
  62.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  63.     move.w    d0,6(a1)
  64.     swap    d0
  65.     move.w    d0,2(a1)
  66.     MOVE.L    #MEINSPRITE6,d0     ; Adresse des Sprite in d0
  67.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  68.     move.w    d0,6(a1)
  69.     swap    d0
  70.     move.w    d0,2(a1)
  71.     MOVE.L    #MEINSPRITE7,d0     ; Adresse des Sprite in d0
  72.     addq.w    #8,a1         ; nächsten SPRITEPOINTERS
  73.     move.w    d0,6(a1)
  74.     swap    d0
  75.     move.w    d0,2(a1)
  76.  
  77.     move.l    #COPPERLIST,$dff080    ; unsere COP
  78.     move.w    d0,$dff088        ; START COP
  79.     move.w    #0,$dff1fc        ; NO AGA!
  80.     move.w    #$c00,$dff106        ; NO AGA!
  81.  
  82.  
  83. mouse:
  84.     cmpi.b    #$ff,$dff006    ; Zeile 255?
  85.     bne.s    mouse
  86.  
  87.     bsr.s    BewegeSprites    ; Bewege die Sprites nach unten
  88.  
  89. Warte1:
  90.     cmpi.b    #$ff,$dff006    ; Zeile 255?
  91.     beq.s    Warte1
  92.  
  93.  
  94.     btst    #6,$bfe001    ; Mouse gedrückt?
  95.     bne.s    mouse
  96.  
  97.  
  98.     move.l    OldCop(PC),$dff080    ; Pointen auf die SystemCOP
  99.     move.w    d0,$dff088        ; Starten die alte COP
  100.  
  101.     move.l    4.w,a6
  102.     jsr    -$7e(a6)    ; Enable
  103.     move.l    gfxbase(PC),a1
  104.     jsr    -$19e(a6)    ; Closelibrary
  105.     rts
  106.  
  107. ;    Daten
  108.  
  109. GfxName:
  110.     dc.b    "graphics.library",0,0
  111.  
  112. GfxBase:
  113.     dc.l    0
  114.  
  115. OldCop:
  116.     dc.l    0
  117.  
  118. ; Diese Routine bewegt die 8 Sprites nach unten:
  119. ; Die Sprites werden einmal schon und einmal nicht bewegt. Deswegen wird
  120. ; die Variable Flag verwendet. Jedesmal, wenn die Routine ausgeführt wird,
  121. ; verändert die Variable ihren Zustand, das geschieht mit einem NOT:
  122. ; wenn sie auf 0 war, dann wird sie $ffff
  123. ; wenn sie auf $ffff war, dann wird sie 0
  124. ; wenn die Variabel von 0 auf $ffff übergeht, dann werden die Sprites
  125. ; nicht bewegt.
  126. ; Alle Sprites haben die selbe Höhe.
  127.  
  128. BewegeSprites:
  129.  
  130.     not.w    flag
  131.     bne.w    Raus
  132.  
  133. ; bewegt den Sprite 0
  134.  
  135.     addq.w    #1,Hoehe
  136.     cmp.w    #300,Hoehe
  137.     blo.s    Nicht_Rand    ; am unteren Rand angekommen?
  138.     move.w    #$2c,Hoehe    ; wenn ja, setz ihn wieder ganz rauf
  139.  
  140. Nicht_Rand:
  141.     move.w    Hoehe(PC),d0
  142.  
  143.     CLR.B    VHBITS0        ; Lösche die Bits 8 der horizontalen Position
  144.     MOVE.b    d0,VSTART0  ; Kopiere die Bit von 0 bis 7 in VSTART
  145.     BTST.l    #8,D0        ; ist die Position größer als 255?
  146.     BEQ.S    NOBIGVSTART ; wenn nicht, dann geh weitde, denn das Bit wurde
  147.                 ; bereits mit CLR.b VHBITS gelöscht
  148.  
  149.     BSET.b    #2,VHBITS0  ; ansonsten setze Bit 8 der vertikalen Startpos.
  150.                 ; auf 1
  151. NOBIGVSTART:
  152.     ADDQ.W    #8,D0        ; Zähle die Länge des Sprite dazu, um die
  153.                 ; Endposition zu ermitteln (VSTOP)
  154.     move.b    d0,VSTOP0    ; Gib die Bit von 0 bis 7 in VSTOP
  155.     BTST.l    #8,D0        ; ist die Position größer als 255 ?
  156.     BEQ.S    NOBIGVSTOP    ; wenn nicht, dann geh weiter, denn das Bit
  157.                 ; wurde bereits mit CLR.b VHBITS gelöscht
  158.  
  159.     BSET.b    #1,VHBITS0    ; ansonsten setze Bit 8 der vertikalen Startp.
  160.                 ; auf 1
  161. NOBIGVSTOP:
  162.  
  163. ; kopiere die Höhe in die anderen Sprites
  164.  
  165.     move.b    vstart0,vstart1 ; kopiert VSTART
  166.     move.w    vstop0,vstop1    ; kopiert VSTOP und VHBITS
  167.  
  168.     move.b    vstart0,vstart2 ; kopiert VSTART
  169.     move.w    vstop0,vstop2    ; kopiert VSTOP und VHBITS
  170.  
  171.     move.b    vstart0,vstart3 ; kopiert VSTART
  172.     move.w    vstop0,vstop3    ; kopiert VSTOP und VHBITS
  173.  
  174.     move.b    vstart0,vstart4 ; kopiert VSTART
  175.     move.w    vstop0,vstop4    ; kopiert VSTOP und VHBITS
  176.  
  177.     move.b    vstart0,vstart5 ; kopiert VSTART
  178.     move.w    vstop0,vstop5    ; kopiert VSTOP und VHBITS
  179.  
  180.     move.b    vstart0,vstart6 ; kopiert VSTART
  181.     move.w    vstop0,vstop6    ; kopiert VSTOP und VHBITS
  182.  
  183.     move.b    vstart0,vstart7 ; kopiert VSTART
  184.     move.w    vstop0,vstop7    ; kopiert VSTOP und VHBITS
  185.  
  186. Raus:
  187.     rts
  188.  
  189. Hoehe:
  190.     dc.w    $2c
  191. flag:
  192.     dc.w    0
  193.  
  194.  
  195.     SECTION GRAPHIC,DATA_C
  196.  
  197. COPPERLIST:
  198. SpritePointers:
  199.     dc.w    $120,0,$122,0,$124,0,$126,0,$128,0 ; SPRITE
  200.     dc.w    $12a,0,$12c,0,$12e,0,$130,0,$132,0
  201.     dc.w    $134,0,$136,0,$138,0,$13a,0,$13c,0
  202.     dc.w    $13e,0
  203.  
  204.     dc.w    $8E,$2c81    ; DiwStrt
  205.     dc.w    $90,$2cc1    ; DiwStop
  206.     dc.w    $92,$38        ; DdfStart
  207.     dc.w    $94,$d0        ; DdfStop
  208.     dc.w    $102,0        ; BplCon1
  209.     dc.w    $104,0        ; BplCon2
  210.     dc.w    $108,0        ; Bpl1Mod
  211.     dc.w    $10a,0        ; Bpl2Mod
  212.  
  213.             ; 5432109876543210
  214.     dc.w    $100,%0011001000000000    ; Bit 12 an!! 3 Bitplane Lowres
  215.  
  216. BPLPOINTERS:
  217.     dc.w $e0,0,$e2,0    ;erstes Bitplane
  218.     dc.w $e4,0,$e6,0
  219.     dc.w $e8,0,$ea,0
  220.  
  221.     dc.w    $180,$000    ; COLOR0 - schwarzer Hintergrund
  222.     dc.w    $182,$ff0
  223.     dc.w    $184,$800
  224.     dc.w    $186,$0f0
  225.     dc.w    $188,$ff0
  226.     dc.w    $18a,$f00
  227.     dc.w    $18c,$0f0
  228.     dc.w    $18e,$0f0
  229.  
  230.  
  231.     dc.w    $1A2,$F00    ; Color17, - Color1 der Sprite0/1 -ROT
  232.     dc.w    $1A4,$0F0    ; Color18, - Color2 der Sprite0/1 -GRÜN
  233.     dc.w    $1A6,$FF0    ; Color19, - Color3 der Sprite0/1 -GELB
  234.  
  235.     dc.w    $1AA,$FFF    ; Color21, - Color1 der Sprite2/3 -WEIß
  236.     dc.w    $1AC,$0BD    ; Color22, - Color2 der Sprite2/3 -WASSER
  237.     dc.w    $1AE,$D50    ; Color23, - Color3 der Sprite2/3 -ORANGE
  238.  
  239.     dc.w    $1B2,$00F    ; Color25, - Color1 der Sprite4/5 -BLAU
  240.     dc.w    $1B4,$F0F    ; Color26, - Color2 der Sprite4/5 -VIOLETT
  241.     dc.w    $1B6,$BBB    ; Color27, - Color3 der Sprite4/5 -GRAU
  242.  
  243.     dc.w    $1BA,$8E0    ; Color29, - Color1 der Sprite6/7 -HELLGRÜN
  244.     dc.w    $1BC,$a70    ; Color30, - Color2 der Sprite6/7 -BRAUN
  245.     dc.w    $1BE,$d00    ; Color31, - Color3 der Sprite6/7 -DUNKELROT
  246.  
  247. ; Ab hier beginnen die Befehle, die die Priorität ändern.
  248. ; Ihr könnt sehen, daß die Prioritäten für die geraden wie auch für die
  249. ; ungeraden Bitplanes gleich sind, da wir hier mit einem einzigen Playfield
  250. ; arbeiten, und nicht einem Dual-Playfield: z.B. ist Wert $0009 der
  251. ; erste, der in das Register BPLCON2 geschrieben wird:
  252. ;
  253. ;    5432109876543210
  254. ; $0009=%0000000000001001    ihr bemerkt daß:
  255. ;
  256. ; in die Bits von 0 bis 2 kommt %001
  257. ; in die Bits von 3 bis 5 kommt %001, wie wir es vorausgesagt haben
  258. ;
  259. ; Ihr könnt es überprüfen, es ist das selbe für alle Werte, die in
  260. ; BPLCON2 geschrieben werden.
  261.  
  262.  
  263.     dc.w    $104,$0000    ; BPLCON2 - am Anfang alle Sprites darunter
  264.  
  265.     dc.w    $7007,$fffe    ; WAIT - Warte das Ende des Streifens ab
  266.     dc.w    $104,$0009    ; BPLCON2 - Sprites 0,1 darüber,
  267.                 ; Sprites 2,3,4,5,6,7 darunter
  268.  
  269.     dc.w    $a007,$fffe    ; WAIT - Warte das Ende des Streifens ab
  270.     dc.w    $104,$0012    ; BPLCON2 - Sprites 0,1,2,3 darüber und
  271.                 ; Sprites 4,5,6,7 darunter
  272.  
  273.     dc.w    $d007,$fffe    ; WAIT - Warte das Ende des Streifens ab
  274.     dc.w    $104,$001b    ; BPLCON2 - Sprites 0,1,2,3,4,5 darüber und
  275.                 ; Sprites 6,7 darunter
  276.  
  277.     dc.w    $ff07,$fffe    ; WAIT - Warte das Ende des Streifens ab
  278.     dc.w    $104,$0024    ; BPLCON2 - alle Sprites darüber
  279.  
  280.     dc.w    $FFFF,$FFFE    ; Ende der Copperlist
  281.  
  282. ;           543210
  283. ; ACH-    $0  = %000000 - alle Sprites darunter
  284. ; TUNG! $9  = %001001 - Sprites 0,1 darüber    2,3,4,5,6,7 darunter
  285. ;    $12 = %010010 - Sprites 0,1,2,3 darüber    4,5,6,7 darunter
  286. ;    $1b = %011011 - Sprites 0,1,2,3,4,5 darüber    6,7 darunter
  287. ;    $24 = %100100 - alle Sprites darüber
  288.  
  289.  
  290.  
  291. ; ************ Hier die Sprite: KLARERWEISE in CHIP RAM! ************
  292.  
  293.  ; Referenztabelle zur Definition der Farben:
  294.  
  295.  
  296. ;  für die Sprite 0 und 1
  297. ; BINÄR 00=COLOR 0 (TRANSPARENT)
  298. ; BINÄR 10=COLOR 1 (ROT)
  299. ; BINÄR 01=COLOR 2 (GRÜN)
  300. ; BINÄR 11=COLOR 3 (GELB)
  301.  
  302. MEINSPRITE0:        ; Länge: 13 Zeilen
  303. VSTART0:
  304.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  305. HSTART0:
  306.     dc.b $60    ; Horizontale Pos. (von $40 bis $d8)
  307. VSTOP0:
  308.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  309. VHBITS0:
  310.     dc.b $00
  311.  dc.w    %0000001111000000,%0111110000111110
  312.  dc.w    %0000111111110000,%1111001110001111
  313.  dc.w    %0011111111111100,%1100010001000011
  314.  dc.w    %0111111111111110,%1000010001000001
  315.  dc.w    %0111111111111110,%1000010001000001
  316.  dc.w    %0011111111111100,%1100010001000011
  317.  dc.w    %0000111111110000,%1111001110001111
  318.  dc.w    %0000001111000000,%0111110000111110
  319.  dc.w    0,0    ; Ende des Sprite
  320.  
  321.  
  322. MEINSPRITE1:        ; Länge: 13 Zeilen
  323. VSTART1:
  324.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  325. HSTART1:
  326.     dc.b $60+14    ; Horizontale Pos. (von $40 bis $d8)
  327. VSTOP1:
  328.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  329.     dc.b $00
  330.  dc.w    %0000001111000000,%0111110000111110
  331.  dc.w    %0000111111110000,%1111000010001111
  332.  dc.w    %0011111111111100,%1100000110000011
  333.  dc.w    %0111111111111110,%1000000010000001
  334.  dc.w    %0111111111111110,%1000000010000001
  335.  dc.w    %0011111111111100,%1100000010000011
  336.  dc.w    %0000111111110000,%1111000111001111
  337.  dc.w    %0000001111000000,%0111110000111110
  338.  dc.w    0,0    ; Ende des Sprite
  339.  
  340.  ; für die Sprite 2 und 3
  341.  ;BINÄR 00=COLOR 0 (TRANSPARENT)
  342.  ;BINÄR 10=COLOR 1 (WEIß)
  343.  ;BINÄR 01=COLOR 2 (WASSER)
  344.  ;BINÄR 11=COLOR 3 (ORANGE)
  345.  
  346. MEINSPRITE2:        ; Länge: 13 Zeilen
  347. VSTART2:
  348.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  349. HSTART2:
  350.     dc.b $60+(14*2) ; Horizontale Pos. (von $40 bis $d8)
  351. VSTOP2:
  352.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  353.     dc.b $00
  354.  dc.w    %0000001111000000,%0111110000111110
  355.  dc.w    %0000111111110000,%1111000111001111
  356.  dc.w    %0011111111111100,%1100001000100011
  357.  dc.w    %0111111111111110,%1000000000100001
  358.  dc.w    %0111111111111110,%1000000111000001
  359.  dc.w    %0011111111111100,%1100001000000011
  360.  dc.w    %0000111111110000,%1111001111101111
  361.  dc.w    %0000001111000000,%0111110000111110
  362.  dc.w    0,0    ; Ende des Sprite
  363.  
  364. MEINSPRITE3:        ; Länge: 13 Zeilen
  365. VSTART3:
  366.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  367. HSTART3:
  368.     dc.b $60+(14*3) ; Horizontale Pos. (von $40 bis $d8)
  369. VSTOP3:
  370.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  371.     dc.b $00
  372.  dc.w    %0000001111000000,%0111110000111110
  373.  dc.w    %0000111111110000,%1111001111101111
  374.  dc.w    %0011111111111100,%1100000000100011
  375.  dc.w    %0111111111111110,%1000000111100001
  376.  dc.w    %0111111111111110,%1000000000100001
  377.  dc.w    %0011111111111100,%1100000000100011
  378.  dc.w    %0000111111110000,%1111001111101111
  379.  dc.w    %0000001111000000,%0111110000111110
  380.  dc.w    0,0    ; Ende des Sprite
  381.  
  382.  ; für die Sprite 4 und 5
  383.  ;BINÄR 00=COLOR 0 (TRANSPARENT)
  384.  ;BINÄR 10=COLOR 1 (BLAU)
  385.  ;BINÄR 01=COLOR 2 (VIOLETT)
  386.  ;BINÄR 11=COLOR 3 (GRAU)
  387.  
  388. MEINSPRITE4:        ; Länge: 13 Zeilen
  389. VSTART4:
  390.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  391. HSTART4:
  392.     dc.b $60+(14*4) ; Horizontale Pos. (von $40 bis $d8)
  393. VSTOP4:
  394.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  395.     dc.b $00
  396.  dc.w    %0000001111000000,%0111110000111110
  397.  dc.w    %0000111111110000,%1111001001001111
  398.  dc.w    %0011111111111100,%1100001001000011
  399.  dc.w    %0111111111111110,%1000001111000001
  400.  dc.w    %0111111111111110,%1000000001000001
  401.  dc.w    %0011111111111100,%1100000001000011
  402.  dc.w    %0000111111110000,%1111000001001111
  403.  dc.w    %0000001111000000,%0111110000111110
  404.  dc.w    0,0    ; Ende des Sprite
  405.  
  406. MEINSPRITE5:        ; Länge: 13 Zeilen
  407. VSTART5:
  408.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  409. HSTART5:
  410.     dc.b $60+(14*5) ; Horizontale Pos. (von $40 bis $d8)
  411. VSTOP5:
  412.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  413.     dc.b $00
  414.  dc.w    %0000001111000000,%0111110000111110
  415.  dc.w    %0000111111110000,%1111001111001111
  416.  dc.w    %0011111111111100,%1100001000000011
  417.  dc.w    %0111111111111110,%1000001111000001
  418.  dc.w    %0111111111111110,%1000000001000001
  419.  dc.w    %0011111111111100,%1100000001000011
  420.  dc.w    %0000111111110000,%1111001111001111
  421.  dc.w    %0000001111000000,%0111110000111110
  422.  dc.w    0,0    ; Ende des Sprite
  423.  
  424.  ; für die Sprite 6 und 7
  425.  ;BINÄR 00=COLOR 0 (TRANSPARENT)
  426.  ;BINÄR 10=COLOR 1 (HELLGRÜN)
  427.  ;BINÄR 01=COLOR 2 (BRAUN)
  428.  ;BINÄR 11=COLOR 3 (DUNKELROT)
  429.  
  430. MEINSPRITE6:        ; Länge: 13 Zeilen
  431. VSTART6:
  432.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  433. HSTART6:
  434.     dc.b $60+(14*6) ; Horizontale Pos. (von $40 bis $d8)
  435. VSTOP6:
  436.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  437.     dc.b $00
  438.  dc.w    %0000001111000000,%0111110000111110
  439.  dc.w    %0000111111110000,%1111001111001111
  440.  dc.w    %0011111111111100,%1100001000000011
  441.  dc.w    %0111111111111110,%1000001111000001
  442.  dc.w    %0111111111111110,%1000001001000001
  443.  dc.w    %0011111111111100,%1100001001000011
  444.  dc.w    %0000111111110000,%1111001111001111
  445.  dc.w    %0000001111000000,%0111110000111110
  446.  dc.w    0,0    ; Ende des Sprite
  447.  
  448. MEINSPRITE7:        ; Länge: 13 Zeilen
  449. VSTART7:
  450.     dc.b $60    ; Vertikale Pos. (von $2c bis $f2)
  451. HSTART7:
  452.     dc.b $60+(14*7) ; Horizontale Pos. (von $40 bis $d8)
  453. VSTOP7:
  454.     dc.b $68    ; $60+13=$6d    ; Ende Vertikal
  455.     dc.b $00
  456.  dc.w    %0000001111000000,%0111110000111110
  457.  dc.w    %0000111111110000,%1111001111001111
  458.  dc.w    %0011111111111100,%1100000001000011
  459.  dc.w    %0111111111111110,%1000000001000001
  460.  dc.w    %0111111111111110,%1000000001000001
  461.  dc.w    %0011111111111100,%1100000001000011
  462.  dc.w    %0000111111110000,%1111000001001111
  463.  dc.w    %0000001111000000,%0111110000111110
  464.  dc.w    0,0    ; Ende des Sprite
  465.  
  466.  
  467.     SECTION LEERESPLANE,BSS_C
  468.  
  469. PIC:
  470.     incbin    "prioritaet.raw"    ; das Bild
  471.  
  472.     end
  473.  
  474. In diesem Listing  zeigen  wir,  wie  die  Prioritäten  im  Gegensatz  zum
  475. Playfiled  geändert  werden kann. Als Erstes bemerken wir, daß die Sprites
  476. immer über dem COLOR0 erscheinen.  Für  die  anderen  Farben  ist  in  der
  477. Kontrolle  das Register BPLCON2 zuständig. Es ist möglich, die Prioritäten
  478. für die geraden und die ungeraden Planes separat zu  setzen.  Das  ist  im
  479. Dual-Playfield-Mode  sehr  wichtig.  Wenn  aber  mit "normalen" Playfields
  480. gearbeitet wird, wie etwa in  diesem  Beispiel,  dann  werden  die  selben
  481. Priöritäten  für  die  geraden  und  die ungeraden Playner verteilt. Um zu
  482. sehen, wie die Prioritäten verteilt sind, lest euch die Lektion durch.
  483.  
  484. Um die Priorität mehrmals im selben Screen zu  ändern  verwenden  wir  den
  485. Copper,  der es uns erlaubt, sie zu ändern, wenn sich die Sprites zwischen
  486. einem Streifen und dem anderen befinden. Hier die Werte  für  das  BPLCON2
  487. ($dff104):
  488.  
  489. ;              543210
  490. ; ACH-  $0  = %000000 - alle Sprites darunter
  491. ; TUNG! $9  = %001001 - Sprites 0,1 darüber      2,3,4,5,6,7 darunter
  492. ;       $12 = %010010 - Sprites 0,1,2,3 darüber      4,5,6,7 darunter
  493. ;       $1b = %011011 - Sprites 0,1,2,3,4,5 darüber      6,7 darunter
  494. ;       $24 = %100100 - alle Sprites darüber
  495.  
  496. AdÜ: In der Grafik tauchen  folgende  Texte  auf,  die  ich  leider  nicht
  497. übersetzen  konnte,  weil  sie  in  RAW vorliegen und ich recht wenig Zeit
  498. hatte:
  499.  
  500. "Questa faccia appare sopra tutti gli Sprite"
  501.            bedeutet soviel wie:
  502. "Dieser Teil erscheint über allen Sprites"
  503.  
  504.  
  505. "Questa appare sotto gli Sprite xx e yy e sopra gli Sprites zz"
  506.            bedeutet soviel wir:
  507. "Dieser erscheint unter den Sprites xx und yy und über den Sprites zz"
  508.  
  509.  
  510. "Questa appare sotto tutti gli Sprites"
  511.            bedeutet soviel wie:
  512. "Diese erscheint unter allen Sprites"
  513.  
  514. Tut mit leid...
  515.