Nintendo Switch emulators

From Emulation General Wiki
Revision as of 12:07, 17 November 2023 by Ahayri (talk | contribs) (Hardware Features)
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, 3DS
Emulated
For other emulators that run on Switch hardware, see Emulators on Switch.

The Nintendo Switch is an eighth-generation hybrid gaming console released by Nintendo on March 3, 2017, and retailed for $299.99. 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 and 4 ARM Cortex-A53 CPUs running at 1.020 GHz with 4 GBs of RAM and a proprietary NVIDIA GPU codenamed GM20B.

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.

Emulators

Name Platform(s) Latest Version Hardware Features Enhancements Compatibility FLOSS Active Recommended
PC / x86
Ryujinx Windows Linux macOS Nightly
LDN builds
~ ~ 83%
3517 out of 4219 reported titles
yuzu Windows Linux Mainline
EA ($)
~ ~ 54%
1457 out of 2699 reported titles
NSEmu Windows git ?
Mephisto Linux macOS git ?
CageTheUnicorn Windows Linux macOS FreeBSD git ?
Mobile / ARM
yuzu Android Mainline
EA ($)
git
~ ~ ?* ~
Strato Android git ? ? 4%
56 out of 1422 reported titles
~
Skyline Android Edge 69 ? ? ? *
Egg NS (蛋蛋模拟器) Android 4.0.5 ?
(Stolen yuzu/Skyline)
DamonSwitch (呆萌Switch模拟器) Android 1.0Preview ?
(Stolen yuzu/Skyline)
Horizon Linux Linux git ?


Ryujinx (compatibility)
An open-source emulator that's programmed in C#. It supports resolution upscaling to 4K and beyond; custom upscaling/downscaling ratios are also supported. 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 supporting local wireless multiplayer across the internet, LAN mode compatibility on local networks with Switch consoles on supported games, and ldn_mitm, which can connect Ryujinx to your CFW console on the same local network (LDN upstreaming roadmap). As of August 2022, Vulkan API support is available and boosts FPS further. The ability to directly run the Switch HOME Menu in Ryujinx is currently not supported. But you can use a launcher such as Ninty Launcher through the command line launch options supported by Ryujinx.[1]
yuzu (compatibility)
An open-source emulator made by many of Citra's developers. As it's a hard fork of Citra, it shares many of its traits, namely cross-platform support and the use of OpenGL (though unlike Citra, it also supports Vulkan). This emulator currently offers early access builds to $5/month Patreon subscribers, which allows said Patreons to utilize new features prior to their eventual release on the mainline build. One of yuzu's notable features is its disk-based shader cache for OpenGL, negating the need to compile shaders on the fly on every boot. Resolution scaler support was added in October 2021. yuzu generally gives better performance (but less stable), so it's ideal for weaker PCs. yuzu also has free and paid Android versions.
Strato (compatibility)
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 of the 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.
Skyline
The predecessor to the Strato project. Development of Skyline ceased in May 2023.
Egg NS
Similar to DamonPS2, it's a closed-source, payware/malware emulator only for Android. It is NOT recommended to use this emulator. Claimed the first spot in getting games running on Android. 81 titles are purported to work, and the rest are either not working or assumed to fail. 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 headquarter 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.
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.

Hardware Features

Name Ryujinx Yuzu Strato
Switch HOME Menu *
Mii Editor *
NSO emulators
(L-CLASSICS
M2Engage, Sloop, Hiyoko, Hovercraft)
[N2 1] ~[N2 2] ?
Connectivity Nintendo Switch Online
Local Wireless Play / LDN ~[N2 3] ~[N2 3]
LAN Play[N2 4]
Controllers IR Motion Camera ? ? ?
HD Rumble * * ?
Native Dual Joy-Con Support ~* * ?
Motion Controls (Gyro) * *
Amiibo
  1. Ryujinx compatibility for NSO emulators: NSO N64, NSO NES, NSO SNES, NSO Genesis, NSO GameBoy, NSO GameBoy Advance. This PR change allows the JIT service, required by the NSO N64 emulator and Super Mario 3D All Stars (for Super Mario 64) to run.
  2. Yuzu compatibility for NSO emulators: NSO N64, NSO NES, NSO SNES, NSO Genesis
  3. 3.0 3.1 Local Wireless Play/LDN only works with other users of Ryujinx's LDN builds or yuzu users, NOT with native Switch players. However, Ryujinx also allows for connecting to CFW Switches that are using the ldn_mitm submodule.
  4. Not to be confused with Local Wireless Play. Only a very short list of games support this feature. Please see XLink Kai's setup guides for Ryujinx and yuzu

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.[2]

Enhancements

Name Ryujinx yuzu Strato
RetroAchievements
Resizable Internal Resolution
Overclock
Widescreen hack
Widescreen already supported on Nintendo Switch system.
But you can render games in other ratios such as ultrawide 21:9 or super ultrawide 32:9 with patches and mods.
?
Internal Framerate Hack ?
Texture Replacement ~[N2 1] ~*
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.
Post-Processing Filters
Shader Chain
TAS features Macros/Scripts/Lua *
Rewind
Fast-Forward/Turbo Speed
Savestates *
Mouse Injector Compatible ~*
Input lag-mitigating technique
Streamable compression format
Debug Features *
  1. 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.

References