Nintendo 64 emulators

From Emulation General Wiki
Jump to navigation Jump to search
Nintendo 64
Nintendo64Console.png
Developer Nintendo IRD
Type Home video game console
Generation Fifth
Release date JP: June 23, 1996

NA: September 29, 1996
EU/AU: March 1, 1997

Discontinued WW: April 30, 2002
Predecessor Super Famicom / Super NES
Successor GameCube
Emulated
For emulators that run on the Nintendo 64, see Emulators on N64.

Nintendo 64 is a 64-bit fifth-generation console released by Nintendo on September 29, 1996, for $199.99.

Nintendo was the second company approached by Silicon Graphics Inc. (SGI), which wanted to roll out its previously enterprise-only technology in the consumer space. They originally pitched their idea to Sega, but it is assumed that Nintendo's offer was more appealing. With the NEC VR4300 CPU clocked at 93.75 MHz, 4 MB of RAM, and an SGI RCP GPU at 62.5 MHz, Nintendo had finished much of the hardware at least a year before launch, preventing video games from needing drastic rewrites due to architectural changes. A separate add-on was later released called the "Expansion Pak" that added another 4 MB of RAM, totaling to 8 MB. The development workstations were often Unix-based, which would later help reverse-engineers in some projects.­­

Unlike competitors such as the PlayStation, the N64 used cartridges instead of CDs. While a big advantage was that data could be read faster than CDs, meaning load times were minimal or even non-existent, But the main disadvantages of cartridges was the small data capacity, and CDs were cheaper to manufacture, which meant that many third party developers switched to the PlayStation.

Nintendo 64 emulator development began during the console's lifespan, with UltraHLE being a landmark release in emulation. Despite the impressive feat of playing retail games on a standard computer of the period, emulation of the console had serious issues for nearly the next two decades. This was largely due to the "plugin hell" exacerbated by closed-source development practices, an over-reliance on the leaked "Oman archive" documentation that hindered true reverse engineering of console behavior, and the use of endless hacks and shortcuts due to the weak hardware of the time. However, newer open-source emulators and plugins now offer greatly improved accuracy alongside visual enhancements.

Contents

Emulators[edit]

Name Platform(s) Latest version Hardware
variants
Hardware features
and peripherals
Enhancements Compatibility Accuracy License Active Recommended
x86
ares       git Artifacts
v141
~ ~ 96%
867 out of 900 reported titles
High ISC (Permissive)
simple64     2024.11.1
GLideN64
~ ~ ? High GPLv3 (Copyleft)
Mupen64Plus-Next         libretro core
Parallel Launcher Fork
~ ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) ~
RMG     0.6.6 stable
0.6.6 -dev
~ ~ ?
(Plugin dependent)
Plugin dependent GPLv3 (Copyleft) ~
BizHawk
(Mupen64Plus)(ares)(MAME)[N 1]
    Dev builds
2.10-rc2
~ ~ ~ ?
(Plugin dependent)
(Core dependent)
Plugin dependent
Core dependent
MIT
GPL
~
Mupen64Plus       MXE Builds
nightly
~ ~ ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) ~[N 2]
Project64   Rosalie241's MMHD
Nightly
3.0.1
Keygen
~ ~ ~ ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) [N 3]
ParaLLEl-N64         libretro core
Parallel Launcher Fork
~ ?
(Plugin dependent)
Plugin dependent GPLv3 (Copyleft) [N 4]
CEN64       0.3 ~ ? Partial Cycle BSD-3-Clause (Permissive)
MAME         git artifacts[N 5]
0.272
libretro core[N 6]
~ ~ ~ 1%
13 out of 993 reported titles
? GPLv2
BSD-3-Clause
n64     git ? ? ? ✗(WIP)
Kaizen     git ? ? BSD-3-Clause (Permissive) ✗(WIP)
Rokuyon       Jun 10 ? ? GPLv3 (Copyleft) ✗(WIP)
R64Emu       git ? ? GPLv3 (Copyleft) ✗(WIP)
Gopher64     0.1.10 ? ? ? ? ? GPLv3 (Copyleft) ✗(WIP)
1964   1964GEPD
1.1
1.2 r146
~ ? Low GPLv2 (Copyleft) [N 7]
DaedalusX64     git ~ ? ? GPLv2 (Copyleft) ~
Sixtyforce   2.0.2 ? ? Proprietary
Larper64       0.4 ? ? Proprietary
UltraHLE     1.0 ? Low Proprietary
Ryu64       git ? ? Unlicense (Public domain equivalent)
ARM
Mupen64Plus-Next     libretro core ~ ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft)
Mupen64Plus FZ   3.0.322 (beta) git ? ~ ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft)
Mupen64Plus     Pandora
Pyra
? ? 23%
45 out of 194 reported titles

(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) ~
Consoles
Mupen64Plus-Next     RetroArch ~ ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft)
DaedalusX64  
 
 
 
PSP
3DS
VitaGL
PS2
~ 49%
234 out of 473 reported titles (Vita)

61%
97 out of 157 reported titles from 1.1.6-1.1.8 (PSP)

27%
71 out of 260 reported titles (3DS)

? GPLv2 (Copyleft) ~
(PSP)
Not64       20240615 71%
303 out of 424 reported titles

(Plugin dependent)
? GPLv2 (Copyleft)
Virtual Console   N/A ? ? Only for selected titles (Wii) Game dependent Proprietary
Virtual Console   N/A ? ? Only for selected titles (Wii U) Game dependent Proprietary ~
Nintendo Switch Online (Hovercraft)   N/A ~[N 8] Only for selected titles Game dependent Proprietary ~
Surreal64 CE   Beta 6.0 76%
236 out of 311 reported titles

(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) ~
mupen64-360   0.96 beta ?
(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) ~
Wii64         1.1 beta git 71%
303 out of 424 reported titles

(Plugin dependent)
Plugin dependent GPLv2 (Copyleft) ~
  1. MAME core for Aleck 64 only.
  2. RMG is recommended instead of using Mupen64Plus MXE builds because RMG comes bundled with GLideN64, angrylion's RDP Plus and ParaLLEl-RDP for video plugins, and mupen64plus-hle-rsp, CXD4 and ParaLLEl-RSP for RSP plugins. Mupen64Plus experience is also front-end dependent.
  3. Project64 accurracy is plugin dependent and below than Ares, simple64, and Mupen64Plus and related forks. Its official GUI is also not only obsolete but tedious having pay-to-remove long pop-ups asking for support. Project64 should now only be considered for debugging purposes.
  4. Obsolete and replaced by Mupen64Plus-Next. ParaLLEl-N64 should now only be considered for older ROM hacks that don't play well with the newer, more accurate plugins.
  5. CI-Windows CI-Linux CI-Macos
  6. As 0.251, 0.139 (2010), 0.78 (2003), 0.37b5 (2000)
  7. 1964GEPD is only recommended to use for Goldeneye 007 or Perfect Dark; because this emulator is primarily made for GoldenEye/Perfect Dark and modified for use with the Mouse Injector and their ROM hacks. It has poor ROM support outside of these games. Another and recommended option for Goldeneye: 007 is garungorp's MouseInjectorDolphinDuck with mupen64plus_next_libretro.
  8. Texture replacement only used in Super Mario 3D All-Stars.

Comparisons[edit]

Ares
An open-source multi-system emulator and successor to Near's higan project, with a mostly original N64 core. Unlike most other N64 emulators, it aims for high accuracy and doesn't employ HLE RSP or RDP emulation of any kind, nor does it use game-specific hacks. It uses Themaister's ParaLLEl-RDP Vulkan renderer (with the MAME renderer as a software-based fallback) for pixel-perfect LLE graphics. It currently passes several stringent accuracy tests the other emulators do not, also CPU & RSP timings are fantastic based on real hardware tests. But system requirements more demanding than other popular N64 emulators, having said that; for Windows users, it should be possible to maintain full speed on a Ryzen 7 3700X, system requirements for macOS and Linux users may be significantly lower due to: ARM64 ABI Microsoft has chosen for Windows makes context switches more expensive than on the SysV ABI used in *nix.
  • v130 version brings 64DD emulation and macOS support, developer LuigiBlood said "This is the most accurate 64DD emulation attempt I've ever done, honestly. A lot of the stuff I programmed is sometimes genuinely useless. A lot also involves timings of the drive itself and more".
  • v132 version brings improved accuracy of Controller pak and Rumble pak emulation.
  • v133 version brings lots of performance tuning, timing improvements (fixes Jet Force Gemini and Micky's Speedway USA) and emulation of RSP SU pipeline stalls (fixes Donkey Kong 64 and Banjo-Tooie).
  • v134 version brings support for .D64 disk images, 64DD disk swapping, support the N64 Transfer Pak, homebrew mode, fixed RTC 64DD emulation and other accuracy fixes.
simple64
A fork of Mupen64Plus with a custom-made Qt GUI. This is probably the easiest "just works out of the box" solution for Nintendo 64 emulation, as it comes bundled with ParaLLEl-RDP and ParaLLEl-RSP, ensuring excellent compatibility and good speed without messing with plugins or settings, provided your hardware supports Vulkan. However, unlike other emulators, it doesn't allow you to use other plugins. While it began as a shallow fork, it has increasingly become closer to a hard fork, as its developer opted to make various accuracy-focused changes to the emulation core that require additional work to port back to upstream or to other forks. It also currently features only a cached interpreter core, as the dynarecs used by Mupen64Plus are incompatible with the core timing changes made by the developer. While this makes simple64 more accurate (especially DMA transfers), than most other N64 emulators, it also results in slower performance. If faster speed and more enhancements are desired, there is an older build that is closer to upstream and uses GLideN64 as its graphics plugin. Unfortunately, it lacks the texture enhancement suite required for using packs and upscaling, though.
RMG
Rosalie's Mupen GUI aims to close the gap between Project64 and Mupen64Plus in terms of user experience. Its interface is about on par with simple64's in terms of cleanliness and ease of use, but unlike simple64, it remains a shallow fork of upstream Mupen64Plus and allows you to use other plugins. The latest development versions come bundled with GLideN64, Angrylion RDP Plus and ParaLLEl-RDP for video plugins, and mupen64plus-hle-rsp, CXD4 and ParaLLEl-RSP for RSP plugins It can still use the older plugins that come with regular Mupen64Plus in case if your PC can't handle the newer plugins. If you prefer GLideN64, this is a superior alternative to simple64, as the last version of simple64 that uses GLideN64 is becoming increasingly outdated.
Mupen64Plus-Next
A libretro core for use in RetroArch. It succeeds ParaLLEl-N64, below. Mupen64Plus-Next is a new rebase off the bleeding-edge Mupen64Plus mainline, and more compatible than ParaLLEl-N64. It ditches the legacy plugins and replaces them with GLideN64 as a better HLE solution (though, of course, the ParaLLEl plugins and Angrylion Plus stay), considerably cleans up the Core Options menu for easier configuration, and adds Transfer Pak support. Furthermore, all future improvements and new features will be applied to the Mupen64Plus-Next core. As a result, Mupen64Plus-Next is now recommended over ParaLLEl-N64.
ParaLLEl-N64
The original libretro core to contain the ParaLLEl-RDP. The RDP plugin was a breakthrough in N64 emulation that enabled low-level emulation on mid-range hardware, unlike the accurate but extremely CPU-hungry Angrylion off which it was based. It uses Vulkan to move much of the workload from the CPU to the GPU. It even added native high-resolution rendering, only available in integer scales of the original N64 resolution. It has a special "Super VI Mode" option, which, if used, can make the visuals of N64 games look less blurry with fairly mitigated jaggies even at their native resolutions, although it may need a powerful GPU. The ParaLLEl-N64 core is a heavily modified fork of the old Mupen64Plus libretro core, having been renamed to ParaLLEl-N64 upon its initial integration of the ParaLLEl-RDP and RSP plugins. It has many features and optimizations that aren't present in the mainline build. Alongside RetroArch's general features, it adds 3-point texture filtering for Glide64, superior A/V sync and latency. In addition to the ParaLLEl plugins, it also retains the older HLE plugins (glN64, Rice and Glide64) and Angrylion Plus. Older than Mupen64Plus-Next, ParaLLEl-N64 should now only be considered for performance reasons or perhaps for older ROM hacks that don't play well with the newer, more accurate plugins.
Mupen64Plus
A multi-platform emulator based on Hacktarux's Mupen64. For a while it lagged behind Project64 in compatibility and simplicity of use, but recent forks have changed this. The stable release on the main repository was becoming increasingly out of date, though a new 2.6.0 version was released in 2024. Mupen64Plus lacks a native GUI, instead being launched either from the command line or by dragging and dropping ROMs into the executable and editing the config with a text editor. It also only comes bundled with outdated video plugins, so to ensure the best possible compatibility, sourcing better third-party plugins such as ParaLLEl or GLideN64 is a must. BizHawk and OpenEmu use forks of Mupen64Plus and its plugins for their N64 emulation, but they seem shallow. As of 2022, Project64-style overclocking for faster frame rates has been added under the option 'CountPerOpDenomPot.'
Wii64 and Not64
Both are based on Mupen64, with Not64 being a fork of Wii64. Not64 claims to be better optimized, alongside having higher compatibility and more frequent updates. N64 emulation on Wii is not very good, and it is recommended to stick with the Virtual Console releases whenever possible.
Project64
An open-source emulator for Windows, as well as one of the oldest. Once more up to date and compatible than Mupen64Plus and its derivatives, the gap was closed around 2017,[1] when comparing both emulators with the same plugins. And the Mupen64Plus derivatives took further leaps forwards as they were integrated with the highly accurate ParaLLEl plugins. Project64 was known for being more user friendly than Mupen64Plus, with a built-in user interface that supports Transfer Pak emulation and 64DD emulation. Now, RMG and simple64 have their own user interfaces, and the advantages of Project64 have faded. Annoyingly, it also nags you with a timed, unskippable message asking for donations to the project upon launch, though this can be gotten around through a script. An alternative is to download it through Rosalie's BetterMajorasMaskInstaller, which downloads the latest nightly version of Project64 with the nagging message removed and installs several useful third-party plugins (it also offers to install HD texture packs for OoT and MM, but you can opt out of those), though take heed - Project64 is currently in the middle of a major code rewrite in preparation for the upcoming 4.0 version, and more than a few regressions and bugs have crept into the nightly builds as a result, so it might be better to just grab the latest plugins and stick to version 3.0.1. For the most part, it works well in Wine, but if you're on a different platform, there is little reason to use it over the multi-platform Mupen64Plus these days. In an older version of Project64, there was an exploit allowing people to remotely access your computer (aka. arbitrary code execution). This exploit only works if you have a ROM from a random website, so watch where you get your ROMs from if you're still using that version of Project64.
BizHawk
Another out-of-the-box solution. Supports two cores for n64 (mupen64plus and Ares64). Supports GLideN64 and Angrylion video plugins for mupen64plus core.
CEN64
Aims for cycle accuracy while at the same time aiming to be usable on modern PC hardware eventually. It lacks many features and has spotty compatibility, but it can already emulate some well-known edge cases, such as picture recognition in Pokémon Snap. Unfortunately, its creator appears to have abandoned the project citing a lack of satisfaction with the program's performance in its current interpreter-based incarnation. While the baton has been collectively passed to the n64dev community for further development, progress has been slow.
Kaizen
Rewrite of another Nintendo 64 emulator project "shibumi" which is developed by the same developer. It already has a QT frontend with recent builds, but lacks #Enhancements and support for Hardware features and peripherals (roadmap). RDP is implemented via ParaLLEl-RDP and R4300i, RCP, TLB, joybus are fully implemented. See their discord server for more information.
1964
Along with its various versions and forks, it was once a decent, speedy open-source alternative to Project64 and Mupen64, though it usually lagged the two compatibility-wise. Nowadays, it has completely fallen off the radar as development has halted, and there is no longer a central code repo to speak of. There is little reason to use it nowadays outside historical purposes, very specific edge cases, or if your device is too slow to run Mupen64Plus or Project64.
Daedalus
A Nintendo 64 emulator for PC which was ported to the PSP under the name of DaedalusX64. The PSP version later became the main version and got ported to platforms such as the Dreamcast, the PS2, the PS Vita, and the 3DS. On PSP, several games can reach full speed, and most of them work with few emulation issues.
Sixtyforce
macOS-only, closed-source emulator. It asks you to pay for full access to its features. It was once one of the few choices for Mac users, particularly those with older Macs, since it's the only emulator with a PPC dynarec, but, with the switch to x86 and Mupen64Plus being ported to macOS, it has now become rather obsolete. However, development is still ongoing, and it is currently in its third rewrite to support the upcoming Apple Silicon.
Ryu64
A Nintendo 64 emulator made in C#. The 'Ryu' word is named after the "RyuJIT" used in both Visual Basic & C#. But it might have been inspired by the lead author's sole (so far) commit to Switch emulator Ryujinx's Git repository and his depreciated Ryujinx Auto-Updater tool. "86RYU," an x86 JIT compiler, is being developed alongside this emulator too.
UltraHLE
Marked a milestone in Nintendo 64 emulation, in that it was the first to play some popular N64 titles at full speed on hardware made at the time of its release through high-level emulation. It isn't without its drawbacks, though - pressure from users, plus legal threats from Nintendo, forced them to discontinue development. Besides being for historical value, there is little to expect from this emulator anyway due to compatibility issues.
n64oid
An Android-exclusive Nintendo 64 emulator based on Mupen64Plus by freeman_zy. It is similar to Project 64 1.6 in terms of compatibility. The APK for n64oid circulates on many legally questionable APK sites. n64oid has the infamous problem in Mario Kart 64 of the screen in Wario Stadium not displaying properly, as it displays nothing but black. It upscales all games to widescreen, which works well most of the time, but it will have performance issues on some older phones. The emulator is relatively poor, but it is much easier to set up than other options. The emulator features a menu with many similarities to the mobile edition of Snes9x EX+ and the My Boy! family of Android emulators for Game Boy systems.
Nintendo Switch Online (Hovercraft)
  • N64 support was added to Nintendo Switch Online Expansion Pack in September 2021, alongside Sega Genesis games.
  • Users are limited to the selection of games Nintendo chooses to make available on the service.
  • Supports online and Local Play (up to 4 players).
  • Emulation accuracy varies between games; sometimes, being worse than their Wii and/or Wii U Virtual Console versions.
  • Updates on the app can be slow due to how the N64 ROMs require more debugging time.
  • Different games between regions (Japan and International).
  • A separate mature-rated version of the app is available for titles that received a mature/adult-like age rating within their region. Japan has the "+18" branding for titles that received a CERO Z rating (e.g.: GoldenEye 007 and Jet Force Gemini). The United States has the "Mature 17+" branding for titles that received a Mature 17+ rating from the ESRB (e.g.: Perfect Dark and Turok: Dinosaur Hunter). Europe and Australia has the "Mature" branding for titles that received a PEGI 16 or PEGI 18 rating. Brazil has "ClassInd: 18 Anos" branding and Korea has "19+" branding.

Enhancements[edit]

Name Mupen64Plus-Next simple64 ares Project64 MAME Bizhawk
Graphics Resizable Internal Resolution ? ?
Widescreen hack * ? ? ? ? ?
Texture Packs [N3 1] [N3 1] ? ?
Pre-rendering AA
(MSAA, SSAA)
? ? ? ? ?
Ray-tracing
(DXR, VRT and MRT)
Implementing ray-tracing in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future.
However you can try "Screen-Space Ray Traced Global Illumination" shader using ReShade.[1]
RTX Remix Implementing RTX Remix technology in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future.
Besides, some of these emulators already supports most of RTX Remix features such as texture replacement and post-processing effects etc.
On top of that you can use ReShade for post-processing.
Performance Internal Framerate Hack ? ? ? ? ?
Overclock ? ? ? ? ?
Frame generation technologies
(LSFG, DLSS-G, ExtraSS and AFMF)
Implementing frame generation technology in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future, however post-processing techniques such as motion interpolation is quite possible. Input latency will be a crucial factor, but its impact likely varies depending on the specific technique employed, it's recommended to use after applying the "Internal Framerate Hack".
While AFMF or LSFG could be used with Mupen64Plus-Next?, please be aware that some visual glitches and artifacts may occur at this time.
Rendering latency reduction technologies
(LatencyFleX, Reflex and Anti-Lag+)
While most emulators offer frame pacing or framebuffer latency control options, implementing rendering latency reduction technologies isn't currently feasible. This is likely doesn't offer enough benefit to justify the development effort.
Post-Processing Post-rendering AA
(FXAA, TXAA and MLAA/SMAA)
* ? ? ? ? ?
Post-rendering scaling
(Sharp bilinear, Lanczos and FSR 1)
? ? ? ?
Filters
AI-powered filter compatible
(Freestyle)
? ? ? ? ? ?
Shader Chain *
Inverse tone mapping compatible * ? ? ? ? ?
TAS features Macros/Scripts/Lua * ? ? ? *
Rewind ? ? ? ?
Fast-Forward/Turbo Speed ? ? ? ?
Savestates ? ? ? ?
Movie recording/playback ? ? ? ?
Quality of life Pause/Resume Emulation ? ? ? ? ?
Per-Game Profiles ? ? ? ? ?
Command Line Options ? ? ? ? ?
Built-in Custom resolution/CRTSwitchRes
For using this on Windows OS you need CRT Emudriver.
Another option is using EDID editor tool such as "Custom Resolution Utility".
Exclusive to libretro cores and GroovyMAME at the moment.
Also there is a project for achieving software emulators like libretro cores and GroovyMAME send the raw RGB data over a network to a core running on MiSTer, it basically turns the MiSTer into a GPU for the emulator allowing for easy setup and use with CRT TVs/Arcade monitors.
Built-in mod editor and manager
Built-in Cheat Manager ? * ? ?
Built-in Patch Manager ? ? ? ? ? ?
Streamable compression format ? ? ? ?
Variable Refresh Rate compatible ? ?* ? * ?
Big Picture Mode
Controls Input lag-mitigating technique ? ? ? ? ?
Mouse Injector Compatible * *
Misc RetroAchievements roadmap
EmuVR support Exclusive to libretro cores at the moment.
AI Service
With the help of OCR and other techniques, the AI service can provide a live translation of a game, or text-to-speech capabilities for the visually impaired among other things, either on demand or automatically.
Exclusive to libretro cores at the moment.
Netplay ~[N3 2] ? *
Free Look
Free Look is a enhancement feature that allows manipulation of the in-game camera.
While freecam would be technically possible, it will require per-game patches.
Said patches would require a significant amount of time to reverse the game's engine, which means that only someone talented with enough dedication to a single game could do it.
Nemu64 has a free cam mode sort of. It changes the perspective the camera is facing.
[2]
Debug Features
and libdragon
* ? * ~[N3 3] ? ?
  1. 1.0 1.1 Only with GLideN64 video plugin.
  2. Project64, RMG and Mupen64Plus MXE builds requires replacing the input plugin with one with netplay support. Another alternative for netplay is using Project64 Netplay fork.
  3. Use this fork for debug features.

Hardware features and peripherals[edit]

Reddit Thread: Unemulated console features and accessories

Name Project64 ares simple64 Mupen64Plus-Next CEN64 MAME BizHawk RMG
Controller Pak * [N 1]
Rumble Pak * ~*
Expansion Pak[3] * * * ?* *
Nintendo 64 Disk Drive [N 2] ~[N 3] * ~[N 4]
Transfer Pak * ~*
N64 Mouse *
64DD Keyboard
Voice Recognition Unit ?
Pokémon Snap Station ~
Densha De Go! Controller
N64 Bio Sensor
Tsurikon 64
ASCIIWHEEL 64
SmartMedia
Modem cartridge (NUS-029)
Morita Shogi 64 RJ-11 Modem Connection port
Video Capture Cassette cartridge
Secret Screen
WideBoy64 CGB ? ? ? ? ? ? ? ?
WideBoy64 AGB[N 5] ? ? ? ? ? ? ? ?
Doctor V64 ? ? ? ? ? ? ? ?
CD64 ? ? ? ? ? ? ? ?
Tristar 64 ? ? ? ? ? ? ? ?
DexDrive ? ? ? ? ? ? ? ?
Action Replay ? ? ? ? ? ? ? ?
GameShark ? ? ? ? ? ? ? ?
Cartridge Hot Swapping ? ? ? ? ? ? ? ?
Cartridge Tilting[N 6] unofficial version pj64 ? ? ? ? ? ? ?
SD cards ? ? ? Exclusive to Parallel Launcher fork at the moment. ? ? ? ?
  1. Under the name "Memory Pak".
  2. Use these builds for 64DD emulation
  3. While not fully compatible, you need to use subsystems menu, for more information see 64DD emulation section.
  4. While not fully compatible, you can now use RMG builds with a brand new Project64 style interface to play 64DD games, and includes every relevant plugins including parallel-rdp and rsp and a brand new easy to setup Input plugin. For more information see 64DD emulation section.
  5. Early version without the cart port
  6. Cart Tilt Showcase Playlist

Voice Recognition Unit emulation[edit]

The Voice Recognition Unit (VRU) is an accessory used primarily by Hey You, Pikachu. In June 2021, an HLE implementation of the VRU was added to Mupen64Plus[4]; this support was carried over to simple64[5].

Densha De Go! Controller[edit]

Also available for the PlayStation, Densha De Go! 64 is a Japan-only train simulator released by Taito that is compatible with an optional special controller that plugs into the player 3 port.[6] No emulator supports it.

Pokémon Snap Station[edit]

There was a special kiosk designed to promote Pokémon Snap called the Pokémon Snap Station, which is also compatible with the North American Pokémon Stadium with its gallery mode. It is just a Nintendo 64 with special hardware designed for the station.[7][8] Although the special cartridge does boot in emulators compatible with the regular version, the printing functions are inaccessible due to no emulation of the printer for the player 4 slot, credit system, or the special board to switch between the regular and special cartridges. On August 17, 2021, jamchamb reverse engineered the Snap Station and created a Project64 fork (source code only) and an iCEBreaker FPGA board hardware implementation.

Transfer Pak emulation[edit]

A few games, such as Mario Golf, Mario Tennis, Mario Artist: Paint Studio, and the Pokémon Stadium games, can use the Transfer Pak, an attachment that allows interfacing with specific Game Boy/Color games for certain features. Most N64 emulators can emulate the Transfer Pak's functionality to one degree or another, with the most robust being Project64 with N-Rage's input plugin. But there are still a few things that are difficult to emulate or are just not emulated at all:

  • Taking pictures with the Japanese Game Boy Camera (called Pocket Camera) while in Transfer Pak mode playing Mario Artist: Paint Studio displays static.
  • Playing the Gen 1 and 2 Pokémon games through the Game Boy Tower in Pokémon Stadium 1 and 2 is notoriously finicky. At the moment, only Project64, using the N-Rage input plugin, can properly load either game's Game Boy Tower at all, with other emulators either crashing or failing to establish the connection. Even here, extra steps must be taken: for Pokémon Stadium 2, set the CPU core to Interpreter and Counter factor to 1 in the emulator's game settings. For the first Stadium game, in addition to the aforementioned settings, Delay SI Interrupt must also be turned on, and an LLE RSP plugin other than the default Projec64 RSP must be used, such as ParaLLEl-RSP.

64DD emulation[edit]

The 64DD (an abbreviation for "64 Disk Drive") was a peripheral which allowed a proprietary disk format to be used with the N64. These disks had more space at a cheaper manufacturing cost. The peripheral was a commercial failure and was never released outside Japan. Internal evidence suggests that, much like the GBA e-Reader, it wasn't even intended for a European release.

Expansion disks are region-coded to either Japan or the US (obviously unused) and won't work with N64 games from the wrong region. Only F-Zero X has an official disk, but Ocarina of Time, Mario Party, and Pokémon Stadium (JP) have fully implemented but unused disk support.

The special AV-In cartridge (NUS-028) that Mario Artist: Talent Studio can use doesn't work because it requires an RCA cable signal.

Recently, there has been an effort to emulate the 64DD, and now, Project64 and MAME can run several commercial 64DD games as part of its N64 emulator. This is being ported to CEN64 with the help of LuigiBlood. Mupen64Plus supports 64DD as well, which is the base of other emulators such as simple64 and RMG. The latest newcomer is Ares with the (again) help of LuigiBlood.

  • Project64's latest versions emulate the N64 mouse and can load Zoinkity's hacked 64DD cartridge conversions at playable speeds. You will need to set every game to have 8MB of Memory by default manually. Games don't save, some need "32-bit engine" to be unchecked (like Talent Studio), and some (like Polygon Studio to fix models and Paint Studio to fix stamps) need the Angrylion GFX plugin rather than GlideN64, which does the job for the rest. 64DD.org has step-by-step tutorials for Project64
 **The 64DD hardware started to be emulated around 2.3's release with the help of LuigiBlood. Saving works but in the form of NDR files. NDR files are copied versions of NDD images with save data included as to not write to the clean unaltered images. To play 64DD games in their original forms, 8MB of memory is still needed because the real hardware needed the Expansion Pak upgrade. The IPL is also needed.
  • MAME includes early, basic 64DD emulation as well, but it is much slower. Disk images need to be in head/track format. See here for more information. It doesn't currently support disk swapping or saving disks to files. The writes only update the copy in memory, and once the MAME process ends, the changes are lost. Current usage: mame n64dd -quickload disk -cart cart -nodrc (both disk and cart are optional)
  • CEN64, like Project64, had 64DD emulation ported to it from MAME. However, it focuses on accuracy and plays much slower than other emulators; aside from the 64DD emulation itself is imperfect.
  • RetroArch's Mupen64Plus-Next and ParaLLEl cores support the 64DD. For Mupen64Plus-Next: the bios must be placed in [RetroArch directory]\system\Mupen64plus\IPL.n64. To launch 64DD games: Load the Mupen64Plus-Next core, select the new menu item "Subsystems" in the Main Menu, then click "Load N64 Disk Drive" three times to load the disk, cartridge, and start emulation; Both expansion disks and stand-alone disks can be launched this way.
    For ParaLLEl: the bios must be placed in the "system" directory and named 64DD_IPL.bin. In ParaLLEl's core options: 64DD must be enabled and GFX plugin and RSP must both be set to parallel; stand-alone disks can't be launched using the Subsystem, they must be launched through either "Load Content" or a playlist.
  • Ares supports 64DD as well, developer LuigiBlood said: "This is the most accurate 64DD emulation attempt I've ever done, honestly. A lot of the stuff I programmed is sometimes genuinely useless. A lot also involves timings of the drive itself and more," also supports disc-swapping with v134 version.

N64 Mouse[edit]

A peripheral that came bundled with Mario Artist: Paint Studio. 64DD.org has instructions on how to emulate the N64 Mouse on Project64. Ares also has N64 Mouse support; follow these instructions to enable it (replace SNES specific steps with 64DD). RetroArch's ParaLLEl core has N64 Mouse support under Quick Menu > Controls > Port 1 Controls > Device Type. RetroArch's Mupen64Plus-Next core doesn't have mouse support.

Because the N64 Mouse functions similarly to a controller, it is possible to "emulate" it even in emulators that don't explicitly support it by mapping mouse input to the N64 joystick. This will likely require use of separate re-mapping software, as most N64 emulators don't support binding mouse movement to joystick movement.

Hardware variants[edit]

iQue Player emulation[edit]

Before the GBA, the DS, and the 3DS, Nintendo released a modified version of their Nintendo 64 system for the Chinese market, called the iQue Player, through their not-quite-subsidiary iQue. Fourteen games were translated into Simplified Chinese, including Sin and Punishment, Ocarina of Time (the Majora's Mask port was canceled), Super Mario 64, and others.

Unlike the Chinese releases of their more recent systems and games, iQue Player releases are regular N64 ROMs wrapped with several layers of encryption and a ticket and signature system like that on the Wii, the DSi, the 3DS, the Wii U, and the Switch. The Chinese ROM-hacking scene is very active, though, and has translated the Japanese regular N64 releases for many of these to their language already, which explains some Chinese ROMs floating for those. However, almost all pieces of iQue Player software were recently decrypted to regular .z64 ROM format.

Several of the Chinese game localizations already run on N64 emulators, but as some hardware features of the iQue Player aren't yet supported, some games, as well as the system menu and features in games such as saving, don't work yet.

Aleck 64 arcade emulation[edit]

Nintendo collaborated with SETA to release an arcade system based on their Nintendo 64 system (kind of like their PlayChoice-10 for the NES, Super System arcade hardware for SNES, and later Triforce for GCN). The Nintendo 64-variant with more RAM, the Aleck 64, failed to catch on and bombed. It was never released outside Japan, even though one N64 port made it.

MAME and BizHawk's MAME core supports this arcade variation.

The Aleck 64 ROMs were dumped, and Zoinkity is working on converting them to regular N64 ROMs (with controls remapped to N64 controller buttons). They generally require an 8 MB Expansion Pak to run at all and 4K EEPROM to save settings and scores. The ones covered by these patches are:

  • Donchan Puzzle Hanabi de Doon!
  • Eleven Beat: World Tournament
  • Hi Pai Paradise
  • Hi Pai Paradise 2
  • Kuru Kuru Fever
  • Magical Tetris Challenge
  • Mayjinsen 3 / Meijin-Sen
  • Star Soldier: Vanishing Earth (also ported to N64)
  • Super Real Mahjong VS
  • Tower & Shaft
  • Vivid Dolls (official eroge game on a Nintendo console)

The already available patches to convert arcade ROM dumps to regular N64 ROM format can be found here. While Mupen64Plus-based emulators can't run these conversions out of the box, Project64 does just fine.

The remaining ones from the system's library not yet covered are:

  • Rev Limit
  • Variant Schwanzer (never released, but there is a PCB board and was tested and played on Game Center Mikado in 2015. No known ROM dumps on the internet)

Virtual Console games in Dolphin[edit]

A number of N64 games were released for the Wii's Virtual Console service throughout its lifespan. While the emulators at the heart of each Virtual Console title were of average accuracy (rather than using one generic emulator used for every game, each title had an emulator specifically tailored to that game), they were good enough to render the games in full, playable capacity with few to no glaring errors. Many of these titles are emulated well through Dolphin. For a good while, due to persistent long-standing inaccuracies in N64 emulators and plugins, this was the best way to emulate certain N64 games, particularly Pokémon Snap and Mario Tennis. The system requirements are much higher than running them on regular N64 emulators, but it is doable for many games. Today regular N64 emulators and plugins have advanced to the degree this has become unnecessary, relegating this method of N64 game emulation to little more than a curiosity, at least on PC.

The following games are on the N64 Virtual Console for Wii:

  • 1080° Snowboarding
  • Bomberman Hero
  • Cruis'n USA
  • Custom Robo V2 (Japan only)
  • F-Zero X
  • Kirby 64: The Crystal Shards
  • The Legend of Zelda: Majora's Mask
  • The Legend of Zelda: Ocarina of Time
  • Mario Golf
  • Mario Kart 64
  • Mario Party 2
  • Mario Tennis
  • Ogre Battle 64: Person of Lordly Caliber
  • Paper Mario
  • Pokémon Puzzle League
  • Pokémon Snap
  • Sin & Punishment (English)
  • Star Fox 64
  • Super Mario 64
  • Super Smash Bros.
  • Wave Race 64
  • Yoshi's Story

Emulation issues[edit]

Main article: Recommended N64 plugins

Nintendo 64 emulation is now decent. A lot of the major problems that N64 emulation had in the past have been fixed for quite some time now. The only catch is that the accurate emulators have higher system requirements. The main remaining problem is the lack of accurate cycle counting.

High-level vs. low-level graphics[edit]

One of the biggest hurdles to emulating the Nintendo 64 was the Reality Display Processor (RDP), which used a custom design that had to be fine-tuned to get higher performance out of the system using microcode. To emulate the RDP accurately, one would have to execute said microcode the way the RDP did, which differed from the PC graphics cards of the day. To complicate matters further, API standards available on PCs two decades ago were nowhere near as flexible as they're today. If you wanted to make an accurate GPU-accelerated RDP plugin in 2003, you simply couldn't with the APIs of the time (OpenGL 1.x and Direct3D 9). For the average user, hardware-accurate GPU acceleration would be out of reach for a long time.

UltraHLE offered a compromise. In contrast to earlier consoles (whose video chips, in hindsight, had been easy to render to the host CPU's framebuffer), performant RDP emulation had to take shortcuts, including programming around specific games' microcode to cleanly translate their graphics commands into API calls using Direct3D, OpenGL, and even Glide. With this, the theoretical system requirements plummeted, and the host graphics card could reproduce a functional equivalent rather than the exact method. This also gave way to prettier, higher-resolution graphics, though whether this is an improvement is subjective and a common point of discussion. Unfortunately, it proved to be hit or miss, owing to the nature of per-game microcode detection and having to tweak settings to prevent some games from running into graphical glitches.

Low-level RDP emulation was continually improved in that time, most notably by MESS up until its merger with MAME, where its RDP code was turned into a plugin by Angrylion. Compatibility-wise, Angrylion's RDP was considered flawless by the community. Though the reception wasn't as warm overall, since it ran only on the CPU and was thus painfully slow on mid-grade machines. A dozen forks attempted to bring the system requirements down, and the current incarnation that does so is Angrylion RDP Plus, using multithreading. Accurate low-level emulation would only come to the GPU in 2020 when a new version of the Mupen64Plus-based ParaLLEl libretro core was released containing a rewritten RDP plugin using compute shaders in Vulkan. Though it isn't a direct fork of Angrylion, Themaister says the Angrylion code was the central point of reference for developing the plugin,[9] meaning ParaLLEl uses the same strategies that Angrylion does to emulate the RDP while running on the host GPU (as long as said GPU supports Vulkan).

On the high-level side, gonetz and one or two assistants spent a large portion of development improving GlideN64's microcode handling throughout 2016-2018.[10][11] This means that Factor 5's games are now working in high-level graphics mode.[12][13] Other games may still have issues with RDP quirks like frame buffer/depth buffer access (including issues with how the framebuffer is used as well as performance issues), VI emulation, and how combine/blending modes are emulated (such as noise issues and combiner accuracy).

Texture filtering[edit]

The Nintendo 64 was the first consumer device to be able to filter textures when rendering 3D objects. However, unlike every console and PC graphics card made after the N64, its implementation of bilinear was primitive in that, to reduce strain on the system, it only used three samples as opposed to four, resulting in slightly jagged, asymmetrically filtered textures. Instead of faithfully applying this "imperfect" version of bilinear filtering, HLE plugins instead applied conventional bilinear filtering, interpolating straight from the source texture up to the output resolution the same way a PC game would. While that method is technically superior, it can result in textures that look even blurrier than they would on real hardware.

Another issue lies with the appliance of texture filtering per quad on static images, text, and sprites. Because each quad is filtered separately, this can cause some visual inconsistencies. Text and UI elements often look as though their edges cut off abruptly, and static images, such as pre-rendered backgrounds or menu screens, may look as though they're separated into squares (see images below; note how OoT's Quest Status screen appears to be divided into a grid). Some plugins allow the user to turn off texture filtering to remedy this, but, unfortunately, this also applies to textures in the game world, exposing their often low resolutions.

Modern emulators and plugins have taken some steps that help remedy these problems. For instance, GLideN64 now supports N64-style three-point texture filtering, which results in a more faithful look. It can also render at 320x240, which sidesteps the issues with filtered text, UI elements, and menu screens while still retaining texture filtering. Pixel-accurate plugins such as Angrylion and ParaLLEl-RDP don't have these problems at all.

Timing issues[edit]

One of the biggest remaining problems in N64 emulation is the lack of accurate core timings, which, in practice, means games don't always run at the speed they would on real hardware. While this technically affects all games, the majority are only affected to a negligible degree. In some instances (particularly in Rare games) this can actually result in fewer framerate drops and lag, which can be seen as beneficial. However, some game engines actually depend on accurate timings for proper game behavior, and not emulating them properly can result in considerable to major issues. Some notable examples include the following:

  • Intros and cutscenes playing too fast and not correctly syncing up with musical cues. Seen in Goldeneye's intro and Body Harvest's beginning cutscene.
  • Gameplay demos running at hyper speeds. Earthworm Jim 3D is most notorious for this, though the main game itself is largely unaffected.
  • Game physics not working properly due to being tied to framerate. A good example is Donkey Kong 64, which is programmed to boost the character's speed and momentum proportional to in-game lag (most likely to make up for the game's frequent framerate drops), which can be exploited for certain glitches and sequence breaks on real hardware. Emulators currently run the game too well and with too little lag, making most of these tricks impossible to pull off.
  • Possibly the most affected game is Knife's Edge, which runs like it is on permanent fast-forward, making it all but unplayable. Messing with timing-related settings such as CounterFactor can mitigate this somewhat, but nowhere near enough to fix the issue.
 Fortunately, tackling these problems has recently become a core focus of development in some N64 emulators, and attempts are underway to improve the situation. ares currently has the most accurate timings overall and already runs Earthworm Jim 3D's demos much better than other emulators. Meanwhile, simple64 has recently pushed various timing-related commits aimed at improving accuracy, and as a result, it may now be the only emulator that runs Donkey Kong 64 properly. As these efforts progress, it should be noted that a side effect of improved timings may be greater in-game lag. This shouldn't be seen as the emulator becoming slower, but rather as the emulator behaving exactly like the real hardware does, as many N64 games were notorious for framerate drops.

For more information about Nintendo 64 hardware and reverse engineering;

References[edit]

  1. loganmc10. Ignore TLB write if TLB entry is unmapping itself. "By the way, once this, along with the other PR's I've waiting are merged, we're at "compatibility parity" with Project64 as far as I can tell. I don't know of any game that doesn't boot with mupen64plus that works in PJ64."
  2. Reddit Thread: Nintendo 64 camera?
  3. What was the N64 Expansion Pak actually used for? | MVG
  4. VRU support and Hey You Pikachu audio fix. GitHub (2021-06-17)
  5. VRU support. GitHub (2021-06-21)
  6. Densha De Go! Nintendo 64 Controller!. YouTube (2017-01-20)
  7. The Pokémon Snap Station. YouTube (2016-05-21)
  8. VIDEO GAME KIOSKS - Extreme Game Collecting!. YouTube (2016-05-25)
  9. README for parallel-rdp repository on GitHub. § Disclaimer. "While paraLLEl-RDP uses Angrylion-Plus as an implementation reference, it is not a port, and not a derived codebase of said project. It is written from scratch by studying Angrylion-Plus and trying to understand what is going on. The test suite uses Angrylion-Plus as a reference to validate implementation and cross-checking behavior."
  10. Public Release 3.0. Blogspot (2017-12-29)
  11. Initial implementation of BOSS ZSort ucode (WDC, Stunt Racer). GitHub (2018-02-10)
  12. "Indiana J. & Infernal Machine" HLE. Indiegogo (2018-05-17)
  13. HLE implementation of microcodes for "Indiana Jones" and "Battle for Naboo" completed.. Blogspot (2018-05-26)