GoDots 4Bit-Grafikformat

graphics v1.14 16.08.93


Ein Bit einer Bitmap kann faktisch nur zwei Farben widerspiegeln (Vordergrund oder Hintergrund, realisiert im Hires-Modus des C64). Mit Hardwaretricks und unter Verzicht auf die volle Auflösung stellt der C64 auch vier mögliche Farben pro Bildpunkt (Pixel) dar, indem dabei je zwei Bits zu einem Bildpunkt zusammengefasst werden (realisiert im Multicolor-Modus).

Kacheln:
Der Farbspeicher des C64 ist so organisiert, dass je 64 Bits in Form eines Quadrats (eine Kachel) eine Farbeinheit mit höchstens 2 bzw. 4 Farben bilden. Die nächste Kachel darf andere Farben enthalten. Farben werden vom C64 also eher behandelt wie bei den Zeichen des Textbildschirms, seine Farbfähigkeiten im Textmodus sind in der Grafikdarstellung einfach wiederverwendet worden.

True Hires:
In GoDot gibt es keine organisatorischen Einschränkungen bei der Verwendung von Farben. Jeder Punkt nimmt eine der 16 Farben des C64 ein (wir nennen diese Grafikfähigkeit GoDots True Hires). GoDots Grafikdaten werden also nicht in einer C64-üblichen Bitmap mit separatem Farbspeicher verwaltet. Stattdessen liegt für jeden einzelnen der 64000 Bildpunkte seines 320×200-Bildes die volle Farbinformation vor (noch einmal: 16 mögliche Farben pro Bildpunkt). Jeder einzelne Punkt muss also eine Informationstiefe von vier Bit aufweisen (in vier Bit lassen sich 16 verschiedene Zustände kodieren).

Das führt zunächst einmal zu erhöhtem Speicherbedarf, erforderlich sind nämlich 32000 Bytes für GoDots Bitmap (gegenüber 9000 Bytes farbigem Hires). Im Speicher des C64 befinden sich daher die Bilddaten im Bereich von $4000 bis $BCFF und zwar in der gleichen Kachelanordnung wie in einer normalen C64-Bitmap. Das bedeutet, dass je 8 Bildpunkte nebeneinander erscheinen und die nächsten 8 eine Zeile tiefer, für eine Kachel insgesamt 8×8 Bildpunkte. Darauf folgt die nächste Kachel usw. Jede Kachel nimmt in GoDot 32 Bytes Platz ein. 32×40×25 ergibt 32000 Bytes Platzbedarf.

Rendern
Rendern eines Bildes, GoDot baut gerade eine Kachel auf, Hintergrundfarbe ist mittelgrau

Rendern:
Der C64 kann wegen seiner Farbbeschränkungen bei der Grafikanzeige die bis zu 16 Farben pro Kachel in GoDot gar nicht anzeigen. Sollten in einer Kachel zu viele Farben vorkommen, wählt der Videochip bei normaler Grafikdarstellung lediglich die zuletzt erkannten zwei (im Hires-Modus) bzw. vier (im Multicolor-Modus) davon zur Darstellung aus. Das führt zu deutlich sichtbaren Darstellungsfehlern, meist in Form von spitzen Ecken ("Color Clashes").

GoDot mit seinem erhöhten Anspruch an das Datenmaterial analysiert daher jede einzelne Farbkachel vor der Anzeige, um durch optimale Auswahl der häufigsten Farben in einer Kachel solche Bildfehler zu vermeiden. Dieser Vorgang der Optimierung von Bildpunkten und der erst nachfolgenden Bilddarstellung heißt Rendern (s. dazu Display).

Graustufen:
GoDot war von vornherein geplant als universelles Werkzeug, mit dem alle Darstellungsmodi des C64 gerendert werden können: Hires, Multicolor, FLI (Flexible Line Interpretation), auch IFLI (Interlaced FLI). Außerdem waren eigene Druckertreiber vorgesehen, die den Inhalt des 4Bit-Speichers optimal zu Papier bringen sollten. GoDot hat daher eine gegenüber anderen C64-Grafikprogrammen anders angeordnete Farbpalette. Sie ist aufgebaut nach der Helligkeit der 64er-Farben. Vorteil: Jede Farbe kann für den Druck so aufgerastert werden, dass ein Farbverlauf auch im Schwarzweiß-Druck erkennbar ein Verlauf bleibt. Die GoDot-Palette ist eine Graustufenpalette.

Der große Vorteil von GoDots 4Bit-Format ist aber die Informationstiefe von 16 möglichen Zuständen pro Bildpunkt. Jedes Pixel GoDots wird dadurch gezielt manipulierbar. Die Fülle der Bildbearbeitungsmodule GoDots ist erst aus diesem Grund überhaupt denkbar.


Diskettenformat und Kennung:
Auf Diskette besitzt GoDot ein eigenes, gepacktes Format mit einer einleitenden Kennung. Lader können anhand der Kennung unterschiedliche Funktionen ausführen. Jedes GoDotbild beginnt mit den Zeichen "GOD0" ($47, $4F, $44, $30), eine Startadresse gibt es nicht. Darauf folgt fortlaufend der Inhalt des 4Bit-Speichers. Serien von gleichen Bytes (mehr als drei) werden gepackt, indem sie durch einen Zähler ersetzt werden. Damit das einlesende Programm erkennt, wann ein Zähler kommt und welches Byte gezählt wird, ersetzt der Saver 4BitGoDot diese Serie gleicher Bytes durch ein Flagbyte ($AD), einen Zähler und das zu wiederholende Byte, wobei eine Angabe von Null beim Zähler 256 gezählten Bytes entspricht. Eine Folge von 100 Mal Wert 88 würde demnach durch den Code $AD $64 $58 repräsentiert. Das allerletzte Byte in jedem Bildfile ist $AD. Es wird jedoch nicht verwertet und ist mehr eine "Unterschrift" von GoDot.

Eine Signatur von "GOD1" leitet einen GoDot-Clip ein. Auf die Signatur folgen dort vier Bytes, die die Zeile und Spalte der Herkunft des Clips und seine Breite und Höhe angeben (in Anzahl von Kacheln, maximal also 255 Kacheln für Breite und Höhe, das sind je 2040 Pixel). Der Rest baut sich auf wie GoDots Standardformat.


zurück --- zum Hauptmenü

Arndt Dettke
support@godot64.de