Nintendo Switch emulators

From Emulation General Wiki
Revision as of 17:44, 13 November 2024 by 172.64.236.36 (talk) (Emulators)
Jump to navigation Jump to search
Nintendo Switch
Nintendo-switch.png
Switchdocked.png
The Switch in its two forms, handheld (above) and docked (below).
Developer Nintendo
Type Hybrid video game console
Generation Eighth generation
Release date March 2017
Predecessor Wii U
(new) 3DS
Emulated
For emulators that run on the Nintendo Switch, see Emulators on Switch.

The Nintendo Switch is an eighth-generation hybrid gaming console released by Nintendo on March 3, 2017, and retailed for US$299.99 (equivalent to $372.85 in 2024). During its development, the Switch was known as the NX (short for NeXt or Nintendo "Cross") and was widely speculated upon until its announcement. Aside from specialized components unique to the console, the hardware is more or less off-the-shelf, being built around a semi-custom variant of NVIDIA's Tegra X1 system-on-a-chip, which was also used on a number of Android devices. The Switch contains 4 ARM Cortex-A57 CPUs running at 1.020 GHz with 4 GBs of RAM and a proprietary NVIDIA GPU codenamed GM20B. The Tegra X1 SoC itself also has 4 ARM Cortex-A53 CPUs, however these are unused [5] on the Switch, and are disabled in hardware on the later Mariko units [6].

While Nintendo intended to step up the console's security, vulnerabilities were still found early on that allowed tons of system files to be dumped, including dumps of games in the form of romfs.istorage archives, an exefs folder, and license files. These game dumps eventually got shared online by scene groups except for their licenses but were missing essential files to run. Even if they had been completed, there were no custom homebrew apps, let alone solutions to load unofficial game dumps for the system. A number of prominent hacking teams (starting with shuffle2 and fail0verflow in collaboration) all came across a new exploit independently of each other that allowed complete control over the system, later officially recognized by NVIDIA as CVE-2018-6242.

A "debugging emulator" for the Nintendo Switch, CageTheUnicorn (now Mephisto), popped up not long after the first components were dumped. It was designed to emulate sysmodules with "no support for graphics, sound, input, or any kind of even remotely performant processing [...] by design". A couple of months later, members of both the Citra and Dolphin teams announced the release of their own emulator written in C++, which was capable of booting some homebrew applications; within a couple of weeks, yet another emulator named Ryujinx, written in C# by developer gdkchan, was released showing successful booting of commercial Switch games Puyo Puyo Tetris and Sonic Mania.

On May 7, 2024, Shuntaro Furukawa, president of Nintendo, officially announced that the company would reveal information about the Nintendo Switch successor within their current fiscal year.[7] Nintendo Switch backwards compatibility would be later confirmed by Nintendo themselves on its unnamed successor in November 5, 2024 [8]; including support for the Nintendo Switch Online service and its emulation apps.

Emulators

Name Platform(s) Latest version Hardware features
and peripherals
Enhancements Compatibility License Active Recommended
x86
Ryujinx Windows Linux macOS ryujinx-mirror builds
GreemDev fork
KeatonTheBot fork
1.1.1403
custom build for revived SMB35
~ ~ 82%
3578 out of 4360 reported titles

ryujinx-mirror games list
MIT (Permissive)
torzu Windows Linux Dark Git repository (requires Tor) (2024-05-31)
NotABug mirror
Unofficial Binaries
~ ? GPLv2 (Copyleft)
Citron Windows Linux 20241118 ~ ? GPLv2 (Copyleft) ~
suyu Windows Linux macOS 0.0.3 ~ ? GPLv2 (Copyleft) ~ ~
Sudachi Windows Linux 1.0.11 ~ ? GPLv2 (Copyleft) ~ ~
yuzu Windows Linux Pineapple EA builds (archived)
Former website (Last Archived Version)[N 1]
[N 2] ~[N 2] 54%
1457 out of 2699 reported titles
[N 3]
GPLv2 (Copyleft)
NSEmu Windows git ? GPLv3 (Copyleft)
Mephisto Linux macOS git ? GPLv2 (Copyleft)
CageTheUnicorn Windows Linux macOS FreeBSD git ? ISC (Permissive)
ARM
Ryujinx Linux ARM macOS 1.1.1403
ryujinx-mirror builds
~ ~ 82%
3578 out of 4360 reported titles

ryujinx-mirror games list
MIT (Permissive) [9]
Pomelo iOS Official Site
git
~ 64%
87 out of 136 reported titles
GPLv3 (Copyleft)
suyu Android 0.0.3 ~ ? GPLv2 (Copyleft) ~ ~
Sudachi iOS Android 1.0.11 (apk)
1.0.6 (ipa)(v0.0.1.7.6 archived version)
~ ? GPLv2 (Copyleft) ~ ~
torzu Android Dark Git repository (requires Tor) (2024-05-31)
NotABug mirror
Unofficial Binaries
~ ? GPLv2 (Copyleft) ~ ~
yuzu Android yuzu GitHub (archived) [N 2] ~[N 2] ?* GPLv2 (Copyleft)
Egg NS Android 4.0.5 78%
172 out of 220 reported titles
Proprietary
(stolen yuzu code)
DamonSwitch Android 1.0Preview N/A Proprietary
(stolen yuzu code)
  1. Official yuzu downloads have been taken down due to the Nintendo Lawsuit
  2. 2.0 2.1 2.2 2.3 Given our decision to discontinue recommending Yuzu due to its cessation of development, we have removed the corresponding columns from the #Hardware features and peripherals and #Enhancements tables. Please refer to this link for the latest revision of this page, which still includes the yuzu columns for reference.
  3. Obsolete list, there was a ongoing rewrite project, but yuzu is dead anyway.

Compatibility layers (...)

Name Platform(s) Latest Version Hardware features
and peripherals
Enhancements Compatibility License Active Recommended
ARM
Strato Android git ? ? 4%
58 out of 1426 reported titles
GPLv3 (Copyleft) ~[10] ~
Skyline Android Edge 69 ? ? ? MPL 2.0 (Copyleft) *

Emulation focused Linux distros (...)

Name Platform(s) Latest Version Hardware features
and peripherals
Enhancements Compatibility License Active Recommended
ARM
Horizon Linux Linux git ? GPLv2 (Copyleft)

Native

Name Platform(s) Latest version Enhancements Hardware features
and peripherals
Compatibility License Active Recommended
Consoles
Unnamed Nintendo Switch successor
backwards compatibility mode
Unnamed Nintendo
Switch successor
TBD ~ TBD TBD Proprietary TBD

Comparisons

Emulators
Ryujinx
An open-source hybrid approach emulator that's programmed in C#. Unlike yuzu, Ryujinx does not offer packaged early-access builds. However, work-in-progress features can still be tested by building locally from unmerged pull requests. Separately, Ryujinx has a closed source LDN-enabled build and there is a feature tracker for this LDN build for upstreaming. As of August 2022, Vulkan API support is available. While Ryujinx is notable for its focus on compatibility and accuracy, users often experience more shader stuttering compared to yuzu and it's forks. Ryujinx also has support for ARM64 Linux and macOS[11][12] and it uses an alternative approach to yuzu's NCE for improving performance when emulating on ARM systems[13].
On October 1, 2024, Ryujinx GitHub and its repository were taken down. Shortly after this happened, the Ryujinx team announced that gdkchan was contacted by Nintendo and offered an agreement to stop working on the project and remove all related assets he was in control of.[14] However, the community quickly responded with the creation of mirrors and forks. Currently, three notable active projects have emerged: the GreemDev fork, the KeatonTheBot fork, and ryujinx-mirror. See Ryujinx#Forks section for more information.
yuzu
An open-source HLE approach emulator made by many of Citra's developers. As it was a hard fork of Citra, it shared many of its traits, namely cross-platform support and the use of OpenGL and Vulkan. Yuzu offered early access pre-compiled builds to its $5/month Patreon supporters, allowing them to try out new features before they're available in the main build. Because of this, many people assumed the emulator was strictly closed and paywalled, however, the source code for many of these new features was always publicly available and could even be compiled by anyone. Because of this, some users went as far as to publicly share their own unofficial "early access" builds. One of yuzu's notable features was its decreased shader stuttering compared to Ryujinx, making it ideal for weaker PCs. Yuzu also had both a free and paid version on Android which later saw greater improvements thanks to their implementation of Native Code Execution (NCE) and other fixes. Their Device Mapping & SMMU implementation also further helped reduce yuzu's memory footprint and allow possible future optimizations. There were even more optimizations exclusive to the Linux-x86 and Android platforms thanks to "MADV_REMOVE", but despite all the optimizations and improvements, only high-end devices are recommended for Android platform. In yuzu's last progress report for January 2024, they highlighted ongoing work on "multiprocess" and "services", which is crucial progress towards emulating applets and system functions like some of the hardware features. Further development would have been required before it could be considered fully implemented.
On March 4th 2024, a lawsuit was filed by Nintendo against Tropic Haze LLC (aka yuzu) which unfortunately led to their decision to cease all development and official distribution of yuzu and Citra. Fortunately, it is easy to find an archive of the latest version (EA-4176), and its work is likely to be continued by other developers. According to suyu developers: The Switch SDK has been used illegally within the previous Yuzu developer team, which effectively makes the whole code radioactive[15]. However, the community quickly responded with the creation of mirrors and forks, see Yuzu#Forks section for more information.
Sudachi
Initially conceived by Jarrod Norwell as an experimental port of yuzu to iOS/iPadOS, the project was rebased on Yuzu's EA-4176 build following the yuzu takedown. Subsequently, the project evolved to include further improvement of the project and distributions for Linux and macOS. While it was once available on separate repositories for Windows and Android, DMCA takedowns led to the closure of both repositories and the associated Discord server[16][17] (see "2024 - Yuzu (Switch) vs. Nintendo" section of the Legal Status of Emulation page). The project is now distributed through its own hosting platform. Requires a paid Apple Developer Account or TrollStore in order to use the com.apple.developer.kernel.increased-memory-limit entitlement. Sudachi is widely considered to be the most mature and actively developed yuzu fork available. The iOS version of Sudachi has been neglected for some time due to the developer's focus on another fork called "Pomelo", so for those platforms using "Pomelo" is recommended instead of using Sudachi.
Sudachi is nearing its end, according to a tweet from project developer Jarrod Norwell. He stated, "Nintendo Switch emulation and the most of the community surrounding it are making it a very unsafe and unpleasant environment. Between the various forks that exist providing no benefits, the accusations, the immature and predatory nature of a lot of "leaders" it just is not worth hanging around it anymore."[18]
Pomelo
A fork of Sudachi focused on iOS/iPadOS support. Just like with Sudachi, this also requires a paid Apple Developer Account or Trollstore in order to work.
torzu
torzu is another fork of yuzu. To prevent take-downs, the git repository is primarily hosted using the tor network, requiring a tor compatible browser or proxy to access. A clear web mirror is also currently hosted on NotABug. torzu still aims to remain "compilable on Linux and Windows" and serve as a "good base to fork" in the future. torzu does not publish official releases or offer official support.
suyu
A fork of yuzu initial attempt to continue from where that project left off (based on latest EA-4176) on GitLab instead of Github which suggested by the community due to potential takedown attempt. However, GitLab still took down the suyu repository due to the use of raw yuzu code. As a result, the Suyu team use their own repository. This decision, along with various precautions[19], suggests a desire to avoid legal claims similar to those faced by yuzu. Later, the team try to recruit programmers to start study the code. Thus, there's wan adaptation period needed to see some serious advancements and in the meantime, in response to concerns about the project's financial motivations, the suyu team has emphasized a strict policy against accepting donations, they assure users that there is no intention to profit from the emulator. But there have been inexperienced coding criticisms from some in the community directed at the developers' work.
Messages from Suyu developers about leaving the project: kksowo's message on Paste.bin, The Death of Suyu by u/AMA2581 on r/suyu. After this however, the founder of the project states that they will still try maintain the project as best they can. Their discord server is shut down (see "2024 - Yuzu (Switch) vs. Nintendo" section of the Legal Status of Emulation page), and the project could be considered dead.
Egg NS
Similar to DamonPS2, it's a closed-source, payware/malware emulator only for Android. It is NOT recommended to use this emulator because there is significant controversy surrounding this emulator for the following reasons: touch controls require an expensive monthly membership to use, it expects to run on a high-end/flagship device within the ballpark of a Qualcomm Snapdragon 8xx and 8 Gen 1, and it was discovered to have violated GPLv2 licensing requirements by illegally stealing code from yuzu and Skyline. Happy Chick is also a code-stolen emulator by this company. Its icon is edited from Happy Chick with Adobe Photoshop. Its real headquarters location is in mainland China.
DamonSwitch
Developed by DamonPS2 team. Closed-source, payware/malware emulator for Android only, known to steal code from other emulators. Even worse compatibility than Egg NS, it can barely run anything. It is NOT recommended to use this emulator. Damon company edited the yuzu icon with Adobe Photoshop for its own use. Its real headquarters location is in mainland China.
SphiNX
SphiNX is a inactive closed-source Switch emulator, The emulator was a work in progress project but as of now, there's no public releases.
Compatibility layers
Skyline
Skyline (formerly MonoNX and Lightswitch) is a free compatibility layer for the Nintendo Switch that runs on Android and is written in C++ and Kotlin. Unfortunately, development of Skyline ceased in May 2023.
Strato
A fork of Skyline that continues from where that project left off. It's an open-source compatibility layer for ARMv8 Android devices. For the sake of convenience, the team bills the app as an emulator, but it functionally works like Wine, running almost all the entire original code on bare metal except for what interfaces with the rest of the system. Some titles can go ingame with poor framerate and minor glitches, but the Skyline team has done great work making 3D games, such as The Legend of Zelda: Breath of the Wild, have graphical output, boosting FPS in many titles, and fixing bugs in games. In March 2024, lead developer "Lynx" announced departure from the project and decided to step away from console emulation development[20]. The project was then handed over to the other developers.
Emulation focused Linux distros
Horizon Linux
Horizon Linux is an open-source ARM64 Linux modified to run Nintendo Switch applications with hypervised CPU & IO, but still mostly relying on yuzu code in its Mizu shim to emulate functions such as the GPU. Puyo Puyo Tetris is semi-playable with audio output, and the emulator can also run several homebrew applications.
Native
Unnamed Nintendo Switch successor backwards compatibility mode
To be dated; confirmed by Nintendo themselves that Nintendo Account and Nintendo Switch Online features will carry over the successor, including its own games.

Hardware features and peripherals

Name Ryujinx forks Yuzu forks Unnamed NSW successor BC
Switch HOME Menu [21] [N2 1] TBD
Mii Editor TBD
NSO emulators
Cloud-based titles[22][23] TBD
Amiibo * TBD
Nintendo Labo ~[24][25][26] ? TBD
Connectivity Nintendo Switch Online *
Local Wireless Play / LDN ~ ~ TBD
LAN Play TBD
Smart Device Mode * ? TBD
Controllers[N 1] Native Dual Joy-Con Support ~* TBD
Ring-Con * TBD
Poké Ball Plus ? TBD
USB Keyboard & Mouse ~* TBD
Inputs IR Motion Camera * TBD
HD Rumble * ~ TBD
Motion Controls (Gyro) * TBD
Touchscreen * TBD

Connectivity

XLink Kai - Nintendo Switch setup guide

Nintendo Switch Local play games are divided into two groups; games with Local Wireless support, and games with LAN support. There are different requirements and rules for the two types.[27] The difference is that Local Wireless is ad-hoc wifi between Switch radios. LAN is when the switches are joined to the same WiFi access point.[28]

Local Wireless Play/LDN
Local Wireless games are a bit more restricted but the following can play games together:
LAN Play
LAN games are the most widely supported and the following can play games together:
  • Players using unmodified "OFW" Nintendo Switch and Nintendo Switch Lite systems.
  • Players using modified "CFW" Nintendo Switch systems.
  • Players using Ryujinx or yuzu

So in summary, it is possible to play on the same network and LAN multiplayer over the internet with programs like XLink Kai, see XLink Kai's setup guides for Ryujinx and yuzu, also see LAN Tunneling programs for more information.

Nintendo Switch Online
Main article: Nintendo Switch Online

For more information about other revive projects see Preservation projects page. You can play some of the multiplayer Switch titles using revivial private servers.

NSO emulators

For the Nintendo Switch family of systems, Nintendo distributes retro games to subscribers of their Nintendo Switch Online service. Subscribers have access to games for the Nintendo Entertainment System (NES), Super Nintendo Entertainment System (SNES), Game Boy (GB) and Game Boy Color (GBC). At the more expensive subscription tier, titled "Expansion Pack", players can also access Nintendo 64, Sega Genesis, and Game Boy Advance (GBA) games.

Enhancements

Name Ryujinx forks Yuzu forks Unnamed NSW successor BC
Graphics Resizable Internal Resolution * TBD
Ultrawide hack
Widescreen already supported on Nintendo Switch system.
But there is no support by system for render games in other ratios such as ultrawide 21:9 or super ultrawide 32:9.
TBD
Texture Replacement ~[N2 2] ~ TBD
Ray-tracing
(DXR, VRT and MRT)
Implementing ray-tracing in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future.
However you can try "Screen-Space Ray Traced Global Illumination" shader using ReShade.
(Demonstration)
Pre-rendering AA
(MSAA, SSAA)
TBD
Super-resolution techniques
(DLSS, XeSS and FSR 2+)
Requires access to the depth buffer and temporal data like motion-vectors so it's quite challenging and unlikely to be feasible in the near future.
Enhancement request for yuzu.
RTX Remix Implementing RTX Remix technology in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future.
Besides, yuzu and Ryujinx already supports some of RTX Remix features.
On top of that you can use ReShade for post-processing.
Performance Internal Framerate Hack TBD
Frame generation technologies
(LSFG, DLSS-G, ExtraSS and AFMF)
Implementing frame generation technology in an emulator is unfortunately quite challenging and unlikely to be feasible in the near future, however post-processing techniques such as motion interpolation is quite possible. Input latency will be a crucial factor, but its impact likely varies depending on the specific technique employed, it's recommended to use after applying the "Internal Framerate Hack".
While AFMF or LSFG[30][31] can be used with yuzu (or forks) or Ryujinx, please be aware that some visual glitches and artifacts may occur at this time.
Overclock TBD
Preload ROM image to RAM
For users with sluggish multi-platter HDDs or plagued by horrible seek times, this enhancement might offer smoother experience, potentially reduced power consumption; it also shines when images reside on a network drive.
Although keep in mind that preloading image would take some time, and it will require additional amount of RAM capacity.
[N 2] TBD
Rendering latency reduction technologies
(LatencyFleX, Reflex and Anti-Lag+)
While most emulators offer frame pacing or framebuffer latency control options, implementing rendering latency reduction technologies like NVIDIA's Reflex SDK isn't currently feasible. This is due to a combination of factors, including potential licensing issues[32] and likely doesn't offer enough benefit to justify the development effort.
Post-Processing Post-rendering AA
(FXAA, TXAA and MLAA/SMAA)
TBD
Post-rendering scaling
(Sharp bilinear, Lanczos and FSR 1)
TBD
Filters TBD
AI-powered filter compatible
(Freestyle)
? TBD
Shader Chain TBD
Inverse tone mapping compatible * TBD
TAS features Macros/Scripts/Lua TBD
Rewind TBD
Fast-Forward/Turbo Speed ~* TBD
Savestates TBD
Movie recording/playback TBD
Quality of life Pause/Resume Emulation TBD
Built-in mod editor and manager * ~[N 3] TBD
Built-in Cheat Manager ~[N 3] TBD
Built-in Patch Manager * ~[N 3] TBD
Built-in Custom resolution/CRTSwitchRes
For using this on Windows OS you need CRT Emudriver.
Another option is using EDID editor tool such as "Custom Resolution Utility".
N/A
Eighth gen home consoles and beyond only have digital video output anyway.
Streamable compression format ~[N 4] ~[N 4] TBD
Per-Game Profiles * TBD
Command Line Options * * TBD
On-Screen Display
Showcases messages, controller input state which is useful for speedrunners, performance data, active settings, and various notifications.
TBD
Variable Refresh Rate compatible TBD
Big Picture Mode * TBD
Controls Mouse Injector Compatible ~* TBD
Input lag-mitigating technique TBD
Misc RetroAchievements TBD
EmuVR support Exclusive to libretro cores. So there is no support at the moment.
AI Service
With the help of OCR and other techniques, the AI service can provide a live translation of a game, or text-to-speech capabilities for the visually impaired among other things, either on demand or automatically.
Exclusive to libretro cores at the moment. So there is no support.
Free Look
Free Look is a enhancement feature that allows manipulation of the in-game camera.
~[N2 3] ~[N2 3] TBD
Debug Features * TBD

References

  1. See PCGamingWiki: Joy-Con page for more information about Joy-Con and PC connectivity/compatibility.
  2. There is no Preload image to RAM implementation for Ryujinx but it has a kinda similar enhancement called "Profiled Persistent Translation Cache"[1][2].
  3. 3.0 3.1 3.2 yuzu or suyu has no dedicated interface like Ryujinx. All of cheats, updates, DLCs and mods in the Title Properties->Add-Ons column. See feature request for this.
  4. 4.0 4.1 There is a pull request for adding trimming XCI files feature to Ryujinx. It's notable that Ryujinx allows loading .NSP files for both updates and DLCs directly, without installing them to the NAND. In contrast, yuzu requires installation of these files to the NAND. Although as mentioned in Save disk space for ISOs#Switch section you can use NSC_Builder for merge the game base, update and DLCs on a single NSP or XCI file, yuzu and it's forks supports this single but multi content file. Also see overview of formats here.
  1. Older versions of Sudachi included Home Menu support[3][4], but then this feature have removed, at least from the graphical user interface, although with 1.0.10 version this option is added to GUI again.
  2. According to a Progress Report from April 2023, texture replacement, along with all of the Patreon goal features that have been previously met will be finished and delivered. Implement texture replacement support for Ryujinx.
  3. 3.0 3.1 Have to be done on a per game basis as the yuzu or Ryujinx didn't have a "Camera" feature like the Dolphin emulator at the moment, so look for game mods like TOTK-UltraCam.

Emulation issues

For more information about Nintendo Switch hardware and reverse engineering;