This article will show you how the basic structure of files within Outpost 2 is structured.
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.
|Magic Bytes||data type: uint32
Contains information about what to expect in the next data block.
|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.