Nintendo 64 (Project Reality) Reversing
Edit on Github | Updated: 1st May 2026Introduction to Hacking the Nintendo 64
Interested in learning more about the the N64? Excellent! This section will guide you through the basics, starting from basic MIPS assembly language all the way to an introduction to reverse engineering your first game!
N64 Reversing Introduction
For an introduction on reverse engineering N64 games check out this post.
Nintendo 64 Emulation
We recommend using the Reversers Edition of the Mupen64+ emulator as it provides useful features for reverse engineering such as auto detection of functions.
Nintendo 64 Assembly Language (MIPS)
Although most Nintendo 64 games are written in C or C++, they all get compiled down to MIPS assembly code, so this is what you will mainly be working with when reverse engineering, so it is good to at least have a basic knowledge before getting started.
Nintendo 64 Boot Code
Every game produced for the N64 required a little piece of code known as the “bootloader” or boot code to initialise the state of the console. You don’t have to know anything about this, apart from that it exists and tends to execute in the address space 0xa4000000 to 0xa4000b64.
N64 Games
Prototypes & Demos
Although Nintendo 64 didn’t have a massive library of games compared to its rival the Playstation, there has been a huge interest in finding and preserving early prototypes of the games, which are normally found on development (Flash) cartridges.
Nintendo 64 Exclusives
When it comes to finding a game to reverse engineer it can be helpful to look at games that are cross-platform to compare builds.
But the most valuable reverse engineering projects tend to be the platform exclusives as these are games people can no longer play on modern consoles.
Wikipedia also maintains a list of N64 exclusives - Nintendo 64-only games - Wikipedia.
N64 Limit Pushers
The Youtuber Sharopolis has an excellent video talking about the games that really pushed the limits of the Nintendo 64 Hardware.
While the N64 is good at rendering 3D graphics, it struggles with textures due to its 4KB texture cache limitation. This results in the console being unable to display high-resolution detailed textures. However, the N64 can filter low-resolution textures, creating a smoother appearance. Beetle Adventure Racing exploits this feature to create realistic environments.
One of the standout visual features of the game is the reflection effect on the cars, achieved through a technique likely involving a frame buffer as a texture. The game also showcases other graphical effects such as particle effects, motion blur, fog, and real-time shadows. Beetle Adventure Racing maintains a solid framerate, though it doesn’t reach 60 FPS.
F-Zero
F-Zero is a standout N64 game with a consistent 60 frames per second, which was rare for games in that era. Smooth action was important for this fast-paced game, and it achieved this by keeping the graphics simple, focusing on essential elements like the track and cars. Nintendo’s expertise made the simplicity feel like a stylistic choice.
Factor 5 games
Factor 5 developed three visually impressive N64 games: Rogue Squadron, Star Wars Episode 1: The Battle for Naboo, and Indiana Jones and the Infernal Machine. These games featured high polygon environments, excellent lighting and shadow effects, great character animations, and higher resolutions. Factor 5 achieved these improvements through custom micro code for the N64’s reality signal processor, allowing for better performance and more complex scenes.
Resident Evil 2
The most impressive console port of all time is Resident Evil 2 on the N64. It was a surprise to see on the N64 due to storage space limitations, as N64 cartridges maxed out at 64 megabytes, while CD ROMs on PlayStation and Sega Saturn had capacities over 600 megabytes. The two-disc game was compressed to fit in a 64-megabyte cartridge through data compression techniques. Comparing the two versions, the PlayStation’s cutscenes look slightly better, but the N64 version has higher quality music. The N64 managed to achieve full motion video through its powerful CPU and Graphics co-processor.
Rare games
Rare games, particularly Perfect Dark, pushed the N64 to its limits, making brilliant use of limited textures, layering, and variety. Perfect Dark showcased a range of impressive effects like volumetric lighting, corona effect, and a reflective floor in the main hub. Despite its lower resolution and frame rate compared to Factor 5 games.
Making of Goldeneye 007
The Youtuber OnaRetroTip has an excellent documentary about the making of Goldeneye 007 which goes into incredible detail about the development of the game.
It mentions a few interesting things:
- The working ZX Spectrum emulator added to the game by Steve Ellis.
- They hired a number of the developers through adverts in the EDGE magazine.
- They used Alias Wavefront Version 4 (later became Maya) which Brett Jones needed to learn from scratch from Video Tapes and a Book. (I wonder which book it was?!)
- They used the ONYX 2 Reality Engine which had a N64 simulator on it, it also had a networked flight simulator on it with a dog fighting game mode!
- They created a Virtual Memory system for the N64 to swap memory in and out of the cartridge.
- They created a scripting system for the enemy AIs which were a list of instructions (byte data) which was simpler than writing it in C.
- Mark Edmonds had to create a pipeline for converting the graphics/animations so they could be played on the console.
- They used NinGen (Multigen) to place all the objects in the level.
N64 Game Reverse Engineering
Recently there has been a growing interest in reversing Nintendo 64 games back to source code that when compiled is binary-compatible with the original ROM.
These projects take a very long time but in the end are hugely rewarding, they result in full source code that can be compiled and even ported to other hardware.
With the source code available it is trivial to understand how the game works and can be the basis for future game mods that are many times more complex.
This can be beneficial for game developers and anyone who is interested in how games are made, they can also be beneficial for speed runners due to the better understanding of how to exploit the game.
Super Mario 64
Mario Kart 64
Legend of Zelda Ocarina Of Time
Legend of Zelda Majora’s Mask
Game Modding
Unlike a full game reversal project a Mod goes in the opposite direction by changing the original game to add new levels, textures, music and even alter the games code and physics engine.
The Game Modding category also includes translation patches to convert the game’s text to another language, which can bring many region-exclusive games to a world-wide audience.
HD Texture Packs
Nintendo 64 games can look a bit dated due to their low resolution textures, but it is possible to replace these textures with High Definition versions using an emulator!
HD Texture pack showcase
N64 Cheats, Secrets & Glitches
Whether you just want to get further in your favourite game, unlock hidden content or even completely corrupt/glitch the game, you can use a cheat cartridge such as Action Replay or emulator memory editing to change games in real-time.
Mystical Ninja N64 Memory ROM Editing
60namrruC has a video covering Mystical Ninja N64 Memory ROM Editing utilizing CheatEngine alongside the Mupen64 emulator. The author goes over the progress made in reverse engineering and understanding the memory layout of the Mystical Ninja Starring Goemon ROM file, showcasing findings that are documented in text files and a collaborative CheatEngine table.
Mupen64 allocates a specific block of host PC memory to simulate the N64’s physical RDRAM.
Rather than statically decompiling the ROM binary block by block, he attaches CheatEngine directly to the running MuPen64 executable. This hooks into the emulator’s memory space, allowing the user to view, freeze, or write over raw hexadecimal values in real-time as the N64 game executes instructions.
State Isolation and Sub-Searching
To identify unknown memory addresses governing specific game mechanics (such as Goemon’s health, Ryo currency, or X/Y/Z coordinates), the researcher uses an iterative scanning technique known as sub-searching.
- First, an initial broad scan is made for a known integer or float value (e.g., current health).
- The researcher then intentionally alters that state in the emulator (e.g., taking damage).
- A secondary “sub-search” is executed exclusively within the previous subset of results for the new value. This rapidly filters out dynamic background data, narrowing thousands of addresses down to the exact hex offset governing the targeted mechanic.
Documenting the ROM Structure
Once dynamic RAM addresses are confirmed, the technical hurdle is understanding how these align with the data structures loaded from the game cartridge. The progress showcased involves taking these isolated addresses and compiling them into a collaborative CheatEngine table (.CT file) and documented text maps. This shared structural blueprint allows multiple reverse engineers to manipulate game logic and aids in broader N64 decompilation efforts.
N64 Anti-piracy
The main Nintendo 64 anti-piracy measure was the enhanced CIC chip based on the Super Nintendos CIC chip design but far more secure.
This was a mechanism to prevent cartridges being produced without Nintendo’s licensing fee.
3rd Party tricks for unlicensed Carts
During the N64’s lifetime there were various unlicensed devices that ignored the CIC chip such as game backup devices (e.g Bung’s Dr V64), game cheat cartridges (e.g Equalizer/Action Replay) and region unlockers (Passport Plus). Most required a legitimate cartridge to be inserted into the back and used that for the CIC chip communication.
Piracy Devices
During its lifetime the Nintendo 64 had its share of piracy problems, although no where near the extend of its competitor the Sony Playstation it was still possible to backup and run backup games via hardware such as the Doctor V64.
Development Kits (Hardware)
Development kits are released to game developers before the launch of the system to allow games to be developed for the system’s launch. These systems would evolve over the systems lifespan and contained useful features for debugging and optimising games for the platform. These systems were not just limited to the official offerings by Nintendo as a few other publishers had their own versions of development hardware.
Official Development Kits
The official development kit for the N64 was a partnership between SGI and Intelligent Systems and the hardware evolved over time. The first development kit released was a modified SGI ONYX provided by SGI and contained similar hardware to the final N64.
3rd Party Development Kits
There were a few third party developers who created their own custom development kits for the Nintendo 64. One of the main developers for 3rd party devkits was SN Systems with their Maestro64 aimed at 3D and Sound artists and with a much cheaper price tag than an official N64 devkit.
Software Development Kits
Official Software development kit
A version of the Nintendo 64 SDK was released on the internet allowing you to use the same tools that your favourite developer used back-in-the-day. This can be useful if you are aiming for a 100% accurate decompilation of a game that can be compiled to the byte-identical ROM.
Official SDK Setup Instructions
3D Modelling tools
During the Nintendo 64s lifetime 3D modelling tools evolved at an incredible pace. 3D games were the new trend which pushed developers into creating new 3D games in order to get published.
Nintendo 64 Sound and Music
The Nintendo 64 has some of the most beloved video game soundtracks with classics such as Banjo-Kazooie, Buck Bumble, Super Mario 64 and many more.
Retail N64 hardware
When the N64 was launched it was the most powerful game console on the market and brought incredible processing power into the home. The hardware was state of the art and exploring how it was developed is a fascinating topic.
Console
The Console itself was built by a partnership between Nintendo and SGI and contained a 64-bit MIPS CPU along with a custom chip known as the Reality Co-Processor which handled graphics and vector calculations along with a few other functions.
Controller
The N64 controller was a very distinctive shape, some people loved it and others hated it, but we can all agree it was a unique experience. If you are interested in how the controller hardware works then check out this excellent article by HowStuffWorks. Controller - How N64 Works | HowStuffWorks
Cartridge
Nintendo made the controversial decision to continue using cartridges for its next-gen console after the Super Nintendo, this has the benefit of excellent loading times compared to CDs but came at the cost of a smaller capacity and higher cost to produce.
Source Code
Official Source Code
Up until very recently there has been little official N64 source code released, just a few examples that come with the released SDKs. This changed very suddenly when 2 retail games had their source code leaked at roughly the same time, these games were Turok - Dinosaur Hunter and Mortal Kombat 64.
Studying the source code for these games can give vital insight into what it was like developing games back in the mid to late 90s when the Nintendo 64 was at the cutting-edge. The information gained from this can be very useful to help you reverse engineer the games back into retail-like source code.
Homebrew Source Code
There are some fantastic open source projects in the Nintendo 64 homebrew community, these range from tech demos to full games and everything in between. One excellent example of source code provided by the homebrew community is Peter Lemon’s N64 Bare Metal Mips programming examples: PeterLemon/N64: N64 Bare Metal Mips Assembly Programming
Emulator Source Code
One of the best ways to learn how the Nintendo 64 worked is to take a look inside the source code of an emulator, by modifying it and seeing the results on your favourite games you can start to understand why it worked the way it did.
Writing a N64 Emulator in Rust
The Youtuber Ferris (ferrisstreamsstuff) has an excellent playlist taking you right from the start to a working N64 emulator:
All Posts
In early May 2020 a leak of Nintendo Source Code hit the popular image board 4chan. The material contained in this leak was obtained by a young hacker known as... ...
Datel Action Replay Professional V-Ram functionality You could press a “Freeze button” on the Action Replay to “see images not normally visible during playing of the game”. The video seems... ...
Importing a Nintendo 64 ROM Download and Install Ghidra Before following the steps on this post please make sure you have a working Ghidra environment setup. So you should be... ...
On the 25th of July 2020, the day after the Gigaleak, its sequel Gigaleak 2 was uploaded to a thread on 4chan. This is a continuation of the leaks that... ...
Introduction to Mario Kart 64 The Game was made by Nintendo EAD and was released in Europe on June 24th, 1997. The development team consisted of 8 programmers under the... ...
Memory Hacking One excellent way to get started modifying your favourite game is to use memory hacking techniques. By learning what memory locations are used for specific functions you can... ...
Introduction Game corruption has become a hot topic recently due to many you tubers playing through games that have in some way had their memory corrupted. This practise can cause... ...
Introduction Mupen64+ Reverser Edition (RE) is a fork of the Mupen64+ Nintendo 64 emulator tailored for reverse engineering. The main aim is to generate information that will be useful for... ...
Introduction The Mupen64+ emulator is one of the best open source emulators available for the Nintendo 64, so if you are interested in emulator development or how the Nintendo 64... ...
Introduction to Nintendo 64 Bootcode In this post we will be exploring the Nintendo 64 Bootstrapping Code or Boot code for short. The boot code is a short piece of... ...
The website N64Squid has a page dedicated to Nintendo 64 development hardware that is well worth a look: Nintendo 64 development hardware - N64 Squid. This page aims to compliment... ...
The Nintendo 64 hardware brought incredible processing power into players homes with its 64-bit architecture and state of the art graphics. In order to pull this off Nintendo worked with... ...
Introduction Fraser N64 has created a series of YouTube videos where he teaches N64 MIPS programming from the ground up. This page is designed to act as notes as you... ...
Introduction Unlike most PC hardware at the time the Nintendo 64 has the advantage of having its own stand alone graphics processor known as the Reality Co-Processor (RCP). This freed... ...
Introduction Unlike most PC hardware at the time the Nintendo 64 has the advantage of having its own stand alone graphics processor known as the Reality Co-Processor (RCP). This freed... ...
This post will give a brief introduction for the tools and techniques you need to start reverse engineering and decompiling a N64 Game. Part 1 - Looking for Initial Clues... ...
This post covers the Official Nintendo 64 Software Development kit that was sent to developers is actually split among a number of different discs due to its size. These Discs... ...
Decoding Audio on the RSP The Reality Signal Processor or RSP is not only used for the games graphics, it is also used for the games audio and so the... ...
During the Nintendo 64s lifetime 3D modelling tools evolved at an incredible pace. 3D games were the new trend which pushed developers into creating new 3D games in order to... ...
The Oman Archive was a leak of Nintendo Technical documents from a source inside SGI in late 1999. It was uploaded to the internet under the name oman.rar but has... ...
Have you ever wondered what exactly is inside those retro game Cartridges (ROMs)? In this post we will find out the purpose of ROM cartridges and how they worked. Advantages... ...
SN64 was a software development kit for the Nintendo 64 created by SN Systems and was especially popular with 3rd party game developers. Introduction Sn Systems are a company that... ...
Introduction to Super Mario 64 Reversing & Modding The Game was made by Nintendo EAD and was released in Europe on March 1st, 1997. The development team consisted of 2... ...
Introduction to Turok 64 Game was made by Iguana Entertainment under Acclaim and released on March 4th 1997. The development team consisted of 9 programmers under the lead of Rob... ...
The iQue Player was a sort of plug and play version of the Nintendo 64 system sold in China with its main aim to stop the rampant piracy in the... ...
Drop Z64 files here to view ...
Introduction The Official Nintendo 64 software development kit (SDK) was created by a partnership between Silicon Graphics (SGI) and Nintendo to be released with the development hardware produced by SGI... ...
This guide will presume you have already installed the radare2 suite of binary analysis tools on your computer. Radare 2 supports z64 big endian binaries using the r_bin plugin that... ...