Pushover Protection Format

From ModdingWiki
Jump to navigation Jump to search

THEMES/THEME.DAT is an encrypted real-mode x86 copy-protection payload used by Pushover. Despite its location and name, it contains no theme graphics. It is not RNC-compressed.

File format

The examined file is 7025 bytes. Decrypt every byte using a 15-bit Fibonacci LFSR seeded with 0x0ACE. Advance the state before using its low byte:

state = 0x0ACE
for each byte:
    feedback = (state & 1) ^ ((state >> 1) & 1)
    state = (state >> 1) | (feedback << 14)
    output = input XOR (state & 0xFF)

The same operation encrypts and decrypts. This cipher is distinct from RNC's 0x1984 literal-run key.

The result contains executable disk-media checks. Research identifies DOS media descriptor comparisons against 0xFD and 0xF9 and a protection canary involving 0x8035. Gameplay later checks the canary, producing a delayed failure rather than necessarily refusing at startup. There is no established image, tile or music structure inside this file.

Notes

The repository includes a decrypted research dump, but no general theme-data parser because this is executable protection code. The relationship between the P00000 screen and protection failure remains a separate hypothesis.

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