Jak and Daxter: The Precursor Legacy

Precursor

An unofficial Android fork of OpenGOAL, the Jak and Daxter decompilation. It adds an ARM64 back end to OpenGOAL's compiler, so the game runs as native code. Jak 1 reaches early gameplay at about 60 FPS. Jak II and Jak 3 boot but are further behind.

Original Dev: Naughty Dog
Port Maintainer(s): thebardockgames, OpenGOAL Team

What You Need

  1. Requires a disc image (ISO) of your own PS2 copy (PAL, NTSC or NTSC-J). The PS3, PS4 and PS5 versions don't work.

    • Jak and Daxter PS2 ISO
    Verify Your Files (Client-Side) 100% In-Browser
    Privacy guarantee: Files never leave your device. File names, headers, and checksums are checked locally in your browser.

    Drag & drop file(s) here or browse from your device

    Matches your files against this port's requirements and calculates SHA-256 hashes.

    File Requirements Checklist (1 required):

    • Jak and Daxter PS2 ISO Pending file
  2. Target hardware: Snapdragon 865 / 8 Gen 2 or newer or equivalent (64-bit ARM64, Android 9+).

  3. Controls ready out of the box

    On-screen touch controls work immediately. Physical Bluetooth and USB-C controllers are also supported.

Porting Naughty Dog’s Custom GOAL Lisp Compiler to ARM64 (Precursor)

Jak and Daxter: The Precursor Legacy (2001), Jak II (2003), and Jak 3 (2004) are unique in video game engineering history: Naughty Dog co-founder Andy Gavin wrote more than 95% of the trilogy’s engine and gameplay code in GOAL (Game Object Assembly Lisp), a custom Lisp dialect that compiled directly into PlayStation 2 Emotion Engine (MIPS III + VU0/VU1 vector unit) machine instructions.

The upstream OpenGOAL project spent years decompiling the PS2 binaries back into readable GOAL source code and building a modern compiler (goalc) targeting desktop x86-64 processors with OpenGL 4.3. Because goalc only emitted x86-64 instructions, OpenGOAL could not run natively on Android phones or handhelds without slow x86 container layers.

Precursor (maintained by thebardockgames as an independent, experimental fork) extends OpenGOAL’s compiler with a native 64-bit ARMv8-A (aarch64) code generator and ports the custom PS2 renderer (tfrag, tie, shrub, merc, and ocean render buckets) from desktop OpenGL 4.3 to OpenGL ES 3.2.

Current Alpha Playability Status Across the Trilogy

Because translating custom PS2 Vector Unit (VU1) microprograms and Lisp register conventions to ARM64 NEON SIMD instructions is an ongoing engineering effort, playability varies by title:

  • Jak and Daxter: The Precursor Legacy (jak1): Boots through the title screen, opening cutscene, Geyser Rock, and Sandover Village at around 60 FPS on modern Snapdragon hardware with working audio and controls, though graphical shader bugs and mid-campaign crashes can still occur.
  • Jak II (jak2): Reaches the opening Prison escape and Haven City streets, but exhibits more frequent crashes and unfinished renderer passes.
  • Jak 3 (jak3): Early experimental boot support; hangs after the initial cutscene and is not yet playable.

(Note: Precursor is an independent community fork and is not supported by the upstream OpenGOAL desktop team; always report Android-specific issues directly on the Precursor GitHub repository).

On-Device ISO Extraction & Compilation Workflow

Unlike the desktop OpenGOAL setup, Precursor includes an on-device extractor and GOAL compiler right inside the Android APK:

  1. Prepare Your Retail PS2 .iso Image: Create an unmodified .iso backup from your own retail PlayStation 2 disc of Jak and Daxter: The Precursor Legacy (NTSC-U, PAL, or NTSC-J revisions are supported; PS3/PS4 remaster files are not compatible).
  2. Install the Precursor APK from GitHub Releases and copy your .iso file to internal storage.
  3. Run On-Device Extraction & Compilation: Select your .iso inside the Precursor launcher. The app unpacks the PS2 .DGO/.CGO archives, decompiles the textures and geometry, and compiles the GOAL object files into native ARM64 packages directly on your phone (allow 3 to 8 minutes during first-time setup).

Controls & Hardware Requirements

Requires a 64-bit ARMv8 device running Android 9+ with full OpenGL ES 3.2 support (Tier 3 or Tier 4 chipset such as Snapdragon 865, 8 Gen 2, or 8 Gen 3 recommended). Includes an on-screen touch overlay that automatically hides when an Xbox, PlayStation, or handheld gamepad is active.