Best times and lists
2026-10-23.
This session took the smaller files: the ones that hold lists and tables. All of them now decode to the last byte, and writing the decoded form gives the original file. The viewer shows each one as a table.
Best times
The .BRT files were already known to use the block container with key 0xEAFA. Inside there is one 0xE5C-byte area, which load_records (FUN_004b2300) reads to 0x693A84 and save_records (FUN_004b23f4) writes back from the same address. It holds four tables: 15 best races with their lap times, 15 best laps with their sector times, the splits of the best race, and one table of 15 best times for each timing sector. A time is seconds in 16.16 fixed point. FUN_0047e4d0 prints them as m'ss"hh, and that gave the unit.

The file name also carries state. The code swaps the last letter of the name for the mode (T time attack, E/M/H difficulty) and the first letter for - on a mirrored circuit. Only the .BRT files ship on the disc. The shipped times look generated: every lap in a row is the same, and each row is a fixed step slower than the one above. The game's own "no file" routine, FUN_004b1d84, builds its tables in the same way.
The circuit list
CIRCUITS.BIN is 32 rows XORed with 0x50, 17 of them in use. Each row gives the file stem, the title, the map and sky pictures, the flags, the length in metres, the laps and the timing sectors. The sector counts match the .BRT files for 15 circuits. Bank and Special have 4 sectors in the list but only 3 sector tables in their records.

Menus and the race display
BETAMNU.BIN holds the menu editor's own data: 33 menus and 503 items. Each item has a screen rectangle, an action number and a type. It even keeps the addresses the items had in the editor's memory, which the game overwrites at start-up. HABI.BIN is text XORed with 0x80: 219 race-display elements, each a ten-field line read with sscanf and followed by its options.


The rest
- The music tables (
CDAREF.TXTand the others) list CD audio tracks 2 and 3, and two test scripts. .BI2: all three effect files decode.SHADOTIN's odd first byte is the length of a 44-byte name. The bytes after the pixels turned out to be the writer's previous block, still encoded in its buffer. Every byte of both large files fits that rule.DATA\Params\andDATA\Com\are empty on the disc. The code shows what the game writes there: per-car set-ups (<car>.prb, five sliders sharing 300 points, with a check word) and the modem phone book.- The AVI videos and
LOADER.EXEnow have structural readers, so the catalogue counts them.
The catalogue now reads 198 of 289 files to the last byte, 78% of the bytes. What is left is the track and car data, which other sessions are working on, plus the sound banks and the font glyph tables.
Next
- Load a changed
.BRTin the game, and let the game write one. This needs a writable copy ofDATA/RECORDSunder Wine, so the shared disc copy stays untouched. - The
.MEGsound-bank structure and the.BP3glyph tables, so those files decode to the last byte too.