Bitmap

To create graphics that do not belong to the landscape, Outpost 2 uses many small image elements. These elements are stored in the op2_art.BMP file.

Published on 06/10/2018, updated on 06/10/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  
aligned width Data type: uint32
Specifies the width of the pixel data lines in bytes - since these are aligned to the 4-byte boundaries.
So it is quickly possible to jump to a certain image line.
Why this value is stored separately, although it could be calculated, is unclear.
offset Data type: uint32
Specifies the offset of the first line in the bitmap.
height Data type: uint32
Specifies the height of the image in pixels.
width Data type: uint32
Specifies the width of the image in pixels.
image type Data type: uint16
Specifies the type of image. This seems to be a bitmask:
  • 0x04 is set if it is a 1bpp graphic.
  • 0x40 is set if it is a graphic that must implement windowing.
palette Data type: uint16
Defines which palette should be used from the PRT file.

This data structure of the PRT file specifies how the bitmaps used for the sprites are structured. These bitmaps serve as a single component, several of which are assembled into an animation frame of a sprite.

The concrete image data is hidden in the op2_art.BMP in the game directory.
Why this bitmap file has a (mostly correct) RIFF bitmap header is unclear. Outpost probably uses 2 system APIs to load the graphics by temporarily taking over this header and overwriting the corresponding varying fields.

The pixel data can be found in the BMP file at the position offset + the uint32 offset, which can be found in the BMP file at address 0x000A (RIFF bitmap data offset) - and again correspond to the line by line arrangement from top left to bottom right.

Monochrome 1bpp graphics can be drawn in such a way that color 0 is full transparency, and color 1 is a semi-transparent black/grey, since the monochrome graphics are usually used for vehicle and building shadows in the animations.

With it you can already put together many graphics:

comments

add a comment

Your comment may not be displayed immediately and will be moderated for spam prevention reasons.