# n64recomp/n64recomp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/n64recomp-n64recomp).**

7,702 stars · 418 forks · C++ · mit

## Links

- GitHub: https://github.com/N64Recomp/N64Recomp
- awesome-repositories: https://awesome-repositories.com/repository/n64recomp-n64recomp.md

## Description

N64Recomp is a static recompiler and binary-to-C translator designed to convert Nintendo 64 machine code and MIPS architecture binaries into C source code. This system functions as a game console decompiler that enables the native execution of legacy binaries on modern platforms by eliminating the need for runtime interpreters.

The project distinguishes itself by translating specialized RSP microcode into executable source code to replace traditional microcode emulation. It employs a system of relocation macros and lookup tables to resolve relocatable memory overlays and dynamic program sections.

The toolset includes capabilities for binary function patching and the isolation of modified functions into separate files, allowing original logic to be overridden via a linker. It can generate single-file outputs to accelerate the patching process during translation.

## Tags

### Programming Languages & Runtimes

- [Static Binary Translation](https://awesome-repositories.com/f/programming-languages-runtimes/static-binary-translation.md) — Converts Nintendo 64 machine code binaries into C source code to enable native execution on modern platforms.
- [AOT Binary Recompilation](https://awesome-repositories.com/f/programming-languages-runtimes/aot-binary-recompilation.md) — Implements ahead-of-time translation of guest machine code into host-compatible C code to eliminate runtime interpretation.
- [MIPS Static Recompilers](https://awesome-repositories.com/f/programming-languages-runtimes/mips-static-recompilers.md) — Transforms MIPS architecture binaries into C code while resolving relocatable memory overlays and function lookups.
- [C Source Translators](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/c-source-translators.md) — Translates binary files into static C source code to execute programs on different platforms without interpreters. ([source](https://github.com/N64Recomp/N64Recomp/blob/main/README.md))
- [Binary-to-C Translation](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/c-source-translators/binary-to-c-translation.md) — Converts compiled binary instructions and microcode into static C code to eliminate the need for runtime interpreters.
- [Microcode Translation](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/source-to-c-transpilers/microcode-translation.md) — Translates specialized RSP microcode into executable C source code to replace traditional microcode emulation.
- [Function Overriding](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/linkers/function-overriding.md) — Provides a system to isolate modified functions into separate files to override original binary logic via the linker.

### Development Tools & Productivity

- [Binary Patching and Recompilation](https://awesome-repositories.com/f/development-tools-productivity/java-reverse-engineering-tools/binary-patching-and-recompilation.md) — Translates Nintendo 64 binary machine code into C source code for native execution on other platforms.

### Operating Systems & Systems Programming

- [Address Resolution Mapping](https://awesome-repositories.com/f/operating-systems-systems-programming/address-based-logic-emulation/address-resolution-mapping.md) — Maps guest memory sections to host addresses using a coordinated system of lookup tables and offset macros.
- [Relocation Mechanisms](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-analysis-capabilities/binary-analysis-tools/cross-architecture-analysis-tools/relocation-mechanisms.md) — Uses relocation macros and lookup tables to resolve dynamic memory addresses for relocatable program overlays.
- [Game Console Decompilers](https://awesome-repositories.com/f/operating-systems-systems-programming/game-console-decompilers.md) — Functions as a decompiler that converts legacy console binaries into source code to enable high-performance native ports.
- [RSP Microcode Translation](https://awesome-repositories.com/f/operating-systems-systems-programming/instruction-translation-accelerators/dynamic-binary-translators/rsp-microcode-translation.md) — Translates RSP microcode binaries into source code for executing signal processing routines on target platforms. ([source](https://github.com/N64Recomp/N64Recomp/blob/main/README.md))
- [Nintendo 64 Recompilation](https://awesome-repositories.com/f/operating-systems-systems-programming/nintendo-64-recompilation.md) — Provides a specialized toolset for converting Nintendo 64 binaries and microcode into native C source code.
- [Binary Instruction Patching](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-instruction-patching.md) — Provides capabilities to modify specific instructions or replace entire functions using a configuration file. ([source](https://github.com/N64Recomp/N64Recomp#readme))

### Part of an Awesome List

- [Game Engine Porting](https://awesome-repositories.com/f/awesome-lists/devtools/game-engine-porting.md) — Enables the movement of legacy game logic to modern platforms by translating binaries into native code.

### Game Development

- [Microcode Emulation Replacement](https://awesome-repositories.com/f/game-development/microcode-emulation-replacement.md) — Translates signal processing microcode into C to improve performance and accuracy over traditional emulation.

### Software Engineering & Architecture

- [Modified Function Isolation](https://awesome-repositories.com/f/software-engineering-architecture/smart-contract-libraries/function-overrides/modified-function-isolation.md) — Outputs specific functions into separate files to override original logic with modified versions via a linker. ([source](https://github.com/N64Recomp/N64Recomp/blob/main/README.md))
