Video summary
N64 : Decomp vs Recomp vs Ports Explained
Main summary
Key takeaways
Key terms: decomp vs recomp vs port (Nintendo 64 preservation context)
1) Decompilation (decomp)
- What it is: Reverse engineering a compiled binary/ROM back into source code (often C for N64).
- How it’s done: Uses reverse engineering tooling such as Ghidra / IDA Pro, plus community tools that translate MIPS binary data into source.
- Goal/meaning of “100%”: A “complete” decomp means the rebuilt code logic matches the original ROM exactly—even if the function names are only generic.
- Why it’s slow: Producing human-readable and accurate code that compiles back to an identical ROM can take years.
- Example referenced: A GitHub “N64 decomp” landing page listing decomp projects. Example: Banjo-Kazooie “100%” decompiled source available on GitHub.
2) Port
- What it is: Taking decompiled (source) code and adapting it to run on a target platform with modern subsystems.
- What gets added/implemented: A back-end renderer, audio subsystem, input handling, and other platform-specific systems so the game becomes playable on (e.g.) Windows/PC.
- Example referenced (Perfect Dark): A GitHub repo described as a work-in-progress port of a Perfect Dark decomp.
- Port enhancements listed include:
- Mouse look
- Dual analog controller support
- Widescreen up to 4K
- Configurable field of view
- Up to 60 FPS
- Mod support
- General “modern gameplay experience” improvements (noting N64 originally ran around ~20 FPS).
- Port enhancements listed include:
- Important clarification: Decompilations/ports are not exclusive to Nintendo 64—similar workflows exist for other games/systems too.
3) Recompilation (recomp / “recomp tool”)
- What it is: Combines decomp + porting into a single workflow.
- Core idea: Statically recompiles N64 binaries into autogenerated C code quickly (faster than full human-crafted decomp).
- How it runs on Windows/PC:
- The autogenerated C is compiled on Windows and linked with an N64 runtime.
- The runtime provides platform-specific services such as:
- IO / threading
- audio timers
- message cues
- plus hooks for a graphics renderer.
- Renderer example mentioned: RT64 (developed by Dario Sarnó).
- Modding: Mod support can be integrated into the recomp workflow without modifying the autogenerated original recomp code.
- Why we don’t see more recomp projects yet:
- Even though the static recomp is generic, each game still needs per-game adjustments to be release-ready.
- A “straight recomp” without improvements (e.g., no framerate/graphics upgrades) may not beat traditional emulation.
- Games must be updated for:
- high resolutions
- high frame rates
- widescreen aspect ratios
- and other fixes
- Different games may require additional work due to how they render polygons.
- Examples referenced:
- Goon and Dinosaur Planet recompilations released publicly (names explicitly mentioned).
- Mario Kart 64: the speaker claims they could run a recomp tool against a not-yet-fully-100% matched decomp.
- Cross-platform analogy: Sonic Unleashed Recompiled (Xbox 360 title) uses a similar recomp workflow approach.
Overall takeaway
- Decompilation = compiled ROM → accurate source code (slow, years; “100% match” refers to ROM logic correctness, not “pretty names”).
- Port = decompiled source → make it playable on a new platform using modern renderer/audio/input systems.
- Recompilation = automates much of both (decomp + port in one), producing faster-to-generate C via a runtime-based approach—but still requires per-game tuning for real improvements.
Main speakers / sources (as referenced)
- Speaker/host: The narrator of the episode (no name provided in the subtitles).
- Tools/projects/sources mentioned:
- Ghidra, IDA Pro
- GitHub (various “N64 decomp” landing pages/repos)
- RT64 renderer by Dario Sarnó
- Jack project / OpenGO (Jack and Daxter decomp + PC recomp/port effort)
- N64 runtime (used in recomp workflow; no individual author named)
- Examples: Banjo-Kazooie, Perfect Dark, Go / OpenGO, Mario Kart 64, Goon, Dinosaur Planet, Sonic Unleashed (Recompiled)