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

  1.  
  2. ; Listing7y4.s    - Landschaft, hergestellt mit nur 2 Sprites!
  3.  
  4. ;    Dieses Beispiel zeigt, wie es möglich ist, eine ganze Landschaft
  5. ;    auf den Bildschirm zu malen, indem man nur zwei Sprites verwendet.
  6. ;    Wir pointen direkt auf die Spriteregister
  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 das "leere" PIC
  21.  
  22.     MOVE.L    #BITPLANE,d0    ; wohin pointen
  23.     LEA    BPLPOINTERS,A1    ; COP-Pointer
  24.     move.w    d0,6(a1)
  25.     swap    d0
  26.     move.w    d0,2(a1)
  27.  
  28. ;    Wir pointen NICHT auf den Sprite !!!!!!!!!!!!!!!!!!!!
  29.  
  30.     move.l    #COPPERLIST,$dff080    ; unsere 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 gedrückt?
  37.     bne.s    mouse
  38.  
  39.     move.l    OldCop(PC),$dff080    ; Pointen auf die SystemCOP
  40.     move.w    d0,$dff088        ; starten die alte SystemCOP
  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. ;    Daten
  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 an: 1 Bitplane Lowres
  80.  
  81. BPLPOINTERS:
  82.     dc.w $e0,0,$e2,0    ;erstes Bitplane
  83.  
  84.     dc.w    $180,$000    ; COLOR0    ; schwarzer Hintergrund
  85.     dc.w    $182,$123    ; COLOR1    ; COLOR1 des Bitplane, das
  86.                         ; in diesem Fall leer ist, und
  87.                         ; deswegen nicht erscheint.
  88.  
  89.  
  90.     dc.w    $01ba,$0fff        ; COLOR29
  91.     dc.w    $01bc,$0aaa        ; COLOR30
  92.     dc.w    $01be,$0753        ; COLOR31
  93.  
  94. ; Aus Bequemlichkeit verwenden wir Symbole. Ich erinnere euch, daß man ein
  95. ; Symbol (oder EQUATE) auf zwei Arten definieren kann: wie in diesem Fall,
  96. ; wo wir einfach ein = setzen, gefolgt vom Wert, den das Symbol haben soll,
  97. ; oder mit dem Schlüsselword EQU anstelle des =.
  98.  
  99. spr6pos        = $170
  100. spr6data    = $174
  101. spr6datb    = $176
  102. spr7pos        = $178
  103. spr7data    = $17c
  104. spr7datb    = $17e
  105.  
  106. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Zeile $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. ; Copperanweisungen zum deaktivieren der Sprite
  303.  
  304.     dc.w    $5107,$fffe        ; Warte den Anfang der Zeile ab
  305.     dc.w    $172,0            ; spr6ctl
  306.     dc.w    $17a,0            ; spr7ctl
  307.  
  308.     dc.w    $FFFF,$FFFE    ; Ende der Copperlist
  309.  
  310.  
  311.  
  312.     SECTION LEERESPLANE,BSS_C    ; Wir brauchen ein leeres Bitplane,
  313.                     ; denn ohne Bitplanes können wir
  314.                     ; keine Sprites anzeigen.
  315.  
  316. BITPLANE:
  317.     ds.b    40*256        ; leeres Bitplane Lowres
  318.  
  319.     end
  320.  
  321. Wie  ihr  seht,  ist  es möglich, auch mehr als nur einmal pro Zeile einen
  322. Sprite anzuzeigen, angenommen, man kann Assemblerprogrammieren.
  323. In diesem Fall verwenden wir zwei Sprites (6+7) und zeigen  jeden  10  mal
  324. an,  was  insgesamt  16*20=320  ergibt, genau die Breite des Bildschirmes.
  325. Praktisch füllen wir den ganzen Bildschirm. Die Idee ist die  gleiche  wie
  326. im  vorigen Beispiel, wir verändern die Werte der Register mit dem Copper.
  327. Aber hier verändern wir nicht nur in jeder  Zeile  die  Position,  sondern
  328. auch  noch  die  Form des Sprites, um eben die Landschaft zu erzeugen. Der
  329. Einfachheit wegen ist unser Gebirge nur 14 Pixel  hoch,  aber  man  könnte
  330. auch den ganzen Bildschirm ausfüllen!
  331. Jede Zeile in der Copperlist ist so aufgebaut:
  332.  
  333. ; Zeile $50
  334.     dc.w    $5025,$fffe
  335.     dc.w    spr6data,$0,spr6datb,$0,spr7data,$f000,spr7datb,$0
  336.     dc.w    spr6pos,$40,spr7pos,$48,$504b,$fffe
  337.     dc.w    spr6pos,$50,spr7pos,$58,$505b,$fffe
  338.     dc.w    spr6pos,$60,spr7pos,$68,$506b,$fffe
  339.     dc.w    spr6pos,$70,spr7pos,$78,$507b,$fffe
  340.     dc.w    spr6pos,$80,spr7pos,$88,$508b,$fffe
  341.     dc.w    spr6pos,$90,spr7pos,$98,$509b,$fffe
  342.     dc.w    spr6pos,$a0,spr7pos,$a8,$50ab,$fffe
  343.     dc.w    spr6pos,$b0,spr7pos,$b8,$50bb,$fffe
  344.     dc.w    spr6pos,$c0,spr7pos,$c8,$50cb,$fffe
  345.     dc.w    spr6pos,$d0,spr7pos,$d8,$50db,$fffe
  346.  
  347. Hier haben wir das Stück Copperlist für Zeile  $50  herausgenommen.  Sehen
  348. wir uns die Bedeutung aller Anweisungen an:
  349.  
  350.     dc.w    $5025,$fffe    ;Wait
  351.  
  352. Die erste Anweisung dient dazu, abzuwarten, bis der  Elektronenstrahl  die
  353. horizontale Position $25 in der aktuellen Zeile erreicht.
  354.  
  355.     dc.w    spr6data,$0,spr6datb,$0,spr7data,$f000,spr7datb,$0
  356.  
  357. Diese Befehle dienen zum setzen der  Werte  der  DATA-Register  für  diese
  358. Zeile, sie geben seine Form an, sein Aussehen.
  359.  
  360.     dc.w    spr6pos,$40,spr7pos,$48,$504b,$fffe
  361.  
  362. Damit wird die Position des Sprite festgelegt. Sie arbeiten wie im vorigen
  363. Beispiel.  Zuerst  werden  die  Spritepositionen  erneuert,  und dann wird
  364. abgewartet, bis die zwei Sprites angezeigt werden.  Nun  wiederholen  sich
  365. zehn  Gruppen  von  solchen  Copper-Anweisungen,  die  wiederum  die
  366. Spritepositionen verändern und  mit  einem  Wait  abwarten,  so,  daß  die
  367. Sprites  jeweils  16  Pixel  verschoben  sind,  um  sie  nebeneinander  zu
  368. plazieren. Z.B.:
  369.  
  370.     dc.w    spr6pos,$50,spr7pos,$58,$505b,$fffe
  371.     dc.w    spr6pos,$60,spr7pos,$68,$506b,$fffe
  372.  
  373. Zerteilen wir eine Zeile in die 3 Anweisungen, die sie enthält:
  374.  
  375.     dc.w    spr6pos,$50    ; bestimmt die Position des Sprite6
  376.     dc.w    spr7pos,$58    ; bestimmt die Position des Sprite7
  377.     dc.w    $505b,$fffe    ; WAIT - Wartet 16 Pixel ab, weiter rechts.
  378.  
  379. und so weiter.
  380.  
  381. Nach zehn solcher Gruppen haben  wir  eine  ganze  Zeile  gezeichnet.  Nun
  382. bleibt  uns  nichts  anderes  übrig,  als das, was wir für Zeile $50 getan
  383. haben, auch für die anderen 13 Zeilen der Landschaft zu machen.  Natürlich
  384. haben  wir  für  jede Zeile andere Werte in den Registern SPRxDATx, um die
  385. Berge zu gestalten.
  386.  
  387. Natürlich werden für solche extrem  langen  Copperlisten  eigene  Routinen
  388. geschrieben,  etwa "GeneriereCopperlist", die wegen ihrer Komplexität aber
  389. noch nicht im Kurs eingeführt worden sind. Das wichtige ist im Moment,  zu
  390. verstehen,  wie  die  Sache  mit der Wiederverwendung abläuft, und wie man
  391. direkt auf die Spriteregister mit der Copperlist zugreift.
  392.  
  393.  
  394.