Skip to content

The tracks' loudspeakers ​

2026-10-24, the pod-sound session, later still.

Beltane's loudspeakers from above, drawn by pod-sound's speakers example

Beltane (BELTANE.BL3) from above: the track's vertices in grey and its four loudspeaker records. Record 1 holds event 20, the CD music. Records 2 and 3 hold the track bank's own loops. The two chains at the bottom are the track's "Depart" and "FinCourse" macros.

The emulated PC had shown when the music starts: with a race's countdown, never in the menus. The code still did not show who starts it. No call passes event 20, and no menu item carries it. The user asked to trace it, and to find the stop as well.

The answer is in the track file. Each track has a list of records of 0x38 bytes, named after the track with the extension .hp. The name stands for haut-parleurs, loudspeakers. Each record has a point on the track and an event number at +0x34. Two of the track macros' actions use them. "Son Localisé" (FUN_00475b18) fires a record's event at the record's point. "Tue Sons Local" (FUN_00475bbc) stops every sound at that point. The race setup runs the track's "Depart" macro just after it starts the countdown. The race session runs "FinCourse" after the race loop ends. On every track of POD Gold one record holds event 20. "Depart" plays every record once, and "FinCourse" stops each one. Event 20 carries the flag that stops its channel when its object's sounds are stopped, and stopping that channel stops the script and the CD. So "stop sequence" (event 27) is never needed.

There was one wrong turn. A chain's node names a macro action and a number, and the first reading took the number for the record. Then several chains named record 0, which does not exist. The number is an instance of the macro: the macro table at the start of the track file holds each macro's instances, and the loudspeaker action's instance starts with the record number. The track reader used to skip those bytes. It now keeps them. Read that way, every loudspeaker action on every track names a record that exists.

crates/pod-sound/tests/speakers.rs runs both chains on all 32 tracks. On 29 of them "Depart" starts CD track 2 and "FinCourse" stops it. Three have no such chain. BABELWEB has no loudspeakers, and FACTORY and ROAD70 have them but no "Depart" chain that plays them. The data says those three races play no music; that has not been heard yet.

Un-POD now does the same. At a race's first pass it runs "Depart". When the race is left it runs "FinCourse". The stand-in that fired event 20 by number is gone.

Next: listen to FACTORY in the emulated PC, to hear whether it really races in silence.

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