Skip to content

Ghosts

GameBox (Nadeo)Gameplay dataApplies toTMNF

A ghost is a recorded run: the car’s state sampled at a fixed period, packed and compressed, beside the player’s input events and the versions of the game that recorded it. Observed · 15 ghosts of 9 downloaded maps

CGameCtnGhost is 0x03092000. The layouts below read all 15 ghosts of 9 maps of the 2026 top-downloads list to their end, and the chunks found in them are the ones GBX.NET finds. Observed · 15 ghosts

The chunk is a u32 uncompressed size and a u32 length followed by that many zlib bytes. Observed · 15 ghosts The stream inside:

Order Field Type Confidence
1 Vehicle class u32, 0x0A02B000 Observed
2 Fixed step bool Observed
3 Unknown i32, 0 Unknown
4 Sample period i32, 100 ms Observed
5 State version i32, 9 in all 15 Observed
6 State data a buffer of the samples’ records Observed
7 Sample count i32 Observed
8 Offsets the first sample’s offset (i32), then a size per sample (i32), or −1 and then count − 1 sizes Observed
9 Times present when the step is not fixed Observed

A sample is 61 bytes. Observed · 15 ghosts The first record of each ghost decodes to a plausible start position. Observed · 15 ghosts

Car state, version 961 bytes20% known

The names of fields after the position follow GBX.NET's; only the position is checked against the map.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x012vec3 f32positionObserved
0xC2u16rotation angleSourced
0xE4u32rotation axis (packed)Sourced
0x124u32velocity (packed)Sourced
0x164u32angular velocity (packed)Sourced
0x1A6u16[3]speeds and rpmSourced
0x208u16[4]wheel rotationsSourced
0x281u8steerSourced
0x291u8gasSourced
0x2A1u8brakeSourced
0x2B4u8[4]unknownUnknownGBX.NET's u11 to u14
0x2F1u8turboSourced
0x301u8front steerSourced
0x318(u8, u8)[4]per wheel: dampen, materialSourced
0x393u8[3]unknownUnknownGBX.NET's u25 to u27
0x3C1u8dirt blendSourced
Order Field Type Confidence
1 Events duration u32; when 0 nothing else of the inputs follows Observed
2 Input store version 0 Observed
3 Input names counted idents Observed
4 Event count, limit Observed
5 Events 9 bytes each: time + 100,000 (u32), an input-name index (u8), data (u32) Observed
6 Executable version string Observed
7 Checksum, OS, CPU Observed
8 Race settings string Observed
9 Seed i32, after the inputs Observed

Observed · 15 ghosts

Ghosts recorded with the TMF Competition Patch carry a further chunk, 0x0304F001: a u32 and counted bytes, which are high-entropy. It is skippable. Observed · the patched ghosts among the 15

What does the Competition Patch chunk hold?

Chunk 0x0304F001’s bytes look encrypted or compressed; they are not read.

Sources

  • GBX.NET — version 2.5.0; CGameGhost, CGameCtnGhost and their chunk lists