Deathtrack Save Game Format
| Format type | Saved game |
|---|---|
| Save locations | Hub location between levels |
| Elements saved | Cash, 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*.RCTfiles, 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:
docs/re/resources.md– save/load routine1000:5368, picker1000:4f28src/game/flow.js– translated 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!)