N64Recomp

GoldenEye 007 just hit 100% decompilation, and that changes what people can do with the game: mods that were impossible in an emulator, native PC ports with proper widescreen and framerate uncaps, and reference implementations for future N64 reverse-engineering projects. The tools that made it possible are open source, and if you’ve ever wanted to poke inside an N64 game, they’re the same ones you’d use.

We reviewed 8 desktop apps that make N64 decompilation and porting workflows possible today. Every pick is free, open source, and actively maintained on GitHub.

What to look for in an N64 decompilation app

N64 reverse engineering is unusual because the console targets MIPS III, and the compilers of the era (IDO, EGCS) left specific fingerprints. Modern tooling accounts for that.

Quick comparison table

App Best for Platforms Free plan Starting price/mo Rating
N64Recomp Static recompilation to native binary Windows, Linux, macOS Fully free Free Fast-growing community
splat Binary splitting and asset extraction Windows, Linux, macOS Fully free Free Standard in modern N64 decomps
decomp.me Web-based match-testing playground Web Fully free Free Widely used community platform
mips_to_c Assembly to C conversion Windows, Linux, macOS Fully free Free Long-running decomp tool
IDO recomp Recompiling the original IDO compiler Windows, Linux, macOS Fully free Free Enables match-first workflows
ares Cycle-accurate N64 emulator for testing Windows, macOS, Linux Fully free Free High-accuracy emulator
GloverN64 Reference N64 port project Windows, macOS, Linux Fully free Free Community project
PermuterPy Automated match-finding via mutation Windows, Linux, macOS Fully free Free Standard in modern decomps

The apps

1. N64Recomp – Best for static recompilation to a native binary

N64Recomp takes an N64 ROM’s MIPS code and rewrites it into LLVM IR, which then compiles to a native x86 or ARM binary. That is what lets projects like Zelda 64 Recompiled and the recent GoldenEye port run at hundreds of frames per second with high-resolution rendering, no emulator required.

Where it falls short: Requires a fully-decompiled game to produce a well-integrated port. Straight ROM-in-recompilation-out works for many games but not all.

Pricing:

Platforms: Windows, Linux, macOS

Download: GitHub

Bottom line: The tool responsible for the current wave of native N64 ports.

2. splat – Best for binary splitting and asset extraction

splat takes an N64 ROM and produces the structured project layout that every modern decomp uses: assembly files split by symbol, extracted assets (textures, music, level data), and a build system that reassembles everything into a matching ROM. Every serious N64 decomp starts here.

Where it falls short: Requires per-game configuration; expect to spend the first week authoring the split file.

Pricing:

Platforms: Windows, Linux, macOS (Python)

Download: GitHub

Bottom line: The first tool you install when starting an N64 decomp project.

3. decomp.me – Best for testing a candidate C function match

decomp.me is a web IDE for decompilation match-testing. Paste in a target assembly function, write candidate C, hit compile, and instantly see whether the compiler produces byte-identical output. It supports N64, GameCube, PS2, and DS targets, and the shared-scratchpad workflow makes collaboration painless.

Where it falls short: Web only; no offline mode. Rate-limited under heavy load.

Pricing:

Platforms: Web (browser-based)

Download: Official site · GitHub

Bottom line: The single most-used tool by active N64 decomp contributors.

4. mips_to_c – Best for turning MIPS assembly into a C draft

mips_to_c produces a readable C draft from a MIPS function. It is not a match generator; the output is a starting point that you then edit and refine until decomp.me reports a match. Saves hours per function on the initial pass.

Where it falls short: Output is a draft. Direct compilation almost never matches without human editing.

Pricing:

Platforms: Windows, Linux, macOS (Python)

Download: GitHub

Bottom line: Cuts the first-pass time on any function that is more than trivial.

5. IDO recomp – Best for reproducing the original N64 compiler

IDO recomp is a static recompilation of SGI’s IDO compiler, the one Nintendo used for most first-party N64 titles. Running the original compiler on modern OSes is what makes byte-perfect matching possible; without it, the decompiler would only produce approximations of the original.

Where it falls short: Only useful if the target game was compiled with IDO. GCC/EGCS games (Rare’s output, including GoldenEye) need different compiler builds.

Pricing:

Platforms: Windows, Linux, macOS

Download: GitHub

Bottom line: Not a decompiler itself, but the piece that makes decompilation deterministic.

6. ares – Best for cycle-accurate N64 verification

ares is a multi-system emulator with cycle-accurate N64 emulation. For decomp work, that accuracy matters: when a candidate rebuild produces a ROM that runs on ares identically to the original, you have real confidence in the match.

Where it falls short: Higher CPU requirements than casual emulators like Project64. Not the choice for pure gameplay.

Pricing:

Platforms: Windows, macOS, Linux

Download: Official site · GitHub

Bottom line: The verification-quality emulator to test rebuilds against.

7. GloverN64 – Best example project to learn from

GloverN64 is one of the growing library of community-driven N64 decomp projects, and its repo is well-organized enough to serve as a reference for how splat, mips_to_c, and IDO recomp fit together in a real build. Reading someone else’s split file is the fastest way to understand yours.

Where it falls short: In-progress; not every function is decompiled.

Pricing:

Platforms: Windows, macOS, Linux

Download: GitHub

Bottom line: Best reference for a beginner setting up a first N64 decomp project.

8. PermuterPy – Best for automating match-finding

PermuterPy mutates candidate C code and recompiles it thousands of times to find variants that produce byte-identical output. When decomp.me says “close but no match”, PermuterPy is what finds the exact statement order or parenthesization the compiler wants.

Where it falls short: Computationally expensive; a permuter run can consume a laptop’s CPU for hours.

Pricing:

Platforms: Windows, Linux, macOS (Python)

Download: GitHub

Bottom line: The tool of last resort on a stubborn function, and the reason completion percentages keep climbing.

How to pick the right one

FAQ

What does it mean for a game to be “100% decompiled”? Every function in the game’s binary has been rewritten in C such that the recompiled output matches the original ROM byte for byte. From there, the codebase can be modified freely.

Is decompiling an N64 ROM legal? Reverse engineering for interoperability is generally protected in many jurisdictions. Distributing the resulting binary (which still contains the original game’s assets) usually is not. Legal treatment varies by country; the decomp projects themselves typically ship code only, expecting the user to provide their own ROM.

How long does an N64 decomp project take? Multi-year efforts by teams of volunteers. Zelda: Ocarina of Time took years; the GoldenEye 007 project ran for around six years.

What is decomp.me and why is it so central? decomp.me is a web IDE that compiles candidate C code and reports whether the output matches a target assembly function exactly. It replaced a lot of ad-hoc bash scripts and made collaboration on match-testing easy.

Can I run the decompiled game on my PC without an emulator? Yes, once a decomp is done and a port is built with N64Recomp or a similar framework. Zelda 64 Recompiled and the GoldenEye port are the current examples.

Do I need to know MIPS assembly to contribute? It helps enormously. mips_to_c and decomp.me lower the bar, but even a basic understanding of register conventions and calling patterns is necessary to make progress on a real function.