Skip to content
Shihan edited this page Mar 17, 2020 · 1 revision

ACE-Dateien enthalten Animationen, die in Sternenschweif und Schatten über Riva verwendet werden.

Table of Contents

Spezifikation

Header 4 Byte ACE Identifikation (= "ACE\0")
2 Byte Integer (unsigned) Versionsnummer (= 1)
1 Byte Integer (unsigned) Anzahl der enthaltenen Animationssequenzen (= a)
1 Byte Integer (unsigned) Geschwindigkeit
(a×) Animationssequenz-Definition(en) (siehe unten)
(a × b) Einzelbild-Definitionen 4 Bytes Kompressionsgröße der Pixeldaten (= g)
2 Byte Integer (unsigned) x-Achsen-Offset des Einzelbilds in der Animationssequenz
2 Byte Integer (unsigned) y-Achsen-Offset des Einzelbilds in der Animationssequenz
2 Byte Integer (unsigned) Höhe des Einzelbilds
2 Byte Integer (unsigned) Breite des Einzelbilds
1 Byte Integer (unsigned) verwendetes Kompressionsverfahren (siehe unten)
1 Byte Integer (unsigned) Action-Button
(g) Bytes komprimierte Pixeldaten des Einzelbilds
Farbpalette 1 Byte Integer (unsigned) Farbe #1: Rot (* 4 = 0-255)
1 Byte Integer (unsigned) Farbe #1: Grün (* 4 = 0-255)
1 Byte Integer (unsigned) Farbe #1: Blau (* 4 = 0-255)
...
1 Byte Integer (unsigned) Farbe #256: Rot (* 4 = 0-255)
1 Byte Integer (unsigned) Farbe #256: Grün (* 4 = 0-255)
1 Byte Integer (unsigned) Farbe #256: Blau (* 4 = 0-255)

Animationssequenz-Definition

Wenn nur eine Animationssequenz in der ACE-Datei enthalten ist hat diese folgenden Aufbau:

Animationssequenz-Definition 2 Byte Integer (unsigned) Breite der Animationssequenz
2 Byte Integer (unsigned) Höhe der Animationssequenz
1 Byte Integer (unsigned) Anzahl der Einzelbilder (= b)
1 Byte Integer (unsigned) Abspielmodus
Sind hingegen mehrere Animationssequenzen enthalten haben diese jeweils folgenden Aufbau:
Animationssequenz-Definition 4 Byte Integer (unsigned) Offset der ersten Einzelbild-Definition dieser Animationssequenz
2 Byte Integer (unsigned) Identifikationsnummer der Animationssequenz
2 Byte Integer (unsigned) Breite der Animationssequenz
2 Byte Integer (unsigned) Höhe der Animationssequenz
2 Byte Integer (signed) x-Achsen-Koordinate des Hotspots (< 0)
2 Byte Integer (signed) y-Achsen-Koordinate des Hotspots (< 0)
1 Byte Integer (unsigned) Anzahl der Einzelbilder (= b)
1 Byte Integer (unsigned) Abspielmodus

Kompressionsverfahren

Das "Compression"-Feld in der Datenstruktur gibt den verwendeten Packer an. Folgende Werte sind möglich:

  • 1: RLE-Algorithmus 1.
Hat ein Farb-Byte den Wert 127=0x7F, wird es nicht als Farbe interpretiert, sondern leitet einen Lauflängencode ein. Das folgende Byte ist dann die Lauflänge, es folgt die Farbe. Ein Bild mit Farbe 1, Farbe 7 und dann 9-mal Farbe 3 wäre also als "01 07 7F 09 03" codiert.
  • 2: RLE-Algorithmus 2, ähnelt dem von PCX.
Die Farbinformation ist signed, so dass bei Farben c > 127 der Wert ins Negative umspringt. Solche Werte werden dann 2er-komplementiert und (nach Addition von 1) als Lauflänge interpretiert für das folgende Byte c'. Ein Bild mit Farbe 1, Farbe 7 und dann 9-mal Farbe 3 wäre also als "01 07 F8 03" codiert: Das Komplement von F8=11111000 ist 00000111=7, das 2er-Komplement ist dann 7+1=8, +1=9.

Links

Kategorie:DSA2Kategorie:DSA3Kategorie:Bildformat