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.
- MIPS III support. x86 or ARM disassemblers alone are not enough.
- Handles known compiler idioms. IDO and EGCS produce distinctive output the tool needs to recognize.
- Symbol and split management. A working project needs asset extraction, not just code decompilation.
- Match-testing pipeline. Every function needs a byte-for-byte match check against the ROM.
- Community around the tool. N64 decomp is small enough that a single-maintainer tool going stale matters.
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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:
- Free: Everything
- Paid: Not applicable
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
- If the goal is a native PC port from an existing ROM: N64Recomp.
- If you’re starting a fresh decomp project: splat, then IDO recomp (or the appropriate compiler), then decomp.me and mips_to_c for daily work.
- If you’re trying to match a single function: decomp.me for iteration, PermuterPy when a match is close.
- If you need to verify a rebuild is byte-perfect against a real N64: ares for the runtime check.
- If you’re learning the pipeline from scratch: read GloverN64’s repo before touching your own split file.
- Do not skip splat. Manually editing a monolithic assembly dump is a losing battle at N64 scale.
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.