Every sound in the Jak games, from Jak's footsteps to the music, goes through a sound driver: a program Sony supplied that ran on the PlayStation 2's second processor and its sound chip. OpenGOAL re-created that driver for the PC in 2022. Over five weeks Phaethon took it the rest of the way, correcting it against the drivers on the discs themselves.
Jak X finds its voice
Jak X booted silent. It had been reading its sound data with Jak 3's layouts, so every volume came out as zero, and its 620 megabytes of audio had never been copied off the disc image. Once music played, it played slow and choppy with the channels swapping, because Jak X packs its stereo in 4 KB blocks where Jak 3 used 8 KB. Its music directory held 4,481 entries in a table built for 4,096, so 385 tracks could never be reached.
In early September Jak X stopped borrowing Jak 3's sound program and got its own. The worst of twelve proven gaps was easy to hear once found: every fade was calculated and then thrown away, so music faded out four times too slowly.
The echo nobody built
The console's sound chip had a hardware echo, a reverb unit the games switch on for rooms and caves. Upstream never built it; in Jak II, Jak 3 and Jak X a request for it simply wrote "unimplemented set reverb" to the log. On September 1st Phaethon modeled it, and on September 30th each half of the chip got its own reverb, as the hardware had. Jak and Daxter turns reverb off itself, so it sounds the same as before.
Checking the driver, function by function
Then the shared driver was checked against the disc's own copy, all 381 of its functions. That brought in what the console actually did:
- a pool of 48 voices that steals one when it runs out, as the console does;
- a true 240 Hz sound clock, where the PC's had ticked at 220.5;
- pitch bend, which had been an empty note to do;
- fades that ramp instead of jumping;
- the driver's own table for panning sound left and right, byte for byte.
The surprise
Jak 3 still sounded wrong: quiet overall, with a few sounds, the crowd's cheer among them, far too loud. Queued sounds were going out at full scale, about sixteen times too hot.
Looking for why turned up the surprise. The four games did not ship one sound driver. They shipped three different builds of it, each with its own rules for volume: one on Jak and Daxter, another on Jak II, and a third on Jak 3 and Jak X. The PC version had applied one set of rules to all four, which left Jak II's far channel up to 6 decibels too loud, among other things.
Now each game gets its own driver's rules. In the same week, a flat doubling of the volume, a fudge with no basis in any driver, was retired, random sound variations started coming from the console's own random number generator, the chip's two halves began mixing separately in the console's order, and Jak 3's music player, which had listed nothing, now lists the 68 tracks the game plays.
Surround, as an extra
One addition goes beyond the console on purpose: Mono, Stereo, 5.1, 7.1 and Auto output. Building it turned up three bugs of its own. Moving sounds stayed panned where they started, Jak X's streamed speech was never placed in space at all, and Auto picked 7.1 even on plain stereo devices, which made everything about 11 decibels quieter. All three are fixed. Auto is the default output, in every preset.
How it was checked
All of this was checked against the drivers' own code taken from the discs and against PCSX2, the PlayStation 2 emulator. None of it was checked against a recording from a real console, because a game's mix cannot be captured from a boot that way. That recording is still on the list.
Alex (maintainer, and a mechanical engineer by trade)
