Skip to content
Phaethon

docs / start / what-phaethon-is

What Phaethon is

Phaethon (pronounced FAY-uh-thon) is a native PC port of the four Jak games built on the OpenGOAL project's work: each game's original GOAL source, recovered from the PlayStation 2 disc by decompilation, compiled by a new compiler to native x86-64 and run by a new runtime in place of the PlayStation 2 hardware. Nothing is emulated. The games' own code drives the platforming, the races, the physics, the AI and the story; the port supplies the machine underneath it and a renderer built for modern GPUs.

It has four goals, in the order they are built:

  1. Faithfulness. A retail-faithful port of each game: what the PlayStation 2 build did, frame for frame where it can be read, with the console as the reference whenever the two disagree.
  2. Performance. Faster than the console on every game, as a consequence of the faithful port rather than at its expense: the frame's work measured and trimmed, the loads and the sound cadence read against retail's, nothing spent on a compatibility layer.
  3. A remastered version of each game, behind a toggle: everything beyond retail, from frame caps and widescreen to upscalers and texture packs, in a preset that never touches the faithful one.
  4. Jak X: Combat Racing, which OpenGOAL never ported, brought up from its disc the same way the trilogy was.

This is a hard fork of OpenGOAL's jak-project and develops independently of upstream.

Two rules set it apart from the project it came from, and they are not up for negotiation:

  • No compatibility layer, ever. No translation layer between the game and the machine, no shim that maps an old API onto a new one, no stack of adapters kept because removing one is work. The game's code runs on the machine's own interfaces: Vulkan directly, the platform's own threads, files and sockets directly. When something between the game and the hardware exists only to make old code fit, it is removed and the code is changed.
  • No unanswered TODO. Every deferral in the tree carries the issue that will close it, and a checker refuses a new one without. There is no "fix later" that nobody owns, no guard that outlives the bug it guarded, no workaround without a comment naming what retires it.

You need your own copy of each game. The port reads the disc's files; it does not ship them.

Features

  • Retail 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. When the port and the console disagree, the console is right, and there is a form for reporting it.
  • A remastered version, behind toggles. Everything beyond retail lives in the remastered preset and never touches the faithful one: higher frame caps (75, 120, 144), a native widescreen picture with the HUD anchored to the edges rather than letterboxed, texture packs, and the upscalers below.
  • A Vulkan renderer. The renderer runs on Vulkan (volk, dynamic rendering, one shader source compiled for both backends), with the OpenGL backend kept. The frame is checked against blessed references on both backends on every landing, so a pixel that changes is a pixel someone meant to change.
  • DLSS and FSR. Temporal upscaling through NVIDIA's NGX (DLSS super resolution and DLAA) and AMD's FSR 3.1. Today these are levers in the debug window; their menu rows are on the way.
  • Cutscene upscaling. The in-engine movies, encoded for a 2005 television, can be upscaled by a small neural network at play time on GPUs that can afford it. Opt-in, and a debug window lever today.
  • A debug window. On a debug boot, F3 opens a window with the frame's timing, the renderer's buckets, the loader's state, a frame capture tab and a live profiler, for anyone who wants to see what the game is doing.
  • Crash reports that say something. A crash on the GOAL side writes a block with the registers, the stack and the GOAL symbols around it; the log folds repeats, names its subsystem and thread on every line, and audits every level heap at each load.
  • A launcher. Phaethon's launcher imports the disc, extracts and builds the game data, keeps the runtime up to date, and holds the settings, including the optional tool packs.

Status

Game State
Jak X: Combat Racing Playable: the story, the races and the arenas run; bring-up work continues on the remaining minigame and event roads (the open items are on the bring-up milestone).
Jak and Daxter Runs, with retail-behavior fixes carried here.
Jak II Runs, with retail-behavior fixes carried here.
Jak 3 Runs, with retail-behavior fixes carried here.

Windows is the platform the port is built and played on daily. A Linux build compiles in CI on every landing and boots. macOS and the Steam Deck are on the roadmap.

Getting started

The quickest road is the launcher: install it, point it at your disc image, and it does the rest (extraction, the build of the game data, the first launch). The first release is not cut yet; until it is, the launcher comes from its repository and the game from a source checkout.

To run from a source checkout instead, see Building and then the bring-up quickstart, which walks through extracting a disc, compiling the game and booting it with the REPL attached.

Building

Everything is wrapped in Taskfile. You need a C++ toolchain (on Windows the Visual Studio C++ build tools or LLVM, on Linux clang or gcc), CMake, Ninja, Python 3 and Taskfile; the per-OS steps, including the one-line package install for each, are under docs/setup.

task set-game-jakx            # or jak1, jak2, jak3
task gen-cmake-release        # configure into out/build
task build-release            # build gk, goalc, the decompiler and the tools
task extract                  # decompile and extract the disc in iso_data/jakx
task repl                     # the compiler's REPL; (mi) builds the game
task run-game                 # the runtime; boots the game from the REPL's build

task --list-all prints every task. The decompiler's configuration lives under decompiler/config/<game>/, the game's GOAL source under goal_src/<game>/, the compiler under compiler/, the runtime under runtime/, and the assets the programs read at run time under assets/. docs/project-overview.md describes the tree.

Contributing

Work here moves ticket first: file an issue through one of the forms, cut a branch from develop, and open a pull request with the template. AGENTS.md is the standard every change meets: evidence at the artifact rather than the exit code, guesses marked as guesses, and a boot or a capture for anything that reaches the picture. Retail divergences, crashes, performance and feature requests each have their own form, and docs/recipes/how-work-moves.md has the branches, the labels and the way a reviewed change rides a train onto develop.

On AI. This project moves at the pace it does because most of its work was done with AI assistance: the decodes censused, the landings transcribed, the reviews read from three angles, the trains judged. That is a disclosure and a claim in one, and the claim stands on the evidence trail every change carries rather than on anyone's word. Contributions made with an AI assistant are encouraged here, for thoroughness if for nothing else, and if you believe the work cannot hold up, the fastest way to show it is to bring your own. Every contribution is disclosed in the commit, held to the same evidence standard, and judged by what it does: a translation, a landing or a fix is read for whether it is right, not for how it was produced. Nobody is turned away for the tools they used.

By contributing, you license your contribution to the project under the same terms as the rest of Phaethon's own work (the License section below), so the whole stays under one set of terms. Your authorship stays in the history; the terms are the project's.

No contribution is answered with contempt or waved away. A pull request or an issue that is not ready gets a reply saying what would make it land: the reading that is missing, the form it should take, the issue it should cite. "Don't bother" is not an answer anyone gets here; "here is what it needs" is.

This fork does not send work upstream and does not take upstream's; it is its own line.

Credits

Naughty Dog wrote the games. The OpenGOAL contributors recovered the GOAL language, wrote the decompiler, the compiler and the runtime this port is built on, and ported the trilogy first. This fork stands on that work.

Jak X: Combat Racing and the Jak trilogy are owned by Naughty Dog and Sony Interactive Entertainment. This project is not affiliated with either, and no game data is distributed here: everything the port reads comes from your own disc.

Third-party notices ship with the port and are kept under docs/notices: NVIDIA's DLSS notices in dlss.md, AMD's FSR notices in fsr.md, the two typefaces the debug window draws with in fonts.md, and the cutscene upscaler's weights, Philip Hofmann's 2xNomosUni_compact_multijpg_ldl under CC BY 4.0, in fmv-upscale.md.

License

Two licenses cover this repository, by who wrote what:

  • Phaethon's own work, everything this fork added since it left OpenGOAL's jak-project, is licensed under the PolyForm Strict License 1.0.0. You may use it; you may not distribute it or make changes or new works based on it. The source is here to be read, built and played, not taken.
  • The code inherited from OpenGOAL stays under the ISC License with the OpenGOAL Team's copyright notice, as that license requires.

The games' own code, recovered from the discs, belongs to its makers; this repository ships none of their data.

Phaethon is a hard fork of OpenGOAL's jak-project. Naughty Dog made the games; you need your own copy of each. built from the wiki · 27 Sep 2026
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