Aufbau einer Bilddatei im G16 Format: Die Bilddatei kann sowohl ein einzlenes Bild, als auch mehrere Bilder fr z.B. Fonts oder Animationen enthalten. Eine Transparentfarbe wird untersttzt. ------------------------------------------------------------------------------ Aufbau des Bildheaders: 1. Byte: $1B ; ESC Eine Bilddatei beginnt immer mit dem Befehl 2. Byte: $55 ; 'U' zum Bilddownload an Koordinate 0,0 3. Byte: $4C ; 'L' (die Koordinaten k”nnen mit einem Hexeditor gepatched werden) 4. Byte: $00 ; X-Koordinate LOW-Byte 5. Byte: $00 ; " HIGH-Byte 6. Byte: $00 ; Y-Koordinate LOW-Byte 7. Byte: $00 ; " HIGH-Byte 8. Byte: 'G' Kennzeichnung fr eine Bild-, 9. Byte: '1' Font- oder Animationdatei 10. Byte: '6' im G16 Format 11. Byte: Bit pro Pixel: z.B 1=Monochromes Bild; 4=16 Farben; 8=256 Farben; 16=65536 Farben High-Color RGB565 12. Byte: Transparentfarbe: 0=keine 1=nachfolgende Transparentfarbe gltig 4-/8-Bit: | 16-Bit: 13. Byte: Paletten Nr. der Transparentfarbe | \ RGB565-WORD der 14. Byte: Anzahl vorhandener Farbpaletten (0=256) | / Transparentfarbe 15. Byte: reserviert 16. Byte: Gr”sse der Bilder: 0=Unterschiedliche Bildgr”ssen 1=gleiche Breite 2=gleiche H”he (z.B proportionale Fonts) 3=gleich grosse Bilder 17. Byte: Erste Bild/Zeichen Nummer 18. Byte: Letzte Bild/Zeichen Nummer 19. Byte: \ Breite des breitesten Bildes/Zeichens Low-Byte 20. Byte: / High-Byte 21. Byte: \ H”he des h”chsten Bildes/Zeichens Low-Byte 22. Byte: / High-Byte ------------------------------------------------------------------------------ Nach dem Header folgen, die Farbpaletteneintr„ge (nur fr 4- oder 8-Bit Bilder) Paletteneintrag: 16-Bit RGB565-WORD 1. Byte: \ Low-Byte 2. Byte: / High-Byte RGB565-WORD: Bit-Nr. 15 14 13 13 11 10 9 8 7 6 5 4 3 2 1 0 R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0 ------------------------------------------------------------------------------ Nach den Farbpaletten folgt die Bildtabelle je 8 Bytes pro Bild 1. Byte: \ Breite des Bildes in Pixel Low-Byte 2. Byte: / High-Byte 3. Byte: \ H”he des Bildes in Pixel Low-Byte 4. Byte: / High-Byte 5. Byte: \ Low-Byte 6. Byte: > Offset der Bilddaten Mid-Byte 7. Byte: / (ab Fileanfang) High-Byte 8. Byte: BIT D6..D0 = 0..127 Wartezeit in 1/10s bei Animationen BIT D7 = 0 unkomprimierte Bilddaten = 1 RLE komprimierte Bildzeilen ------------------------------------------------------------------------------ Nach der Bildtabelle folgen die eigentlichen Bilddaten Die Zeilen sind immer von Oben nach Unten abgelegt Die Anordnung der Pixel in einer Zeile ist von links nach rechts ------------------------------------------------------------------------------ Aubau einer Zeile des Bildes (unkomprimiert): 1 Bit pro Pixel: das erste Pixel ist das Datenbit D7 (Monochrome) AnzahBytesProZeile = (Breite+7) / 8 4 Bit pro Pixel: das erste Pixel ist das HI-Nibble (D7..D4) (16-Farben) das zweite Pixel ist das LO-Nibble (D3..D0) AnzahBytesProZeile = (Breite+1) / 2 8 Bit pro Pixel: das erste Pixel ist das erste Byte (256-Farben) AnzahBytesProZeile = Breite 16 Bit pro Pixel: das erste Pixel ist das erste RGB565-WORD (65636-Farben) AnzahBytesProZeile = Breite * 2 ------------------------------------------------------------------------------ Aufbau einer RLE komprimierten Zeile: es wird zuerst das Anzahl-Byte gelesen BIT D6..D0 = 0..127; +1 = Anzahl 1..128 BIT D7 = 0 es folgen Anzahl unkomprimierte Bytes/Pixel = 1 nachfolgendes Byte/Pixel wird Anzahl mal wiederholt danach folgt das Wiederholbyte/Wiederholpixel oder die unkomprimierten Bytes/Pixel bei Bilder mit 1-, 4- und 8-Bit pro Pixel werden die Daten Byteweise behandelt beim High-Color 16-Bit Bild werden die Daten Pixelweise behandelt Beispiel monochrome Zeile mit 128 Pixel: 00 00 00 00 00 12 34 56 78 FF FF FF FF FF FF FF wird zu 84 00 03 12 34 56 78 86 FF Beispiel 16-Bit RGB565 Zeile mit 16 Pixel: 0000 0000 0000 0000 0000 1234 5678 ABCD FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF wird zu 84 0000 02 1234 5678 ABCD 87 FFFF