Phaethon

The four Jak games, native on the PC.

The four games

One launcher, one runtime, four games.

See the roadmap

Jak and Daxter

The Precursor Legacy2001 · Playable533 source files in the treeSCUS-97124 · SCES-50361
NTSC-U · PAL

One seamless world with no loading screens, and Precursor orbs in every corner of it.

Jak II

Haven City2003 · Playable849 source files in the treeSCUS-97265 · SCES-51608
NTSC-U · PAL

Haven City, dark eco, and a much sharper edge than the first game.

Jak 3

The Wasteland2004 · Playable1041 source files in the treeSCUS-97330 · SCUS-97516 · SCES-52460
NTSC-U · PAL

The Wasteland, light eco, and the end of the trilogy.

Jak X

Combat Racing2005 · In progress776 source files in the treeSCUS-97429
NTSC-U

Combat racing across the trilogy's world, which OpenGOAL never ported.

Jak X: Combat Racing

The game no port had reached.

The trilogy came to the PC on years of OpenGOAL's decompilation. Jak X had none of it. Every file in the game, from the kernel up, is decompiled, typed and landed here for the first time, and the tools that carried the trilogy had to learn a fourth engine to do it.

776 source files

The Jak X tree today, decompiled from the disc rather than inherited from another game. Most of them hold code; the rest are objects that carry only data or declarations, as they did on the disc.

The whole game in one build

One build turns every one of those sources into a running game on one machine.

No decompilation to start from

OpenGOAL never decompiled Jak X, so its GOAL source began from nothing here. The C++ side of the disc driver began from Jak 3's and is being reconciled function by function.

What you get

Faithful first. Everything else behind a toggle.

Faithful by default

The port aims to do what the PlayStation 2 build did, frame for frame where it can: the same physics tick, the same field rate for the audio-synced cutscenes, the same heaps and load order.

Faster than the console

Faster on every game, as a consequence of the faithful port rather than at its expense: the frame's work measured and trimmed, nothing spent on a compatibility layer.

A remastered version behind a toggle

Higher frame caps, a native widescreen picture with the HUD anchored to the edges, texture packs and upscalers, all in a preset that never touches the faithful one.

Jak X for the first time

Jak X: Combat Racing, which OpenGOAL never ported, brought up from its disc the same way the trilogy was.

The renderer

OpenGL out, Vulkan in.

The port inherited an OpenGL renderer that could not be measured or threaded the way a faster runtime needs. The Vulkan backend replaces it pass by pass, a frame oracle checks every pass against reference frames before it lands, and every new piece of renderer work is written to run on either backend, so nothing done during the swap is wasted.

Why

Performance first, with no stack of compatibility layers. The frame's work has to be measured and trimmed, and the renderer has to leave room for what comes after it: rendering on more than one core, dynamic and ray-traced lighting, and the online layer.

What it took

  • Four backend calls made once: volk for loading, dynamic rendering, one shader source compiled for both backends, and a simple suballocator over the memory library.
  • A frame oracle with reference frames from the games' own scenes, four peak scenes among them, comparing every pass before it lands.
  • A cost map of a race frame: about 1.1 ms of movable recording in a 4.9 ms Vulkan frame, of which the largest family cannot move (#2163).
  • Jak 1, 2 and 3 booting and running on the new backend.
  • The temporal ladder: motion vectors, jitter, a TAA resolve, then DLAA and DLSS through NGX called directly and FSR 3.1 across vendors, all behind the remastered preset.

Still in progress

  • A frame graph: an explicit dependency model for the enhancement passes, replacing hooks on bucket ids.
  • The motion vectors the temporal passes still lack: swaying foliage and the holographic menus ghost or flicker until they carry their own.
  • Dynamic lighting, beginning with the glow sprites as light emitters, as the foundation for ray tracing.
The kernel

One kernel, four games, no shortcuts.

The kernel is the part of the runtime every game shares: the 32-bit memory arena and symbol table, the DMA chains, the protocol to the disc and sound processor. It stays exactly as retail shaped it, and the work is making it run better without the game ever noticing.

The focus

A runtime that runs the games better than the PlayStation 2 did. Every kernel change states whether the game could observe it, and the ones it could are ruled on one at a time. Jak 1 to 3 boot as part of every kernel judge, because they share it.

What it took

  • A read-only study of the kernel, the system layer, the overlord and their seam to the renderer, each candidate graded faithful or divergent.
  • Two ladders of rungs, each with its own judge, landed one at a time and boot-checked on every game.
  • Load waits that spun a core now wait on a signal, the IOP host sleeps to its real deadline, and the debug listener's send left the game thread.

Still in progress

  • A function-by-function census of Jak X's own IOP program against the one inherited from Jak 3: 317 functions, 193 matching, 114 differing, 10 that exist only in Jak X.
  • The 29 routines still shaped like Jak 3's, on a work list, landed as each is read.
  • The online layer, which Jak X alone carries, and the module loader that brings it up.
How it works

Your disc in, your game out.

Install the launcher

Run the installer. A short setup wizard asks where the runtime and your games should live, and can install the runtime right away.

Import your own disc

Point a game at your disc image. The launcher checks the disc's serial, then extracts, decompiles and compiles the game.

Play

Every game starts retail-faithful. The enhancements are individual toggles in the game's options and in the launcher.

Download

Windows 10 or 11, a GPU with Vulkan 1.3, and your own copies.

The launcher installs the runtime, imports each game from your disc and keeps everything up to date. Phaethon ships no game data.

Built to the frame.

Phaethon is written from the games themselves. Each system is decompiled, compared with a PlayStation 2 capture and landed only when the two agree, frame for frame. The details are the work.

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 f183c49b CI green v0.2.0-rc6 26 Sep 2026