4Bit-Format

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Das 4Bit-Format ist das Datenträgerformat der Bilder des C64-Bildbearbeitungsprogramms GoDot.

Im Prinzip ist ein GoDot-4Bit-Bild eine Grafik in Hires-Auflösung (320x200), allerdings mit einer Farbauflösung von 4 Bit pro Pixel (16 mögliche unterschiedliche Farben pro Pixel, True Hires). Im Speicher des C64 ist die Anordnung dieser 4Bit-Pixel - analog zu einer normalen C64-Grafik - aufgeteilt in 1.000 Kacheln à 64 Pixel, zusammen 64.000 Pixel. Eine Kachel benötigt 32 Bytes Platz. Jede ihrer acht Kachelzeilen enthält acht 4Bit-Pixel (acht mal vier Bytes).

Der Grafikpuffer GoDots beginnt an der Speicheradresse $4000 und reicht bis $BCFF. Die erste Kachel erstreckt sich von $4000 bis $401F. Die Kachel daneben beginnt bei $4020, die Kachel darunter bei $4500. Insgesamt ergibt sich ein Platzbedarf von 32.000 Bytes, was einer Dateilänge von 126 Diskblöcken entspricht.

Um Platz zu sparen, verwendet GoDot beim Abspeichern einen (einfachen) Packalgorithmus, der jedes Vorkommen von Wiederholungen ab vier gleichen Bytes in eine Packsequenz verwandelt (Lauflängenkodierung). In dieser Sequenz gibt es ein Indikatorzeichen (das ist bei GoDot der Wert $AD), auf den der Wiederholungszähler folgt (ein Wert von 0 entspricht 256 Wiederholungen), der wiederum gefolgt wird vom Wert des zu wiederholenden Bytes. Ein Folge von 100 Bytes mit dem Wert $58 würde gepackt so lauten: $AD $64 $58. GoDot trägt am Anfang und Ende der Datei jeweils eine Kennung ein. Statt der beim C64 üblichen Startadresse am Anfang einer Datei findet sich bei einem GoDot-Bild die Byte-Folge $47 $4F $44 $30 ("GOD0"). Am Ende der Datei steht ein einzelnes $AD. Dateinamen erhalten das Kürzel ".4bt".

Man kann auch Bildausschnitte abspeichern. Diese heißen in GoDot "Clips" (Dateikürzel "*.clp", Kennung "GOD1").


Kurzinfo:

Startadresse des Bildes: $4000 (nicht im File abgelegt)
Dateisignatur: "GOD0" ($47 $4f $44 $30) ab erstem Byte auf Disk
Daten: 32.000 Bytes, gepackt
Struktur: Anordnung in Kacheln zu 8×8 Pixeln
Endsignatur: $AD
Packalgorithmus: $AD Zähler Byte-Wert
(Zähler=0 entspricht 256)