Tracks in 3D
2026-10-23, eighth session.

The 18 tracks from their .BL3 files, seen from above with pod-viewer render NAME.BL3 --pitch 1.5. © Ubi Soft; shown from our own viewer.
A script before the scenery
The track loader reads a small table before any geometry. It holds 52 named items, the same on every track: Sinon (else), Joueur (player), Active Macro, All Macros OFF, Arret Anim (stop animation). They read like the commands of a scripting language for track events. Most items are just a name; a few carry data, such as Arret Anim with the name of an animation file, pascal.anc. After the table come seven counts of macros actually placed on the track, all zero on this disc, and the track's project file name, such as beltane.RTE.
Sectors are objects
The geometry turned out to reuse what the cars taught. The routine FUN_0046e910 reads the track's textures and then a list of sectors, and each sector is read by the same object reader as a car's body: vertices, faces with materials and texture coordinates, and normals. A byte per vertex and six words follow each sector; their meaning is still open. The tracks run from one sector (the test ring) to 167 (Veitland), and Cocoon has the most faces, 6,821.

CIRCUITS/CITY.BL3 from above: the road, the start line, the plazas and buildings around it. © Ubi Soft; shown from our own viewer.
The 16-bit files are different
The .BL4 files did not walk at first. Two differences appeared, both measured from the data rather than read in code. Every .BL4 has 16 extra words, each 0 or 1, before its textures, and every face carries one more word before its flags. With those, each .BL4 gives exactly the same sector, vertex and face counts as its .BL3.
WINPOD.EXE, the software-rendered build this project reads, has no code for either. The 16-bit files are most likely read by the builds for 3D cards, which have their own loaders.

CIRCUITS/BELTANE.BL4: a long road climbing to a tower. © Ubi Soft; shown from our own viewer.
Two decisions
The site no longer builds on every push; it is published by hand when we choose.
The disc image is on a public archive, which raised the idea of the viewer fetching the game itself. If it does, it will be a module of its own (disc-image to read the CD image directly, game-source to fetch and cache), useful beyond this game. The plan has them.
The tracks page has the format.
Next
The data after the sectors: the sky, animated sectors, and the per-difficulty entries that probably hold the racing lines.