Pushover Delta Animation Format
| Format type | Image |
|---|---|
| Hardware | EGA, VGA |
| Colour depth | 4-bit colour |
| Minimum size (pixels) | 320×200 |
| Maximum size (pixels) | 320×200 |
| Palette | External (.PIX) |
| Plane count | 4 |
| 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:
- docs/formats/ani-pix-dlx.md – reverse-engineering documentation
- tools/asset-convert/dlx-decode.js – decoder / format implementation
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!)