Animations · bei.pm

Published on 19/11/2015·Updated on 13/02/2025·English
This text was automated translated by OpenAI GPT-4o Mini.

The file formats described on this page are based on the technical analysis of intellectual property by Dynamix, Inc. and Sierra Entertainment.
The intellectual property is now part of the Activision Publishing, Inc. / Activision Blizzard, Inc. estate and is currently owned by Microsoft Corp..

The information has been gathered through Reverse Engineering and Data Analysis for the purposes of archiving and interoperability with historical data.
No proprietary or confidential specifications were used.

The game is currently available for purchase as a download at gog.com.

Now we come to the pinnacle of the disciplines within the Outpost 2 data formats:
The animations.

The animation lists begin with a global header, primarily serving data verification. Following this are the specific animation definitions, which are divided into three levels:

  1. Animation
    An animation is the highest instance; it represents the animation of a unit, a building, or a 'particle animation' (meteor impact, weather, explosion) in a specific starting condition.
  2. Frame
    A frame is a single image within an animation. An animation can contain one or more frames.
  3. Subframe
    A subframe is the information indicating that a specific bitmap should be drawn at a particular position of a frame under certain criteria. A frame can contain one or more subframes.

Next, we will directly follow with the individual animation definitions.

Addr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Data type Designation Explanation
0x0000 uint(32) Number of animations

How many animation data records are available

0x0004 uint(32) Number of frames

How many frames should be present in total

0x0008 uint(32) Number of subframes

How many subframes should there be in total?

0x000c uint(32) Number of optional entries

How many "optional entries" are available.

Animation

Addr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Data type Designation Explanation
0x0000 uint(32) Unknown 1

Unknown Information

0x0004 uint(32) Bounding Box: Left

Specifies the left start (in pixels) of the Bounding Box.

0x0008 uint(32) Bounding Box: Top

Specifies the upper start (in pixels) of the Bounding Box.

0x000c uint(32) Bounding Box: Width

Specifies the width (in pixels) of the Bounding Box.

0x0010 uint(32) Bounding Box: Height

Specifies the height (in pixels) of the Bounding Box.

0x0014 uint(32) Offset: X

Specifies the horizontal midpoint of the animation

0x0018 uint(32) Offset: Y

Specifies the vertical midpoint of the animation

0x001c uint(32) Unknown 2

Unknown information

0x0020 uint(32) Number of frames

Indicates how many animation frames are included in this animation

0x0024 uint(32) Number of Windows

Indicates how many windows are to be used when drawing

The data from the top layer, the animation, primarily consists of administrative data - the Bounding box refers to the coordinates of the marker around the vehicle/building when it is selected and also indicates which area should be clickable.

The offset primarily determines the "zero point"; the point that needs to be added to or subtracted from the in-game coordinates. One could also say mathematically: the offset here refers to the origin of the coordinates.

The windows consist, just like the offset, of 4 uint(32) values per window, which specify an area that is considered usable for individual subframes. Drawing is not permitted outside the windows, unless it is specifically designated for the bitmap.

Frame

Addr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Data type Designation Explanation
0x0000 uint(8) Subframe count and toggle for Optional 1, 2

This value contains:

  • 0x7F (Bitmask): The number of subframes used in this frame
  • 0x80: Information regarding the presence of Optional 1 and 2
0x0001 uint(8) Unknown 1 and toggle for Optional 3, 4

This value contains:

  • 0x7F (Bitmask): Unknown - I strongly suspect that this refers to the number of game ticks that pass before the next frame is displayed
  • 0x80: Information on whether Optional 3 and 4 are present
0x0002 uint(8) Optional 1

Unknown

0x0003 uint(8) Optional 2

Unknown

0x0004 uint(8) Optional 3

Unknown

0x0005 uint(8) Optional 4

Unknown

Subframe

Addr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Data type Designation Explanation
0x0000 uint(16) Bitmap ID

Indicates which bitmap should be used for this subframe

0x0002 uint(8) Unknown 1

It is unknown - however, I strongly suspect that this concerns a render priority (Z-layer).

0x0003 uint(8) Subframe ID

Indicates which subframe we are in

0x0004 sint(16) Offset - Horizontal

Indicates where within the frame the subframe should be placed, or by how many pixels the bitmap should be shifted horizontally.

0x0006 sint(16) Offset - Vertical

Specifies where within the frame the subframe should be placed, or by how many pixels the bitmap should be vertically shifted.

With this, we can now compose individual frames as well as complete animations accordingly, demonstrated here with a more complex animation, the animation with index 500.

Animation 500

Animation 500 shows how a Plymouth transporter, loaded with ordinary ore, is unloaded. This is one of the few animations that utilise the windowing functionality.

And so the complete animation can be assembled.
Unfortunately, there is still an issue with the upper loading hatch, as the corresponding bit in the graphic type information is not set.

Here are a few more beautifully animated sprites from the game:

Rendering of Animation 500 illustrated

Animation 500 fully assembled

Plymouth Building Factory

Eden Spaceport

Eden Medical Centre

SCAT

Plymouth Spaceport

Easter egg:
Santa Claus

Easter egg:
Dan's Dog