Editing Nintendo 64 emulators

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 7: Line 7:
 
|release = 1996
 
|release = 1996
 
|discontinued = 2003
 
|discontinued = 2003
|predecessor = [[Super Nintendo emulators|Super Family Computer / Super Nintendo Entertainment System]]
+
|predecessor = [[Super Nintendo emulators|SNES]]
 
|successor = [[GameCube emulators|GameCube]]
 
|successor = [[GameCube emulators|GameCube]]
 
|emulated = {{✓}}
 
|emulated = {{✓}}
 
}}
 
}}
{{for|emulators that run on the Nintendo 64|Emulators on N64}}  
+
 
 +
{{for|other emulators that run on N64 hardware|Emulators on N64}}  
  
 
The '''Nintendo 64''' is a 64-bit fifth-generation console released by Nintendo on September 29, 1996, for {{inflation|USD|199.99|1996}}.
 
The '''Nintendo 64''' is a 64-bit fifth-generation console released by Nintendo on September 29, 1996, for {{inflation|USD|199.99|1996}}.
  
Nintendo was the second company approached by Silicon Graphics Inc. (SGI), which wanted to roll out its previously enterprise-only technology in the consumer space. They originally pitched their idea to Sega, but it's assumed that Nintendo's offer was more appealing. With the NEC VR4300 CPU clocked at 93.75 MHz, 4 MBs of RAM, and an SGI RCP GPU, Nintendo had finalized much of the hardware at least a year before launch, preventing video games from needing drastic rewrites as a result of architectural changes. A separate add-on was later released called the "[[#Hardware features and peripherals|Expansion Pak]]" that added an additional 4 MBs of RAM, totaling to 8 MBs. The development workstations were often Unix-based, which would later help reverse-engineers in some projects.­­
+
Nintendo was the second company approached by Silicon Graphics Inc. (SGI), which wanted to roll out its previously enterprise-only technology in the consumer space. They originally pitched their idea to Sega, but it's assumed that Nintendo's offer was more appealing. With the NEC VR4300 CPU clocked at 93.75 MHz, 4 MBs of RAM, and an SGI RCP GPU, Nintendo had finalized much of the hardware at least a year before launch, preventing video games from needing drastic rewrites as a result of architectural changes. A separate add-on was later released called the "Expansion Pak" that added an additional 4 MBs of RAM, totaling to 8 MBs. The development workstations were often Unix-based, which would later help reverse-engineers in some projects.­­
  
Unlike competitors such as the PlayStation, the N64 used cartridges instead of CDs. While a big advantage was that data could be read faster than CDs, meaning that load times were minimal or even non-existent, the main disadvantage of cartridges was the small data capacity, which meant that many third party developers switched to the PlayStation.
+
Unlike competitors such as the Playstation, the N64 used cartridges instead of CDs. while a big advantage was that data could be read faster than CDs, meaning that load times were minimal or even non-existent, the main disadvantage of cartridges was the small data capacity, which meant that many third party developers switched to the Playstation.
  
 
Nintendo 64 emulator development began during the console's lifespan, with [[UltraHLE]] being a landmark release in emulation. Despite the impressive feat of playing retail games on a standard computer of the time period, emulation of the console had serious issues for nearly the next two decades. This was largely due to the "plugin hell" exacerbated by closed-source development practices, an over-reliance on the leaked "Oman archive" documentation that hindered true reverse engineering of console behavior, and the use of endless hacks and shortcuts due to the weak hardware of the time. However, newer open-source emulators and plugins now offer greatly improved accuracy alongside visual enhancements.
 
Nintendo 64 emulator development began during the console's lifespan, with [[UltraHLE]] being a landmark release in emulation. Despite the impressive feat of playing retail games on a standard computer of the time period, emulation of the console had serious issues for nearly the next two decades. This was largely due to the "plugin hell" exacerbated by closed-source development practices, an over-reliance on the leaked "Oman archive" documentation that hindered true reverse engineering of console behavior, and the use of endless hacks and shortcuts due to the weak hardware of the time. However, newer open-source emulators and plugins now offer greatly improved accuracy alongside visual enhancements.
  
 
==Emulators==
 
==Emulators==
<div style="overflow-x:auto;width:100%">
+
<div style="max-width:100%; overflow:auto;">
{| class="wikitable sortable" style="text-align:center;width:100%"
+
{| class="wikitable sortable" style="text-align:center;"
 
! scope="col"|Name
 
! scope="col"|Name
 
! scope="col"|Platform(s)
 
! scope="col"|Platform(s)
 
! scope="col"|Latest version
 
! scope="col"|Latest version
 
! scope="col"|[[#Hardware_variants|Hardware<br/>variants]]
 
! scope="col"|[[#Hardware_variants|Hardware<br/>variants]]
! scope="col"|[[#Hardware features and peripherals|Hardware features<br/>and peripherals]]
+
! scope="col"|[[#Peripherals|Peripherals]]
 
! scope="col"|[[#Enhancements|Enhancements]]
 
! scope="col"|[[#Enhancements|Enhancements]]
 +
! scope="col"|[[Emulation accuracy|Accuracy]]
 
! scope="col"|Compatibility
 
! scope="col"|Compatibility
! scope="col"|[[Emulation Accuracy|Accuracy]]
 
 
! scope="col"|<abbr title="Free/Libre and Open-Source Software">FLOSS</abbr>
 
! scope="col"|<abbr title="Free/Libre and Open-Source Software">FLOSS</abbr>
 
! scope="col"|Active
 
! scope="col"|Active
Line 38: Line 39:
 
!colspan="11"|PC / x86
 
!colspan="11"|PC / x86
 
|-
 
|-
|[[RetroArch|Mupen64Plus-Next]]
+
|[https://docs.libretro.com/library/mupen64plus/ Mupen64Plus-Next]<br/><small>[https://github.com/libretro/parallel-n64 ParaLLEl-N64 (obsolete)]<ref group=N name=obsolete>Obsolete and replaced by Mupen64Plus-Next. ParaLLEl-N64 should now only be considered for older ROM hacks that don't play well with the newer, more accurate plugins.</ref></small>
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
|[https://buildbot.libretro.com/nightly/ libretro core]<br>[https://parallel-launcher.ca/ Parallel Launcher Fork]
+
|[https://buildbot.libretro.com/nightly/ libretro core]
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|{{~}}
 
|{{✓}}
 
|{{✓}}
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|-
|[[ares]]
+
|[[RMG]]<br/><small>[[Mupen64Plus]]<small>
|align=left|{{Icon|Windows|Linux|macOS}}
+
|align=left|{{Icon|Windows|Linux}}
|[https://nightly.link/ares-emulator/ares/workflows/build/master <abbr title="Latest development build version">git Artifacts</abbr>]<br/>[https://github.com/ares-emulator/ares/releases {{aresVer}}]
+
|[https://nightly.link/Rosalie241/RMG/workflows/build/master RMG {{RMGVer}}-dev]<br/>[https://bitbucket.org/ecsv/mupen64plus-mxe-daily/downloads/?tab=tags <abbr title="RMG is recommended instead of MXE builds because it's come bundled with GLideN64, Angrylion RDP Plus and ParaLLEl-RDP for video plugins, and mupen64plus-hle-rsp, CXD4 and ParaLLEl-RSP for RSP plugins unlike MXE builds.">MXE Builds</abbr>]
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
|[https://ares-emu.net/compatibility/nintendo-nintendo-64 96%<br/><small>867 out of 900 reported titles</small>]
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| High
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|-
|[[simple64]]
+
|[[ares]]
|align=left|{{Icon|Windows|Linux}}
+
|align=left|{{Icon|Windows|Linux|macOS}}
|[https://github.com/simple64/simple64/releases {{Simple64Ver}}]</br><abbr title="Final build that supports GLideN64 video plugin but its obsolete. Use RMG with GLideN64 instead.">[https://github.com/thekovic/simple64/releases/tag/v2021.5.30 GLideN64]</abbr>
+
|[https://nightly.link/ares-emulator/ares/workflows/build/master <abbr title="Latest development build version">git Artifacts</abbr>]<br/>[https://github.com/ares-emulator/ares/releases {{aresVer}}]
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
|?
+
|High
| High
+
|[https://ares-emu.net/compatibility/nintendo-nintendo-64 97%<br/><small>873 out of 900 reported titles</small>]
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|-
|[[RMG]]
+
|[[simple64]]
 
|align=left|{{Icon|Windows|Linux}}
 
|align=left|{{Icon|Windows|Linux}}
|[https://github.com/Rosalie241/RMG/releases {{RMGVer}} stable]</br>[https://nightly.link/Rosalie241/RMG/workflows/build/master {{RMGVer}}-dev]
+
|[https://github.com/simple64/simple64/releases {{Simple64Ver}}]</br><abbr title="Final build that supports GLideN64 video plugin but its obsolete. Use RMG with GLideN64 instead.">[https://github.com/thekovic/simple64/releases/tag/v2021.5.30 GLideN64]</abbr>
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|High
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
|-
 
|[[BizHawk]]<br/><small>(Mupen64Plus)(ares)(MAME)<ref group=N>MAME core for [[#Aleck 64 arcade emulation|Aleck 64]] only.</ref></small>
 
|align=left|{{Icon|Windows|Linux}}
 
|[https://gitlab.com/TASVideos/BizHawk/-/pipelines Dev builds]<br/>[http://tasvideos.org/BizHawk/ReleaseHistory.html {{BizHawkVer}}]
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]<br/>[[BizHawk#Supported_systems|(Core dependent)]]</small>
 
| <small>[[Recommended N64 plugins|Plugin dependent]]<br/>[[BizHawk#Supported_systems|Core dependent]]</small>
 
|{{✓}}
 
|{{✓}}
 
|{{~}}
 
 
|-
 
|-
 
|[[Project64]]
 
|[[Project64]]
Line 104: Line 93:
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
|{{}}
+
|{{~}}
 
|-
 
|-
|[[Mupen64Plus]]
+
|[[BizHawk]]
|align=left|{{Icon|Windows|Linux|macOS}}
+
|align=left|{{Icon|Windows|Linux}}
|[https://bitbucket.org/ecsv/mupen64plus-mxe-daily/downloads/?tab=tags MXE Builds]<br/>[https://github.com/mupen64plus/mupen64plus-core/releases/tag/nightly-build nightly]
+
|[https://gitlab.com/TASVideos/BizHawk/-/pipelines Dev builds]<br/>[http://tasvideos.org/BizHawk/ReleaseHistory.html {{BizHawkVer}}]
|{{}}
+
|{{}}<abbr title="Possible with MAME core.">*</abbr>
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin/<abbr title="Supports MAME, mupen64plus and Ares64">Core</abbr><br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
|{{✗}}<ref group=N>RMG is recommended instead of using Mupen64Plus MXE builds because RMG comes bundled with GLideN64, angrylion's RDP Plus and ParaLLEl-RDP for video plugins, and mupen64plus-hle-rsp, CXD4 and ParaLLEl-RSP for RSP plugins.</ref>
 
|-
 
|[[RetroArch|ParaLLEl-N64]]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|[https://buildbot.libretro.com/nightly/ libretro core]<br>[https://parallel-launcher.ca/ Parallel Launcher Fork]
 
|{{✗}}
 
 
|{{~}}
 
|{{~}}
|{{✓}}
 
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
 
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}<ref group=N name=obsolete>Obsolete and replaced by Mupen64Plus-Next. ParaLLEl-N64 should now only be considered for older ROM hacks that don't play well with the newer, more [[Emulation_accuracy|accurate]] plugins.</ref>
 
|-
 
|[[CEN64]]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/tj90241/cen64 {{CEN64Ver}}]
 
|{{✗}}
 
|{{~}}
 
|{{✗}}
 
|?
 
| Partial Cycle
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
 
|-
 
|-
 
|[[MAME]]
 
|[[MAME]]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|<abbr title="Latest development version">git artifacts</abbr><ref group=N>[https://nightly.link/mamedev/mame/workflows/ci-windows/master CI-Windows] [https://nightly.link/mamedev/mame/workflows/ci-linux/master CI-Linux] [https://nightly.link/mamedev/mame/workflows/ci-macos/master CI-Macos]</ref></br>[http://www.mamedev.org/release.html {{MAMEVer}}]<br/>[https://buildbot.libretro.com/nightly/ libretro core]<ref group=N>As 0.251, 0.139 (2010), 0.78 (2003), 0.37b5 (2000)</ref>
 
|<abbr title="Latest development version">git artifacts</abbr><ref group=N>[https://nightly.link/mamedev/mame/workflows/ci-windows/master CI-Windows] [https://nightly.link/mamedev/mame/workflows/ci-linux/master CI-Linux] [https://nightly.link/mamedev/mame/workflows/ci-macos/master CI-Macos]</ref></br>[http://www.mamedev.org/release.html {{MAMEVer}}]<br/>[https://buildbot.libretro.com/nightly/ libretro core]<ref group=N>As 0.251, 0.139 (2010), 0.78 (2003), 0.37b5 (2000)</ref>
 +
|{{✓}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
 
|{{~}}
|{{~}}
+
|High
 
|[http://adb.arcadeitalia.net/lista_mess.php?software_list_name=n64&compatibility= 1%<br/><small>13 out of 993 reported titles</small>]
 
|[http://adb.arcadeitalia.net/lista_mess.php?software_list_name=n64&compatibility= 1%<br/><small>13 out of 993 reported titles</small>]
|?
 
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|-
|n64
+
|[[CEN64]]
|align=left|{{Icon|Windows|Linux}}
+
|align=left|{{Icon|Windows|Linux|macOS}}
|[https://github.com/Dillonb/n64?tab=readme-ov-file#download git]
+
|[https://github.com/tj90241/cen64 git]
 
|{{✗}}
 
|{{✗}}
 +
|{{~}}
 
|{{✗}}
 
|{{✗}}
|{{✗}}
+
|Cycle
|?
+
|
|?
 
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
|{{✗}}(WIP)
+
|{{✗}}
 
|-
 
|-
|Kaizen
+
|[[1964]]
|align=left|{{Icon|Windows|Linux}}
+
|align=left|{{Icon|Windows}}
|[https://github.com/SimoneN64/Kaizen#pre-built-binaries git]
+
|[https://github.com/Graslu/1964GEPD/releases/tag/latest 1964GEPD]<br /><abbr title="Official">[http://www.emulation64.com/files/getfile/936/ 1.1]</abbr><br /><abbr title="Unofficial SVN">[http://files.emulation64.fr/Emulateurs/EMU_1964_146.zip 1.2 r146]</abbr>
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 +
|{{~}}
 +
|Low
 +
|
 +
|{{✓}}
 
|{{✗}}
 
|{{✗}}
|?
+
|{{✗}}<ref group=N name=1964GEPD>[https://github.com/Graslu/1964GEPD/releases/tag/latest 1964GEPD] is only recommended to use for Goldeneye 007 or Perfect Dark; because this emulator is primarily made for GoldenEye/Perfect Dark and modified for use with the Mouse Injector and their ROM hacks. '''It has poor ROM support outside of these games'''. Another and recommended option for Goldeneye: 007 is [https://github.com/garungorp/MouseInjectorDolphinDuck#supported-mupen64plusretroarch garungorp's MouseInjectorDolphinDuck] with mupen64plus_next_libretro.</ref>
|?
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}(WIP)
 
 
|-
 
|-
 
|Rokuyon
 
|Rokuyon
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|align=left|{{Icon|Windows|Linux|macOS}}
|[https://github.com/Hydr8gon/rokuyon {{RokuyonVer}}]
+
|[https://github.com/Hydr8gon/rokuyon git]
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|?
+
|Low
|?
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
|{{✗}}(WIP)
 
|-
 
|R64Emu
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/rasky/r64emu git]
 
|{{✗}}
 
|{{✗}}
 
 
|{{✗}}
 
|{{✗}}
|?
 
|?
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}(WIP)
 
|-
 
|Gopher64
 
|align=left|{{Icon|Windows|Linux}}
 
|[https://github.com/gopher64/gopher64/releases {{Gopher64Ver}}]
 
|{{?}}
 
|{{?}}
 
|{{?}}
 
|?
 
|?
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}(WIP)
 
|-
 
|[[1964]]
 
|align=left|{{Icon|Windows}}
 
|[https://github.com/Graslu/1964GEPD/releases/tag/latest 1964GEPD]<br /><abbr title="Official">[http://www.emulation64.com/files/getfile/936/ 1.1]</abbr><br /><abbr title="Unofficial SVN">[http://files.emulation64.fr/Emulateurs/EMU_1964_146.zip 1.2 r146]</abbr>
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|?
 
| Low
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}<ref group=N name=1964GEPD>[https://github.com/Graslu/1964GEPD/releases/tag/latest 1964GEPD] is only recommended to use for Goldeneye 007 or Perfect Dark; because this emulator is primarily made for GoldenEye/Perfect Dark and modified for use with the Mouse Injector and their ROM hacks. '''It has poor ROM support outside of these games'''. Another and recommended option for Goldeneye: 007 is [https://github.com/garungorp/MouseInjectorDolphinDuck#supported-mupen64plusretroarch garungorp's MouseInjectorDolphinDuck] with mupen64plus_next_libretro.</ref>
 
 
|-
 
|-
 
|[[DaedalusX64]]
 
|[[DaedalusX64]]
Line 236: Line 165:
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|{{~}}
|?
+
|Low
|?
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{~}}
 
|{{~}}
Line 248: Line 177:
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|?
+
|Low
|?
+
|
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 260: Line 189:
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|?
+
|Mid
|?
+
|
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 267: Line 196:
 
|-
 
|-
 
|[[UltraHLE]]
 
|[[UltraHLE]]
|align=left|{{Icon|Windows|W9x}}
+
|align=left|{{Icon|Windows}}
 
|[https://web.archive.org/web/20070312015944/http://www.emuunlim.com/UltraHLE/ultrahle.zip 1.0]
 
|[https://web.archive.org/web/20070312015944/http://www.emuunlim.com/UltraHLE/ultrahle.zip 1.0]
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|?
+
|Low
| Low
+
|
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 284: Line 213:
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|?
+
|Low
|?
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 +
|-
 +
|R64Emu
 +
|align=left|{{Icon|Windows|Linux|macOS}}
 +
|[https://github.com/rasky/r64emu git]
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|High
 +
|
 +
|{{✓}}
 +
|{{~}}
 +
|{{✗}}(WIP)
 
|-
 
|-
 
!colspan="11"|Mobile / ARM
 
!colspan="11"|Mobile / ARM
 
|-
 
|-
|[[RetroArch|Mupen64Plus-Next]]
+
|[[Mupen64Plus]] FZ
|align=left|{{Icon|Android|iOS}}
+
|align=left|{{Icon|Android}}
|[https://buildbot.libretro.com/nightly/ libretro core]
+
|[https://play.google.com/store/apps/details?id=org.mupen64plusae.v3.fzurita 3.0.322 (beta)]
 
|{{✗}}
 
|{{✗}}
 +
|{{?}}
 
|{{~}}
 
|{{~}}
|{{✓}}
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
 
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|-
|[[Mupen64Plus]] FZ
+
|[[RetroArch|Mupen64Plus-Next]]
|align=left|{{Icon|Android}}
+
|align=left|{{Icon|Android|iOS}}
|[https://play.google.com/store/apps/details?id=org.mupen64plusae.v3.fzurita 3.0.322 (beta)] [https://github.com/mupen64plus-ae/mupen64plus-ae git]
+
|[https://buildbot.libretro.com/nightly/ libretro core]
 
|{{✗}}
 
|{{✗}}
|{{?}}
 
 
|{{~}}
 
|{{~}}
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|{{~}}
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
|{{✓}}
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 +
|{{TBD}}
 
|-
 
|-
 
|[[Mupen64Plus]]
 
|[[Mupen64Plus]]
Line 322: Line 263:
 
|{{?}}
 
|{{?}}
 
|{{?}}
 
|{{?}}
|[https://docs.google.com/spreadsheets/u/0/d/10AhvborAoFjTdVvnJ8lMl6PH_RT_3LXUhCknNqycg7A/htmlview?hl=en_GB&pli=1#gid=0 23%<br/><small>45 out of 194 reported titles</small>]<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
Line 329: Line 270:
 
|-
 
|-
 
!colspan="11"|Consoles
 
!colspan="11"|Consoles
|-
 
|[[RetroArch|Mupen64Plus-Next]]
 
|align=left|{{Icon|XB1|SXS}}
 
|[https://www.retroarch.com/?page=platforms RetroArch]
 
|{{✗}}
 
|{{~}}
 
|{{✓}}
 
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
 
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
 
|-
 
|-
 
|[[DaedalusX64]]
 
|[[DaedalusX64]]
Line 348: Line 277:
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|{{~}}
|[https://daedalusx64.rinnegatamante.it/ 49%<br/><small>234 out of 473 reported titles (Vita)</small>]
+
|Low
[https://docs.google.com/spreadsheets/d/13izCg9TYUWpF3Ot3P3wVUzAk_qpsNtsNqmydakELIUQ/edit#gid=1172263683 61%<br/><small>97 out of 157 reported titles from 1.1.6-1.1.8 (PSP)</small>]
+
|
 
 
[https://wiki.gbatemp.net/wiki/DaedalusX64_3DS 27%<br/><small>71 out of 260 reported titles (3DS)</small>]
 
|?
 
 
|{{✓}}
 
|{{✓}}
 
|{{~}}
 
|{{~}}
Line 358: Line 284:
 
|-
 
|-
 
|Not64
 
|Not64
|align=left|{{Icon|GCN|Wii|WiiU}}
+
|align=left|{{Icon|GCN|Wii}}
|[https://github.com/Extrems/Not64/releases/latest {{Not64Ver}}]
+
|[https://github.com/Extrems/Not64/releases/latest 20231102]
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|[https://wiki.gbatemp.net/wiki/Wii64_Compatibility_List 71%<br/><small>303 out of 424 reported titles</small>]<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
|?
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
Line 370: Line 296:
 
|-
 
|-
 
|[[Virtual Console]]
 
|[[Virtual Console]]
|align=left|{{Icon|Wii}}
+
|align=left|{{Icon|Wii|WiiU}}
 
|N/A
 
|N/A
 
|{{✗}}
 
|{{✗}}
 
|{{?}}
 
|{{?}}
 
|{{?}}
 
|{{?}}
|[[Wikipedia:List_of_Virtual_Console_games_for_Wii_(North_America)#Nintendo_64|<small>Only for selected titles (Wii)</small>]]
+
|Mid
| <small>Game dependent</small>
+
|[[Wikipedia:List_of_Virtual_Console_games_for_Wii_(North_America)#Nintendo_64|<small>Only for selected titles (Wii)</small>]]<br/>[[Wikipedia:List_of_Virtual_Console_games_for_Wii_U_(North_America)#Nintendo_64|<small>Only for selected titles (Wii U)</small>]]
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|-
|[[Virtual Console]]
+
|Nintendo Switch Online <small>Hovercraft<small>
|align=left|{{Icon|WiiU}}
 
|N/A
 
|{{✗}}
 
|{{?}}
 
|{{?}}
 
|[[Wikipedia:List_of_Virtual_Console_games_for_Wii_U_(North_America)#Nintendo_64|<small>Only for selected titles (Wii U)</small>]]
 
| <small>Game dependent</small>
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|[[Nintendo Switch Online]] <small>(Hovercraft)<small>
 
 
|align=left|{{Icon|NX}}
 
|align=left|{{Icon|NX}}
 
|N/A
 
|N/A
Line 399: Line 313:
 
|{{✗}}
 
|{{✗}}
 
|{{~}}<ref group=N name=SM3DAS>Texture replacement only used in Super Mario 3D All-Stars.</ref>
 
|{{~}}<ref group=N name=SM3DAS>Texture replacement only used in Super Mario 3D All-Stars.</ref>
 +
|Low
 
|[https://nintendo.fandom.com/wiki/Nintendo_64_-_Nintendo_Switch_Online#Included_Games <small>Only for selected titles</small>]
 
|[https://nintendo.fandom.com/wiki/Nintendo_64_-_Nintendo_Switch_Online#Included_Games <small>Only for selected titles</small>]
| <small>Game dependent</small>
 
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
Line 411: Line 325:
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|[http://retroxbox.labrat.fr/file/pdf/comp_list/Surreal%2064%20B5.1%20CE%20Compatibility%20and%20Settings%20List%20-%20Surreal%20Compatibility_Settings.pdf 76% <br/><small>236 out of 311 reported titles]<br/>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
Line 423: Line 337:
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|?<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
Line 430: Line 344:
 
|-
 
|-
 
|[[Wii64]]
 
|[[Wii64]]
|align=left|{{Icon|GCN|Wii|WiiU|PS3}}
+
|align=left|{{Icon|GCN|Wii|PS3}}
 
|[https://code.google.com/archive/p/mupen64gc/downloads 1.1 beta] [https://github.com/emukidid/wii64-ps3/releases git]
 
|[https://code.google.com/archive/p/mupen64gc/downloads 1.1 beta] [https://github.com/emukidid/wii64-ps3/releases git]
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
|[https://wiki.gbatemp.net/wiki/Wii64_Compatibility_List 71%<br/><small>303 out of 424 reported titles</small>]<br/><small>[[Recommended N64 plugins|(Plugin dependent)]]</small>
+
|<small>[[Recommended N64 plugins|Plugin<br/>Dependent]]</small>
| <small>[[Recommended N64 plugins|Plugin dependent]]</small>
+
|
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
|{{~}}
+
|{{}}
 
|}
 
|}
 
</div>
 
</div>
Line 445: Line 359:
  
 
===Comparisons===
 
===Comparisons===
Although many Nintendo 64 emulators have been made and many games can be run between them, until recently, complete compatibility and [[Emulation_accuracy|accuracy]] left a bit to be desired. For half a decade, Mupen64Plus and Project64 have vied for the most playable emulator. Which was more compatible often depended on when and in what configuration each emulator had been tested. As of August 2017, both emulators have roughly equal compatibility and [[Emulation_accuracy|accuracy]] when running with the same [[recommended N64 plugins]] setup, though both default to Glide64, a now relatively lackluster plugin.
+
Although many Nintendo 64 emulators have been made and many games can be run between them, until recently, complete compatibility/accuracy left a bit to be desired. For half a decade, Mupen64Plus and Project64 have vied for the most playable emulator. Which was more compatible often depended on when and in what configuration each emulator had been tested. As of August 2017, both emulators have roughly equal compatibility and accuracy when running with the same [[recommended N64 plugins]] setup, though both default to Glide64, a now relatively lackluster plugin.
  
 
;[[Mupen64Plus]]
 
;[[Mupen64Plus]]
:A multi-platform emulator based on Hacktarux's Mupen64. It's about as [[Emulation_accuracy|accurate]] as Project64<ref>loganmc10. [https://github.com/mupen64plus/mupen64plus-core/pull/336 ''Ignore TLB write if TLB entry is unmapping itself'']. "By the way, once this, along with the other PR's I have waiting are merged, we are at "compatibility parity" with Project64 as far as I can tell. I don't know of any game that doesn't boot with mupen64plus that works in PJ64."</ref> when both emulators are run with GLideN64. However, Mupen64Plus lacks a native GUI, instead being launched either from the command line or by dragging and dropping ROMs into the executable and editing the config with a text editor. It also only comes bundled with outdated video plugins, so to ensure the best possible compatibility, sourcing better third-party plugins such as GLideN64 is a must. [[BizHawk]] and [[OpenEmu]] use forks of Mupen64Plus and its plugins for their N64 emulation, but they seem to be shallow. As of 2022, Project64-style overclocking for faster frame rates has been added under the option 'CountPerOpDenomPot'.
+
:A multi-platform emulator based on Hacktarux's Mupen64. It's about as accurate as Project64<ref>loganmc10. [https://github.com/mupen64plus/mupen64plus-core/pull/336 ''Ignore TLB write if TLB entry is unmapping itself'']. "By the way, once this, along with the other PR's I have waiting are merged, we are at "compatibility parity" with Project64 as far as I can tell. I don't know of any game that doesn't boot with mupen64plus that works in PJ64."</ref> when both emulators are run with GLideN64. However, Mupen64Plus lacks a native GUI, instead being launched either from the command line or by dragging and dropping ROMs into the executable and editing the config with a text editor. It also only comes bundled with outdated video plugins, so to ensure the best possible compatibility, sourcing better third-party plugins such as GLideN64 is a must. [[BizHawk]] and [[OpenEmu]] use forks of Mupen64Plus and its plugins for their N64 emulation, but they seem to be shallow. As of 2022, Project64-style overclocking for faster frame rates has been added under the option 'CountPerOpDenomPot'.
  
 
:;Mupen64Plus-Next and ParaLLEl-N64
 
:;Mupen64Plus-Next and ParaLLEl-N64
::Both are heavily modified forks developed as [[libretro]] cores. They introduce many features and optimizations that aren't present in the mainline build. Alongside [[RetroArch]]'s general features, it adds 3-point texture filtering for Glide64, superior A/V sync and latency, and even an initially exclusive LLE Vulkan renderer based on Angrylion's pixel-perfect RDP plugin, now known as ParaLLEl-RDP, making it a better alternative to the standalone version in some cases. ParaLLEl-RDP has a special "[https://www.youtube.com/watch?v=mzR93F9gPdc Super VI Mode]" option, which, if used, can make the visuals of N64 games look less blurry with fairly mitigated jaggies even at their native resolutions, although it may need a [https://www.youtube.com/watch?v=z7_D_D419S0 powerful GPU]. It also offers native high-resolution rendering, only available in integer scales of the original N64 resolution.
+
::Both are heavily-modified forks developed as [[libretro]] cores. They introduce many features and optimizations not present in the mainline build. Alongside [[RetroArch]]'s general features, it adds 3-point texture filtering for Glide64, superior A/V sync and latency, and even an initially exclusive LLE Vulkan renderer based on Angrylion's pixel-perfect RDP plugin, now known as ParaLLEl-RDP, making it a better alternative to the standalone version in some cases. ParaLLEl-RDP has a special "[https://www.youtube.com/watch?v=mzR93F9gPdc Super VI Mode]" option, which, if used, can make the visuals of N64 games look less blurry with fairly mitigated jaggies even at their native resolutions, although it may need a [https://www.youtube.com/watch?v=z7_D_D419S0 powerful GPU]. It also offers native high-resolution rendering, only available in integer scales of the original N64 resolution.
::As for the difference between the two cores, ParaLLEl-N64 is actually the older of the two, as it is based on the old Mupen64Plus libretro core, having been renamed to ParaLLEl-N64 upon its initial integration of the ParaLLEl-RDP and RSP plugins. In addition to the ParaLLEl plugins, it also retains the older HLE plugins (glN64, Rice and Glide64) and Angrylion Plus. Meanwhile, Mupen64Plus-Next is a new rebase off the bleeding-edge mainline, which is the more compatible of the two. It does away with the legacy plugins and replaces them with GLideN64 as a better HLE solution (though, of course, the ParaLLEl plugins and Angrylion Plus stay), considerably cleans up the Core Options menu for easier configuration and adds Transfer Pack support. Add to this with the fact that going forward, all further improvements and new features will be applied to the Mupen64Plus-Next core. As a result, Mupen64Plus-Next is now the more recommended of the two. Thus ParaLLEl-N64 should now only be considered for performance reasons or perhaps for older ROM hacks that don't play well with the newer, more [[Emulation_accuracy|accurate]] plugins.
+
::As for the difference between the two cores, ParaLLEl-N64 is actually the older of the two, as it is based on old Mupen64Plus libretro core, having been renamed to ParaLLEl-N64 upon its initial integration of the ParaLLEl-RDP and RSP plugins. In addition to the ParaLLEl plugins, it also retains the older HLE plugins (glN64, Rice and Glide64) and Angrylion Plus. Meanwhile, Mupen64Plus-Next is a new rebase off the bleeding-edge mainline, which is the more compatible of the two. It does away with the legacy plugins and replaces them with GLideN64 as a better HLE solution (though, of course, the ParaLLEl plugins and Angrylion Plus stay), considerably cleans up the Core Options menu for easier configuration and adds Transfer Pack support. Add to this the fact that going forward, all further improvements and new features will be to the Mupen64Plus-Next core, and Mupen64Plus-Next is now the more recommended of the two. Thus ParaLLEl-N64 should now only be considered for performance reasons or perhaps for older ROM hacks that don't play well with the newer, more accurate plugins.
  
 
:;[[RMG]]
 
:;[[RMG]]
::Rosalie's Mupen GUI aims to close the gap between Project64 and Mupen64Plus in terms of user experience. Its interface is about on par with simple64's in terms of cleanliness and ease of use, but unlike simple64, it remains a shallow fork of upstream Mupen64Plus and allows you to use other plugins. The latest development versions come bundled with GLideN64, Angrylion RDP Plus and ParaLLEl-RDP for video plugins, and mupen64plus-hle-rsp, CXD4 and ParaLLEl-RSP for RSP plugins It can still use the older plugins that come with regular Mupen64Plus in case if your PC can't handle the newer plugins. If you prefer GLideN64, this is a superior alternative to simple64, as the last version of simple64 that uses GLideN64 is becoming increasingly outdated.
+
::Rosalie's Mupen GUI aims to close the gap between Project64 and Mupen64Plus in terms of user experience. Its interface is about on par with simple64's in terms of cleanliness and ease of use, but unlike simple64, it remains a shallow fork of upstream Mupen64Plus and allows you to use other plugins. The latest development versions come bundled with GLideN64, Angrylion RDP Plus and ParaLLEl-RDP for video plugins, and mupen64plus-hle-rsp, CXD4 and ParaLLEl-RSP for RSP plugins It can still use the older plugins that come with regular Mupen64Plus in case your PC can't handle the newer plugins. If you prefer GLideN64, this is a superior alternative to simple64, as the last version of simple64 that uses GLideN64 is becoming increasingly outdated.
  
 
:;[[simple64]]
 
:;[[simple64]]
::A fork of Mupen64Plus with a custom-made Qt GUI. This is probably the easiest "just works out of the box" solution for Nintendo 64 emulation, as it comes bundled with ParaLLEl-RDP and ParaLLEl-RSP, ensuring excellent compatibility and good speed without needing to mess with plugins or settings, provided your hardware supports Vulkan. However, unlike other emulators, it does not allow you to use other plugins. While it began as a shallow fork, it has increasingly become something closer to a hard fork, as its developer has opted to make various [[Emulation_accuracy|accuracy-focused]] changes to the emulation core that will require additional work to port back to upstream or to other forks. It also currently features only a cached interpreter core, as the dynarecs used by Mupen64Plus are incompatible with the core timing changes made by the developer. While this makes simple64 more [[Emulation_accuracy|accurate]] (especially DMA transfers) than most other N64 emulators, it also results in slower performance. If faster speed and more enhancements are desired, there is an older build that is closer to upstream and uses GLideN64 as its graphics plugin. Unfortunately, it lacks the texture enhancement suite required for using packs and upscaling, though.
+
::A fork of Mupen64Plus with a custom-made Qt GUI. This is probably the easiest "just works out of the box" solution for Nintendo 64 emulation, as it comes bundled with ParaLLEl-RDP and ParaLLEl-RSP, ensuring excellent compatibility and good speed without needing to mess with plugins or settings, provided your hardware supports Vulkan. However, unlike other emulators, it does not allow you to use other plugins. While it began as a shallow fork, it has increasingly become something closer to a hard fork, as its developer has opted to make various accuracy-focused changes to the emulation core that will require additional work to port back to upstream or to other forks. It also currently features only a cached interpreter core, as the dynarecs used by Mupen64Plus are incompatible with the core timing changes made by the developer. While this makes simple64 more accurate than most other N64 emulators, it also results in slower performance. If faster speed and more enhancements are desired, there is an older build that is closer to upstream and uses GLideN64 as its graphics plugin. Unfortunately, it lacks the texture enhancement suite required for using packs and upscaling, though.
  
 
:;Wii64 and Not64
 
:;Wii64 and Not64
Line 464: Line 378:
  
 
;[[Ares]]
 
;[[Ares]]
:An open-source multi-system emulator and successor to Near's [[higan]] project, with a mostly original N64 core. Unlike most other N64 emulators, it aims for high [[Emulation_accuracy|accuracy]] and does not employ HLE RSP or RDP emulation of any kind, nor does it use game-specific hacks. It uses Themaister's ParaLLEl-RDP Vulkan renderer (with the MAME renderer as a software-based fallback) for pixel-perfect LLE graphics. It currently passes several stringent [https://github.com/ares-emulator/ares/pull/613 accuracy tests] the other emulators do not, also [https://old.reddit.com/r/emulation/comments/181g1wk/ares_v134_has_been_released/kag3h4r/ CPU & RSP timings are really, really good] based on real hardware tests. But system requirements more demanding than other popular N64 emulators, having said that; for Windows users, it should be possible to maintain full speed on a Ryzen 7 3700X, system requirements for macOS and Linux users may be signficantly lower due to: [https://old.reddit.com/r/emulation/comments/zwq9fu/ares_crossplatform_open_source_multisystem/j1ys10k/ ARM64 ABI Microsoft has chosen for Windows] makes context switches more expensive than on the SysV ABI used in *nix.
+
:An open-source multi-system emulator and successor to Near's [[higan]] project, with a mostly original N64 core. Unlike other N64 emulators, it aims for high accuracy and does not employ HLE RSP or RDP emulation of any kind, nor does it use game-specific hacks. It uses Themaister's ParaLLEl-RDP Vulkan renderer (with the MAME renderer as a software-based fallback) for pixel-perfect LLE graphics. While it is currently less compatible than Mupen64Plus or Project64, it is quickly catching up to them, and it currently passes several stringent [https://github.com/ares-emulator/ares/pull/613 accuracy tests] the other emulators do not. However, it remains to be seen how accurate its developers are willing to make it without compromising speed and playability on current machines. For Windows users, it should be possible to maintain full speed on a Ryzen 7 3700X, system requirements for macOS and Linux users may be signficantly lower due to: [https://old.reddit.com/r/emulation/comments/zwq9fu/ares_crossplatform_open_source_multisystem/j1ys10k/ ARM64 ABI Microsoft has chosen for Windows makes context switches more expensive than on the SysV ABI used in *nix].
  
:* v130 version brings 64DD emulation and macOS support, developer [https://twitter.com/LuigiBlood/ LuigiBlood] said [https://twitter.com/LuigiBlood/status/1568694009496756225 "This is the most [[Emulation_accuracy|accurate]] 64DD emulation attempt I've ever done, honestly. A lot of the stuff I programmed are sometimes genuinely useless. A lot also involves timings of the drive itself and more"].  
+
:* v130 version brings 64DD emulation and macOS support, developer [https://twitter.com/LuigiBlood/ LuigiBlood] said [https://twitter.com/LuigiBlood/status/1568694009496756225 "This is the most accurate 64DD emulation attempt I've ever done, honestly. A lot of the stuff I programmed are sometimes genuinely useless. A lot also involves timings of the drive itself and more"].  
 
:* [https://old.reddit.com/r/emulation/comments/11ltlvu/ares_multisystem_emulator_v132_has_been_released/jbe12ym/ v132 version] brings improved accuracy of Controller pak and Rumble pak emulation.
 
:* [https://old.reddit.com/r/emulation/comments/11ltlvu/ares_multisystem_emulator_v132_has_been_released/jbe12ym/ v132 version] brings improved accuracy of Controller pak and Rumble pak emulation.
 
:* [https://old.reddit.com/r/emulation/comments/155ibi2/ares_multi_system_emulator_v133_has_been_released/ v133 version] brings lots of performance tuning, timing improvements (fixes Jet Force Gemini and Micky's Speedway USA) and emulation of RSP SU pipeline stalls (fixes Donkey Kong 64 and Banjo-Tooie).
 
:* [https://old.reddit.com/r/emulation/comments/155ibi2/ares_multi_system_emulator_v133_has_been_released/ v133 version] brings lots of performance tuning, timing improvements (fixes Jet Force Gemini and Micky's Speedway USA) and emulation of RSP SU pipeline stalls (fixes Donkey Kong 64 and Banjo-Tooie).
:*[https://old.reddit.com/r/emulation/comments/181g1wk/ares_v134_has_been_released/ v134 version] brings support for .D64 disk images, 64DD disk swapping, support the N64 Transfer Pak, homebrew mode, fixed RTC 64DD emulation and other accuracy fixes.
 
  
 
;[[Project64]]
 
;[[Project64]]
:An open-source emulator for Windows, as well as one of the oldest. Its official release builds are more up to date than Mupen64Plus', and the current stable version, 3.0.1, is roughly as [[Emulation_accuracy|accurate]] as the development versions of Mupen64Plus when both are played with recommended plugins. It has a more user-friendly interface than some of the Mupen64Plus attempts and supports features such as Transfer Pak emulation and 64DD emulation. It now comes with GLideN64 out-of-the-box, but the default audio plugin isn't even the best in the box. Annoyingly, it also nags you with a timed, unskippable message asking for donations to the project upon launch, though this can be gotten around through a [https://github.com/Rosalie241/PJ64Launcher/releases/tag/1.3.0 script]. An alternative is to download it through [https://github.com/Rosalie241/BetterMajorasMaskInstaller/releases/tag/4.0.2 Rosalie's BetterMajorasMaskInstaller], which downloads the latest nightly version of Project64 with the nagging message removed and installs several useful third-party plugins (it also offers to install HD texture packs for OoT and MM, but you can opt out of those), though take heed - Project64 is currently in the middle of a major code rewrite in preparation for the upcoming 4.0 version, and more than a few regressions and bugs have crept into the nightly builds as a result, so it might be better to just grab the latest plugins and stick to version 3.0.1. For the most part, it works well in [[Wine]], but if you're on a different platform, use Mupen64Plus instead. Note that if you do use Project64, there is an exploit allowing people to remotely access your computer (aka. arbitrary code execution). This exploit only works if you have a ROM from a random website, so watch where you get your ROMs from if you're using Project64.
+
:An open-source emulator for Windows, as well as one of the oldest. Its official release builds are more up-to-date than Mupen64Plus', and the current stable version, 3.0.1, is roughly as accurate as the development versions of Mupen64Plus when both are played with recommended plugins. It has a more user-friendly interface than some of the Mupen64Plus attempts and supports features such as Transfer Pak emulation and 64DD emulation. It now comes with GLideN64 out-of-the-box, but the default audio plugin isn't even the best in the box. Annoyingly, it also nags you with a timed, unskippable message asking for donations to the project upon launch, though this can be gotten around through a [https://github.com/Rosalie241/PJ64Launcher/releases/tag/1.3.0 script]. An alternative is to download it through [https://github.com/Rosalie241/BetterMajorasMaskInstaller/releases/tag/4.0.2 Rosalie's BetterMajorasMaskInstaller], which downloads the latest nightly version of Project64 with the nagging message removed and installs several useful third-party plugins (it also offers to install HD texture packs for OoT and MM, but you can opt out of those), though take heed - Project64 is currently in the middle of a major code rewrite in preparation for the upcoming 4.0 version, and more than a few regressions and bugs have crept into the nightlies as a result, so it might be better to just grab the latest plugins and stick to version 3.0.1. For the most part, it works well in [[Wine]], but if you're on a different platform, use Mupen64Plus instead.
  
 
;[[BizHawk]]
 
;[[BizHawk]]
Line 478: Line 391:
  
 
;[[CEN64]]
 
;[[CEN64]]
:Aims for [[Emulation_accuracy|cycle accuracy]] while at the same time aiming to be usable on modern PC hardware eventually. It lacks many features and has spotty compatibility, but it can already emulate some well-known edge cases, such as picture recognition in Pokemon Snap. Unfortunately, its creator appears to have abandoned the project [https://github.com/n64dev/cen64/releases/tag/v0.3 citing a lack of satisfaction with the program's performance in its current interpreter-based incarnation]. While the baton has been collectively passed to the n64dev community for further development, progress has been slow.
+
:Aims for cycle accuracy while at the same time aiming to be usable on modern PC hardware eventually. It lacks many features and has spotty compatibility, but it can already emulate some well-known edge cases, such as picture recognition in Pokemon Snap. Unfortunately, its creator appears to have abandoned the project [https://github.com/n64dev/cen64/releases/tag/v0.3 citing a lack of satisfaction with the program's performance in its current interpreter-based incarnation]. While the baton has been collectively passed to the n64dev community for further development, progress has been slow.
 
 
;Kaizen
 
:Rewrite of another Nintendo 64 emulator project "[https://github.com/SimoneN64/shibumi shibumi]" which is developed by the same developer. It already has a QT frontend with recent builds, but lack [[#Enhancements]] and support for [[#Hardware features and peripherals]] [https://github.com/SimoneN64/Kaizen#roadmap]. [https://github.com/SimoneN64/Kaizen#running RDP is implemented via ParaLLEl-RDP] and also [https://github.com/SimoneN64/Kaizen#roadmap R4300i, RCP, TLB, joybus are fully implemented]. See their [https://discord.gg/htzNd2rRF6 discord server] for more information.
 
  
 
;[[1964]]
 
;[[1964]]
Line 491: Line 401:
 
;[[Sixtyforce]]
 
;[[Sixtyforce]]
 
:macOS-only, closed-source emulator. It asks you to pay for full access to its features. It was once one of the only choices for Mac users, particularly those with older Macs, since it's the only emulator with a <abbr title="Power PC">PPC</abbr> [[Dynamic recompilation|dynarec]], but, with the switch to x86 and Mupen64Plus being ported to macOS, it has now become rather obsolete. However, development is still ongoing, and it's currently in its [https://sixtyforce.com/rosetta/ third rewrite] to support the upcoming [https://en.wikipedia.org/wiki/Apple-designed_processors Apple Silicon].
 
:macOS-only, closed-source emulator. It asks you to pay for full access to its features. It was once one of the only choices for Mac users, particularly those with older Macs, since it's the only emulator with a <abbr title="Power PC">PPC</abbr> [[Dynamic recompilation|dynarec]], but, with the switch to x86 and Mupen64Plus being ported to macOS, it has now become rather obsolete. However, development is still ongoing, and it's currently in its [https://sixtyforce.com/rosetta/ third rewrite] to support the upcoming [https://en.wikipedia.org/wiki/Apple-designed_processors Apple Silicon].
 +
 +
;[[UltraHLE]]
 +
:Marked a milestone in Nintendo 64 emulation, in that it was the first to play some popular N64 titles at full speed on hardware made at the time of its release through [[High/Low level emulation|high-level emulation]]. It isn't without its drawbacks, though - pressure from users, plus legal threats from Nintendo, forced them to discontinue development. Besides being for historical value, there's not much to expect from this emulator anyway due to compatibility issues.
  
 
;[[Ryu64]]
 
;[[Ryu64]]
 
:A Nintendo 64 emulator made in C#. The 'Ryu' word is named after the "RyuJIT" used in both Visual Basic & C#. But it might have been inspired by the lead author's sole (so far) [https://github.com/Ryujinx/Ryujinx/commits?author=Dudejoe870 commit] to Switch emulator [[Ryujinx]]'s Git repository and his depreciated [https://github.com/Dudejoe870/RyujinxAutoUpdate Ryujinx Auto-Updater] tool. "86RYU", an x86 JIT compiler, is being developed alongside this emulator too.
 
:A Nintendo 64 emulator made in C#. The 'Ryu' word is named after the "RyuJIT" used in both Visual Basic & C#. But it might have been inspired by the lead author's sole (so far) [https://github.com/Ryujinx/Ryujinx/commits?author=Dudejoe870 commit] to Switch emulator [[Ryujinx]]'s Git repository and his depreciated [https://github.com/Dudejoe870/RyujinxAutoUpdate Ryujinx Auto-Updater] tool. "86RYU", an x86 JIT compiler, is being developed alongside this emulator too.
 
;[[UltraHLE]]
 
:Marked a milestone in Nintendo 64 emulation, in that it was the first to play some popular N64 titles at full speed on hardware made at the time of its release through [[High/Low level emulation|high-level emulation]]. It isn't without its drawbacks, though - pressure from users, plus legal threats from Nintendo, forced them to discontinue development. Besides being for historical value, there's not much to expect from this emulator anyway due to compatibility issues.
 
  
 
;n64oid
 
;n64oid
:An Android-exclusive Nintendo 64 emulator based on Mupen64Plus by freeman_zy. It is similar to Project 64 1.6 in terms of compatibility. The APK for n64oid circulates on many legally questionable APK sites. n64oid has the infamous problem in Mario Kart 64 of the screen in Wario Stadium not displaying properly, as it displays nothing but black. It upscales all games to widescreen, which works well most of time, but it will have performance issues on some older phones. The emulator is relatively poor, but it is much easier to set up than other options. The emulator features a menu with many similarities to the mobile edition of Snes9x EX+ and the My Boy! family of Android emulators for Game Boy systems.
+
:An Android-exclusive Nintendo 64 emulator. It is similar to Project 64 1.6 in terms of compatibility, although it is unknown who authored it, as the APK for n64oid circulates on many legally-questionable APK sites. n64oid has the infamous problem in Mario Kart 64 of the screen in Wario Stadium not displaying properly, as it displays nothing but black. It upscales all games to widescreen, which works well most of time, but it will have performance issues on many phones. The emulator is relatively poor, but it is much easier to set up than other options. The emulator features a menu with many similarities to the mobile edition of Snes9x EX+ and the My Boy! family of Android emulators for Game Boy systems.
  
 
; [[Nintendo Switch Online]] (Hovercraft)
 
; [[Nintendo Switch Online]] (Hovercraft)
* N64 support was added to Nintendo Switch Online Expansion Pack in September 2021, alongside Sega Genesis games.
+
* N64 support was added to Nintendo Switch Online Expansion Pack in September 2021, alongside Sega Genesis games;
* Users are limited to the selection of games Nintendo chooses to make available on the service.
+
* Users are limited to the selection of games Nintendo chooses to make available on the service;
* Supports online and Local Play (up to 4 players).
+
* Supports online and Local Play (up to 4 players);
* Emulation [[Emulation_accuracy|accuracy]] varies between games; sometimes, being worse than their Wii and/or Wii U Virtual Console versions.
+
* Emulation accuracy varies between games, sometimes, being worse than the Wii and/or Wii U Virtual Console versions;
* Updates on the app can be slow due to how the N64 ROMs require more debugging time.
+
* Updates on the app can be slow due to how the N64 ROMs require more debugging time or by rating board logistics (e.g.: ''GoldenEye 007'')
* Different games between regions (Japan and International).
+
* Different games between regions (Japan and International)
* A "mature" version of the app is available for titles that received a mature/adult-like age rating within their region. Japan has the "+18" branding for titles that received a CERO Z rating (e.g.: ''GoldenEye 007'' and ''Jet Force Gemini''). United States has the "Mature 17+" branding for titles that received a Mature 17+ rating from the ESRB (e.g.: ''Perfect Dark'' and ''Turok: Dinosaur Hunter''). Europe and Australia has the "Mature" branding for titles that received a PEGI 16 or PEGI 18 rating. Brazil has "ClassInd: 18 Anos" branding and Korea has "19+" branding.
 
  
 
==Enhancements==
 
==Enhancements==
<div style="overflow-x:auto;width:100%">
+
{|class="wikitable" style="text-align:center; vertical-align:middle;"
{|class="wikitable" style="text-align:center; vertical-align:middle;width:100%"
 
 
|- style="font-weight:bold;"
 
|- style="font-weight:bold;"
 
! colspan=2 | Name
 
! colspan=2 | Name
Line 522: Line 430:
 
! Bizhawk
 
! Bizhawk
 
|-
 
|-
| rowspan=6 | Graphics
+
| colspan=2 | [https://retroachievements.org/gameList.php?c=2 RetroAchievements]
| [[Resolution|Resizable Internal Resolution]]
+
| {{Y}}
| {{}}
+
| {{N}}
| {{}}
+
| {{N}}
| {{}}
+
| {{N}}
| {{}}
+
| {{N}}
| {{?}}
+
| {{Y}}
| {{?}}
 
 
|-
 
|-
| [[Widescreen_hacks#Nintendo_64|Widescreen hack]]
+
| colspan=2 | [[Resolution|Resizable Internal Resolution]]
| {{}}[https://forums.launchbox-app.com/files/file/3649-nintendo-64-n64-widescreen-project-list-of-working-widescreen-games-and-config-files-for-mupen64plus-next-retroarch-core/ *]
+
| {{Y}}
| {{?}}
+
| {{Y}}
| {{?}}
+
| {{Y}}
| {{?}}
+
| {{Y}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| [[Texture packs#Nintendo_64|Texture Packs]]
+
| colspan=2 | [[Netplay#Nintendo_64|Netplay]]
| {{}}<ref group=N3 name=Glide>Only with [https://emulation.gametechwiki.com/index.php/Recommended_N64_plugins#GLideN64 GLideN64] video plugin.</ref>
+
|{{Y}}[https://github.com/libretro/mupen64plus-libretro-nx/issues/501 *]
| {{}}
+
| {{Y}}
| {{}}
+
| {{N}}
| {{}}<ref group=N3 name=Glide>Only with [https://emulation.gametechwiki.com/index.php/Recommended_N64_plugins#GLideN64 GLideN64] video plugin.</ref>
+
|{{~}}<ref group=N3 name=input>Project64, RMG and Mupen64Plus MXE builds requires replacing the input plugin with one [https://www.play64.com/netplay-plugin/ with netplay support]. Another alternative for netplay is using [[Project64 Netplay]] fork.</ref>
| {{?}}
 
 
| {{?}}
 
| {{?}}
 +
| {{N}}[https://github.com/TASEmulators/BizHawk/issues/2450#issuecomment-707492502 *]
 
|-
 
|-
| Pre-rendering AA<br/><small>(MSAA, SSAA)</small>
+
| colspan=2 | [[Overclocking|Overclock]]
| {{✗}}
 
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 +
| {{Y}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| Ray-tracing<br/><small>([https://devblogs.microsoft.com/directx/announcing-microsoft-directx-raytracing/ DXR], [https://www.khronos.org/blog/ray-tracing-in-vulkan VRT] and [https://developer.apple.com/documentation/metal/metal_sample_code_library/accelerating_ray_tracing_using_metal MRT])</small>
+
| colspan=2 | [[Widescreen_hacks#Nintendo_64|Widescreen hack]]
| colspan=9 | <small>Implementing ray-tracing in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future.<br/>However you can try "[[Shaders_and_filters#Notable_ReShade_shaders|Screen-Space Ray Traced Global Illumination]]" shader using ReShade.[https://reshade.me/forum/general-discussion/5442-release-misc-emulators-with-depth-buffer-access#34637]</small>
+
| {{Y}}[https://forums.launchbox-app.com/files/file/3649-nintendo-64-n64-widescreen-project-list-of-working-widescreen-games-and-config-files-for-mupen64plus-next-retroarch-core/ *]
|-
 
| [https://github.com/NVIDIAGameWorks/rtx-remix/wiki RTX Remix]
 
| colspan=9 | <small>Implementing RTX Remix technology in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future.<br/>Besides, some of these emulators already supports most of RTX Remix features such as texture replacement and post-processing effects etc.<br/>On top of that you can use ReShade for post-processing.</small>
 
|-
 
| rowspan=4 | Performance
 
| [[30/60_FPS_cheat_codes#Nintendo_64|Internal Framerate Hack]]
 
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
| {{✓}}
 
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| [[Overclocking|Overclock]]
+
| colspan=2 | [[30/60_FPS_cheat_codes#Nintendo_64|Internal Framerate Hack]]
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
| {{}}
+
| {{Y}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| [https://blurbusters.com/frame-generation-essentials-interpolation-extrapolation-and-reprojection/ Frame generation technologies]<br/><small>([https://store.steampowered.com/app/993090/Lossless_Scaling/ LSFG], [https://github.com/NVIDIAGameWorks/Streamline/blob/main/docs/ProgrammingGuideDLSS_G.md DLSS-G], [https://www.techpowerup.com/316835/extrass-framework-paper-details-intels-take-on-frame-generation ExtraSS] and [https://community.amd.com/t5/gaming/amd-fluid-motion-frames-is-out-now-on-amd-radeon-rx-7000-series/ba-p/634372 AFMF])</small>
+
| colspan=2 | [[Texture packs#Nintendo_64|Texture Packs]]
| colspan=6 | <small>Implementing frame generation technology in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future, however post-processing techniques such as [[Wikipedia:Motion_interpolation|motion interpolation]] is quite possible. [[Input_lag|Input latency]] will be a crucial factor, but its impact likely varies depending on the specific technique employed, it's recommended to use '''after applying the "Internal Framerate Hack"'''.<br/>While '''AFMF''' or '''LSFG''' could be used with Mupen64Plus-Next?, please be aware that some visual glitches and artifacts may occur at this time.
+
| {{✓}}<ref group=N3 name=Glide>Only with [https://emulation.gametechwiki.com/index.php/Recommended_N64_plugins#GLideN64 GLideN64] video plugin.</ref>
|-
+
| {{X}}
| Rendering latency reduction technologies<br/><small>([https://github.com/ishitatsuyuki/LatencyFleX LatencyFleX], [https://developer.nvidia.com/performance-rendering-tools/reflex Reflex] and [https://www.amd.com/en/products/software/adrenalin/radeon-software-anti-lag.html Anti-Lag'''+'''])
+
| {{X}}
| colspan=9 | <small>While most emulators offer frame pacing or framebuffer latency control options, implementing rendering latency reduction technologies isn't currently feasible. This is '''likely''' doesn't offer enough benefit to justify the development effort.</small>
+
| {{✓}}<ref group=N3 name=Glide>Only with [https://emulation.gametechwiki.com/index.php/Recommended_N64_plugins#GLideN64 GLideN64] video plugin.</ref>
|-
 
| rowspan=6 | Post-Processing
 
| [[Wikipedia:Category:Anti-aliasing_algorithms|Post-rendering AA]]<br/><small>(FXAA, TXAA and MLAA/SMAA)</small>
 
| {{✓}}[https://docs.libretro.com/shader/antialiasing/ *]
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| [[Wikipedia:Comparison_gallery_of_image_scaling_algorithms|Post-rendering scaling]]<br/><small>(Sharp bilinear, Lanczos and [[Wikipedia:GPUOpen#FidelityFX_Super_Resolution|FSR 1]])</small>
+
| colspan=2 | Built-in [http://forum.arcadecontrols.com/index.php/topic,106405 CRT modelines/SwitchRes/EDID generator]
| {{}}
+
| {{Y}}
| {{?}}
+
| colspan=5 | Exclusive to [https://docs.libretro.com/guides/crtswitchres/ libretro cores] and [[GroovyMAME]] at the moment.
| {{?}}
 
| {{?}}
 
| {{✓}}
 
| {{?}}
 
 
|-
 
|-
 +
| rowspan=2 | Post-Processing
 
| [[Shaders_and_filters|Filters]]
 
| [[Shaders_and_filters|Filters]]
| {{}}
+
| {{Y}}
| {{}}
+
| {{N}}
| {{}}
+
| {{Y}}
| {{}}
+
| {{N}}
| {{}}
+
| {{Y}}
| {{✓}}
+
| {{Y}}
|-
 
|[[Shaders_and_filters#AI-powered filters|AI-powered filter compatible]]<br/><small>([https://www.nvidia.com/en-us/geforce/news/gfecnt/nvidia-freestyle-ansel-enhancements-geforce-experience-article/ Freestyle])</small>
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
 
|-
 
|-
 
| [[Shader_Presets|Shader Chain]]
 
| [[Shader_Presets|Shader Chain]]
| {{}}
+
| {{Y}}
| {{}}
+
| {{N}}
| {{}}[https://github.com/ares-emulator/ares/pull/1397 *]
+
| {{N}}
| {{}}
+
| {{N}}
| {{}}
+
| {{Y}}
| {{}}
+
| {{N}}
 
|-
 
|-
|[[High_dynamic_range#Inverse_tone_mapping|Inverse tone mapping compatible]]
+
| rowspan=4 | [https://tasvideos.org/Emulatorresources/Features TAS features]
| {{}}[https://www.libretro.com/index.php/category/hdr/ *]
+
| [[Wikipedia:Macro_(computer_science)|Macros/Scripts]]/[https://tasvideos.org/LuaScripting Lua]
| {{?}}
+
| {{N}}[https://github.com/libretro/RetroArch/issues/8209 *]
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
|-
+
| {{Y}}
| rowspan=5 | [https://tasvideos.org/Emulatorresources/Features TAS features]
 
| [[Wikipedia:Macro_(computer_science)|Macros/Scripts]]/[https://tasvideos.org/LuaScripting Lua]
 
| {{✗}}[https://github.com/libretro/RetroArch/issues/8209 *]
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{✓}}[https://docs.mamedev.org/plugins/inputmacro.html *]
 
| {{✓}}
 
 
|-
 
|-
 
| Rewind
 
| Rewind
| {{}}
+
| {{Y}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
| {{}}
+
| {{Y}}
 
|-
 
|-
 
| Fast-Forward/Turbo Speed
 
| Fast-Forward/Turbo Speed
| {{}}
+
| {{Y}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
| {{}}
+
| {{Y}}
 
|-
 
|-
 
| Savestates
 
| Savestates
| {{}}
+
| {{Y}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
| {{}}
+
| {{Y}}
 
|-
 
|-
| [https://tasvideos.org/Movies Movie recording/playback]
+
| colspan=2 | [[Controllers|Mouse Injector Compatible]]
| {{}}
+
| {{Y}}[https://github.com/garungorp/MouseInjectorDolphinDuck *]
| {{?}}
+
| {{N}}
| {{?}}
+
| {{N}}
| {{?}}
+
| {{Y}}[https://github.com/garungorp/MouseInjectorDolphinDuck *]
| {{?}}
+
| {{N}}
| {{}}
+
| {{N}}
 
|-
 
|-
| rowspan=8 | Quality of life
+
| colspan=2 | [[Input_lag|Input lag-mitigating technique]]
| Per-Game Profiles
+
| {{N}}
| {{✓}}
 
| {{?}}
 
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
|-
 
| Command Line Options
 
| {{✓}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|-
 
| Built-in [http://forum.arcadecontrols.com/index.php/topic,106405 Custom resolution/CRTSwitchRes]<br/><small>For using this on Windows OS you need [http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1009#p1009 CRT Emudriver].<br/>Another option is using EDID editor tool such as "Custom Resolution Utility".</small>
 
| {{✓}}
 
| colspan=5 | <small>Exclusive to [https://docs.libretro.com/guides/crtswitchres/ libretro cores] and [[GroovyMAME]] at the moment.<br/>Also there is a [https://github.com/psakhis/Groovy_MiSTer project] for achieving software emulators like libretro cores and GroovyMAME send the raw RGB data over a network to a core running on MiSTer, it basically turns the MiSTer into a GPU for the emulator allowing for easy setup and use with CRT TVs/Arcade monitors.</small>
 
|-
 
| Built-in [[Mods,_hacks_and_fan-translations#Built-in_graphics_mod_editor.2Fmanager_for_emulators|Graphics mod editor/manager]]
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
|-
 
| Built-in [[Cheats_and_patches|Cheat Manager]]
 
| {{✓}}
 
| {{?}}
 
| {{✗}}[https://old.reddit.com/r/emulation/comments/1ay6fm1/ares_v136_released/krslaki/ *]
 
| {{?}}
 
| {{✓}}
 
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| [[Save_disk_space_for_ISOs|Streamable compression format]]
+
| colspan=2 | [[Save_disk_space_for_ISOs|Streamable compression format]]
 
| {{✓}}
 
| {{✓}}
 
| {{?}}
 
| {{?}}
Line 719: Line 564:
 
| {{?}}
 
| {{?}}
 
|-
 
|-
| [[Wikipedia:Variable_refresh_rate|Variable Refresh Rate compatible]]
+
| colspan=2 | [[Wikipedia:Debugger|Debug Features]]
| {{✓}}
 
| {{?}}
 
| {{?}}[https://old.reddit.com/r/emulation/comments/1ciiav8/ares_v138_has_now_been_released/l2jio4b/ *]
 
| {{?}}
 
| {{✓}}[https://docs.mamedev.org/usingmame/commonissues.html#gsync-freesync *]
 
| {{?}}
 
|-
 
| [[Frontends#Graphical_User_Interfaces_.28GUIs.29|Big Picture Mode]]
 
| {{✓}}
 
|
 
|
 
|
 
| {{✓}}
 
|
 
|-
 
| rowspan=2 | Controls
 
| [[Input_lag|Input lag-mitigating technique]]
 
| {{✗}}
 
| {{?}}
 
| {{?}}
 
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
|-
 
| [[Controllers#Mouse_Injectors_for_Emulators|Mouse Injector Compatible]]
 
| {{✓}}[https://github.com/garungorp/MouseInjectorDolphinDuck *]
 
| {{✗}}
 
| {{✗}}
 
| {{✓}}[https://github.com/garungorp/MouseInjectorDolphinDuck *]
 
| {{✗}}
 
| {{✗}}
 
|-
 
| rowspan=6 | Misc
 
| [https://retroachievements.org/gameList.php?c=2 RetroAchievements]
 
| {{✓}}
 
| {{✗}}
 
| [https://old.reddit.com/r/emulation/comments/1djp8ro/ares_v139_release/l9ckjp2/ roadmap]
 
| {{✗}}
 
| {{✗}}
 
| {{✓}}
 
|-
 
| [[Virtual_reality#VR_game_room_simulations|EmuVR support]]
 
| colspan=6 |  Exclusive to [https://www.emuvr.net/wiki/Installation_Guide#Downloads libretro cores] at the moment.
 
|-
 
| AI Service<br/><small>With the help of <abbr title="optical character recognition">OCR</abbr> and other techniques, the AI service can provide a live translation of a game, or text-to-speech capabilities for the visually impaired among other things, either on demand or automatically.</small>
 
| colspan=11 | Exclusive to [https://docs.libretro.com/guides/ai-service/ libretro cores] at the moment.
 
|-
 
| [[Netplay#Nintendo_64|Netplay]]
 
| {{✗}}
 
| {{✓}}
 
| {{✗}}
 
|{{~}}<ref group=N3 name=input>Project64, RMG and Mupen64Plus MXE builds requires replacing the input plugin with one [https://www.play64.com/netplay-plugin/ with netplay support]. Another alternative for netplay is using [[Project64 Netplay]] fork.</ref>
 
| {{?}}
 
| {{✗}}[https://github.com/TASEmulators/BizHawk/issues/2450#issuecomment-707492502 *]
 
|-
 
| Free Look<br/><small>Free Look is a enhancement feature that allows manipulation of the in-game camera.</small>
 
| colspan=6 | <small>While freecam would be technically possible, it will require per-game patches.<br/>Said patches would require a significant amount of time to reverse the game's engine, which means that only someone talented with enough dedication to a single game could do it.<br/>[https://www.zophar.net/n64/Nemu64.html Nemu64] has a free cam mode sort of. It changes the perspective the camera is facing.</small><ref>[https://old.reddit.com/r/BoundaryBreak/comments/dj9zmc/nintendo_64_camera/ Reddit Thread: Nintendo 64 camera?]</ref>
 
|-
 
| [[Wikipedia:Category:Debugging|Debug Features]]
 
| {{✗}}[https://forums.libretro.com/t/debugging-features/137 *]
 
| {{?}}
 
| {{~}}
 
 
| {{~}}<ref group=N3>Use [https://github.com/shygoo/project64 this fork] for debug features.</ref>
 
| {{~}}<ref group=N3>Use [https://github.com/shygoo/project64 this fork] for debug features.</ref>
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
| {{?}}
 
|}
 
|}
</div>
 
 
<references group=N3/>
 
<references group=N3/>
  
==Hardware features and peripherals==
+
==Peripherals==
''Reddit Thread: [https://old.reddit.com/r/emulation/comments/vwmho1/unemulated_console_features_and_accessories/ Unemulated console features and accessories]''
+
{| class="wikitable" style="text-align:center; vertical-align:middle;"
<div style="overflow-x:auto;width:100%">
 
{| class="wikitable" style="text-align:center;vertical-align:middle;width:100%"
 
 
|- style="font-weight:bold;"
 
|- style="font-weight:bold;"
 
! Name
 
! Name
Line 812: Line 595:
 
| {{✗}}
 
| {{✗}}
 
| {{✓}}
 
| {{✓}}
| {{}}<ref group=N>Under the name "Memory Pak".</ref>
+
| {{?}}
 
|-
 
|-
 
| Rumble Pak
 
| Rumble Pak
Line 822: Line 605:
 
| {{✗}}
 
| {{✗}}
 
| {{~}}[https://tasvideos.org/Bizhawk/N64 *]
 
| {{~}}[https://tasvideos.org/Bizhawk/N64 *]
| {{✓}}
+
| {{?}}
|-
 
| [[Wikipedia:Nintendo_64_accessories#Expansion_Pak|Expansion Pak]][https://youtu.be/YI4lBxTpzB4]
 
| {{✓}}[https://github.com/project64/project64/issues/457 *]
 
| {{✓}}
 
| {{✓}}
 
| {{✓}}[https://forums.libretro.com/t/removing-the-expansion-pak-in-mupen64plus/15340 *]
 
| {{✓}}[https://github.com/n64dev/cen64/issues/58 *]
 
| {{?}}[https://github.com/mamedev/mame/blob/master/src/mame/nintendo/n64.cpp *]
 
| {{✓}}[https://github.com/TASEmulators/BizHawk/issues/1690 *]
 
| {{✓}}
 
 
|-
 
|-
 
| [[#64DD emulation|64 Disk Drive & 64DD]]
 
| [[#64DD emulation|64 Disk Drive & 64DD]]
Line 846: Line 619:
 
| [[#Transfer Pak emulation|Transfer Pak]]
 
| [[#Transfer Pak emulation|Transfer Pak]]
 
| {{✓}}
 
| {{✓}}
| {{}}
+
| {{~}}
 
| {{✓}}
 
| {{✓}}
 
| {{✓}}
 
| {{✓}}
Line 852: Line 625:
 
| {{✗}}
 
| {{✗}}
 
| {{~}}[https://tasvideos.org/Bizhawk/N64 *]
 
| {{~}}[https://tasvideos.org/Bizhawk/N64 *]
| {{}}
+
| {{?}}
 
|-
 
|-
 
| [[#N64 Mouse|N64 Mouse]]
 
| [[#N64 Mouse|N64 Mouse]]
Line 862: Line 635:
 
| {{✗}}
 
| {{✗}}
 
| {{✓}}[https://github.com/TASEmulators/BizHawk/blob/master/waterbox/ares64/BizInterface.cpp#L15 *]
 
| {{✓}}[https://github.com/TASEmulators/BizHawk/blob/master/waterbox/ares64/BizInterface.cpp#L15 *]
| {{}}
+
| {{}}
 
|-
 
|-
 
| [[#Voice Recognition Unit emulation|Voice Recognition Unit]]
 
| [[#Voice Recognition Unit emulation|Voice Recognition Unit]]
Line 868: Line 641:
 
| {{✗}}
 
| {{✗}}
 
| {{✓}}
 
| {{✓}}
| {{}}
+
| {{}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
Line 881: Line 654:
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
| {{✗}}
+
| ?
| {{✗}}
+
| ?
 
|-
 
|-
 
| [[#Densha De Go! Controller|Densha De Go! Controller]]
 
| [[#Densha De Go! Controller|Densha De Go! Controller]]
Line 891: Line 664:
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
| {{✗}}
+
| ?
| {{✗}}
+
| ?
|-
 
| [[Wikipedia:Nintendo_64_accessories#SmartMedia|SmartMedia]]
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
|-
 
| [[Early_Online_Services#Modem_cartridge_.28N64.29|Modem cartridge (NUS-029)]]
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
| {{✗}}
 
|-
 
| Action Replay
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
|[https://errors.fandom.com/wiki/Cartridge_tilting Cartridge Tilting][https://youtube.com/playlist?list=PLkAqx5EV7l_DkwOv4WmVEBLv39WPEUm3d&si=P3GCJoeb190zPIXz]
 
|[https://youtu.be/IPkDvrM7Hwg?si=2SUSz5GesC8BiObg unofficial version pj64]
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
|[https://summercart64.dev/features.html SD cards]
 
|
 
|
 
|
 
|Exclusive to [https://parallel-launcher.ca/ Parallel Launcher] fork at the moment.
 
|
 
|
 
|
 
 
|}
 
|}
</div>
 
 
<references group=N/>
 
<references group=N/>
 
===Voice Recognition Unit emulation===
 
===Voice Recognition Unit emulation===
Line 952: Line 675:
  
 
===Pokémon Snap Station===
 
===Pokémon Snap Station===
There was a special kiosk designed to promote ''Pokémon Snap'' called the ''Pokémon Snap Station'', which is also compatible with the North American ''Pokémon Stadium'' with its gallery mode. It is just a Nintendo 64 with special hardware designed for the station.<ref name="Sixty Formula">{{cite web|url=https://www.youtube.com/watch?v=AMbjvGvPkV4|title=The Pokémon Snap Station|publisher=YouTube|accessdate=2018-06-17|date=2016-05-21}}</ref><ref name="MetalJesusRocks">{{cite web|url=https://www.youtube.com/watch?v=5_UGpRN6AnM&t=3m35s|title=VIDEO GAME KIOSKS - Extreme Game Collecting!|publisher=YouTube|accessdate=2018-06-17|date=2016-05-25}}</ref> Although the special cartridge does boot in emulators compatible with the regular version, the printing functions are inaccessible due to no emulation of the printer for the player 4 slot, credit system, or the special board to switch between the regular and special cartridges. [https://jamchamb.net/2021/08/17/snap-station.html On August 17, 2021, jamchamb reverse engineered the Snap Station] and created a [https://github.com/jamchamb/project64/tree/snapstation Project64 fork (source code only)] and an [https://github.com/jamchamb/cojiro iCEBreaker FPGA board hardware implementation].
+
There was a special kiosk designed to promote ''Pokémon Snap'' called the ''Pokémon Snap Station'', which is also compatible with the North American ''Pokémon Stadium'' with its gallery mode. It is just a Nintendo 64 with special hardware designed for the station.<ref name="Sixty Formula">{{cite web|url=https://www.youtube.com/watch?v=AMbjvGvPkV4|title=The Pokemon Snap Station|publisher=YouTube|accessdate=2018-06-17|date=2016-05-21}}</ref><ref name="MetalJesusRocks">{{cite web|url=https://www.youtube.com/watch?v=5_UGpRN6AnM&t=3m35s|title=VIDEO GAME KIOSKS - Extreme Game Collecting!|publisher=YouTube|accessdate=2018-06-17|date=2016-05-25}}</ref> Although the special cartridge does boot in emulators compatible with the regular version, the printing functions are inaccessible due to no emulation of the printer for the player 4 slot, credit system, or the special board to switch between the regular and special cartridges. [https://jamchamb.net/2021/08/17/snap-station.html On August 17 2021, jamchamb reverse engineered the Snap Station] and created a [https://github.com/jamchamb/project64/tree/snapstation Project64 fork (source code only)] and an [https://github.com/jamchamb/cojiro iCEBreaker FPGA board hardware implementation].
  
 
===Transfer Pak emulation===
 
===Transfer Pak emulation===
A few games, such as ''Mario Golf'', ''Mario Tennis'', ''Mario Artist: Paint Studio'', and the ''Pokémon Stadium'' games, can use the Transfer Pak, an attachment that allows interfacing with specific [[Game Boy/Game Boy Color emulators|Game Boy/Color]] games for certain features. Most N64 emulators can emulate the Transfer Pak's functionality to one degree or another, with the most robust being Project64 with N-Rage's input plugin. But there are still a few things that are difficult to emulate or are just not emulated at all:
+
A few games, such as ''Mario Golf'', ''Mario Tennis'', ''Mario Artist: Paint Studio'', and the ''Pokémon Stadium'' games, can use the Transfer Pak, an attachment that allows interfacing with specific [[Game Boy/Game Boy Color emulators|Game Boy/Color]] games for certain features. Most N64 emulators can emulate the Transfer Pak's functionality to one degree or another, with the most robust being Project64 with N-Rage's input plugin. But there are still a few things that are difficult to emulate or are just not emulated at all:
  
 
*Taking pictures with the Japanese ''Game Boy Camera'' (called ''Pocket Camera'') while in Transfer Pak mode playing ''Mario Artist: Paint Studio'' displays static.
 
*Taking pictures with the Japanese ''Game Boy Camera'' (called ''Pocket Camera'') while in Transfer Pak mode playing ''Mario Artist: Paint Studio'' displays static.
*Playing the Gen 1 and 2 Pokémon games through the Game Boy Tower in Pokémon Stadium 1 and 2 is notoriously finicky. At the moment, only Project64, using the N-Rage input plugin, can properly load either game's Game Boy Tower at all, with other emulators either crashing or failing to establish the connection. Even here, extra steps must be taken: for Pokémon Stadium 2, set the CPU core to Interpreter and Counter factor to 1 in the emulator's game settings. For the first Stadium game, in addition to the aforementioned settings, Delay SI Interrupt must also be turned on, and an LLE RSP plugin other than the default Projec64 RSP must be used, such as ParaLLEl-RSP.
+
*Playing the Gen 1 and 2 Pokemon games through the Game Boy Tower in Pokemon Stadium 1 and 2 is notoriously finicky. At the moment, only Project64, using the N-Rage input plugin, can properly load either game's Game Boy Tower at all, with other emulators either crashing or failing to establish the connection. Even here, extra steps must be taken: for Pokemon Stadium 2, set the CPU core to Interpreter and Counter factor to 1 in the emulator's game settings. For the first Stadium game, in addition to the aforementioned settings, Delay SI Interrupt must also be turned on, and an LLE RSP plugin other than the default Projec64 RSP must be used, such as ParaLLEl-RSP.
  
 
===64DD emulation===
 
===64DD emulation===
 
The 64DD (an abbreviation for "64 Disk Drive") was a peripheral which allowed a proprietary disk format to be used with the N64. These disks had more space at a cheaper manufacturing cost. The peripheral was a commercial failure and was never released outside of Japan. Internal evidence suggests that, much like the GBA e-Reader, it wasn't even intended for a European release.
 
The 64DD (an abbreviation for "64 Disk Drive") was a peripheral which allowed a proprietary disk format to be used with the N64. These disks had more space at a cheaper manufacturing cost. The peripheral was a commercial failure and was never released outside of Japan. Internal evidence suggests that, much like the GBA e-Reader, it wasn't even intended for a European release.
  
Expansion disks are region-coded to either Japan or the US (obviously unused) and won't work with N64 games from the wrong region.  Only F-Zero X has an official disk, but Ocarina of Time, Mario Party, and Pokémon Stadium (JP) have fully implemented but unused disk support.
+
Expansion disks are region-coded to either Japan or the US (obviously unused) and won't work with N64 games from the wrong region.  Only F-Zero X has an official disk, but Ocarina of Time, Mario Party, and Pokemon Stadium (JP) have fully implemented but unused disk support.
  
 
The special AV-In cartridge (NUS-028) that ''Mario Artist: Talent Studio'' can use doesn't work because it requires an RCA cable signal.
 
The special AV-In cartridge (NUS-028) that ''Mario Artist: Talent Studio'' can use doesn't work because it requires an RCA cable signal.
  
Recently, there has been an effort to emulate the 64DD, and now, [[Project64]] and [[MAME]] can run several commercial 64DD games as part of its N64 emulator. This is being ported to [[CEN64]] with the help of [https://twitter.com/LuigiBlood LuigiBlood]. Mupen64Plus supports 64DD as well, which is the base of other emulators such as [[simple64]] and [[RMG]]. The latest newcomer is [[Ares]] with the (again) help of [https://twitter.com/LuigiBlood LuigiBlood].
+
Recently, there has been an effort to emulate the 64DD, and now, [[Project64]] and [[MAME]] can run several commercial 64DD games as part of its N64 emulator. This is being ported to [[CEN64]] with the help of [https://twitter.com/LuigiBlood LuigiBlood]. Mupen64Plus supports 64DD aswell which is the base of other emulators such as [[simple64]] and [[RMG]]. The latest newcomer is [[Ares]] with the (again) help of [https://twitter.com/LuigiBlood LuigiBlood].
  
 
* Project64's latest versions emulate the N64 mouse and can load Zoinkity's hacked 64DD cartridge conversions at playable speeds. You'll need to set every game to have 8MB of Memory by default manually. Games do not save, some need "32-bit engine" to be unchecked (like Talent Studio), and some (like Polygon Studio to fix models and Paint Studio to fix stamps) need the Angrylion GFX plugin rather than GlideN64, which does the job for the rest. [https://64dd.org/tutorial_pj64.html 64DD.org has step-by-step tutorials for Project64]
 
* Project64's latest versions emulate the N64 mouse and can load Zoinkity's hacked 64DD cartridge conversions at playable speeds. You'll need to set every game to have 8MB of Memory by default manually. Games do not save, some need "32-bit engine" to be unchecked (like Talent Studio), and some (like Polygon Studio to fix models and Paint Studio to fix stamps) need the Angrylion GFX plugin rather than GlideN64, which does the job for the rest. [https://64dd.org/tutorial_pj64.html 64DD.org has step-by-step tutorials for Project64]
Line 978: Line 701:
 
* RetroArch's Mupen64Plus-Next and ParaLLEl cores support the 64DD. For Mupen64Plus-Next: the bios must be placed in <code>[RetroArch directory]\system\Mupen64plus\IPL.n64</code>. To launch 64DD games: Load the Mupen64Plus-Next core, select the new menu item "Subsystems" in the Main Menu, then click "Load N64 Disk Drive" three times to load the disk, cartridge, and start emulation; Both expansion disks and stand-alone disks can be launched this way. <br />For ParaLLEl: the bios must be placed in the "system" directory and named <code>64DD_IPL.bin</code>. In ParaLLEl's core options: 64DD ''must'' be enabled and GFX plugin and RSP must both be set to <code>parallel</code>; stand-alone disks cannot be launched using the Subsystem, they must be launched through either "Load Content" or a playlist.
 
* RetroArch's Mupen64Plus-Next and ParaLLEl cores support the 64DD. For Mupen64Plus-Next: the bios must be placed in <code>[RetroArch directory]\system\Mupen64plus\IPL.n64</code>. To launch 64DD games: Load the Mupen64Plus-Next core, select the new menu item "Subsystems" in the Main Menu, then click "Load N64 Disk Drive" three times to load the disk, cartridge, and start emulation; Both expansion disks and stand-alone disks can be launched this way. <br />For ParaLLEl: the bios must be placed in the "system" directory and named <code>64DD_IPL.bin</code>. In ParaLLEl's core options: 64DD ''must'' be enabled and GFX plugin and RSP must both be set to <code>parallel</code>; stand-alone disks cannot be launched using the Subsystem, they must be launched through either "Load Content" or a playlist.
  
* Ares supports 64DD as well, [https://twitter.com/LuigiBlood/status/1568694009496756225 developer LuigiBlood said]: "This is the most accurate 64DD emulation attempt I've ever done, honestly. A lot of the stuff I programmed are sometimes genuinely useless. A lot also involves timings of the drive itself and more", also supports disc-swapping with v134 version.
+
* Ares supports 64DD aswell, [https://twitter.com/LuigiBlood/status/1568694009496756225 developer LuigiBlood said]: "This is the most accurate 64DD emulation attempt I've ever done, honestly. A lot of the stuff I programmed are sometimes genuinely useless. A lot also involves timings of the drive itself and more"
  
 
===N64 Mouse===
 
===N64 Mouse===
Line 994: Line 717:
  
 
===Aleck 64 arcade emulation===
 
===Aleck 64 arcade emulation===
 +
See [[Nintendo_64#Emulators|Emulators section]] for compatible emulators.
 +
 
Nintendo collaborated with SETA to release an arcade system based on their Nintendo 64 system (kind of like their PlayChoice-10 for the NES, Super System arcade hardware for SNES, and later Triforce for GCN). The Nintendo 64-variant with more RAM, the Aleck 64, failed to catch on and bombed. It was never released outside Japan, even though one N64 port made it.
 
Nintendo collaborated with SETA to release an arcade system based on their Nintendo 64 system (kind of like their PlayChoice-10 for the NES, Super System arcade hardware for SNES, and later Triforce for GCN). The Nintendo 64-variant with more RAM, the Aleck 64, failed to catch on and bombed. It was never released outside Japan, even though one N64 port made it.
 
[http://adb.arcadeitalia.net/lista_mame.php?game_sourcefile=aleck64.cpp&arcade_only=0&current_version=0 MAME and BizHawk's MAME core support this arcade variation].
 
  
 
The Aleck 64 ROMs were dumped, and Zoinkity is working on converting them to regular N64 ROMs (with controls remapped to N64 controller buttons). They generally require an 8MB Expansion Pak to run at all and 4K EEPROM to save settings and scores. The ones covered by these patches are:
 
The Aleck 64 ROMs were dumped, and Zoinkity is working on converting them to regular N64 ROMs (with controls remapped to N64 controller buttons). They generally require an 8MB Expansion Pak to run at all and 4K EEPROM to save settings and scores. The ones covered by these patches are:
Line 1,019: Line 742:
  
 
==Virtual Console games in Dolphin==
 
==Virtual Console games in Dolphin==
A number of N64 games were released for the Wii's Virtual Console service throughout its lifespan. While the emulators at the heart of each Virtual Console title were of average accuracy (rather than using one generic emulator used for every game, each title had an emulator specifically tailored to that game), they were good enough to render the games in full, playable capacity with few to no glaring errors. Many of these titles are emulated well through Dolphin. For a good while, due to persistent long-standing inaccuracies in N64 emulators and plugins, this was the best way to emulate certain N64 games, particularly Pokémon Snap and Mario Tennis. The system requirements are much higher than running them on regular N64 emulators, but it's doable for many games. Today, regular N64 emulators and plugins have advanced to the degree that this has become unnecessary, relegating this method of N64 game emulation to little more than a curiosity, at least on PC.
+
A number of N64 games were released for the Wii's Virtual Console service throughout its lifespan. While the emulators at the heart of each Virtual Console title were of average accuracy (rather than using one generic emulator used for every game, each title had an emulator specifically tailored to that game), they were good enough to render the games in full, playable capacity with few to no glaring errors. Many of these titles are emulated well through Dolphin. For a good while, due to persistent long-standing inaccuracies in N64 emulators and plugins, this was the best way to emulate certain N64 games, particularly Pokemon Snap and Mario Tennis. The system requirements are much higher than running them on regular N64 emulators, but it's doable for many games. Today, regular N64 emulators and plugins have advanced to the degree that this has become unnecessary, relegating this method of N64 game emulation to little more than a curiosity, at least on PC.
  
 
The following games are on the N64 Virtual Console for Wii:
 
The following games are on the N64 Virtual Console for Wii:
Line 1,041: Line 764:
 
* Ogre Battle 64: Person of Lordly Caliber
 
* Ogre Battle 64: Person of Lordly Caliber
 
* Paper Mario
 
* Paper Mario
* Pokémon Puzzle League
+
* Pokemon Puzzle League
 
|
 
|
* Pokémon Snap
+
* Pokemon Snap
 
* Sin & Punishment (English)
 
* Sin & Punishment (English)
 
* Star Fox 64
 
* Star Fox 64
Line 1,061: Line 784:
 
One of the biggest hurdles to emulating the Nintendo 64 was the Reality Display Processor (RDP), which used a custom design that had to be fine-tuned to get more performance out of the system using microcode. To emulate the RDP accurately, one would have to execute said microcode the way the RDP did, which differed from the PC graphics cards of the day. To complicate matters further, API standards available on PCs two decades ago were nowhere near as flexible as they are today. If you wanted to make an accurate GPU-accelerated RDP plugin in 2003, you simply couldn't with the APIs of the time (OpenGL 1.x and Direct3D 9). For the average user, hardware-accurate GPU acceleration would be out of reach for a long time.
 
One of the biggest hurdles to emulating the Nintendo 64 was the Reality Display Processor (RDP), which used a custom design that had to be fine-tuned to get more performance out of the system using microcode. To emulate the RDP accurately, one would have to execute said microcode the way the RDP did, which differed from the PC graphics cards of the day. To complicate matters further, API standards available on PCs two decades ago were nowhere near as flexible as they are today. If you wanted to make an accurate GPU-accelerated RDP plugin in 2003, you simply couldn't with the APIs of the time (OpenGL 1.x and Direct3D 9). For the average user, hardware-accurate GPU acceleration would be out of reach for a long time.
  
[[UltraHLE]] offered a compromise. In contrast to earlier consoles (whose video chips, in hindsight, had been easy to render to the host CPU's framebuffer), performant RDP emulation had to take shortcuts, including programming around specific games' microcode to cleanly translate their graphics commands into API calls using Direct3D, OpenGL, and even Glide. With this, the theoretical system requirements plummeted, and the host graphics card could reproduce a functional equivalent rather than the exact method. This also gave way to prettier, higher-resolution graphics, though whether this is an improvement is subjective and a common point of discussion. Unfortunately, it proved to be hit or miss, owing to the nature of per-game microcode detection and having to tweak settings to prevent some games from running into graphical glitches.
+
[[UltraHLE]] offered a compromise. In contrast to earlier consoles (whose video chips, in hindsight, had been easy to render to the host CPU's framebuffer), performant RDP emulation had to take shortcuts, including programming around specific games' microcode to cleanly translate their graphics commands into API calls using Direct3D, OpenGL, and even Glide. With this, the theoretical system requirements plummeted, and the host graphics card could reproduce a functional equivalent rather than the exact method. This also gave way to prettier, higher-resolution graphics, though whether or not this is an improvement is subjective and a common point of discussion. Unfortunately, it proved to be hit or miss, owing to the nature of per-game microcode detection and having to tweak settings to prevent some games from running into graphical glitches.
  
 
Low-level RDP emulation was continually improved in that time, most notably by [[MESS]] up until its merger with [[MAME]], where its RDP code was turned into a plugin by Angrylion. Compatibility-wise, Angrylion's RDP was considered flawless by the community. Though the reception wasn't as warm overall, since it ran only on the CPU and was thus painfully slow on mid-grade machines. A dozen forks attempted to bring the system requirements down, and the current incarnation that does so is Angrylion RDP Plus, using multithreading. Accurate low-level emulation would only come to the GPU in 2020 when a new version of the Mupen64Plus-based ParaLLEl [[libretro]] core was released containing a rewritten RDP plugin using compute shaders in Vulkan. Though it isn't a direct fork of Angrylion, Themaister says the Angrylion code was the central point of reference for developing the plugin,<ref>[https://github.com/Themaister/parallel-rdp#disclaimer README] for parallel-rdp repository on GitHub. § Disclaimer. "While paraLLEl-RDP uses Angrylion-Plus as an implementation reference, it is not a port, and not a derived codebase of said project. It is written from scratch by studying Angrylion-Plus and trying to understand what is going on. The test suite uses Angrylion-Plus as a reference to validate implementation and cross-checking behavior."</ref> meaning ParaLLEl uses the same strategies that Angrylion does to emulate the RDP while running on the host GPU (as long as said GPU supports Vulkan).
 
Low-level RDP emulation was continually improved in that time, most notably by [[MESS]] up until its merger with [[MAME]], where its RDP code was turned into a plugin by Angrylion. Compatibility-wise, Angrylion's RDP was considered flawless by the community. Though the reception wasn't as warm overall, since it ran only on the CPU and was thus painfully slow on mid-grade machines. A dozen forks attempted to bring the system requirements down, and the current incarnation that does so is Angrylion RDP Plus, using multithreading. Accurate low-level emulation would only come to the GPU in 2020 when a new version of the Mupen64Plus-based ParaLLEl [[libretro]] core was released containing a rewritten RDP plugin using compute shaders in Vulkan. Though it isn't a direct fork of Angrylion, Themaister says the Angrylion code was the central point of reference for developing the plugin,<ref>[https://github.com/Themaister/parallel-rdp#disclaimer README] for parallel-rdp repository on GitHub. § Disclaimer. "While paraLLEl-RDP uses Angrylion-Plus as an implementation reference, it is not a port, and not a derived codebase of said project. It is written from scratch by studying Angrylion-Plus and trying to understand what is going on. The test suite uses Angrylion-Plus as a reference to validate implementation and cross-checking behavior."</ref> meaning ParaLLEl uses the same strategies that Angrylion does to emulate the RDP while running on the host GPU (as long as said GPU supports Vulkan).
Line 1,083: Line 806:
  
 
===Timing issues===
 
===Timing issues===
One of the biggest remaining problems in N64 emulation is the lack of accurate core timings, which, in practice, means games don't always run at the speed they would on real hardware. While this technically affects all games, the majority are only affected to a negligible degree. In some instances (particularly in Rare games) this can actually result in fewer framerate drops and lag, which can be seen as beneficial. However, some game engines actually depend on accurate timings for proper game behavior, and not emulating them properly can result in considerable to major issues. Some notable examples include the following:
+
One of the biggest remaining problems in N64 emulation is the lack of accurate core timings, which in practice, means games don't always run at the speed they would on real hardware. While this technically affects all games, the majority are only affected to a negligible degree. In some instances (particularly in Rare games) this can actually result in fewer framerate drops and lag, which can be seen as beneficial. However, some game engines actually depend on accurate timings for proper game behavior, and not emulating them properly can result in considerable to major issues. Some notable examples include the following:
 
* Intros and cutscenes playing too fast and not correctly syncing up with musical cues. Seen in Goldeneye's intro and Body Harvest's beginning cutscene.
 
* Intros and cutscenes playing too fast and not correctly syncing up with musical cues. Seen in Goldeneye's intro and Body Harvest's beginning cutscene.
 
* Gameplay demos running at hyper speeds. Earthworm Jim 3D is most notorious for this, though the main game itself is largely unaffected.
 
* Gameplay demos running at hyper speeds. Earthworm Jim 3D is most notorious for this, though the main game itself is largely unaffected.
 
* Game physics not working properly due to being tied to framerate. A good example is Donkey Kong 64, which is programmed to boost the character's speed and momentum proportional to in-game lag (most likely to make up for the game's frequent framerate drops), which can be exploited for certain glitches and sequence breaks on real hardware. Emulators currently run the game too well and with too little lag, making most of these tricks impossible to pull off.
 
* Game physics not working properly due to being tied to framerate. A good example is Donkey Kong 64, which is programmed to boost the character's speed and momentum proportional to in-game lag (most likely to make up for the game's frequent framerate drops), which can be exploited for certain glitches and sequence breaks on real hardware. Emulators currently run the game too well and with too little lag, making most of these tricks impossible to pull off.
 
* Possibly the most affected game is Knife's Edge, which runs like it's on permanent fast-forward, making it all but unplayable. Messing with timing-related settings such as CounterFactor can mitigate this somewhat, but nowhere near enough to fix the issue.
 
* Possibly the most affected game is Knife's Edge, which runs like it's on permanent fast-forward, making it all but unplayable. Messing with timing-related settings such as CounterFactor can mitigate this somewhat, but nowhere near enough to fix the issue.
Fortunately, tackling these problems has recently become a core focus of development in some N64 emulators, and attempts are underway to improve the situation. [[ares]] currently has the most accurate timings overall and already runs Earthworm Jim 3D's demos much better than other emulators. Meanwhile, [[simple64]] has recently pushed various timing-related commits aimed at improving accuracy, and as a result, it may now be the only emulator that runs Donkey Kong 64 properly. As these efforts progress, it should be noted that a side effect of improved timings may be greater in-game lag. This shouldn't be seen as the emulator becoming slower, but rather as the emulator behaving exactly like the real hardware does, as many N64 games were notorious for framerate drops.
+
Fortunately, tackling these problems has recently become a core focus of development in some N64 emulators, and attempts are underway to improve the situation. [[ares]] currently has the most accurate timings overall and already runs Earthworm Jim 3D's demos much better than other emulators. Meanwhile, [[simple64]] has recently pushed various timing-related commits aimed at improving accuracy, and as a result, it may now be the only emulator that runs Donkey Kong 64 properly. As these efforts progress, it should be noted that a side-effect of improved timings may be greater in-game lag. This shouldn't be seen as the emulator becoming slower, but rather as the emulator behaving exactly like the real hardware does, as many N64 games were notorious for framerate drops.
  
 
For more information about Nintendo 64 hardware and reverse engineering;
 
For more information about Nintendo 64 hardware and reverse engineering;
* [https://www.youtube.com/@ModernVintageGamer/search?query=n64 MVG videos about Nintendo 64]
+
* [https://www.youtube.com/watch?v=gRslfM-MOOw MVG: Why was the Nintendo 64 so hard to develop games for?]
* [https://youtu.be/xwls5SpNn1s Kaze Emanuar: How we BEAT the Limitations that defined the N64s Artstyle]
 
* James Lambert: [https://youtu.be/r4KGm7ixcqI How I optimized Portal to run on the Nintendo 64], [https://youtu.be/Sf036fO-ZUk How I implemented MegaTextures on real Nintendo 64 hardware]
 
 
* [https://www.copetti.org/writings/consoles/nintendo-64/ Rodrigo Copetti: Nintendo 64 Architecture Analysis]
 
* [https://www.copetti.org/writings/consoles/nintendo-64/ Rodrigo Copetti: Nintendo 64 Architecture Analysis]
 
* [https://n64brew.dev/wiki/Main_Page N64brew Wiki]
 
* [https://n64brew.dev/wiki/Main_Page N64brew Wiki]
Line 1,102: Line 823:
 
{{Nintendo}}
 
{{Nintendo}}
  
[[Category:Consoles|!Nintendo 64]]
+
[[Category:Consoles]]
[[Category:Home consoles|!Nintendo 64]]
+
[[Category:Home consoles]]
[[Category:Fifth-generation video game consoles|!Nintendo 64]]
+
[[Category:Fifth-generation video game consoles]]
[[Category:Nintendo consoles|!Nintendo 64]]
+
[[Category:Nintendo consoles]]
 
[[Category:Nintendo 64 emulators|*]]
 
[[Category:Nintendo 64 emulators|*]]
[[Category:MAME Driver Status: Preliminary|!Nintendo 64]]
+
[[Category:Very early emulation (MAME)]]
[[Category:MIPS-based|Nintendo 64]]
 

Please note that all contributions to Emulation General Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Emulation General Wiki:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)