Phaethon

news / / 2 min read

Three numbers out of four

Every time one of the games' processes paused, the kernel kept one number of each four it was holding and lost the rest. Upstream patched the symptoms where they showed. Phaethon fixed the pause.

A vector register of four numbers, saved as one number with three lost before September 14th and as all four after
Three numbers out of four, lost on every pause until the save was fixed.
on this page
  1. Where it went wrong
  2. The bot that never came
  3. Two ways to fix it
  4. Why it matters

The Jak games are made of hundreds of small processes: an enemy, a camera, a pickup, a car. They take turns. Each one runs for a moment, pauses partway through what it was doing, and picks up again on the next frame exactly where it left off. For that to work, the kernel has to put away everything the process was holding when it paused, and hand it all back when it resumes.

Where it went wrong

Among the things a process holds are vector registers, each a set of four numbers used for positions, directions and distances. When a process paused, the kernel saved each of these into a slot that holds only one number. Three of every four numbers were lost on every pause, and came back as whatever happened to be left.

Most of the time nothing showed. Some of the time something did.

The bot that never came

In Jak X, the wrong-way bot spawned on the track and never became visible. It was waiting for a distance check to say it was close enough to appear. Each time it paused and resumed, the distance it had computed came back as zero, so it kept waiting, for good.

Two ways to fix it

OpenGOAL knew the symptom. Its Jak II code carries a comment that reads: "WORKAROUND for GOAL bug - vf0 is clobbered on suspend." Where the bug showed, a workaround was added around it. Where it did not show yet, nothing was done; two states in Jak II were left unpatched.

Phaethon fixed the pause itself. On September 14th the kernel began saving all four numbers of every vector register, first for Jak X and then for Jak and Daxter, Jak II and Jak 3. The next day the save area moved out of the process's own memory, which ended a run of eleven separate fixes that had each made some process's memory a little bigger to make room.

The wrong-way bot, a drone with a red warning sign, hovering over the road ahead of the player's car
The wrong-way bot as the console draws it, captured in PCSX2.

Why it matters

This is the pattern the whole project follows. A workaround fixes one place a problem shows and leaves it waiting everywhere else. Fixing the cause fixes the places nobody has found yet.

Alex (maintainer, and a mechanical engineer by trade)

Sep 15, 2026 · kernel · gamesEvery post
Phaethon

Built with AI in the loop. Phaethon uses AI assistance for speed and accuracy, and holds it to the same bar as every other contribution: every change is read, tested and checked against the console before it lands.

develop 6332c399 CI green v0.2.1 Nov 4, 2026

Phaethon is an unofficial fan project. It is not affiliated with, endorsed by or associated with Sony Interactive Entertainment, Naughty Dog or the OpenGOAL project. Jak and Daxter is a trademark of Sony Interactive Entertainment. You need your own copy of each game. Icons from Lucide, ISC; JetBrains Mono under the SIL Open Font License.

Under construction

This site is still being built.

Nothing links to playphaethon.com yet, so you have found it before it is ready. Some of what it says may be wrong, out of date or attributed to the wrong source. Treat it as a work in progress until this notice is gone.