Pushover Delta Animation Format

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

DATA/ANI??.DLX stores XOR image updates used with .PIX backdrops. Files are RNC-compressed. These are visual animation data, not gameplay levels.

File format

All words below are big-endian. A stream consists of batches, each beginning with a signed 16-bit count. A count less than or equal to zero ends the stream. A positive count is the number of six-byte records, including both halves of a combined record.

Relative offset Data type Description
0 UINT16BE Header H: position plus plane-pair flag
2 UINT16BE First plane word
4 UINT16BE Second plane word

The destination offset in a 320×200, one-byte-per-pixel buffer is (H & 0x7FF8) * 2. Each record affects 16 consecutive pixels. Header bit 0x0004 selects planes 2 and 3; when clear, the words are planes 0 and 1. Missing planes contribute zero.

If the flag is clear and the next record has the same masked position, the decoder consumes both records as a combined 12-byte update: the first pair supplies planes 0/1, the second planes 2/3. This consumes two count units. Check that another record remains before looking ahead.

For each pixel, combine the four MSB-first plane bits into a nibble, then XOR it with the existing palette index. Applying the identical update twice restores the previous pixels. Keep the .PIX palette throughout. The linked decoder applies all batches in sequence; it does not by itself specify presentation timing between batches.

Notes

Older prose mentions a 0x400 flag and ambiguous short/long records. The current byte-level decoder uses 0x0004 and counts six-byte units as documented here. Any trailing data after a terminating count remains an open question in the notes.

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!)