Bitmap

Um Grafiken zu bilden, die nicht zur Landschaft gehören, verwendet Outpost 2 viele kleine Bild-Elemente. Diese Elemente sind in der Datei op2_art.BMP gespeichert.

Veröffentlicht am 10.06.2018, aktualisiert am 10.06.2018

ADR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0000 0000 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
0000 0010 xx xx xx xx  
Ausgerichtete Breite Datentyp: uint32
Gibt die Breite der Pixeldatenzeilen in Byte an - da diese an die 4-Byte-Grenzen ausgerichtet sind.
So ist es schnell möglich, eine bestimmte Bildzeile anzuspringen.
Warum dieser Wert separat gespeichert wird, obwohl er berechnet werden könnte, ist unklar.
Offset Datentyp: uint32
Gibt den Offset der ersten Zeile in der Bitmap an
Höhe Datentyp: uint32
Gibt die Höhe des Bildes in Pixel an
Breite Datentyp: uint32
Gibt die Breite des Bildes in Pixel an
Bildtyp Datentyp: uint16
Gibt die Art des Bildes an. Hierbei scheint es sich um eine Bitmaske zu handeln:
  • 0x04 ist gesetzt, wenn es sich um eine 1bpp-Grafik handelt.
  • 0x40 ist gesetzt, wenn es sich um eine Grafik handelt, die Windowing umsetzen muss
Palette Datentyp: uint16
Definiert, welche Palette aus der PRT-Datei verwendet werden soll

Diese Datenstruktur der PRT-Datei gibt an, wie die für die Sprites verwendeten Bitmaps aufgebaut sind. Diese Bitmaps dienen dabei als einzelner Bestandteil, von dem mehrere zu einem Animationsframe eines Sprites zusammengebaut werden.

Die konkreten Bilddaten verbergen sich dagegen in der op2_art.BMP im Spielverzeichnis.
Warum diese Bitmapdatei über einen (überwiegend korrekten) RIFF-Bitmapheader verfügt, ist unklar. Wahrscheinlich verwendet Outpost 2 System-APIs zum Laden der Grafiken, indem dieser Header temporär übernommen wird und die entsprechenden, variierenden Felder überschrieben werden.

Die Pixeldaten sind dabei in der BMP-Datei an der Position Offset + dem uint32-Offset, das in der BMP-Datei an Adresse 0x000A zu finden ist (RIFF-Bitmap-Datenoffset), zu finden - und entsprechen wieder der zeilenweisen Anordnung von oben links nach rechts unten.

Monochrome 1bpp-Grafiken können dabei so gezeichnet werden, dass Farbe 0 vollständiger Transparenz, sowie Farbe 1 ein halbtransparentes schwarz/grau ist, da die Monochrom-Grafiken üblicherweise für Fahrzeug- und Gebäudeschatten in den Animationen verwendet werden.

Damit kann man bereits viele Grafiken zusammensetzen:

Kommentare

Kommentar hinzufügen

Dein Kommentar wird möglicherweise nicht sofort dargestellt werden. Kommentare werden aus Spamschutzgründen moderiert.