Video summary

N64 : Decomp vs Recomp vs Ports Explained

Main summary

Key takeaways

Technology

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).
  • 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)

Original video