Pushover Preview Animation Format

From ModdingWiki
Jump to navigation Jump to search
Pushover Preview Animation Format
There is no example of an image in this format — upload one!
Format typeImage
HardwareEGA, VGA
Colour depth8-bit colour
Minimum size (pixels)320×200
Maximum size (pixels)320×200
PaletteInternal
Plane count1 (packed pixels)
Transparent pixels?No
Hitmap pixels?No
Games

DATA/PUSHOVER.FLX and CC0.FLX–CC5.FLX contain front-end preview/animation data for Pushover. They are RNC-compressed. They do not contain the playable grids, which are in .SCR files.

File format

Multi-byte fields are little-endian. The decompressed preamble is 128 bytes:

Offset Data type Description
0x00 UINT32LE Total decompressed file size
0x04 UINT16LE Signature 0xAF11
0x06 UINT16LE Preview-slot count after the initial shared keyframe
0x08 UINT16LE 320 (image width)
0x0A UINT16LE 200 (image height)
0x0C UINT16LE 8 (consistent with 8-bit screen pixels; original field semantics not separately traced)
0x0E UINT16LE 3; precise meaning unconfirmed
0x10 BYTE[112] Reserved/padding; zero in the closely inspected sample

Frame blocks

At offset 0x80, read consecutive blocks. Each begins with a self-inclusive UINT32LE size, UINT16LE signature 0xF1FA, UINT16LE subrecord count, and eight padding bytes. The first block carries the shared palette/keyframe. The header slot count counts subsequent blocks, including empty 16-byte blocks.

A subrecord has UINT16LE self-inclusive length, UINT16LE flags, UINT16LE type, then its payload. This is the interpretation used by the repository's exploratory parser; it does not establish a generic parser for every similarly signed animation format.

Type Operation
0x0B Partial palette update: skip/write runs of RGB triples
0x0C Partial image update with row offset/count and signed-control RLE
0x0D Clear 64000 screen bytes (handler present)
0x0F Full-image signed-control RLE
0x10 Raw 64000-byte image (handler present)

The documented RLE uses positive controls for repeated values and negative controls for literal runs. The research establishes these operations but the supplied structural parser does not fully decode their payloads; consult the traced handlers before implementing a writer.

All seven examined files contain types 0x0B, 0x0C and 0x0F. No type 0x0E occurs. Slot counts are 148 for PUSHOVER, then 18, 56, 29, 12, 18 and 42 for CC0–CC5.

Notes

Early “level archive” descriptions and the proposed bytes-per-grid-cell meaning of header value 8 were superseded by the rendering-command investigation. Preserve the distinction between confirmed structural fields and incompletely documented payload encodings.

Source code

From pushover, the open-source browser port and its reverse-engineering notes:

Credits

This file format was reverse engineered by VorticonCmdr. If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)