Pushover Theme Table Format

From ModdingWiki
Jump to navigation Jump to search

THEMES/THEME.KEY is a 320-byte uncompressed table used by Pushover for menu/level counts and theme-to-music selection. It is not an encryption key.

File format

Offset Data type Description
0x00 UINT16BE[26] Menu/count values
0x34 BYTE[12] Zero padding
0x40 CHAR[12][16] NUL-padded name records
0x100 BYTE[64] Zero tail; four further empty name-sized slots

Count values

1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 10
11 20 29 43 55 62 77 88 99 100

The ten words starting at 0x20 are cumulative world boundaries. The first word, masked with 0x7F, is used as a seed by the menu logic. Do not interpret all 26 values as one monotonic list.

Music names

Slots 0–11 are OPTION, MECHANIC, TITLE, CASTLE, JAPANESE, PRIZE, GREEK, AZTEC, SPACE, TOXCITY, ELECTRO, DUNGEON. A name match at slot i sets pending selection i+1; the game subsequently sends (pending−1) % 13 to the driver. See Pushover Music Format for the AdLib driver's invalid slot-zero caveat.

These names are not an ordered list of worlds. CAVERN has real art but no matching name here; the documented scan found no CAVERN theme among the 103 screen files examined. The ten world buckets also need not correspond one-to-one with distinct art themes.

Notes

The music-name interpretation was confirmed with live SPACE and TOXCITY selections. Older notes identifying the same runtime buffer as permanently containing staff credits were superseded: the buffer is reused.

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