Startseite
Amiforce 2.1     Amiforce-News Amiforce-News Amiforce-Forum Amiforce-Forum Amiforce-Chat/IRC-Chat Amiforce-Chat/IRC-Chat Gästebuch Gästebuch Kontakt mit dem Webmaster aufnehmen Kontakt mit dem Webmaster aufnehmen

Amiblitz3
Amiblitz2(alt)
Storm Wizard
Abakus-Design
Helpguide
Toolsguide
Tipps&Tricks
Gamesfun
Links
Download
Musik

Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
  Navigation:   Index /  Amiblitz /  Amiblitz Lesematerial /  Ab2 Referenzhandbuch (index) /  Ab2 Referenzhandbuch (Kapitel 29) / 

Referenzhandbuch



Referenzhandbuch

Kapitel 29


Kapitel 28 Inhaltsverzeichnis Kapitel 30

Slices


Slices sind AmiBlitz2-Objekte, die das Herz des machtvollen Blitzmodus-Grafiksystems bilden. Durch die Benutzung von Slices sind verblüffende und wundervolle Grafikeffekte durchführbar, Effekte, die im normalen Amigamodus nicht möglich sind. Dies beinhaltet viele Dinge wie Dual Playfield-Displays, weiches Scrolling, Double Buffering und mehr!

Der größte Vorteil des Blitzmodus ist die flexible Kontrolle des Amiga Display. Diese Kontrolle wird durch die Anwendung von Slices ermöglicht.

Ein Slice kann als selbständige, rechteckige Fläche eines Displays bezeichnet werden, die alle Informationen über Displaymodus, Farbpalette, Sprites und Bitplanes beinhaltet. Daher ist es möglich, mehrere Slices gleichzeitig auf unterschiedlichen Abschnitten des Displays mit unterschiedlicher Auflösung, verschiedenen Farben usw. darzustellen.

Bei der Anwendung von Slices müssen folgende Dinge beachtet werden:

  • Slices dürfen sich in keiner Weise überlappen.


  • Slices dürfen nicht horizontal, also nebeneinander, angeordnet werden.

  • Damit ist gemeint, daß Slices nur vertical positioniert werden dürfen, von oben nach unten und einer nach dem anderen.

  • Wenn Sie einen Slicebereich festlegen, haben Sie nur über die vertikale Position, über die Breite und die Höhe Kontrolle. Die horizontale Position wird automatisch berechnet und zwar so, daß das Slice breitenabhängig horizontal zentriert dargestellt wird.


  • Normalerweise wird zwischen Slices ein Zwischenraum von 2 horizontalen Linien gebildet, und zwar eine unter dem unteren Rand des oberen Slice und eine über dem oberen Rand des unteren Slices. Es gibt einige Situationen, bei denen dies nicht von Vorteil ist.


Hier ein einfaches Beispiel für das Setzen eines Slices im Blitzmodus:

  BLITZ         ;gehe in den Blitzmodus
  Slice 0,44,3  ;setze Slice 0
  MouseWait


Dieses Beispiel setzt ein LowRes 8-Farben Slice - 320 Pixel breit und 200 oder 256 Pixel hoch, je nachdem ob Sie einen NTSC- oder PAL-Amiga verwenden.

Wenn Sie das obige Beispiel eingetippt und compiliert haben, werden Sie feststellen, daß sich einige zufällige Grafiken im Display befinden. Der Grund hierfür ist, daß Slices nur kontrollieren, wie das Display angezeigt wird, nicht aber was aktuell angezeigt wird. Um Grafik in einem Slice zu nutzen, benötigen Sie eine Bitmap und eine Form des Show-Befehls.

  ;Programmbeispiel für das Anzeigen einer Bitmap im Slice
  BLITZ                      ;Gehe in den Blitzmodus
  BitMap 0,320,DispHeight,3  ;setze eine 8 Farben Bitmap
  Cls 2                      ;fülle die Bitmap mit Farbe 2
  Slice 0,44,3               ;setze ein Slice
  Show 0                     ;zeige Bitmap 0 im Slice
  MouseWait


Wenn eine Bitmap so initialisiert und mit Show angezeigt wird, können nun alle verfügbaren Grafikkommandos auf der Bitmap benutzt werden. Nachfolgend ein Beispiel, das mit dem Circlef-Befehl arbeitet:

  ;ein kleines Slice-Programmbeispiel
  BLITZ                      ;Blitzmodus an
  BitMap 0,320,DispHeight,3  ;setze 8-Farben-Bitmap
  Slice 0,44,3               ;setze 1 Slice
  Show 0                     ;zeige Bitmap 0
  For k=1 To 100             ;zeichne 100 Kreise
    Circlef Rnd(320),Rnd(DispHeight),Rnd(10)+5,Rnd(7)+1
  Next
  MouseWait


Dieses Beispiel ist sehr einfacher Natur, aber es zeigt, mit wie wenig Schritten eine effektvolle Arbeit mit Slices möglich ist.

In den vorangegangenen Beispielen haben wir die Kurzform des Standard-Slice-Befehls benutzt. Diese Kurzform erlaubt aber nur die Nutzung eines aktiven Slices auf dem Display. Möchten Sie mehrere Slices gleichzeitig auf dem Display verwenden, muß das komplexere Slice-Kommando benutzt werden.

Hier ein kurzes Beispiel für Mehrfachslices:

  ;Multi Slice-Programmbeispiel
  ;
  BLITZ                                     ;Blitzmodus! Yeah!
  BitMap 0,320,100,3                        ;gib mir eine Bitplane
  Cls 2                                     ;füll sie mit Farbe 2
  BitMapOutput 0                            ;und gebe darauf...
  Print "Hallo - Slice-Magie!"              ;unseren Text aus
  Slice 0,44,160,100,$fff8,3,8,32,320,320   ;Slice 0 einrichten...
  RGB 1,15,15,15                            ;und 2 Farben für Slice 0 ändern
  RGB 2,8,0,15
  Show 0                                    ;zeige Bitmap 0
  Slice 1,146,320,100,$fff9,3,8,32,320,320  ;2. Slice einrichten
  RGB 1,15,15,0                             ;2 Farben für Slice 1 ändern
  RGB 2,0,8,15
  Show 0                                    ;zeige auch Bitmap 0
  MouseWait


Beachten Sie, daß der Text "Hallo - Slice-Magie!" an 2 verschiedenen Plätzen auf dem Display erscheint, obwohl er nur einmal ausgegeben wurde! Dies liegt daran, daß wir für beide Slices dieselbe Bitmap zeigen (Show 0). Auf dieser Bitmap wurde unser Text geschrieben.

Beachten Sie ferner, daß das obere Slice LowRes- und der untere HiRes-Auflösung besitzt.

Und schließlich beachten Sie, daß sich zwischen den beiden Slices ein vertikaler Zwischenraum von 2 Linien befindet.

Hier noch ein letzter, wichtiger Hinweis zu Slices - Slice-Objekte können nicht einzeln aus dem Speicher entfernt werden. Es ist nur möglich, alle vorhandenen Slices zusammen aus dem Speicher zu löschen (FreeSlices-Befehl).

  • Slice
  • Use Slice
  • FreeSlices
  • Show
  • ShowF
  • ShowB
  • ColSplit
  • CustomCop
  • ShowBlitz
  • CopLoc
  • CopLen
  • Display






  • Index

    Befehl: Slice

    Syntax Kurzform: Slice Slicenummer,Y,Flags

    Syntax Standard: Slice Slicenummer,Y,Breite,Höhe,Flags,Bitplanes,Sprites,Farben,Breite1,Breite2


    Der Y-Parameter gilt für beide Formen und legt die Y-Positionen fest, an der der Slice beginnt. Ein Wert von 44 läßt das Slice oben im Bildschirm beginnen (also nicht ein Wert von 0).

    Für die Kurzform gilt folgendes:

    Der Flags-Parameter bestimmt die Farbtiefe des Slice. Möchten Sie einen LowRes-Slice mit Farbtiefe 2 (4 Farben) öffnen, ist Flag = 2. Normalerweise wird ein LowRes-Slice geöffnet. Möchten Sie einen HiRes-Slice öffnen, addieren Sie 8 dazu. Flag = 12 entspricht HiRes mit 16 Farben.

    Die Breite eines Slices, das mit der Kurzform geöffnet wurde, beträgt bei LowRes 320 Pixel und bei HiRes 640 Pixel. Bei Benutzung dieser Syntax wird die Höhe 256 Pixel (PAL) oder 200 Pixel (NTSC) betragen.

    Mehr Möglichkeiten bietet Ihnen die Standardform des Befehls.

    Erklärung der Parameter der Standardform:

    • Y-Parameter wird wie unter Kurzform angegeben.

    • Breite und Höhe erlauben die Angabe von Werten für die Größe des Slices. Diese Parameter werden in Pixel angegeben.

    • Bitplanes kennzeichnet die Farbtiefe, die das Slice haben soll.

    • Sprites gibt an, wieviele Spritekanäle in diesem Slice zur Verfügung stehen sollen. Jedes Slice kann 8 Spritekanäle nutzen. Durch Anwenden mehrerer Slices kann so die "Amiga 8 Sprite Grenze" umgangen werden. Im obersten Slice sollten immer alle 8 Kanäle freigegeben werden.

    • Farben gibt an, wieviel Farben eine Palette enthalten darf, die für das Slice genutzt werden soll und darf 32 nicht überschreiten.

    • Breite1 und Breite2 legen die Breite, in Pixel, für alle Bitmaps fest, die in diesem Slice angezeigt werden. Wurde ein Slice als Dual-Playfield-Slice gesetzt, gibt Breite1 die Breite der Vordergrundbitmap und Breite2 die Breite der Hintergrundbitmap an. Wurde der Slice NICHT als Dual-Playfield-Slice gesetzt, geben Sie für Breite1 und Breite2 dieselben Werte ein.
      Diese beiden Parameter erlauben das Anzeigen übergroßer Bitmaps und ermöglichen ein weiches Hardwarescrolling durch große Bitmaps.


    • Als letztes befassen wir uns mit den Flags, da dieser Abschnitt sehr komplex ist. Flags erlaubt die Kontrolle über das Aussehen und die Effekte des Slices.


      gesetzte Flags Effekt Max. BitPlanes
      $fff8 Standard-LoRes-Slice 6
      $fff9 Standard-HiRes-Slice 4
      $fffa LoRes, Dualplayfield 6
      $fffb HiRes, Dualplayfield 4
      $fffc HAM-Slice nur 6

      Hier einige Beispiele:

      WARNUNG - Das nächste Bit ist nur von Anwender zu benutzen, die nähere Kenntnisse hierzu besitzen.

      Flags sind ebenfalls eine Auswahl von individuellen Bit-Flags. Diese Bit-Flags kontrollieren den Aufbau der Slice-"Copperliste". Es folgt eine Liste der Bitnummern und deren Effekte:


      Bit# Effekt
      15 Kreiert Copper MOVE BPLCON0
      14 Kreiert Copper MOVE BPLCON1
      13 Kreiert Copper MOVE BPLCON2
      12 Kreiert Copper MOVE DIWSTRT und MOVE DIWSTOP
      10 Kreiert Copper MOVE DDFSTRT und MOVE DDFSTOP
      8 Kreiert Copper MOVE BPL1MOD
      7 Kreiert Copper MOVE BPL2MOD
      4 Kreiert 2 Linien über den Slice
      3 Erlaubt weiches horizontales Scrolling
      2 HAM-Slice
      1 Dualplayfield-Slice
      0 HiRes-Slice - Default ist LoRes

      Der Bitplanes-Parameter kann auch genutzt werden, um "nur gerade" oder "nur ungerade" Bitplanes zuzulassen. Dies erlaubt es, im Dualplayfieldmodus verschiedene Vorder- oder Hintergrund-Bitmaps anzuzeigen, ohne die andere zu zerstören.

      Für Nur-Vordergrund-Bitplanes wird Bit 15, für Nur-Hintergrund-Bitplanes Bit 14 des Bitplanes-Parameters gesetzt.

      Beispiel:

        ;
        ; Slice mit Kreis - Programmbeispiel
        ;
        BLITZ                                   ;Auf Wiedersehen OS!
        BitMap 0,320,200,3                      ;mach eine Bitmap
        Circlef 160,100,50,2                    ;gib mir die Kugel
        Slice 0,44,320,200,$fff8,3,8,32,320,320 ;setze einen Slice
        Show 0                                  ;zeige die Bitmap
        MouseWait
      


      siehe auch: Use Slice, Show, FreeSlices


      Befehl: Use Slice

      Syntax: Use Slice Slicenummer

      Modus: Amiga/Blitz


      Erklärt den Slice Slicenummer als aktuell zu benutzenden Slice. Dies benötigen Befehle wie Show, ShowF, ShowB und BlitzModus-RGB.

      Beispiel:

        BLITZ                                   ;Blitzmodus
        BitMap 0,320,200,3                      ;BitMap setzen
        Circlef 160,100,80,2                    ;und einen Kreis malen
        Slice 0,44,320,100,$fff8,3,8,8,320,320  ;ein Slice
        Slice 1,44,320,146,$fff8,3,8,8,320,320  ;ein anderes
        Use Slice 0                                 ;benutzte das erste
        Show 0
        RGB 2,15,15,0                           ;RGB/Show betrifft Slice 0
        Use Slice 1                                ;benutze Slice 1
        Show 0
        RGB 2,0,8,15                            ;Rgb und Show betreffen nun dieses
        MouseWait
      


      siehe auch: Slice, FreeSlices



      Index

      Befehl: FreeSlices

      Syntax: FreeSlices

      Modus: Amiga/Blitz


      FreeSlices löscht alle benutzten Slices aus dem Speicher. Einzelne Slices können nicht gelöscht werden.

      siehe auch: Slice



      Index

      Befehl: Show

      Syntax: Show Bitmapnummer[,X,Y]

      Modus: Amiga/Blitz


      Zeigt die Bitmap Bitmapnummer im aktuell benutzten Slice auf dem Monitor an. Mit den Parametern X und Y kann ein bestimmter Teil einer übergroßen Bitmap angezeigt werden; ebenso kann hiermit ein Scrolleffekt erzeugt werden.

      Für Dualplayfieldslices ist Show nicht geeignet, siehe hierfür ShowF und ShowB.

      Beispiel:

        BLITZ                                   ;gehe in den Blitzmodus
        BitMap 0,640,200,2                      ;Bitmap 0 erzeugen
        Circlef 320,100,80,1                    ;und auf ihr zwei Kreise zeichnen
        Circlef 320,100,40,2
        Slice 0,44,320,200,$fff8,2,8,4,640,640  ;Slice 0 bestimmen
      
        For k=0 To 319                          ;Schleifenstart
          VWait                                 ;auf den Anfang des Frames warten
          Show 0,k,0                            ;Bitmap 0 anzeigen
        Next                                    ;Schleifenende
        MouseWait
      


      siehe auch: ShowF, ShowB



      Index

      Befehl: ShowF

      Syntax: ShowF Bitmapnummer[,X,Y[,ShowB X]]

      Modus: Amiga/Blitz


      Zeigt bei Dual-Playfieldslices (muß mit den Flags des Slice-Befehls eingestellt sein) die gewählte Bitmap als Vordergrundgrafik des aktuellen Slices.

      Die X- und Y-Parameter werden benutzt, um die Bitmap an einem anderen Punkt als der oberen, linken Ecke zu zeigen. Keine Angaben entsprechen dem Wert 0.

      Der optionale Showb X-Parameter wird nur benötigt, wenn Sie im Dualplayfieldslice nur eine Vordergrundbitmap verwenden wollen. In diesem Fall wird der X-Offset der Hintergrundgrafik im Showb X-Parameter eingetragen.

      Beispiel:

        BLITZ                                    ;Blitzmodus!
        BitMap 0,640,200,2                       ;Bitmap erstellen
        Circlef 320,100,80,1                     ;und zwei Kreise zeichnen
        Circlef 320,100,40,2
        Slice 0,44,320,200,$fffa,4,8,32,640,640  ;Dual-Playfield-Slice!
        ShowB 0,160,0                            ;Zeige Hintergrund-Bitmap
        For k=0 To 319                           ;Schleifenstart
          VWait                                  ;auf Vertical Blank warten
          ShowF 0,k,0                            ;Vordergrund-Bitmap
        Next                                    ;Schleifenende
      
        MouseWait
      




      Index

      Befehl: ShowB

      Syntax: ShowB Bitmapnummer[,X,Y[,ShowF X]]

      Modus: Amiga/Blitz


      Zeigt bei Dualplayfieldslices (muß mit den Flags des Slice-Befehls eingestellt sein) die gewählte Bitmap als Hintergrundgrafik des aktuellen Slices.

      Die X- und Y-Parameter werden benutzt, um die Bitmap an einem anderen Punkt als der oberen, linken Ecke zu zeigen. Keine Angaben entsprechen dem Wert 0.

      Der optionale ShowF X-Parameter wird nur benötigt, wenn Sie im Dualplayfieldslice nur eine Hintergrundbitmap verwenden wollen. In diesem Fall wird der X-Offset der Vordergrundgrafik im ShowF X-Parameter eingetragen.

      Beispiel:

        BLITZ                                    ;Blitzmodus
        BitMap 0,640,200,2                       ;Bitmap erstellen
        Circlef 320,100,80,1                     ;und zwei Kreise zeichnen
        Circlef 320,100,40,2
        Slice 0,44,320,200,$fffa,4,8,32,640,640  ;Dual-Playfield-Slice!
        ShowF 0,160,0                            ;Zeige Vordergrund-Bitmap
      
        For k=0 To 319                           ;Schleifenstart
                VWait                            ;auf Vertical Blank warten
                ShowB 0,k,0                      ;Hintergrund-Bitmap
        Next                                     ;Schleifenende
      
        MouseWait
      




      Index

      Befehl: ColSplit

      Syntax: ColSplit Farbregister,Rot,Grün,Blau,Y

      Modus: Amiga/Blitz


      Erlaubt das Aufsplittern der Farbe eines beliebigen Farbregisters relativ vom oberen Rand des aktuellen Slices. Y legt die vertikale Position des Anfangs der Farbänderung im aktuellen Slice von oben gerechnet fest.

      Rot, Grün, Blau = Werte von 0-15.

      Beispiel:

        BLITZ                                     ;ab in den Blitzmodus!
        BitMap 0,320,200,1                        ;eine leere BitMap
        Slice 0,44,320,200,$fff8,1,8,32,320,320   ;Slice erzeugen
        Show 0                                    ;BitMap anzeigen
        For k=0 To 15                             ;Schleifenstart
          ColSplit 0,k,k,k,k*17                   ;setze Hintergrungregister an
                                                  ;eine kluge Y-Position
        Next                                    ;Schleifenende
        MouseWait
      




      Index

      Befehl: CustomCop

      Syntax: CustomCop Copin$,Y

      Modus: Amiga/Blitz


      CustomCop erlaubt fortgeschrittenen Programmierern das Erstellen und Benutzen eigener Copperinstruktionen ab einer angegebenen Y-Position.

      Copin$ kennzeichnet eine Zeichenkette mit entsprechenden Serien von Copperinstruktionen. Y legt die Startposition im Display fest.

      Beispiel:

        BLITZ                                    ;Blitzmodus
        #BPLMOD1=$108                            ;ein paar kluge Sachen
        #BPLMOD2=$10A                            ;dto.
        BitMap 0,320,400,3
      
        For k=7 To 1 Step -1
          Circlef 160,250,k*10,k                 ;male die SONNE!
        Next
      
        Slice 0,44,320,200,$fff8,3,8,32,320,320  ;bestimme das Slice
        RGB 0,0,8,15
      
        For k=1 To 7
          RGB k,15,k*2,0
        Next
      
        ColSplit 0,0,0,8,150                     ;schwere Farbenaufteilung
        co$=Mki$(#BPLMOD1)+Mki$(-122)
        co$+Mki$(#BPLMOD2)+Mki$(-122)
        CustomCop co$,150+44                     ;Custom Copper-Anweisungen
      
        For k=0 To 199
          VWait
          Show 0,0,k                             ;und die Sonne geht auf!
        Next
      
        MouseWait
      


      siehe auch: ColSplit



      Index

      Befehl: ShowBlitz

      Syntax: ShowBlitz

      Modus: Blitz


      Wenn Sie einen kurzen Ausflug in den Amigamodus gemacht haben, können Sie den vorher angezeigten Blitzslice unbeschädigt weiterbenutzen.



      Index

      Befehl: CopLoc

      Syntax: CopLoc

      Modus: Amiga/Blitz


      CopLoc übergibt die Speicheradresse der Blitzmodus-Copperliste. Alle Slice-, ColSplit- und CustomCop-Anwendungen werden in einer einzelnen Copperliste zusammengefaßt, deren Adresse Sie mit der CopLoc-Funktion finden können.

      Beispiel:

        Slice 0,44,3
      
        For k=0 To CopLen-1 Step 4
          NPrint Hex$(k),":",Hex$(Peek.l(CopLoc+k))
        Next
      
        MouseWait
      


      siehe auch: CopLen



      Index

      Befehl: CopLen

      Syntax: CopLen

      Modus: Amiga/Blitz


      CopLen übergibt die Länge der Blitzmodus-Copperliste in Bytes. Alle Slice-, ColSplit- und CustomCop-Anwendungen werden in einer einzelnen Copperliste zusammengefaßt, deren Länge Sie mit der CopLen-Funktion feststellen können.

      siehe auch: CopLoc



      Index

      Befehl: Display

      Syntax: Display On/Off

      Modus: Blitz


      Display ist nur im Blitzmodus verwendbar. Display Off (aus) zeigt den aktuellen Slice als Farbblock der Farbe 0 (Leerer Slice).






    Impressum
    Copyright © 2001-2007 by Cj-Stroker. Alle Rechte vorbehalten (Legal Info)
    AMIGA und zugehörige Logos sind eingetragene Warenzeichen von Amiga, Inc.