Pushover Tileset Format
| Format type | Tileset |
|---|---|
| Hardware | EGA, VGA |
| Max tile count | 400 |
| Palette | External |
| Tile names? | No |
| Minimum tile size (pixels) | 16×16 |
| Maximum tile size (pixels) | 16×16 |
| Plane count | 5 |
| Plane arrangement | Plane-major, MSB-first |
| Transparent pixels? | Yes |
| Hitmap pixels? | No |
| Metadata? | None |
| Supports sub-tilesets? | No |
| Compressed tiles? | Yes |
| Hidden data? | No |
| Games |
THEMES/*.BCX contains background/architecture tiles for Pushover. Files are RNC-compressed and use the matching .PAL palette. The decompressed icon layout is shared by .BCX and .PLX.
File format
| Relative offset | Size | Description |
|---|---|---|
| 0x00 | 32 | Plane A (pixel bit 0) |
| 0x20 | 32 | Plane B (bit 1) |
| 0x40 | 32 | Plane C (bit 2) |
| 0x60 | 32 | Plane D (bit 3) |
| 0x80 | 32 | Plane E (bit 4) |
There is no header or offset table. Each icon occupies 160 bytes and measures 16×16 pixels. Icon i begins at i * 160. Each plane has sixteen rows of two bytes; the most significant bit is the leftmost pixel.
Combine the five corresponding bits into v = A | B<<1 | C<<2 | D<<3 | E<<4. The repository decoders treat v == 0 as transparent and otherwise use palette index v & 15. Thus value 16 draws opaque palette colour 0. There are 16 displayed colours, not 32 independent palette entries.
Tile numbering
The SCR background word directly selects a zero-based .BCX icon. The loader supports up to 400 icons. Documented bank sizes are Aztec 392, Castle 286, Cavern 173, Dungeon 151, Electro 281, Greek 308, Japanese 341, Mechanic 373, Option 340, Space 400 and Toxcity 271.
Source code
From pushover, the open-source browser port and its reverse-engineering notes:
- docs/formats/plx-bcx.md – reverse-engineering documentation
- tools/asset-convert/bcx-plx-to-png.js – decoder / format implementation
- tools/asset-convert/theme-format-writer.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!)