3.4 Paletten-Modus

Wenn Sie den Paletten-Modus mit Plananarama verwenden, können Sie eine bessere Leistung erzielen als im Remapping-Modus, aber das hat den Preis, dass Sie Ihr Skript speziell für den Paletten-Modus von Plananarama entwerfen müssen. Beispielsweise müssen Sie sicherstellen, dass Ihr Hollywood-Display ein Paletten-Display ist. Sonst bekommt man natürlich keine Leistungsverbesserung, denn wenn das Hollywood-Display keine Palette, sondern RGB-Grafiken verwendet, müssen trotzdem alle Grafiken neu zugeordnet werden, genau wie im Remapping-Modus.

Hier ist ein Beispielcode, der ein Paletten-Display einrichtet und Plananarama in den Paletten-Modus versetzt:

 
@REQUIRE "plananarama", {PaletteMode = True}
@DISPLAY {Palette = #PALETTE_AGA}

SetPaletteMode(#PALETTEMODE_PEN)
SetFillStyle(#FILLCOLOR)
SetDrawPen(2)
Box(#CENTER, #CENTER, 320, 240)

Der Code führt mehrere sehr wichtige Schritte aus, die notwendig sind, um den Paletten-Modus von Plananarama voll auszunutzen: Zuerst erstellt er ein Paletten-Display, indem er den Tag Palette verwendet, um dem Display die integrierte Palette #PALETTE_AGA zuzuweisen. Alternativ könnten Sie auch ein Paletten-Display erstellen, indem Sie ihr einfach ein Paletten-BGPic zuweisen, z.B. so:

 
@REQUIRE "plananarama", {PaletteMode = True}
@BGPIC 1, "background.iff", {LoadPalette = True}

Da wir LoadPalette im obigen Code auf True setzen, wird Ihr Display automatisch zu einem Paletten-Display, da ihr BGPic ein Palettenbild ist.

Die zweite sehr wichtige Sache, die der erste Codeausschnitt macht, ist das Aufrufen von SetPaletteMode() mit #PALETTEMODE_PEN, das ihm übergeben wird. Dies ist sehr wichtig, denn wenn Sie dies nicht tun, wird Hollywood immer noch alle Grafiken auf die Palette Ihres Displays neu zuordnen, was langsam ist. Nur wenn Sie den Paletten-Modus auf #PALETTEMODE_PEN setzen, können Sie Hollywood anweisen, keine Neuzuordnung vorzunehmen, sondern nur die Rohpixel zu kopieren. Dies bedeutet natürlich, dass beim Zeichnen von Bildern deren Palette mit der Display-Palette übereinstimmen muss, da Sie sonst falsche Farben erhalten.

Schließlich ruft der Codeausschnitt SetDrawPen() auf, um einen Zeichenstift festzulegen. Dieser Schritt ist sehr wichtig, wenn Sie Grafikgrundelemente wie Linien, Rechtecke, Kreise usw. zeichnen möchten. Wenn der Paletten-Modus auf #PALETTEMODE_PEN gesetzt wurde, ignorieren Hollywood-Befehle wie Box(), Line(), Circle() usw. die ihnen übergebene RGB-Farbe. Stattdessen zeichnen sie mit dem Stift, der mit SetDrawPen() eingestellt wurde. Aus diesem Grund zeichnet der obige Code ein weißes Rechteck und kein schwarzes, obwohl das Farb-Argument im Aufruf von Box() standardmäßig schwarz ist, weil es weggelassen wurde.

Da wir die volle Kontrolle über die Hardware-Farbregister haben, könnten wir das weiße Rechteck jetzt leicht in ein rotes umwandeln, indem wir einfach die Farbe von Palettenstift 2 ändern. Dies kann wie folgt geschehen:

 
SetPen(2, #RED)

Dann könnten wir das rote Rechteck sanft zu Schwarz ausblenden, indem wir etwas wie folgt tun:

 
For Local k = 32 To 0 Step -1
   SetPen(2, RGB(255 * (k/32), 0, 0))
   VWait
Next

Natürlich könnten Sie auch die Palettenfarben durchlaufen und mit Hollywoods Befehl SetPalette() eine komplett neue Palette anwenden. Im Paletten-Modus sind viele Dinge möglich.

Ein weiterer Vorteil der Verwendung des Paletten-Modus besteht darin, dass Ihr Skript guigfx.library und render.library nicht benötigt. Um das Zeichnen im Paletten-Modus zu beschleunigen, wird jedoch empfohlen, BlazeWCP zu installieren. Siehe Anforderungen für Details.


Navigation zeigen