Skip to content

Sounds and fonts ​

2026-10-23, fifth session. The last asset formats before the Rust workspace.

Sound banks ​

No string or constant in the game leads to the code that reads the .MEG banks, so this one came from the files alone. The header is five pairs of offset and length. Each section starts where the last one ends, and the fifth ends at the end of the file. Most of the bank is records from Ubi Soft's sound tool, complete with its project path, event types like stop'n go crossfade, and descriptions in French.

The fifth section is the sound itself: plain signed 16-bit mono samples. The records say where each one starts, how long it is, its rate and whether it loops. A check that proved the layout: in every bank the sounds sit end to end and fill the section exactly.

I cannot listen, so the checks were numbers. Every sound is well above silence, and real audio changes smoothly from one sample to the next. Three sounds are noisy by that measure, a neon buzz and a crystal shimmer, and no other reading of their bytes does better. They sound noisy because they are.

One mistake on the way: the first viewer gave each sound the next sound's description. The description sits before the record's name, not after it. The tyre screech is now "crissement pneu" again.

Waveforms of four sounds: tyre screech, car crash, the countdown's one, and the Beltane sea

Waveforms drawn from the decoded samples: FIX.MEG Criss2 (tyre screech), IMP_car (crash), One11 (countdown) and BELTANE.MEG MER2 (sea). © Ubi Soft; shown from our own viewer.

Fonts and the menu skin ​

The .BP3 files use the same texture blocks as the tracks and cars. A glyph is a sub-texture, and so is each label the game draws as a picture, like "lap record". HABILAGE is the whole menu skin: frames, buttons and a set of letters. The palette is in one of two places, either inside the block or just before it. One file has names so long that they fill the 32-byte field with no end marker.

Smoke and shadow ​

The menu font page, the menu skin page, and the smoke texture in colour and alpha

POLICES/FNT_MENU.BP3 page 0, HABILAGE.BP3 page 0, and PVRSMOKE.BI2 as colour and as alpha. © Ubi Soft; shown from our own viewer.

The .BI2 files are 32-bit pictures with alpha: the smoke is grey-blue, thickening towards the bottom. Their names start with PVR, perhaps for the PowerVR chip of the time. One file, SHADOTIN, has a different header and stays open.

Next ​

The Python side now covers every kind of asset on the disc in some form. Next is the Rust workspace from the plan: the format libraries and a viewer that runs natively and in the browser.

Prose CC0 1.0, code Apache 2.0. POD: Planet of Death is © Ubi Soft; none of its files are on this site.