Basic structure

This article will show you how the basic structure of files within Outpost 2 is structured.

Published on 11/19/2015, updated on 03/17/2019

All files of the game have a basically similar structure, which consists of nested blocks.

Each of these blocks has an 8-byte header with basic information. Each of these headers begins with a 4-byte magic byte sequence that reveals the type of block; usually this sequence consists of readable ASCII characters. The magic byte sequence is followed by 3 bytes (uint24), which indicate the length of the block content. The header finally ends with 8 bytes, the meaning of which is unclear to me, but I assume that these are flags.

The block content follows immediately afterwards.

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
Magic Bytes data type: uint32
Contains information about what to expect in the next data block.

Known values:
  • 0x204C4F56 ('VOL '): volume
  • 0x686C6F76 ('VOLH'): volume header
  • 0x736C6F76 ('VOLS'): volume strings
  • 0x696C6F76 ('VOLI'): volume informations
  • 0x4B4C4256 ('BLCK'): volume block
  • 0x504D4250 ('PBMP'): bitmap
  • 0x4C415050 ('PPAL'): palette
  • 0x4C415043 ('CPAL'): palette container
  • 0x64616568 ('head'): Header
  • 0x61746164 ('data'): user data
Block-Länge data type: uint24
Contains information about the size (in bytes) of the following data block.
This refers to the pure user data - the 8 header bytes are not included.
Flags? data type: uint8
It is unknown exactly what this block is for.
In volumes this value is often 0x80, in other files it is often 0x00.

The data formats have a structure reminiscent of JFIF / PNG - the individual data blocks always have an 8 byte header. Therefore I spare myself to document the individual headers at the corresponding specific places and only document deviations there.

comments

add a comment

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