Difference between revisions of "Nintendo Switch emulators"
(→Emulators) |
(→Emulation issues) |
||
Line 507: | Line 507: | ||
* MVG: [https://www.youtube.com/watch?v=xQmN-cxg21M How the Nintendo Switch Security was defeated] | * MVG: [https://www.youtube.com/watch?v=xQmN-cxg21M How the Nintendo Switch Security was defeated] | ||
* Ryujinx: [https://blog.ryujinx.org/ Blog], [https://discord.gg/ryujinx Discord] | * Ryujinx: [https://blog.ryujinx.org/ Blog], [https://discord.gg/ryujinx Discord] | ||
− | * Yuzu: [https://yuzu-emu.org/entry/ Blog], [https://discord.gg/yuzu-emu Discord] | + | * Yuzu: [http://web.archive.org/web/20240207004533/https://yuzu-emu.org/entry/ Blog], [https://discord.gg/yuzu-emu Discord] |
+ | * Suyu: [https://discord.gg/2gQRBp44KT Discord] | ||
* [https://switchbrew.org/wiki/Main_Page SwitchBrew] | * [https://switchbrew.org/wiki/Main_Page SwitchBrew] | ||
* [https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering dekuNukem - Nintendo Switch reverse engineering attempts] | * [https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering dekuNukem - Nintendo Switch reverse engineering attempts] |
Revision as of 09:53, 6 March 2024
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 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.
Contents
Emulators
Name | Platform(s) | Latest Version | Hardware features and peripherals |
Enhancements | Compatibility | FLOSS | Active | Recommended |
---|---|---|---|---|---|---|---|---|
PC / x86 | ||||||||
Ryujinx | Nightly LDN builds |
~ | ~ | 83% 3543 out of 4273 reported titles |
✓ | ✓ | ✓ | |
yuzu | Former website (Offline)[N 1] | ~ | ~ | 54% 1457 out of 2699 reported titles[N 2] |
✓ | ✗* | ~ | |
Suyu | WIP | ~ | ~ | ? | ✓ | ✓ | WIP | |
NSEmu | git | ✗ | ✗ | ? | ✓ | ✗ | ✗ | |
Mephisto | git | ✗ | ✗ | ? | ✓ | ✗ | ✗ | |
CageTheUnicorn | git | ✗ | ✗ | ? | ✓ | ✗ | ✗ | |
Mobile / ARM | ||||||||
yuzu | EA ($) Mainline (Google Play) Mainline (GitHub) |
~ | ~ | ?* | ✓ | ✗* | ~ | |
Strato | git | ? | ? | 4% 58 out of 1426 reported titles |
✓ | ✓ | ~ | |
Sudachi | 0.0.1.7 | ? | ? | ? | ✓ | ✓ | ~ | |
Suyu | WIP | ~ | ~ | ? | ✓ | ✓ | WIP | |
Ryujinx | Unreleased | ? | ? | ? | ? | ✓ | WIP | |
Skyline | Edge 69 | ? | ? | ? | ✓ | ✗* | ✗ | |
Egg NS | 4.0.5 | ✗ | ✗ | 78% 172 out of 220 reported titles |
✗ (stolen yuzu) |
✓ | ✗ | |
DamonSwitch | 1.0Preview | ✗ | ✗ | N/A | ✗ (stolen yuzu) |
✗ | ✗ | |
Horizon Linux | git | ✗ | ✗ | ? | ✓ | ✗ | ✗ |
- 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. Ryujinx also uses an alternative approach to yuzu's NCE for improving performance when emulating on ARM systems.[1]
- yuzu
- An open-source HLE approach 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 and Vulkan. Yuzu offers 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. However, the source code for these new features is publicly available and can be compiled by anyone, with some users publicly sharing their own unofficial early access builds. One of yuzu's notable features is its decreased shader stuttering compared to Ryujinx, making it ideal for weaker PCs. Yuzu also has free and paid Android versions which have greatly improved recently thanks to their implementation of Native Code Execution (NCE) and other improvements. Recent Device Mapping & SMMU implementations further have helped reduce yuzu's memory footprint, allowing future optimizations and more. There are 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. Yuzu's January 2024 progress report highlights ongoing work on "multiprocess" and "services". This progress is crucial for emulating applets and enabling emulating system functions like the QLaunch HOME Menu, but further development is required before these features are fully implemented.
- As of March 4th 2024, the lawsuit filed by Nintendo against Tropic Haze LLC has led to their unfortunate decision to cease official distribution of Yuzu and Citra. Fortunately, it is easy to find an archive of the latest version, and they are likely to be continued by other people.
- Sudachi
- An experimental port of Yuzu to iOS/iPadOS by Jarrod Norwell. Requires a paid Apple Developer Account or TrollStore in order to use the
com.apple.developer.kernel.increased-memory-limit
entitlement.
- Suyu
- A fork of Yuzu continues from where that project left off on GitLab instead of Github suggested by the community due to potential takedown attempt[2]. Currently the team recruiting programmers to start studying the code. Thus, there's an adaptation period needed to see some serious advancements.
- Skyline
- The predecessor to the Strato project. 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.
- 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.
- 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 and peripherals
Name | Ryujinx | Yuzu | Strato | |
---|---|---|---|---|
Switch HOME Menu | ✗* | ✗* | ✗ | |
Mii Editor | ✓ | ✓* | ✗ | |
NSO emulators | ✓ | ~ | ? | |
Connectivity | Nintendo Switch Online | ✗ | ✗ | ✗ |
Local Wireless Play / LDN | ~ | ~ | ✗ | |
LAN Play | ✓ | ✓ | ✗ | |
Controllers[N2 1] | Native Dual Joy-Con Support | ~* | ✓* | ? |
Ring-Con | ✗* | ✓* | ? | |
Keyboard & Mouse | ~* | ? | ? | |
Inputs | IR Motion Camera | ✗ | ✓* | ✗ |
HD Rumble | ✗* | ✗* | ? | |
Motion Controls (Gyro) | ✓* | ✓* | ? | |
Touchscreen | ✓* | ✓* | ? | |
Amiibo | ✓ | ✓ | ✗ | |
Nintendo Labo | ? | ? | ? |
Connectivity
- 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 Switch devices that are using the ldn_mitm submodule. Also, there is a feature tracker for Ryujinx LDN upstreaming.
- LAN Play
- Not to be confused with Local Wireless Play. This one is similar to XBOX systems System Link feature or PlayStation systems LAN tunneling feature. Please see XLink Kai's setup guides for Ryujinx and yuzu
- Nintendo Switch Online
- Main article: Nintendo Switch Online
- yuzu: compatibility list for connectivity
- Ryujinx: LDN compatibility list and LAN Play compatibility list. Also, you can play Super Mario Bros. 35 multiplayer using special Ryujinx LDN build and smb35 revivial private server.
- For more information about other revive projects see Preservation projects page.
NSO emulators
- Official emulators
- Nintendo Switch Online#List of emulators
- Wikipedia:List_of_Nintendo_Switch_Online_games
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.
- 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.
- yuzu compatibility for NSO emulators: NSO N64, NSO NES, NSO SNES, NSO Genesis.
Enhancements
Name | Ryujinx | yuzu | Strato | ||||||
---|---|---|---|---|---|---|---|---|---|
Graphics | Resizable Internal Resolution | ✓ | ✓ | ✗ | |||||
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. |
✓ | ✓ | ? | ||||||
Texture Replacement | ~[N2 2] | ~* | ✗ | ||||||
Ray-tracing | 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) |
✗ | ✗ | ✗ | ||||||
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 | ✓ | ✓ | ? | |||||
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 can be used with yuzu or Ryujinx, please be aware that some visual glitches and artifacts may occur at this time. | ||||||||
Overclock | ✗ | ✗ | ✗ | ||||||
Preload optical disc 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 disc 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. |
✗ | ✗ | ✗ | ||||||
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[3] and likely doesn't offer enough benefit to justify the development effort. | ||||||||
Post-Processing | Post-rendering AA (FXAA, TXAA and MLAA/SMAA) |
✓ | ✓ | ? | |||||
Post-rendering scaling (Sharp bilinear, Lanczos and FSR 1) |
✓ | ✓ | ? | ||||||
Filters NTSC filters, HDR tonemapping etc. |
✗ | ✗ | ✗ | ||||||
Shader Chain | ✗ | ✗* | ✗ | ||||||
TAS features | Macros/Scripts/Lua | ✗ | ✓* | ✗ | |||||
Rewind | ✗ | ✗ | ✗ | ||||||
Fast-Forward/Turbo Speed | ✗ | ✗ | ✗ | ||||||
Savestates | ✗ | ✗* | ✗ | ||||||
Movie recording/playback | ✗ | ✗ | ✗ | ||||||
Quality of life | Built-in Graphics mod editor/manager | ✓* | ✗ | ✗ | |||||
Built-in Cheat Manager | ✓ | ✗* | ✗ | ||||||
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 | ✗ | ✗ | ✗ | ||||||
Per-Game Profiles | ✓* | ✓* | ? | ||||||
Command Line Options | ✓* | ✓* | ? | ||||||
On-Screen Display Showcases messages, controller input state which is useful for speedrunners, performance data, active settings, and various notifications. |
✗ | ✗* | ? | ||||||
Big Picture Mode | ✗* | ✗ | ? | ||||||
Controls | Mouse Injector Compatible | ~* | ✗ | ✗ | |||||
Input lag-mitigating technique | ✗ | ✗ | ✗ | ||||||
Misc | RetroAchievements | ✗ | ✗ | ✗ | |||||
Free Look Free Look is a enhancement feature that allows manipulation of the in-game camera. |
~[N2 3] | ~[N2 3] | ? | ||||||
Debug Features | ✗* | ✗ | ✗ |
References
- Notes
- ↑ Also see PCGamingWiki: Joy-Con page for more information about Joy-Con and PC connectivity/compatibility.
- ↑ 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.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.
- ↑ Official Yuzu downloads have been taken down due to the Nintendo Lawsuit
- ↑ Obsolete list, there was a ongoing rewrite project, but project is dead anyway.
Emulation issues
For more information about Nintendo Switch hardware and reverse engineering;
- MVG: How the Nintendo Switch Security was defeated
- Ryujinx: Blog, Discord
- Yuzu: Blog, Discord
- Suyu: Discord
- SwitchBrew
- dekuNukem - Nintendo Switch reverse engineering attempts
- ReSwitched - Awesome Switch: resources
Consoles: Color TV-Game • Nintendo Entertainment System (Family Computer) • Super Nintendo Entertainment System (Super Family Computer) • Nintendo 64 • GameCube • Wii • Wii U • Nintendo Switch Handhelds: Game & Watch • Game Boy/Color • Virtual Boy • Game Boy Advance • Nintendo DS • Nintendo DSi • Nintendo 3DS Related: Family Computer Disk System • Satellaview • 64DD • Super Game Boy • e-Reader • Amiibo • Triforce (Arcade) • Namco ES3 (Arcade) |