Difference between revisions of "Recommended N64 plugins"

From Emulation General Wiki
Jump to navigation Jump to search
m (Project64 1.6 is slower than 2.2)
(GLideN64)
 
(127 intermediate revisions by 32 users not shown)
Line 1: Line 1:
The N64 emulation scene has been described as a broken mess, the very definition of plugin hell. This page is an attempt to make sense of the madness for the benefit of both the casual and enthusiast looking to get their N64 emulation fix.
+
The N64 emulation scene had previously been described as a broken mess, the very definition of plugin hell. With recent developments in the scene, however, the situation has markedly improved, and it is no longer considered necessary to have multiple emulators and plugins on hand to get most games to work. This page will outline the best plugins currently available for the benefit of both the casual and enthusiast looking to get their N64 emulation fix.
  
Note that these plugins will NOT work on [[Mupen64Plus]], As such, it has its own plugins, and recommendations can be found at its own section on this page.
+
==The Plugin Specs==
 +
To understand the current plugin situation, and why there are several competing emulators that all appear to use the same plugins but said plugins are not compatible across emulators, a bit of history is in order. As for the terms HLE and LLE, which will occur with frequency throughout this page, and the difference between them, it is recommended to read this page on [[High/Low level emulation]] beforehand.
  
==Emulators==
+
Historically, the majority of N64 emulators all shared the same plugin spec (known as the zilmar spec, after the creator of Project64, the first emulator to use it), and could therefore all use the same plugins, meaning you could take a plugin DLL file, use it on one emulator, then take that DLL and use it on another, and it would also work there. Of these, the big three emulators were [[Project64]], [[1964]] and Mupen64. Each had advantages and disadvantages, and some games worked well in one only to not work in another, even when using the same plugin configuration. This necessitated having all of these emulators and sometimes even older or modified versions of them, along with a great many plugins, to be able to play most of the N64 library with the least amount of issues possible - though admittedly a good amount of games (particularly the most popular ones) were playable with just the best few of them.
  
[http://www.pj64-emu.com/downloads/project64/binaries/ Project64 2.2] - The most recent version of Project64, now public and open source (though the official download asks you to install useless toolbars). After years of dormancy, development has rapidly picked up and most of the issues with earlier releases have been fixed. Some users (particularly those using Windows 10) have reported problems with BSODs, though recent development versions have fixed them. The emulator is also prone to crashing at times. The user interface is quite a bit nicer and easier to use, and switching between RSP plugins is far easier than in 1.6. It also fixed a number of games that were completely broken in 1.6, such as Kirby 64. For general use, it is now considered the best and most compatible N64 emulator, though due to some stability issues, it may be handy to keep a copy of 1.6 just in case.
+
To illustrate the point, [http://bhemuhelp.unaux.com/n64mgcl/N64ConfigList.html here] is a site that, as late as 2012, was dedicated to documenting the exact emulator, plugin and settings combination necessary to get each and every game to at least a playable state, if at all possible. Unsurprisingly, this situation often led to a lot of confusion from users, who often wondered why there were so many plugins, and which ones were the best to use, only to find out it often depended on the game, and even then, some games would refuse to work as intended no matter what was tried. Hence the label "plugin hell" was coined, and stuck as a description of the travails of trying to emulate N64 games well into the 2010's.
  
[http://www.pj64-emu.com/downloads/project64/binaries/ Project64 1.6] - The older but more stable version. The interface is slightly clunkier, and switching between RSP plugins is a pain (the desired RSP plugin must be named rsp.dll for the emulator to see it and use it). It is still a good emulator for general use, as it has good compatibility with most of the popular games.
+
However, as time went on, things began to change, though slowly at first. 1964's development eventually ceased, and it completely fell off the radar. Mupen64 was forked into [[Mupen64Plus]] and developed its own plugin spec that was incompatible with the older zilmar spec, making it unable to use existing plugins unless they were specifically ported to it. This left only Project64 as the only relevant and active emulator still using the zilmar spec. For some time, then, this left the fledgling Mupen64Plus missing out on most cutting-edge plugin development, as most people were still using Project64.
  
[http://1964js.com/ 1964] - An open source emulator and long-time competitor to Project64. Some of its iterations (such as 1964 Ultrafast) have the ability to overclock the N64's CPU, which results in smoother framerate on games that have a lot of slowdown, such as Perfect Dark and Conker's Bad Fur Day. The last stable version released by the original team was 1.1, who then went on to remake it as a web emulator written in JavaScript, though some community members kept it going up to version [https://code.google.com/p/emu-1964/ 1.2 r146], with mixed results. It is generally recommended to stick to version 1.1 except on certain special cases. Overall, it is the least compatible of the big three emulators, only being useful for a handful of games or if using very weak hardware.
+
A semblance of parity began to come about as a result of several major developments: first, Mupen64Plus itself was forked by the [[libretro]] team, which made many changes and improvements to the core emulator, and integrated its plugins into the core itself. Second, gonetz, the developer of Glide64, unveiled his newest plugin, GLideN64, which would officially support both the zilmar and Mupen64Plus specs from the beginning. Third, the Angrylion plugin, which is the most accurate and compatible (and slowest) video plugin there is but was initially only available for the zilmar spec, was ported to Mupen64Plus and integrated into the libretro fork. Finally, Themaister, one of the creators of libretro and [[RetroArch]], began developing a unique plugin initially exclusive to libretro known as ParaLLEl-RDP, essentially Angrylion running on the GPU through Vulkan compute shaders, enabling near-perfect N64 graphics emulation at actually playable speeds. Add to this the fact that most PCs and many mobile devices are now more than capable enough of running the most advanced plugins, and the plugin situation, once considered a labyrinth, has been greatly simplified to just needing a few for the vast majority of use cases.
  
[http://mupen64.emulation64.com/ Mupen64] - An open source, multiplatform N64 emulator. Even though its last update by its original author was in 2005, it is possibly even more compatible than Project64 1.6, particularly with more obscure or less discussed titles, though it has incompatibilities of its own. Its modern, currently active successor is [[Mupen64Plus]], which improves upon the original's compatibility, but chose to depart from Zilmar's plugin spec, rendering it incompatible with the plugins discussed in this page. It is also less accessible than its forebearer, owing to its lack of a native GUI.
+
All that said, the issue is that there are now three plugin standards to account for:
  
[http://www.mediafire.com/download/57bgvkraykpylsw/N64_Emulator_Pack.rar This pack] has these four emulators, a few older and special or modified versions, and more obscure and largely irrelevant emulators added only for specific fringe cases, as well as every plugin discussed in this page and more.
+
*The zilmar spec - Utilized by Project64 and most other legacy emulators; only Project64 still uses it today.*
 +
 
 +
*The Mupen64Plus spec - Utilized by Mupen64Plus and most of its forks.
 +
 
 +
*Libretro - Not really a spec per se, as the plugins are integrated directly into the libretro core, so there's no DLL files to download or add.
 +
 
 +
As of right now, not all plugins are readily available on all three. Consult the tables below for reference:
 +
 
 +
{| class="wikitable" style="text-align:center;"
 +
! scope="col"|Name
 +
! scope="col"|Latest Version
 +
! scope="col"|Project64
 +
! scope="col"|Mupen64Plus
 +
! scope="col"|Libretro
 +
! scope="col"|HLE
 +
! scope="col"|LLE
 +
! scope="col"|Widescreen Hack
 +
! scope="col"|Custom Texture Packs
 +
! scope="col"|Recommended
 +
|-
 +
!colspan="13"|Video Plugins
 +
|-
 +
|ParaLLEl-RDP
 +
|[https://github.com/Themaister/parallel-rdp git]
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|-
 +
|GLideN64
 +
|[https://github.com/gonetz/GLideN64/releases/tag/github-actions github-actions]
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|-
 +
|Angrylion RDP Plus
 +
|[https://github.com/ata4/angrylion-rdp-plus/releases/tag/nightly-build Nightly builds]<br/>[https://github.com/ata4/angrylion-rdp-plus/releases/tag/v1.6 1.6]
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|-
 +
|Glide64**
 +
|Final
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{~}}
 +
|-
 +
|Jabo's Direct3D8
 +
|1.7.0.57-ver5
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|-
 +
|Rice Video
 +
|0.4.4
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|-
 +
|glN64
 +
|0.4.1
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|-
 +
|z64gl
 +
|R17
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|-
 +
|Angrylion (Official)
 +
|r114
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|}
 +
 
 +
<nowiki>*</nowiki>It should be noted that Project64 after version 2.x made some changes to the zilmar plugin spec, and while it remains backwards compatible with the older version of the spec (meaning most older plugins will still work with Project64), plugins targeting the newer version will not work on older versions of Project64 or other zilmar spec-based emulators.
 +
 
 +
<nowiki>**</nowiki>Funnily enough, Glide64 actually DOES have LLE code (much of it apparently comes from z64gl) and can technically run in LLE mode by using it alongside an LLE RSP plugin such as CXD4. However, it is not a complete implementation, and actually trying to run it in such a mode results in massive visual glitches, making it unusable. Practically speaking, then, Glide64 cannot be considered a true LLE plugin, and will not be designated as such, nor was it ever meant to be.
 +
 
 +
{| class="wikitable" style="text-align:center;"
 +
! scope="col"|Name
 +
! scope="col"|Latest Version
 +
! scope="col"|Project64
 +
! scope="col"|Mupen64Plus
 +
! scope="col"|Libretro
 +
! scope="col"|HLE Compatible*
 +
! scope="col"|LLE Compatible*
 +
! scope="col"|Recommended
 +
|-
 +
!colspan="13"|RSP Plugins
 +
|-
 +
|Project64 RSP
 +
|1.7
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|-
 +
|Mupen64Plus HLE RSP
 +
|[https://github.com/mupen64plus/mupen64plus-rsp-hle git]
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 +
|-
 +
|Static Interpreter/CXD4
 +
|[https://github.com/cxd4/rsp git]
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|-
 +
|ParaLLEl-RSP
 +
|[https://github.com/Themaister/parallel-rsp git]
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✓}}
 +
|-
 +
|Mupen64 HLE RSP
 +
|0.5.1
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|-
 +
|z64
 +
|r17
 +
|{{✓}}
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✗}}
 +
|}
 +
 
 +
<nowiki>*</nowiki>These terms signify whether an RSP plugin can work alongside HLE and/or LLE audio and video plugins. As for the type of emulation employed by the RSP plugins themselves, all but the Mupen64/plus HLE RSP plugins are LLE in nature. The LLE RSP plugins that can work with HLE plugins do so by passing the N64 display and audio lists onto the plugins themselves.
  
 
==Video==
 
==Video==
 +
===Currently Recommended Plugins===
 +
The following are the current best video plugins for use on modern PCs and devices.
 +
[[File:SuperMario64-Comparison.png|thumb|right|Jabo's Direct3D8 (left) compared with angrylion's RDP with OpenGL (right), while playing ''Super Mario 64''.]]
 +
====[https://github.com/Themaister/parallel-rdp ParaLLEl-RDP]====
 +
An LLE video plugin inspired by and referenced against Angrylion's RDP plugin, made to run on the GPU through the use of the Vulkan API's compute shaders. It was introduced in the ParaLLEl-N64 libretro core, is also available in the newer Mupen64Plus-Next core, and is included in several forks of Mupen64Plus and Project64, such as [[simple64]] and [https://www.64dd.org/downloads.html this build] of Project64. This is currently considered the best video plugin by most measures. It is almost as accurate and compatible as Angrylion's RDP, but much faster. Like most Angrylion forks, it allows disabling of VI features such as anti-aliasing and blur. Unlike the software-rendered Angrylion, however, it also allows a number of enhancements, including hi-res upscaling, resulting in a sharp, high-definition picture while simultaneously retaining accuracy, essentially what the N64 output would look like if the original console could render in HD. It can also render at a high resolution and downsample back down to a lower one, should one wish to improve the 3D graphics without making them stick out from the often low-res 2D elements. Due to its LLE nature, it does not support widescreen hacks or high-res textures - try GLideN64 if you seek to use such features.
 +
 +
System requirements for ParaLLEl-RDP are higher than for the other plugins. It requires a GPU with Vulkan support and up-to-date drivers (most Nvidia and AMD GPUs made after 2012 should be covered, though Intel graphics requires Skylake or newer), and upscaling increases the GPU requirements even further, far more than GLideN64. It must also be used in conjunction with an LLE RSP plugin, preferably its sister plugin ParaLLEl-RSP, as it features a recompiler for added speed. At native resolution, however, a modest PC with Vulkan support can handle it without much issue, even on integrated graphics.
 +
 +
====[https://github.com/gonetz/GLideN64/ GLideN64]====
 +
A hybrid HLE/LLE plugin developed by the developer of Glide64, though its code was originally based on gln64 (with combiner hacks from Glide64 and LLE code from z64gl and, to a lesser extent, Angrylion's RDP plugin). It is included with the latest versions of Project64, the Mupen64Plus-Next libretro core, and [https://github.com/simple64/simple64/releases/tag/v2021.5.30 older versions of simple64]. This is the best HLE plugin by far. The plugin currently supports mip-mapping, emulation of low-level triangles, microcode emulation of every game, gamma correction, flat and prim shading, VI emulation, and LLE graphics support. It is the only plugin that has [[Nintendo_64_emulators#High-level_vs._low-level_graphics|implemented HLE support]] of microcodes for every N64 game (including the infamous Factor 5 and BOSS games) to enable fast performance and graphical enhancements. It currently fixes numerous long-standing issues in games and is capable of smoothly emulating advanced framebuffer effects in hardware that Glide64 and Jabo could not. It also supports several enhancements, such as hi-res custom [[Texture_Packs|texture support]], MSAA and AF, a [[Widescreen_Hack|widescreen hack]], and even some shaders. There is support for an "[[Overscan]]" feature that helps the users to [[Widescreen_Hack#Nintendo_64|remove black borders around a game's visual output]].
 +
 +
GLideN64 requires at least OpenGL 3.3 in the latest versions to run, and OpenGL 4.x for some advanced functions, making this plugin more demanding than the plugins that came before it, though modern GPUs should be ok, even on mobile.  It is not without its share of issues to this day, however. There are still several HLE bugs left to resolve, and its LLE mode, while much improved over z64gl's, is still not quite as developed as its HLE mode, and some of the plugin's enhancement features are disabled in this mode. Since it is hardware-rendered even in LLE, there are issues that may never be quite resolved due to inherent differences between the N64 hardware and the OpenGL API. It is advisable to use this over ParaLLEl-RDP only if you are unable to run the latter in HD at full speed or if further enhancements such as widescreen hacks and hi-res textures are desired.
  
*Jabo's Direct3D - Comes with Project64. Very speedy, has built-in AA and AF options, and is one of the only plugins with a widescreen hack. The most recent version included with Project64 2.x (1.7.0.57-ver5) is somewhat buggy and has regressions, however, so the version included in [http://www.jabosoft.com/articles/114 Jabo's 1.6.1 patch] is recommended instead for most cases, though the former can run in LLE mode, which can help with a few games. Sadly, it will likely never see another update again, and there is talk of replacing it with either Glide64 or GLideN64 as Project64's default video plugin, or even removing it outright.
+
====[https://github.com/ata4/angrylion-rdp-plus/releases Angrylion RDP Plus]====
*Glide64 - Also comes with Project64 as of version 2.1. Often much more accurate and compatible than Jabo's plugin, and has a wealth of options, though it can be slower on lower end machines, and may not work on integrated graphics. Still, it is overall the best and most compatible plugin for general use, though it is by no means issue-free, and it is very likely little to no further improvements will be made to it. The version bundled with Project64 2.x is only really meant to work with those versions of Project64, however, so if you're using another emulator, try [https://code.google.com/p/glidehqplusglitch64/ Glide64 Final] instead.
+
This is a fork of Angrylion's RDP that supports multithreading. It is included in [https://64dd.org/downloads.html this build] of Project64 and in both N64 libretro cores. The standalone plugin version uses OpenGL 3.3 for drawing the picture and also supports Linux. The multi-threading helps boost performance significantly, as does using it alongside an RSP plugin with a recompiler such as ParaLLEl-RSP, but some games are still not full speed even on a Core i7-8700K. It also allows you to disable VI filters for slightly better performance. This fork has at least one accuracy regression compared to the official version of Angrylion. Since it is a CPU-bound, software-rendered plugin, it has no enhancement options of any kind - what you see is what you get, exactly like on a real N64. Use this only if running a relatively fast CPU and ParaLLEl-RDP does not work with your GPU for whatever reason.
*[http://www.emutalk.net/threads/54166-Rice-Video-Community-version Rice Video] - A fast, highly configurable video plugin famous for its ability to load hi-res textures, making it a popular plugin within the N64 emulation community. The 1964 team eventually annexed it as its official video plugin, renaming it 1964Video. There are many versions and forks of it floating around, either to fix issues or add features. For the most part, however, it has fallen behind in comparison to Glide64, which can now also load hi-res textures. As such, none of its variations are recommended for general use unless there's a very specific fringe case or you're on a toaster.
+
 
*[http://www.emutalk.net/threads/40640-Z64-a-LLE-graphics-plugin z64gl] - A hardware-accelerated, low-level plugin developed by ziggy, derived from MAME's N64 driver. It has the capability to render at the N64's native resolution in case you don't like super sharp polygons with low-res textures. It also includes experimental multi-threading support. Requirements are heavier than Jabo's plugin and Glide64, and configuration requires editing the config file directly. Needs an LLE RSP plugin, such as the bundled z64 RSP or Project64's RSP plugin set to LLE graphics. Overall, it tends to be quite glitchy with many games, but it is one of the only plugins capable of properly displaying difficult games such as Rogue Squadron. After years of abandonment, a [https://github.com/purplemarshmallow/z64/tree/angrylion-integration recent fork] has cropped up that aims at improving this plugin's accuracy and fixing its bugs by incorporating code from Angrylion's plugin and improving the overall code quality.
+
====Glide64====
*[http://www.emutalk.net/threads/55481-angrylion-s-Per-Pixel-RDP-with-OpenGL HatCat/Angrylion's Pixel-Accurate N64 Plugin] - A software-rendered, hardware-accurate plugin, developed by Angrylion (though derived from MAME, much like z64gl), and currently being optimized by HatCat. As the most accurate N64 renderer in existence (as well as the slowest), it is capable of playing almost every single game in the N64 library with no issues, fixing even notorious cases such as the Pokemon Snap red dot and the Body Harvest bridge. However, because of its sheer intensiveness, it is currently little more than a curiosity. Try it out if you have a tricked-out rig and want to test your CPU's mettle. Options include being able to disable the VI filters (which gives a speed boost), as well as set custom resolutions. As of recent versions, it now uses OpenGL, and supports Linux.
+
The former best general-use plugin. Versions of this are included in Project64, mainline Mupen64Plus, and the ParaLLEl-N64 libretro core. While it is no longer updated and is far less accurate and compatible than the newer offerings, it still has a few use cases, such as better support for older ROM hacks. It works relatively well for many (most?) games, has support for hi-res textures, and it is also faster than the newer plugins, which makes it suitable for slower devices such as the older Raspberry Pis. Otherwise, to ensure the highest possible compatibility, stick to either ParaLLEl-RDP or GLideN64.
*[http://gliden64.blogspot.com/ GLideN64] - A plugin developed by the maker of Glide64, though its code is actually originally based on gln64 (with combiner hacks from Glide64 and LLE code from z64gl). The plugin currently supports mip-mapping, emulation of low-level triangles, microcode of some games, gamma correction, flat and prim shading, VI emulation, and LLE graphics (though defaults to HLE). It currently fixes numerous long-standing issues in games, and is capable of smoothly emulating advanced framebuffer effects in hardware that Glide64 and Jabo could not without resorting to software and murdering the framerate in the process. It also supports several enhancements, such as hi-res custom texture support, AA and AF, a widescreen hack, and even some shaders. However, it requires at least OpenGL 3.x, and OpenGL 4.x for some advanced functions, making this plugin very toaster-unfriendly. It is also not without its share of issues and regressions on some games compared to Glide64. Its LLE mode is also much slower than even z64gl, and some of the plugin's features are broken in this mode.
+
 
 +
Note that the Project64 version of Glide64 has been renamed to Project64 Video and has undergone some changes and rewrites since it was initially forked, and thus may contain regressions compared to the last official standalone release of the plugin by Gonetz. Since this fork only works with current versions of Project64, should you wish to use this plugin on an older zilmar-spec emulator like 1964 or the original Mupen64, or if you want to avoid potential regressions with the Project64 version, use [https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/glidehqplusglitch64/Glide64_Final.zip Glide64 Final] instead.
 +
 
 +
===Deprecated Plugins===
 +
The following video plugins are old and deprecated, and should not be used or considered unless you have a VERY old or underpowered device that cannot handle the recommended plugins, or there's a very specific use case not covered by modern implementations.
 +
 
 +
*Jabo's Direct3D8 - Comes with Project64, and was once its default video plugin. Very speedy, has built-in AA and AF options, and includes a [[Widescreen_Hack|widescreen hack]]. The version included with the most recent versions of Project64 (1.7.0.57-ver5) is somewhat buggy and has regressions, however. [http://www.jabosoft.com/articles/114 Jabo's 1.6.1 patch] is better, though version 1.7 can run in LLE mode, which can help with a few games. Sadly, it will likely never see another update again, and though it is still included in Project64 to this day, it is no longer the default, and should not be used unless you have a very old PC that cannot handle Glide64 or GLideN64.
 +
*[http://www.emutalk.net/threads/54166-Rice-Video-Community-version Rice Video] - A very fast, highly configurable video plugin primarily based around the Direct3D API. It was once famous for being the first plugin that allowed the user to load [[Texture_Packs|custom hi-res textures]], which made it a popular plugin within the N64 emulation community. The 1964 team at one point annexed it as its official video plugin, renaming it 1964Video. There are many versions and forks of it floating around, all aiming to fix issues or add features (one fork even featured early shader support), and forks of it are included in mainline Mupen64Plus and in the ParaLLEl-N64 libretro core. However, even during its heyday it lagged behind Glide64 and even Jabo in both compatibility and accuracy, and once Glide64 gained the ability to load custom textures, there remained little reason to use it beyond its speed. A "Community Version" popped up that aimed at improving it and fixing its issues, but it ended up introducing many regressions compared to older versions and the effort was eventually abandoned. As such, none of its variations are recommended for general use unless there's a very specific fringe case (such as some really old texture packs or ROM hacks) or are trying to emulate on a very old and/or severely underpowered PC or handheld device. If you are absolutely resolved to try it out, seek out the original versions by Rice, primarily 6.1.0 or 6.1.1b, and stick to the Direct3D renderer, as the OpenGL backend included in some versions is buggy and incomplete outside of the Mupen64Plus fork.
 +
*[http://www.emutalk.net/threads/40640-Z64-a-LLE-graphics-plugin z64gl] - A hardware-rendered, low-level plugin developed by ziggy, derived from MAME's N64 driver. A fork is maintained by the Mupen64Plus team, though not included in their official releases. It was once notable for being one of the only plugins that could play games without an HLE microcode implementation such as Rogue Squadron. However, it was rather glitchy, had higher system requirements than the HLE plugins, needed an LLE RSP plugin to work (such as the bundled z64 RSP or Project64's RSP plugin set to LLE graphics), and configuration required editing the config file directly. A [https://github.com/purplemarshmallow/z64/tree/angrylion-integration fork] cropped up that aimed at improving it, but it did not get very far. Nowadays, it's obsolete, as GLideN64 can now play every game through HLE (thus subverting z64gl's only selling point), and its LLE has been surpassed by Angrylion-derived plugins and even GLideN64's LLE mode.
 +
*[https://sourceforge.net/p/angrylions-stuff/code/HEAD/tree/ Official Angrylion RDP] - A software-rendered, hardware-accurate plugin, developed by angrylion (though derived from MAME, much like z64gl). This is the most accurate N64 video plugin in existence, emulating almost* every facet of the N64's RDP precisely and thus making it capable of playing almost every single game in the N64 library with no issues, fixing even notorious cases such as the ''Pokémon Snap'' red dot and the ''Body Harvest'' bridge. This, however, comes at the cost of insane CPU requirements while making games look like, well, N64 games running on real hardware, which means native resolution, no widescreen, no hi-res textures - just the N64 in its full, vaseline-covered glory. Since this particular version is single-threaded, uses DirectDraw and is Windows only, it is recommended to use Angrylion RDP Plus or ParaLLEl-RDP instead, which offer much more reasonable performance. Only try it out if you have a tricked-out rig and want to test your CPU's mettle, or if you can compile it from source and need it for testing/debugging purposes, as the latest updates are always made to this version first.
 +
*[http://www.emutalk.net/threads/55481-angrylion-s-Per-Pixel-RDP-with-OpenGL HatCat/angrylion's Pixel-Accurate N64 Plugin] - This is a fork of Angrylion's RDP, done by HatCat. It has some optimizations not present in the official code, but is outdated and lacking some accuracy improvements and optimizations written by Angrylion. It has the option to disable the VI filters (which gives a speed boost), as well as the ability to set custom resolutions. Also, this version uses OpenGL 1.x instead of Direct Draw and supports Linux. Obsoleted by newer forks such as Angrylion RDP Plus.
 +
 
 +
Below is a gallery comparing how many of these plugins handle Mario Tennis, a hard-to-emulate game with many special effects that few plugins get right. Pay attention to the scoreboard on the top left, the MPH indicator on the top right, the NPCs on the back, shadows below the characters, and the trail and sparkle effects on the tennis ball and rackets. Only GLideN64 and the Angrylion-derived plugins emulate it correctly:
 +
 
 +
<gallery widths="300" mode="packed">
 +
Mario Tennis Rice.png|Mario Tennis running on ParaLLEl-N64 using Rice. Missing various effects, heavily glitched court.
 +
Mario Tennis Glide64.png|Mario Tennis running on ParaLLEl-N64 using Glide64. Missing various effects and shadows, some glitches.
 +
Mario Tennis glN64.png|Mario Tennis running on ParaLLEl-N64 using glN64. Missing various effects; shadows are present, but glitched.
 +
Mario Tennis GLideN64 HLE.png|Mario Tennis running on Mupen64Plus-Next using GLideN64 in HLE mode with 16xMSAA. Minor text cutoff on bottom of scoreboard.
 +
Mario Tennis GLideN64 LLE.png|Mario Tennis running on Mupen64Plus-Next using GLideN64 in LLE mode with 16xMSAA. Minor text cutoff on bottom of scoreboard. Has slight polygon jitter not present in HLE.
 +
Mario Tennis ParaLLEl 1x.png|Mario Tennis running on Mupen64Plus-Next using ParaLLEl-RDP at native resolution. Identical to Angrylion, and thus a pixel-perfect representation of real hardware.
 +
Mario Tennis ParaLLEl 4x Downsampled.png|Mario Tennis running on Mupen64Plus-Next using ParaLLEl-RDP rendering at 4x resolution, then downsampled back to native resolution.
 +
Mario Tennis ParaLLEl 4x.png|Mario Tennis running on Mupen64Plus-Next using ParaLLEl-RDP rendering at 4x resolution. Has very slight polygon jitter, though less than GLideN64 in LLE.
 +
</gallery>
 +
 
 +
<nowiki>*</nowiki> There is at least [https://sourceforge.net/p/angrylions-stuff/tickets/10/ one known, relatively minor graphical glitch in Pokemon Snap] (go figure) using Angrylion that requires currently-unimplemented cycle-accurate behavior to fix without resorting to hacks.
  
 
==Audio==
 
==Audio==
 +
This section will only cover the zilmar spec plugins, as Mupen64Plus does not have any alternative audio plugins besides the default, and neither do the libretro forks.
 +
 +
*Project64 Audio - The default audio plugin for Project64, apparently loosely based off of code from Mupen64Plus's HLE RSP. Very barebones, with no options to speak off.
 
*Jabo's DirectSound - Comes with Project64. It works fine for the most part, but some games may not play nice with it. It is a low-level plugin, so it needs an accompanying LLE RSP plugin. Will probably never be updated again.
 
*Jabo's DirectSound - Comes with Project64. It works fine for the most part, but some games may not play nice with it. It is a low-level plugin, so it needs an accompanying LLE RSP plugin. Will probably never be updated again.
*[http://www.emutalk.net/threads/27610-Audio-v0-56-WIP2-Download-Feedback Azimer's HLE Audio] - This popular HLE audio plugin boasts high compatibility. Version 0.56WIP2 is old as hell, but it is the tried and true standard to which audio plugins are compared against. Recently, [https://github.com/Azimer/AziAudio Azimer open sourced his plugin], and there are plans to integrate it into Project64 and eventually replace Jabo's as its official audio plugin. The latest development versions have a few issues, however.
+
*[http://www.emutalk.net/threads/27610-Audio-v0-56-WIP2-Download-Feedback Azimer's HLE Audio] - This popular HLE audio plugin boasts high compatibility. Version 0.56WIP2 is old as hell, but it is the tried and true standard to which audio plugins are compared against. Recently, [https://github.com/Azimer/AziAudio Azimer open sourced his plugin], and there were plans to integrate it into Project64, though this has yet to happen. While the latest development versions have a few issues, it now works in LLE, and has integrated code from Mupen64Plus's HLE RSP plugin, allowing it to work with the Factor 5 and BOSS games even in HLE.
*[http://forum.pj64-emu.com/showthread.php?t=3644 Shunyuan's HLE Audio] - An audio plugin, apparently based on 1964Audio and HatCat's RSP plugin. Can run in both LLE and HLE modes despite the name, though the HLE mode just makes it run a baked-in version of HatCat's RSP, which makes it not a true HLE plugin. Has been abandoned after charges of just taking others' code without revealing source. If games run at a weird speed using this plugin, go to the ROM's Game Settings, and disable Fixed Audio Timing and Sync using Audio. Despite its Frankenstein nature, it actually works surprisingly well, although modern development versions of Project64 no longer work with it, apparently due to it depending on a bug that has now been fixed..
+
*[http://forum.pj64-emu.com/showthread.php?t=3644 Shunyuan's HLE Audio] - An audio plugin, apparently based on 1964Audio and HatCat's RSP plugin. Can run in both LLE and HLE modes despite the name, though the HLE mode just makes it run an outdated, baked-in version of HatCat's RSP, which makes it not a true HLE plugin. Has been abandoned after charges of just taking others' code without revealing a source. If games run at a weird speed using this plugin, go to the ROM's Game Settings, and disable Fixed Audio Timing and Sync using Audio. Though it worked surprisingly well despite its Frankenstein nature, modern development versions of Project64 no longer work with it, apparently due to it depending on a bug that has now been fixed. As such, it is probably better to use Azimer's plugin instead.
  
 
==Input==
 
==Input==
*Jabo's DirectInput - Comes with Project64. It isn't too bad, but it may have some compatibility problems with some controllers. Should work just fine with the keyboard if you're one of those masochists who emulates without a controller. As usual, do not expect any updates.
+
*Project64 Input - Comes with Project64 as of the latest versions. Very simple input plugin which looks suspiciously a lot like Jabo's, but at least has XInput support, which is nice.
*[https://sourceforge.net/projects/nragev20/ N-Rage Input] - Also comes with Project64 as of version 2.2. Hands down the best input plugin. Has a ton of options and great controller compatibility, including XInput support for use with Xbox 360 controllers.
+
*[https://sourceforge.net/projects/nragev20/ NRage Input] - Also comes with Project64 as of version 2.2. Hands down the best input plugin as it is more feature complete than Jabo's DirectInput. Has a ton of options and great controller compatibility, including XInput support for use with Xbox 360 controllers. It can't emulate the microphone that is required by ''Hey You, Pikachu'' or the printer required for the ''Pokémon Snap Station''. It has the ability to emulate Controller Pak (''Mario Kart 64'''s ghost saves), Rumble Pak (''Star Fox 64''), and Transfer Pak (''Pokémon Stadium'' series) functionality fairly well. Version 2.3 of Project64 introduced a version of the plug-in that can emulate the N64's mouse accessory designed for the 64DD to coincide with Project64's newest ability to emulate the 64DD accessory. Surprisingly, ''Mario Artist: Paint Studio'' can use the Japanese ''Game Boy Camera'' (called ''Pocket Camera'') in Transfer Pak mode, but the camera function doesn't work as it displays static, although importing captured images still works technically.
 +
*Jabo's DirectInput - Used to come with Project64, but now removed in favor of NRage Input. It isn't too bad, but it may have some compatibility problems with some controllers. Should work just fine with the keyboard if you're one of those masochists who emulates without a controller. Only standard controller emulation with nothing attached to it. As usual, do not expect any updates.
 +
*[https://www.raphnet-tech.com/products/raphnetraw/index.php/ Raphnetraw] - This open source plugin allows streamlined use of N64 controller(s) via raphnet [https://www.raphnet-tech.com/products/n64_usb_adapter_gen3/index.php N64-to-USB v3+ adapters]. It supports rumble and is available for Project64 and mupen64plus. Also contains various DLLs for special port arrangements [https://www.raphnet.net/programmation/mupen64plus-input-raphnetraw/index_en.php#4 (link)].
  
 
==RSP==
 
==RSP==
*Zilmar's RSP - Comes with Project64. Very accurate, quite fast in Recompiler mode, and will work fine for most games, but may need to be set to Interpreter for a difficult few, in which case you may as well use HatCat's RSP plugin. The version included in Project64 2.x can work with both LLE and HLE plugins by toggling the relevant options in the Plugins settings menu.
+
===Recommended Plugins===
*Mupen64 HLE RSP - Comes with Mupen64. A very fast and compatible HLE RSP plugin. Written by Hacktarux and Azimer. Has issues with some games, particularly those using MusyX microcode. MusyX support was later added to the Mupen64Plus version, but those changes have yet to be backported to the zilmar-spec version.
+
*Project64 RSP - Comes with Project64, and until recently was usually known simply as zilmar's RSP. Reasonably accurate, quite fast in Recompiler mode (enabled by default), and will work fine for the majority of games, only having issues with a few games in LLE. The version included in Project64 2.x and beyond can work with both LLE and HLE plugins by toggling the relevant options in the Plugins settings menu. This plugin is exclusive to the zilmar spec.
*z64 RSP plugin pack - Largely deprecated. This set of RSP plugins comes with the z64 video plugin, each with their own purpose:
+
*Mupen64Plus HLE RSP - Comes with Mupen64Plus. Based off of the old Mupen64 HLE RSP plugin, but much improved. Though it is only compatible with HLE audio and video plugins, when paired with GLideN64, it can play almost every single N64 game without issues, and it now has MusyX support as well for games that used it. If you wish to use it with Project64, a zilmar-spec port is available and can be obtained by using [https://github.com/Rosalie241/BetterMajorasMaskInstaller/releases/tag/4.0.2 this installer]. It works out of the box with both the default Project64 Audio plugin as well as Azimer's, but it will not work with Jabo's, as that is a pure LLE audio plugin and requires LLE RSP emulation.
**Ziggy-z64RSP - This RSP is based on the MAME/MESS RSP code. It is slower, but more accurate.
+
*[http://www.emutalk.net/threads/56919-quot-Static-quot-RSP-Interpreter-Plugin "Static" RSP Interpreter/CXD4 RSP] - Made by HatCat/CXD4 and originally released in [http://forum.pj64-emu.com/showthread.php?t=3618 Project64 Forum]. Comes with some forks of Mupen64Plus as well as both libretro cores, and is included in [https://64dd.org/downloads.html this build] of Project64. For whatever reason, the zilmar-spec version usually goes by Static Interpreter, while the Mupen64Plus-spec and libretro versions go by CXD4. As of the most recent release version, it is one of the most accurate RSP plugins, though Project64 RSP in Recompiler mode as well as ParaLLEl-RSP both trump it in speed. It can take advantage of SSSE3 for greater performance, though it also comes in SSE2 and non-SSE variations in case your PC does not support those instruction sets. In both the zilmar and Mupen64Plus versions (though not in libretro, it seems), it is capable of working with both HLE and LLE audio and video plugins via the following settings:
 +
**Simulate RSP graphics from external plugin - Check if using an HLE graphics plugin, uncheck if using LLE
 +
**Simulate RSP audio from external plugin - Check if using an HLE audio plugin, uncheck if using LLE
 +
**Force semaphore locking - Check to fix issues with Mario no Photopie. Only works with Project64 2.x and beyond.
 +
*ParaLLEl-RSP - A fast and accurate RSP written by [https://github.com/Themaister/parallel-rsp Themaister], though it borrows heavily from both CXD4 and CEN64's RSP code. It is about as accurate and compatible as the Static Interpreter/CXD4 RSP, while being much faster owing to its inclusion of a dynamic recompiler. It is an RSP option mainly used in the [https://www.libretro.com/index.php/parallel-n64-with-parallel-rsp-dynarec-release-fast-and-accurate-n64-emulation/ ParaLLEl-N64 and Mupen64Plus-Next libretro cores]; however, it is also possible to use it with Mupen64Plus, its forks [[simple64]] and [[RMG]], and now even Project64 as a plugin ([https://64dd.org/downloads.html this version] comes bundled with it). Note that it only works with LLE video and audio plugins, though it is highly recommended if using such.
 +
 
 +
===Deprecated Plugins===
 +
*Mupen64 HLE RSP - Comes with the old zilmar-spec Mupen64. A very fast and compatible HLE RSP plugin. Written by Hacktarux and Azimer. Has issues with some games, particularly those using MusyX microcode. MusyX support and many other compatibility fixes were later added to the Mupen64Plus version, which has now been ported to the zilmar spec after years of exclusivity on the Mupen64Plus side of things. As such, this version is officially obsolete.
 +
*z64 RSP plugin pack - Largely deprecated by the Static Interpreter/CXD4 RSP plugin. This set of RSP plugins comes with the z64 video plugin, each with their own purpose:
 +
**Ziggy-z64RSP - This RSP is based on the MAME/MESS RSP code. It is slower but more accurate.
 
**Ziggy-PJ64 - Based on the Project64 1.4 RSP, this plugin is much faster.
 
**Ziggy-PJ64 - Based on the Project64 1.4 RSP, this plugin is much faster.
**Angrylion - This RSP is a simple Interpreter, and is required for a few games like World Driver Championship to work correctly with z64gl.
+
**angrylion - This RSP is a simple Interpreter, and is required for a few games like World Driver Championship to work correctly with z64gl.
*[http://forum.pj64-emu.com/showthread.php?t=3618 HatCat's RSP Interpreter] - As of the most recent release version, it is not only one of the most accurate RSP plugins, but also one of the fastest if using the SSSE3 version, though zilmar's RSP in Recompiler mode trumps it in speed. It also comes in SSE2 and non-SSE variations in case your PC does not support those instruction sets. It is capable of working with both HLE and LLE audio and video plugins via the following settings:
 
**Send display lists to the graphics plugin - Check if using an HLE graphics plugin, uncheck if using LLE
 
**Send audio lists to the audio plugin - Check if using an HLE audio plugin, uncheck if using LLE
 
**Force CPU-RSP signals synchronization - Check if playing Gauntlet Legends, World Driver Championship, or Stunt Race 64. Only works with Project64 2.x.
 
**Support CPU-RSP semaphore lock - Check to fix issues with Mario no Photopie. Only works with Project64 2.x.
 
-- If using HatCat's RSP Interpreter with Project64 2.2+, you will have to use [https://github.com/cxd4/spconfig/releases his spconfig.exe file] to change these settings, as Project64 2.2+ uses a different plugin spec.
 
  
 
==Recommended N64 Setups==
 
==Recommended N64 Setups==
 +
 +
===Overview===
 +
While in general only a small handful of plugins are necessary to play the vast majority of N64 games these days, there are nevertheless a variety of use cases which may necessitate using some plugins in specific combinations over others. The following section will be divided primarily by plugin specs, then further subdivided by the following use case "profiles":
 +
*General Use - A profile that strikes a good balance of speed, accuracy and compatibility. Most games will be playable on average hardware and should run with few to no issues.
 +
*Performance - Focuses primarily on speed for lower-end devices that cannot handle the General Use profile. Many games will be playable, but expect lower overall compatibility, glitches and missing effects.
 +
*Accuracy - Attains the maximum compatibility and accuracy made possible by the emulator. Almost all games will be playable and look as intended, but requires much higher system specifications.
 +
As a rule of thumb, start with the General Use profile. If it's too slow, move down to the Performance profile. Conversely, if there's a problem with the game (or you just want to be as close to real hardware as possible), move up to the Accuracy profile. It should be said there may be configurations within the emulator or plugin settings that may help with speed or compatibility, but it is generally not recommended to mess with them unless you know what you're doing, as both emulators and plugins are usually already optimized on a per-game basis, so moving settings around could result in breaking things. Should you wish to try to eke out more performance out of a given profile, it may be wise to consult with the emulator/plugin developers or communities centered around N64 emulation first.
  
 
===Project64 and Others===
 
===Project64 and Others===
*'''Commonly Used'''
+
Project64 comes bundled with the following plugins:
**Glide64 2.0.0.1
+
*Video: Jabo's Direct3D8, Project64 Video (Glide64 under another name), GLideN64
**Shunyuan's HLE Audio (set to LLE)
+
*Audio: Jabo's DirectSound, Project64 Audio
**HatCat's RSP or Zilmar's RSP
+
*Input: NRage for Project64, Project64 Input
**Either of the RSP plugin should be fine for most games. HatCat's RSP is more accurate and compatible. However, zilmar's is faster and doesn't require HatCat's spconfig.exe to switch between HLE/LLE with Project 2.2+. Keep in mind that Glide64 2.0.0.1 is the same as Glide64 Final. Glide64 2.0.0.1 is just a merge of Glide64, GlideHQ, and Glitch64 (which of course the final version has) to be one file, but limits you to certain settings that cannot be changed with the emulator.
+
*RSP: Project64 RSP
*'''Best Performance'''
+
Should you wish to use other plugins, they must be downloaded from a third party source and dropped into their respective plugin folder categories in the Project64 directory. Video plugins go under Plugin/GFX, audio plugins under Plugin/Audio, etc.
**Glide64 Final
+
 
 +
*'''General Use'''
 +
**GLideN64
 +
**Azimer's Audio NEW (set to LLE)
 +
**Project64 RSP
 +
**For the majority of games, the default Project64 RSP will work just fine, at least in HLE mode. Should you wish to use GLideN64 in LLE mode (or any LLE video plugin for that matter) with the Project64 RSP, simply uncheck "Graphics HLE" in the Plugin configuration screen. Alternatively, use ParaLLEl-RSP, though that only works in LLE, so GLideN64's HLE mode will be unavailable with that plugin.
 +
*'''Performance'''
 +
**Project64 Video or Glide64 Final
 
**Azimer's HLE Audio
 
**Azimer's HLE Audio
**Zilmar's RSP
+
**Project64 RSP or Mupen64Plus HLE RSP
**Make sure you configure the graphics plugin to show texture enhancement options. Then you'll have an extra tab to change more options. Goto the texture enhancement tab and click on the button that gives best performance and it should improve framerate once you saved the settings. There's also another button for best texture quality. There's no need to touch the other plugins. Recommended for most emulators.
+
**Make sure you configure the graphics plugin to show texture enhancement options. Then you'll have an extra tab to change more options. Go to the texture enhancement tab and click on the button that gives the best performance and it should improve framerate once you saved the settings. There's also another button for best texture quality. Recommended for the older zilmar-spec emulators as well (replace Project64 Video with Glide64 Final for those, though you may want to do that even with Project64 should you run into a regression). If you absolutely need more performance, you can try Jabo's plugin (specifically version 1.6.1, NOT the buggy version bundled with Project64), though it comes at a cost to compatibility. Also, try out the Mupen64Plus HLE RSP if you'd like to eke out that extra bit of performance.
 
*'''Accuracy'''
 
*'''Accuracy'''
**Angrylion's Pixel-Accurate N64 Plugin or Shunyuan's SoftGraphic
+
**Angrylion RDP Plus
**Shunyuan's HLE Audio
+
**Azimer's Audio NEW
**HatCat's RSP
+
**Static RSP Interpreter
**Do not expect to run the emulator with these plugins without a powerful PC. Audio can mislead easily if it's not in sync with the graphics when using without a powerful PC. Gives best and most accurate appearance, but will give up a big amount of framerates just to run it.
+
**If you have a decent quad-core CPU, you can run many N64 games with pixel-perfect graphics at full speed, thanks to the new multithreaded version of angrylion's software plugin. The new Azimer's plugin (still WIP) works well in LLE. To use the Static Interpreter RSP in LLE, you'll have to run the spconfig.exe that comes with that plugin, and tell it to NOT "simulate RSP graphics from external plugin" (in other words, type "0"). Since there's almost no accuracy difference, you may as well use ParaLLEl-RSP to get better performance, and/or move to ParaLLEl-RDP outright for even greater speed and upscaling options to boot (though it goes without saying upscaling would no longer be accurate). Conversely, if you want even greater accuracy, disable "Hide advanced settings" under Configuration, then enable "Always use interpreter core" under Advanced, and under Angrylion's options, disable multi-threading and set compatibility to "Slow". Performance WILL crash, but hey, it'll be accurate!
  
 
===Mupen64Plus===
 
===Mupen64Plus===
[[Mupen64Plus]] has its own set of plugins which are incompatible with plugins used in other emulators. Here is an overview of recommended setups.
+
The official releases of Mupen64Plus only come bundled with a handful of video and RSP plugins, namely Glide64mk2, Rice, and the HLE RSP. The developers also maintain forks of the CXD4 RSP and the z64 video and RSP plugins, but they are not included in the official release bundles for some reason. Should you wish to use those plugins or third party ones such as GLideN64 or the ParaLLEl plugins, you must build them yourself or get them from outside sources. Due to this fact, the mediocre nature of the "official" video plugins, and the overall lack of user-friendliness, it may be better to use a fork such as [[simple64]] or [[RMG]], though note that simple64 only comes and works with the ParaLLEl plugins, so RMG is a better choice if you wish to use something else, as that comes with more plugins and allows you to use whichever ones you want.
*'''Commonly Used'''
+
*'''General Use'''
 +
**Video: GLideN64 or ParaLLEl-RDP
 +
**RSP: RSP-HLE (for GLideN64) or ParaLLEl-RSP (for ParaLLEl-RDP)
 +
**Either one of these combinations will enable you to play the vast majority of N64 games while having reasonable system requirements. GLideN64 is faster and has more enhancement options, but ParaLLEl-RDP is much more accurate to the real console. You can also use the CXD4 RSP with GLideN64 if you want, but be sure to set it to pass display lists to the graphics plugin in mupen64plus.cfg, else GLideN64 will switch to its LLE mode, which is not generally recommended to use.
 +
*'''Performance'''
 
**Video: Glide64mk2
 
**Video: Glide64mk2
**RSP: cxd4-ssse3
+
**RSP: RSP-HLE
**Glide64mk2 is just Glide64 with additional tweaks and enhancements for use with Mupen64Plus. cxd4 is one of HatCat's many names. The cxd4 plugin is a port of his RSP for zilmar-spec emulators. This appears to be the best combination for use with most games, though toasters may have performance issues.
+
**These are Mupen64Plus's default plugins. Glide64mk2 is based on Glide64 Final, and is named so as to differentiate it from the original, now obsolete fork of Glide64 that Mupen64Plus used at its inception. It is not up to GLideN64's level, but it does well enough for many games and is quite fast. Use this combination if you have a lower end PC that can't handle the General Use setup. If your device STILL can't handle this setup, try the Rice video plugin, but expect many missing effects, glitches and incompatibilities.
*'''Best Performance'''
+
*'''Accuracy'''
**Video: Rice
+
**Video: Angrylion Plus or ParaLLEl-RDP
**RSP: rsp-hle
+
**RSP: CXD4-ssse3 or ParaLLEl-RSP
**These are Mupen64Plus's default plugins. Rice's Video is a plugin used on other N64 emulators, most known for its support for hi-res texture packs, now enhanced for Mupen64plus. It is not quite up to Glide64's level, but it does well enough for many games and is quite fast. The default RSP plugin appears to be just an enhanced port of vanilla Mupen64's RSP. Use this combination if you have a lower end PC and can't handle the Commonly Used setup.
+
**Any combination of these should result in very high accuracy. Technically, the most accurate setup is Angrylion combined with CXD4, but the difference between these and the ParaLLEl plugins is almost negligible, while being a lot slower. Be sure to set the CPU core to Pure Interpreter for even greater accuracy, along with plummeting framerates.
*'''Accuracy/Rogue Squadron'''
 
**Video: z64 or angrylion's Per-Pixel RDP with OpenGL
 
**RSP: cxd4-ssse3
 
**z64 is a port of z64gl, a low-level emulation video plugin for N64 emulators. It comes with its own accompanying z64 RSP, but cxd4 (a port of HatCat's RSP Interpreter plugin) appears to be more accurate and very well optimized. This setup is capable of playing difficult games like Rogue Squadron with very few graphical glitches, and faster than on Project64 to boot.
 
  
 
Note: In some cases the cfg file may not appear, in which case you may do this:
 
Note: In some cases the cfg file may not appear, in which case you may do this:
 
*Open terminal in emulator folder on in its respective directory
 
*Open terminal in emulator folder on in its respective directory
 
*''mupen64plus --configdir'' /directory/where/you/want/it/to/be
 
*''mupen64plus --configdir'' /directory/where/you/want/it/to/be
 +
 +
===Libretro===
 +
There are two N64 libretro emulator cores for use on libretro frontends such as [[RetroArch]]: Mupen64Plus-Next and ParaLLEl-N64. The former is mostly up-to-date and is recommended for most use cases, while the latter is no longer updated and is only around for performance reasons. They also have access to the following plugins:
 +
*Shared by both cores
 +
**Video: ParaLLEl-RDP , Angrylion
 +
**RSP: ParaLLEl-RSP, HLE, CXD4
 +
*Exclusive to Mupen64Plus-Next
 +
**GLideN64
 +
*Exclusive to ParaLLEl-N64
 +
**glN64, Rice, Glide64
 +
Due to these differences, it is advisable to use Mupen64Plus-Next for general use, and ParaLLEl-N64 for performance.
 +
*'''General Use (LLE)'''
 +
**Core: Mupen64Plus-Next
 +
**Video: ParaLLEl-RDP
 +
**RSP: ParaLLEl-RSP
 +
**By default ParaLLEl-RDP will output at native resolution with all the VI filters on, making it look exactly like Angrylion and the real N64 console. Upscaling must therefore be enabled in the core options. You can also alternatively render at a high resolution and downsample to a lower one if you want to improve 3D without making it stick out from 2D elements too much.
 +
*'''General Use (HLE)'''
 +
**Core: Mupen64Plus-Next
 +
**Video: GLideN64
 +
**RSP: HLE
 +
**While GLideN64 also works with the ParaLLEl and CXD4 RSP plugins, using them will cause GLideN64 to switch to its LLE mode, which is currently glitchier and slower than the HLE mode, for few (if any) compatibility or accuracy benefits. As such, it is recommended to stick with the HLE RSP for GLideN64.
 +
*'''Performance'''
 +
**Core: ParaLLEl-N64
 +
**Video: Glide64
 +
**RSP: HLE
 +
**For slow, low-end devices and old PCs only. If further speed is desired or needed, you may try glN64 or Rice, but using them comes at a steep cost in compatibility and accuracy, and many low-end devices in use today ought to be able to handle Glide64 just fine (well, with the exception of certain underpowered "retro gaming" handhelds).
 +
*'''Accuracy'''
 +
**Core: Mupen64Plus-Next
 +
**Video: Angrylion
 +
**RSP: CXD4
 +
**Just like the developers intended! If you want to go all out, set the CPU core to Pure Interpreter, turn off multi-threading and set thread sync level to High in Angrylion's options for the real 30 VI/s experience. Closest you'll get to real hardware until a complete cycle-accurate N64 emulator surfaces.
  
 
[[Category:Recommendations]]
 
[[Category:Recommendations]]

Latest revision as of 16:52, 17 February 2024

The N64 emulation scene had previously been described as a broken mess, the very definition of plugin hell. With recent developments in the scene, however, the situation has markedly improved, and it is no longer considered necessary to have multiple emulators and plugins on hand to get most games to work. This page will outline the best plugins currently available for the benefit of both the casual and enthusiast looking to get their N64 emulation fix.

The Plugin Specs[edit]

To understand the current plugin situation, and why there are several competing emulators that all appear to use the same plugins but said plugins are not compatible across emulators, a bit of history is in order. As for the terms HLE and LLE, which will occur with frequency throughout this page, and the difference between them, it is recommended to read this page on High/Low level emulation beforehand.

Historically, the majority of N64 emulators all shared the same plugin spec (known as the zilmar spec, after the creator of Project64, the first emulator to use it), and could therefore all use the same plugins, meaning you could take a plugin DLL file, use it on one emulator, then take that DLL and use it on another, and it would also work there. Of these, the big three emulators were Project64, 1964 and Mupen64. Each had advantages and disadvantages, and some games worked well in one only to not work in another, even when using the same plugin configuration. This necessitated having all of these emulators and sometimes even older or modified versions of them, along with a great many plugins, to be able to play most of the N64 library with the least amount of issues possible - though admittedly a good amount of games (particularly the most popular ones) were playable with just the best few of them.

To illustrate the point, here is a site that, as late as 2012, was dedicated to documenting the exact emulator, plugin and settings combination necessary to get each and every game to at least a playable state, if at all possible. Unsurprisingly, this situation often led to a lot of confusion from users, who often wondered why there were so many plugins, and which ones were the best to use, only to find out it often depended on the game, and even then, some games would refuse to work as intended no matter what was tried. Hence the label "plugin hell" was coined, and stuck as a description of the travails of trying to emulate N64 games well into the 2010's.

However, as time went on, things began to change, though slowly at first. 1964's development eventually ceased, and it completely fell off the radar. Mupen64 was forked into Mupen64Plus and developed its own plugin spec that was incompatible with the older zilmar spec, making it unable to use existing plugins unless they were specifically ported to it. This left only Project64 as the only relevant and active emulator still using the zilmar spec. For some time, then, this left the fledgling Mupen64Plus missing out on most cutting-edge plugin development, as most people were still using Project64.

A semblance of parity began to come about as a result of several major developments: first, Mupen64Plus itself was forked by the libretro team, which made many changes and improvements to the core emulator, and integrated its plugins into the core itself. Second, gonetz, the developer of Glide64, unveiled his newest plugin, GLideN64, which would officially support both the zilmar and Mupen64Plus specs from the beginning. Third, the Angrylion plugin, which is the most accurate and compatible (and slowest) video plugin there is but was initially only available for the zilmar spec, was ported to Mupen64Plus and integrated into the libretro fork. Finally, Themaister, one of the creators of libretro and RetroArch, began developing a unique plugin initially exclusive to libretro known as ParaLLEl-RDP, essentially Angrylion running on the GPU through Vulkan compute shaders, enabling near-perfect N64 graphics emulation at actually playable speeds. Add to this the fact that most PCs and many mobile devices are now more than capable enough of running the most advanced plugins, and the plugin situation, once considered a labyrinth, has been greatly simplified to just needing a few for the vast majority of use cases.

All that said, the issue is that there are now three plugin standards to account for:

  • The zilmar spec - Utilized by Project64 and most other legacy emulators; only Project64 still uses it today.*
  • The Mupen64Plus spec - Utilized by Mupen64Plus and most of its forks.
  • Libretro - Not really a spec per se, as the plugins are integrated directly into the libretro core, so there's no DLL files to download or add.

As of right now, not all plugins are readily available on all three. Consult the tables below for reference:

Name Latest Version Project64 Mupen64Plus Libretro HLE LLE Widescreen Hack Custom Texture Packs Recommended
Video Plugins
ParaLLEl-RDP git
GLideN64 github-actions
Angrylion RDP Plus Nightly builds
1.6
Glide64** Final ~
Jabo's Direct3D8 1.7.0.57-ver5
Rice Video 0.4.4
glN64 0.4.1
z64gl R17
Angrylion (Official) r114

*It should be noted that Project64 after version 2.x made some changes to the zilmar plugin spec, and while it remains backwards compatible with the older version of the spec (meaning most older plugins will still work with Project64), plugins targeting the newer version will not work on older versions of Project64 or other zilmar spec-based emulators.

**Funnily enough, Glide64 actually DOES have LLE code (much of it apparently comes from z64gl) and can technically run in LLE mode by using it alongside an LLE RSP plugin such as CXD4. However, it is not a complete implementation, and actually trying to run it in such a mode results in massive visual glitches, making it unusable. Practically speaking, then, Glide64 cannot be considered a true LLE plugin, and will not be designated as such, nor was it ever meant to be.

Name Latest Version Project64 Mupen64Plus Libretro HLE Compatible* LLE Compatible* Recommended
RSP Plugins
Project64 RSP 1.7
Mupen64Plus HLE RSP git
Static Interpreter/CXD4 git
ParaLLEl-RSP git
Mupen64 HLE RSP 0.5.1
z64 r17

*These terms signify whether an RSP plugin can work alongside HLE and/or LLE audio and video plugins. As for the type of emulation employed by the RSP plugins themselves, all but the Mupen64/plus HLE RSP plugins are LLE in nature. The LLE RSP plugins that can work with HLE plugins do so by passing the N64 display and audio lists onto the plugins themselves.

Video[edit]

Currently Recommended Plugins[edit]

The following are the current best video plugins for use on modern PCs and devices.

Jabo's Direct3D8 (left) compared with angrylion's RDP with OpenGL (right), while playing Super Mario 64.

ParaLLEl-RDP[edit]

An LLE video plugin inspired by and referenced against Angrylion's RDP plugin, made to run on the GPU through the use of the Vulkan API's compute shaders. It was introduced in the ParaLLEl-N64 libretro core, is also available in the newer Mupen64Plus-Next core, and is included in several forks of Mupen64Plus and Project64, such as simple64 and this build of Project64. This is currently considered the best video plugin by most measures. It is almost as accurate and compatible as Angrylion's RDP, but much faster. Like most Angrylion forks, it allows disabling of VI features such as anti-aliasing and blur. Unlike the software-rendered Angrylion, however, it also allows a number of enhancements, including hi-res upscaling, resulting in a sharp, high-definition picture while simultaneously retaining accuracy, essentially what the N64 output would look like if the original console could render in HD. It can also render at a high resolution and downsample back down to a lower one, should one wish to improve the 3D graphics without making them stick out from the often low-res 2D elements. Due to its LLE nature, it does not support widescreen hacks or high-res textures - try GLideN64 if you seek to use such features.

System requirements for ParaLLEl-RDP are higher than for the other plugins. It requires a GPU with Vulkan support and up-to-date drivers (most Nvidia and AMD GPUs made after 2012 should be covered, though Intel graphics requires Skylake or newer), and upscaling increases the GPU requirements even further, far more than GLideN64. It must also be used in conjunction with an LLE RSP plugin, preferably its sister plugin ParaLLEl-RSP, as it features a recompiler for added speed. At native resolution, however, a modest PC with Vulkan support can handle it without much issue, even on integrated graphics.

GLideN64[edit]

A hybrid HLE/LLE plugin developed by the developer of Glide64, though its code was originally based on gln64 (with combiner hacks from Glide64 and LLE code from z64gl and, to a lesser extent, Angrylion's RDP plugin). It is included with the latest versions of Project64, the Mupen64Plus-Next libretro core, and older versions of simple64. This is the best HLE plugin by far. The plugin currently supports mip-mapping, emulation of low-level triangles, microcode emulation of every game, gamma correction, flat and prim shading, VI emulation, and LLE graphics support. It is the only plugin that has implemented HLE support of microcodes for every N64 game (including the infamous Factor 5 and BOSS games) to enable fast performance and graphical enhancements. It currently fixes numerous long-standing issues in games and is capable of smoothly emulating advanced framebuffer effects in hardware that Glide64 and Jabo could not. It also supports several enhancements, such as hi-res custom texture support, MSAA and AF, a widescreen hack, and even some shaders. There is support for an "Overscan" feature that helps the users to remove black borders around a game's visual output.

GLideN64 requires at least OpenGL 3.3 in the latest versions to run, and OpenGL 4.x for some advanced functions, making this plugin more demanding than the plugins that came before it, though modern GPUs should be ok, even on mobile. It is not without its share of issues to this day, however. There are still several HLE bugs left to resolve, and its LLE mode, while much improved over z64gl's, is still not quite as developed as its HLE mode, and some of the plugin's enhancement features are disabled in this mode. Since it is hardware-rendered even in LLE, there are issues that may never be quite resolved due to inherent differences between the N64 hardware and the OpenGL API. It is advisable to use this over ParaLLEl-RDP only if you are unable to run the latter in HD at full speed or if further enhancements such as widescreen hacks and hi-res textures are desired.

Angrylion RDP Plus[edit]

This is a fork of Angrylion's RDP that supports multithreading. It is included in this build of Project64 and in both N64 libretro cores. The standalone plugin version uses OpenGL 3.3 for drawing the picture and also supports Linux. The multi-threading helps boost performance significantly, as does using it alongside an RSP plugin with a recompiler such as ParaLLEl-RSP, but some games are still not full speed even on a Core i7-8700K. It also allows you to disable VI filters for slightly better performance. This fork has at least one accuracy regression compared to the official version of Angrylion. Since it is a CPU-bound, software-rendered plugin, it has no enhancement options of any kind - what you see is what you get, exactly like on a real N64. Use this only if running a relatively fast CPU and ParaLLEl-RDP does not work with your GPU for whatever reason.

Glide64[edit]

The former best general-use plugin. Versions of this are included in Project64, mainline Mupen64Plus, and the ParaLLEl-N64 libretro core. While it is no longer updated and is far less accurate and compatible than the newer offerings, it still has a few use cases, such as better support for older ROM hacks. It works relatively well for many (most?) games, has support for hi-res textures, and it is also faster than the newer plugins, which makes it suitable for slower devices such as the older Raspberry Pis. Otherwise, to ensure the highest possible compatibility, stick to either ParaLLEl-RDP or GLideN64.

Note that the Project64 version of Glide64 has been renamed to Project64 Video and has undergone some changes and rewrites since it was initially forked, and thus may contain regressions compared to the last official standalone release of the plugin by Gonetz. Since this fork only works with current versions of Project64, should you wish to use this plugin on an older zilmar-spec emulator like 1964 or the original Mupen64, or if you want to avoid potential regressions with the Project64 version, use Glide64 Final instead.

Deprecated Plugins[edit]

The following video plugins are old and deprecated, and should not be used or considered unless you have a VERY old or underpowered device that cannot handle the recommended plugins, or there's a very specific use case not covered by modern implementations.

  • Jabo's Direct3D8 - Comes with Project64, and was once its default video plugin. Very speedy, has built-in AA and AF options, and includes a widescreen hack. The version included with the most recent versions of Project64 (1.7.0.57-ver5) is somewhat buggy and has regressions, however. Jabo's 1.6.1 patch is better, though version 1.7 can run in LLE mode, which can help with a few games. Sadly, it will likely never see another update again, and though it is still included in Project64 to this day, it is no longer the default, and should not be used unless you have a very old PC that cannot handle Glide64 or GLideN64.
  • Rice Video - A very fast, highly configurable video plugin primarily based around the Direct3D API. It was once famous for being the first plugin that allowed the user to load custom hi-res textures, which made it a popular plugin within the N64 emulation community. The 1964 team at one point annexed it as its official video plugin, renaming it 1964Video. There are many versions and forks of it floating around, all aiming to fix issues or add features (one fork even featured early shader support), and forks of it are included in mainline Mupen64Plus and in the ParaLLEl-N64 libretro core. However, even during its heyday it lagged behind Glide64 and even Jabo in both compatibility and accuracy, and once Glide64 gained the ability to load custom textures, there remained little reason to use it beyond its speed. A "Community Version" popped up that aimed at improving it and fixing its issues, but it ended up introducing many regressions compared to older versions and the effort was eventually abandoned. As such, none of its variations are recommended for general use unless there's a very specific fringe case (such as some really old texture packs or ROM hacks) or are trying to emulate on a very old and/or severely underpowered PC or handheld device. If you are absolutely resolved to try it out, seek out the original versions by Rice, primarily 6.1.0 or 6.1.1b, and stick to the Direct3D renderer, as the OpenGL backend included in some versions is buggy and incomplete outside of the Mupen64Plus fork.
  • z64gl - A hardware-rendered, low-level plugin developed by ziggy, derived from MAME's N64 driver. A fork is maintained by the Mupen64Plus team, though not included in their official releases. It was once notable for being one of the only plugins that could play games without an HLE microcode implementation such as Rogue Squadron. However, it was rather glitchy, had higher system requirements than the HLE plugins, needed an LLE RSP plugin to work (such as the bundled z64 RSP or Project64's RSP plugin set to LLE graphics), and configuration required editing the config file directly. A fork cropped up that aimed at improving it, but it did not get very far. Nowadays, it's obsolete, as GLideN64 can now play every game through HLE (thus subverting z64gl's only selling point), and its LLE has been surpassed by Angrylion-derived plugins and even GLideN64's LLE mode.
  • Official Angrylion RDP - A software-rendered, hardware-accurate plugin, developed by angrylion (though derived from MAME, much like z64gl). This is the most accurate N64 video plugin in existence, emulating almost* every facet of the N64's RDP precisely and thus making it capable of playing almost every single game in the N64 library with no issues, fixing even notorious cases such as the Pokémon Snap red dot and the Body Harvest bridge. This, however, comes at the cost of insane CPU requirements while making games look like, well, N64 games running on real hardware, which means native resolution, no widescreen, no hi-res textures - just the N64 in its full, vaseline-covered glory. Since this particular version is single-threaded, uses DirectDraw and is Windows only, it is recommended to use Angrylion RDP Plus or ParaLLEl-RDP instead, which offer much more reasonable performance. Only try it out if you have a tricked-out rig and want to test your CPU's mettle, or if you can compile it from source and need it for testing/debugging purposes, as the latest updates are always made to this version first.
  • HatCat/angrylion's Pixel-Accurate N64 Plugin - This is a fork of Angrylion's RDP, done by HatCat. It has some optimizations not present in the official code, but is outdated and lacking some accuracy improvements and optimizations written by Angrylion. It has the option to disable the VI filters (which gives a speed boost), as well as the ability to set custom resolutions. Also, this version uses OpenGL 1.x instead of Direct Draw and supports Linux. Obsoleted by newer forks such as Angrylion RDP Plus.

Below is a gallery comparing how many of these plugins handle Mario Tennis, a hard-to-emulate game with many special effects that few plugins get right. Pay attention to the scoreboard on the top left, the MPH indicator on the top right, the NPCs on the back, shadows below the characters, and the trail and sparkle effects on the tennis ball and rackets. Only GLideN64 and the Angrylion-derived plugins emulate it correctly:

* There is at least one known, relatively minor graphical glitch in Pokemon Snap (go figure) using Angrylion that requires currently-unimplemented cycle-accurate behavior to fix without resorting to hacks.

Audio[edit]

This section will only cover the zilmar spec plugins, as Mupen64Plus does not have any alternative audio plugins besides the default, and neither do the libretro forks.

  • Project64 Audio - The default audio plugin for Project64, apparently loosely based off of code from Mupen64Plus's HLE RSP. Very barebones, with no options to speak off.
  • Jabo's DirectSound - Comes with Project64. It works fine for the most part, but some games may not play nice with it. It is a low-level plugin, so it needs an accompanying LLE RSP plugin. Will probably never be updated again.
  • Azimer's HLE Audio - This popular HLE audio plugin boasts high compatibility. Version 0.56WIP2 is old as hell, but it is the tried and true standard to which audio plugins are compared against. Recently, Azimer open sourced his plugin, and there were plans to integrate it into Project64, though this has yet to happen. While the latest development versions have a few issues, it now works in LLE, and has integrated code from Mupen64Plus's HLE RSP plugin, allowing it to work with the Factor 5 and BOSS games even in HLE.
  • Shunyuan's HLE Audio - An audio plugin, apparently based on 1964Audio and HatCat's RSP plugin. Can run in both LLE and HLE modes despite the name, though the HLE mode just makes it run an outdated, baked-in version of HatCat's RSP, which makes it not a true HLE plugin. Has been abandoned after charges of just taking others' code without revealing a source. If games run at a weird speed using this plugin, go to the ROM's Game Settings, and disable Fixed Audio Timing and Sync using Audio. Though it worked surprisingly well despite its Frankenstein nature, modern development versions of Project64 no longer work with it, apparently due to it depending on a bug that has now been fixed. As such, it is probably better to use Azimer's plugin instead.

Input[edit]

  • Project64 Input - Comes with Project64 as of the latest versions. Very simple input plugin which looks suspiciously a lot like Jabo's, but at least has XInput support, which is nice.
  • NRage Input - Also comes with Project64 as of version 2.2. Hands down the best input plugin as it is more feature complete than Jabo's DirectInput. Has a ton of options and great controller compatibility, including XInput support for use with Xbox 360 controllers. It can't emulate the microphone that is required by Hey You, Pikachu or the printer required for the Pokémon Snap Station. It has the ability to emulate Controller Pak (Mario Kart 64's ghost saves), Rumble Pak (Star Fox 64), and Transfer Pak (Pokémon Stadium series) functionality fairly well. Version 2.3 of Project64 introduced a version of the plug-in that can emulate the N64's mouse accessory designed for the 64DD to coincide with Project64's newest ability to emulate the 64DD accessory. Surprisingly, Mario Artist: Paint Studio can use the Japanese Game Boy Camera (called Pocket Camera) in Transfer Pak mode, but the camera function doesn't work as it displays static, although importing captured images still works technically.
  • Jabo's DirectInput - Used to come with Project64, but now removed in favor of NRage Input. It isn't too bad, but it may have some compatibility problems with some controllers. Should work just fine with the keyboard if you're one of those masochists who emulates without a controller. Only standard controller emulation with nothing attached to it. As usual, do not expect any updates.
  • Raphnetraw - This open source plugin allows streamlined use of N64 controller(s) via raphnet N64-to-USB v3+ adapters. It supports rumble and is available for Project64 and mupen64plus. Also contains various DLLs for special port arrangements (link).

RSP[edit]

Recommended Plugins[edit]

  • Project64 RSP - Comes with Project64, and until recently was usually known simply as zilmar's RSP. Reasonably accurate, quite fast in Recompiler mode (enabled by default), and will work fine for the majority of games, only having issues with a few games in LLE. The version included in Project64 2.x and beyond can work with both LLE and HLE plugins by toggling the relevant options in the Plugins settings menu. This plugin is exclusive to the zilmar spec.
  • Mupen64Plus HLE RSP - Comes with Mupen64Plus. Based off of the old Mupen64 HLE RSP plugin, but much improved. Though it is only compatible with HLE audio and video plugins, when paired with GLideN64, it can play almost every single N64 game without issues, and it now has MusyX support as well for games that used it. If you wish to use it with Project64, a zilmar-spec port is available and can be obtained by using this installer. It works out of the box with both the default Project64 Audio plugin as well as Azimer's, but it will not work with Jabo's, as that is a pure LLE audio plugin and requires LLE RSP emulation.
  • "Static" RSP Interpreter/CXD4 RSP - Made by HatCat/CXD4 and originally released in Project64 Forum. Comes with some forks of Mupen64Plus as well as both libretro cores, and is included in this build of Project64. For whatever reason, the zilmar-spec version usually goes by Static Interpreter, while the Mupen64Plus-spec and libretro versions go by CXD4. As of the most recent release version, it is one of the most accurate RSP plugins, though Project64 RSP in Recompiler mode as well as ParaLLEl-RSP both trump it in speed. It can take advantage of SSSE3 for greater performance, though it also comes in SSE2 and non-SSE variations in case your PC does not support those instruction sets. In both the zilmar and Mupen64Plus versions (though not in libretro, it seems), it is capable of working with both HLE and LLE audio and video plugins via the following settings:
    • Simulate RSP graphics from external plugin - Check if using an HLE graphics plugin, uncheck if using LLE
    • Simulate RSP audio from external plugin - Check if using an HLE audio plugin, uncheck if using LLE
    • Force semaphore locking - Check to fix issues with Mario no Photopie. Only works with Project64 2.x and beyond.
  • ParaLLEl-RSP - A fast and accurate RSP written by Themaister, though it borrows heavily from both CXD4 and CEN64's RSP code. It is about as accurate and compatible as the Static Interpreter/CXD4 RSP, while being much faster owing to its inclusion of a dynamic recompiler. It is an RSP option mainly used in the ParaLLEl-N64 and Mupen64Plus-Next libretro cores; however, it is also possible to use it with Mupen64Plus, its forks simple64 and RMG, and now even Project64 as a plugin (this version comes bundled with it). Note that it only works with LLE video and audio plugins, though it is highly recommended if using such.

Deprecated Plugins[edit]

  • Mupen64 HLE RSP - Comes with the old zilmar-spec Mupen64. A very fast and compatible HLE RSP plugin. Written by Hacktarux and Azimer. Has issues with some games, particularly those using MusyX microcode. MusyX support and many other compatibility fixes were later added to the Mupen64Plus version, which has now been ported to the zilmar spec after years of exclusivity on the Mupen64Plus side of things. As such, this version is officially obsolete.
  • z64 RSP plugin pack - Largely deprecated by the Static Interpreter/CXD4 RSP plugin. This set of RSP plugins comes with the z64 video plugin, each with their own purpose:
    • Ziggy-z64RSP - This RSP is based on the MAME/MESS RSP code. It is slower but more accurate.
    • Ziggy-PJ64 - Based on the Project64 1.4 RSP, this plugin is much faster.
    • angrylion - This RSP is a simple Interpreter, and is required for a few games like World Driver Championship to work correctly with z64gl.

Recommended N64 Setups[edit]

Overview[edit]

While in general only a small handful of plugins are necessary to play the vast majority of N64 games these days, there are nevertheless a variety of use cases which may necessitate using some plugins in specific combinations over others. The following section will be divided primarily by plugin specs, then further subdivided by the following use case "profiles":

  • General Use - A profile that strikes a good balance of speed, accuracy and compatibility. Most games will be playable on average hardware and should run with few to no issues.
  • Performance - Focuses primarily on speed for lower-end devices that cannot handle the General Use profile. Many games will be playable, but expect lower overall compatibility, glitches and missing effects.
  • Accuracy - Attains the maximum compatibility and accuracy made possible by the emulator. Almost all games will be playable and look as intended, but requires much higher system specifications.

As a rule of thumb, start with the General Use profile. If it's too slow, move down to the Performance profile. Conversely, if there's a problem with the game (or you just want to be as close to real hardware as possible), move up to the Accuracy profile. It should be said there may be configurations within the emulator or plugin settings that may help with speed or compatibility, but it is generally not recommended to mess with them unless you know what you're doing, as both emulators and plugins are usually already optimized on a per-game basis, so moving settings around could result in breaking things. Should you wish to try to eke out more performance out of a given profile, it may be wise to consult with the emulator/plugin developers or communities centered around N64 emulation first.

Project64 and Others[edit]

Project64 comes bundled with the following plugins:

  • Video: Jabo's Direct3D8, Project64 Video (Glide64 under another name), GLideN64
  • Audio: Jabo's DirectSound, Project64 Audio
  • Input: NRage for Project64, Project64 Input
  • RSP: Project64 RSP

Should you wish to use other plugins, they must be downloaded from a third party source and dropped into their respective plugin folder categories in the Project64 directory. Video plugins go under Plugin/GFX, audio plugins under Plugin/Audio, etc.

  • General Use
    • GLideN64
    • Azimer's Audio NEW (set to LLE)
    • Project64 RSP
    • For the majority of games, the default Project64 RSP will work just fine, at least in HLE mode. Should you wish to use GLideN64 in LLE mode (or any LLE video plugin for that matter) with the Project64 RSP, simply uncheck "Graphics HLE" in the Plugin configuration screen. Alternatively, use ParaLLEl-RSP, though that only works in LLE, so GLideN64's HLE mode will be unavailable with that plugin.
  • Performance
    • Project64 Video or Glide64 Final
    • Azimer's HLE Audio
    • Project64 RSP or Mupen64Plus HLE RSP
    • Make sure you configure the graphics plugin to show texture enhancement options. Then you'll have an extra tab to change more options. Go to the texture enhancement tab and click on the button that gives the best performance and it should improve framerate once you saved the settings. There's also another button for best texture quality. Recommended for the older zilmar-spec emulators as well (replace Project64 Video with Glide64 Final for those, though you may want to do that even with Project64 should you run into a regression). If you absolutely need more performance, you can try Jabo's plugin (specifically version 1.6.1, NOT the buggy version bundled with Project64), though it comes at a cost to compatibility. Also, try out the Mupen64Plus HLE RSP if you'd like to eke out that extra bit of performance.
  • Accuracy
    • Angrylion RDP Plus
    • Azimer's Audio NEW
    • Static RSP Interpreter
    • If you have a decent quad-core CPU, you can run many N64 games with pixel-perfect graphics at full speed, thanks to the new multithreaded version of angrylion's software plugin. The new Azimer's plugin (still WIP) works well in LLE. To use the Static Interpreter RSP in LLE, you'll have to run the spconfig.exe that comes with that plugin, and tell it to NOT "simulate RSP graphics from external plugin" (in other words, type "0"). Since there's almost no accuracy difference, you may as well use ParaLLEl-RSP to get better performance, and/or move to ParaLLEl-RDP outright for even greater speed and upscaling options to boot (though it goes without saying upscaling would no longer be accurate). Conversely, if you want even greater accuracy, disable "Hide advanced settings" under Configuration, then enable "Always use interpreter core" under Advanced, and under Angrylion's options, disable multi-threading and set compatibility to "Slow". Performance WILL crash, but hey, it'll be accurate!

Mupen64Plus[edit]

The official releases of Mupen64Plus only come bundled with a handful of video and RSP plugins, namely Glide64mk2, Rice, and the HLE RSP. The developers also maintain forks of the CXD4 RSP and the z64 video and RSP plugins, but they are not included in the official release bundles for some reason. Should you wish to use those plugins or third party ones such as GLideN64 or the ParaLLEl plugins, you must build them yourself or get them from outside sources. Due to this fact, the mediocre nature of the "official" video plugins, and the overall lack of user-friendliness, it may be better to use a fork such as simple64 or RMG, though note that simple64 only comes and works with the ParaLLEl plugins, so RMG is a better choice if you wish to use something else, as that comes with more plugins and allows you to use whichever ones you want.

  • General Use
    • Video: GLideN64 or ParaLLEl-RDP
    • RSP: RSP-HLE (for GLideN64) or ParaLLEl-RSP (for ParaLLEl-RDP)
    • Either one of these combinations will enable you to play the vast majority of N64 games while having reasonable system requirements. GLideN64 is faster and has more enhancement options, but ParaLLEl-RDP is much more accurate to the real console. You can also use the CXD4 RSP with GLideN64 if you want, but be sure to set it to pass display lists to the graphics plugin in mupen64plus.cfg, else GLideN64 will switch to its LLE mode, which is not generally recommended to use.
  • Performance
    • Video: Glide64mk2
    • RSP: RSP-HLE
    • These are Mupen64Plus's default plugins. Glide64mk2 is based on Glide64 Final, and is named so as to differentiate it from the original, now obsolete fork of Glide64 that Mupen64Plus used at its inception. It is not up to GLideN64's level, but it does well enough for many games and is quite fast. Use this combination if you have a lower end PC that can't handle the General Use setup. If your device STILL can't handle this setup, try the Rice video plugin, but expect many missing effects, glitches and incompatibilities.
  • Accuracy
    • Video: Angrylion Plus or ParaLLEl-RDP
    • RSP: CXD4-ssse3 or ParaLLEl-RSP
    • Any combination of these should result in very high accuracy. Technically, the most accurate setup is Angrylion combined with CXD4, but the difference between these and the ParaLLEl plugins is almost negligible, while being a lot slower. Be sure to set the CPU core to Pure Interpreter for even greater accuracy, along with plummeting framerates.

Note: In some cases the cfg file may not appear, in which case you may do this:

  • Open terminal in emulator folder on in its respective directory
  • mupen64plus --configdir /directory/where/you/want/it/to/be

Libretro[edit]

There are two N64 libretro emulator cores for use on libretro frontends such as RetroArch: Mupen64Plus-Next and ParaLLEl-N64. The former is mostly up-to-date and is recommended for most use cases, while the latter is no longer updated and is only around for performance reasons. They also have access to the following plugins:

  • Shared by both cores
    • Video: ParaLLEl-RDP , Angrylion
    • RSP: ParaLLEl-RSP, HLE, CXD4
  • Exclusive to Mupen64Plus-Next
    • GLideN64
  • Exclusive to ParaLLEl-N64
    • glN64, Rice, Glide64

Due to these differences, it is advisable to use Mupen64Plus-Next for general use, and ParaLLEl-N64 for performance.

  • General Use (LLE)
    • Core: Mupen64Plus-Next
    • Video: ParaLLEl-RDP
    • RSP: ParaLLEl-RSP
    • By default ParaLLEl-RDP will output at native resolution with all the VI filters on, making it look exactly like Angrylion and the real N64 console. Upscaling must therefore be enabled in the core options. You can also alternatively render at a high resolution and downsample to a lower one if you want to improve 3D without making it stick out from 2D elements too much.
  • General Use (HLE)
    • Core: Mupen64Plus-Next
    • Video: GLideN64
    • RSP: HLE
    • While GLideN64 also works with the ParaLLEl and CXD4 RSP plugins, using them will cause GLideN64 to switch to its LLE mode, which is currently glitchier and slower than the HLE mode, for few (if any) compatibility or accuracy benefits. As such, it is recommended to stick with the HLE RSP for GLideN64.
  • Performance
    • Core: ParaLLEl-N64
    • Video: Glide64
    • RSP: HLE
    • For slow, low-end devices and old PCs only. If further speed is desired or needed, you may try glN64 or Rice, but using them comes at a steep cost in compatibility and accuracy, and many low-end devices in use today ought to be able to handle Glide64 just fine (well, with the exception of certain underpowered "retro gaming" handhelds).
  • Accuracy
    • Core: Mupen64Plus-Next
    • Video: Angrylion
    • RSP: CXD4
    • Just like the developers intended! If you want to go all out, set the CPU core to Pure Interpreter, turn off multi-threading and set thread sync level to High in Angrylion's options for the real 30 VI/s experience. Closest you'll get to real hardware until a complete cycle-accurate N64 emulator surfaces.