Deathtrack Save Game Format

From ModdingWiki
Jump to navigation Jump to search
Deathtrack Save Game Format
Format typeSaved game
Save locationsHub location between levels
Elements savedCash, per-driver records (most fields not yet identified)
Games

Saved games (race cards) are .RCT files written to the current directory. The file is a plain 428-byte dump of the game's data arrays. It is not compressed, does not use the chunk format, and has no checksum or encryption. No .RCT file ships with the game.

Most of the fields have not been given a meaning yet. The table below documents the layout; the "source" column lists the offsets in the game's data segment (DGROUP) that the values are copied from or to.

File format

Header

Data type Name Description
char[4] signature RAC:. On loading, only the first byte (R) and the fourth (:) are checked
BYTE[424] body See below

Body

The body starts with ten records of 36 bytes (one per driver; index 0 is the player), each made of values taken from parallel arrays:

Record offset Data type Source (DS:) Description
0 UINT16LE 96dc unknown
2 UINT16LE 8e5c unknown
4 UINT16LE 9b0e unknown
6 UINT16LE a8c4 unknown
8 UINT16LE 9238 unknown
10 UINT16LE 9a86 unknown
12 UINT16LE 5c04 unknown
14 UINT32LE a22a Cash/winnings
18 UINT16LE 1c5c unknown
20 UINT16LE 9aa6 unknown
22 BYTE[10] 9926 Column of a 10×10 byte matrix
32 UINT16LE 9b6c unknown
34 UINT16LE 1c48 unknown

At body offset 360 follow:

Data type Description
UINT16LE[6] Words from DS:1fc8–1fd2
UINT16LE[9] Words from DS:1fd4–1fe4
UINT16LE[10] Words from DS:0d24, 8eb8, 9b0c, 115e, 1160, 0d28, a670, 8dac, 8eb6, aa9e. The word at 0d28 is incremented once per race; 8eb8 is shown as a two-digit number after a successful save
char[14] Player name (the terminating NUL is not saved)

Notes

  • The same routine reads and writes the body, selected through a function pointer, so the layout is symmetric.
  • The game's file picker lists directories (marked (DIR)) and *.RCT files, up to 220 entries and without a bounds check.
  • Error handling is incomplete: if the open fails the game still closes a null handle, and a short transfer leaves the file open. The result of the final 14-byte transfer is not checked.

Source code

From re-deathtrack, the open-source browser port:

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