An unofficial project called nxnative has published a toolchain that builds standalone apps for iPhone, iPad, and Apple Silicon Macs from original Nintendo Switch games you own. Game CPU code runs directly on Apple chips, while Switch-specific OS features and graphics processing are handled by compatibility implementations. It builds on technology developed for Diablo II: Resurrected and has been reorganized so that shared components can support multiple games. However, being able to run CPU code is not the same as being able to play a game without problems. Practicality depends on OS and graphics compatibility, as well as per-version fixes for each game and device support.

AD

From a single-game port to multiple titles

nxnative started with "d2r-mobile," a project targeting Diablo II: Resurrected. It inherits that project's code-rewriting mechanism, its substitutes for Switch OS features, and its Apple graphics processing. These have been reorganized so they can be used across multiple games, with title-specific adjustments separated out as "per-game settings." Because the shared code loads each game's settings, title-specific branching does not have to be built directly into the common code.

Users need to supply an NSP file containing the data of a game they own, plus the "prod.keys" encryption keys required to read that data. nxnative uses these to generate an IPA file for iPhone and iPad, and it also supports the .app format for Apple Silicon Macs. Game data and keys are not bundled with the project; users must provide them themselves. nxnative is an unofficial project released under the MIT License and is not affiliated with Nintendo or any game publisher.

The README's list of tested games includes Super Mario Odyssey and Metroid Dread, as well as The Legend of Zelda: Breath of the Wild and The Legend of Zelda: Tears of the Kingdom. However, this is a list of games "tested on Mac or iPhone," and not all of them were verified on iPhone. It also does not guarantee that a game can be played through to the end without problems. To judge actual compatibility, you need to look beyond the game title to the tested version, the device, and the range of behavior that has been confirmed.

Direct CPU execution, with OS and graphics compatibility layers

The features provided by Horizon, the Nintendo Switch OS, are not available just by executing the game's CPU instructions on an Apple chip. Graphics also require a mechanism to connect Switch graphics processing to Apple's graphics API, Metal. nxnative absorbs these differences through several compatibility implementations. Based on the published development documentation and the README, the division of roles is as follows.

Layer What is carried over from the game What nxnative handles Main challenges
CPU code The game's own CPU code, run directly on Apple chips Rewrites necessary code to fit Apple's execution environment and calling conventions Fixes tied to OS execution conditions and game versions
OS services Features the game requests from Horizon Substitutes thread management, synchronization, memory management, save data storage, and more; also covers input, audio, and video Reproducing the features and behavior the game requires
Graphics The game's rendering code and shaders Connects NVN and other graphics processing to Metal; a separate translation layer is provided for games using Vulkan/OpenGL Graphics preparation and game-specific display glitches

In this structure, the game's CPU code runs directly while OS services and graphics run through separate mechanisms. Code still has to be modified to suit Apple's execution conditions, and game-specific bugs still have to be addressed. The table is an overview of the mechanism based on public materials and does not represent a performance comparison on real devices.

The graphics side also draws on technology accumulated in existing Nintendo Switch emulator development. Shaders, the programs that run on the GPU, are converted from the Switch's Maxwell format to the intermediate format SPIR-V using Ryujinx's translator, and then to Metal Shading Language with SPIRV-Cross. Meanwhile, Hades, which uses Vulkan, and Digimon Story Cyber Sleuth, which uses OpenGL, go through separate Metal translation layers. Because games use different graphics APIs, not everything can be processed through the same path.

One example where shared CPU instructions are not enough, because of OS differences, is a problem that arose with Paper Mario: The Thousand-Year Door. According to the development notes, when the game's script called a native function, the "stack," which holds temporary data, was not properly aligned, causing a crash in the Apple environment. On Horizon, stack alignment checks on application code are disabled, while Apple's kernel does not allow accesses that use a misaligned stack. This difference in execution conditions caused the problem.

The developer fixed the code-rewriting process by rounding the stack allocation up to a 16-byte boundary. This is not a matter of rebuilding the whole game as a different program, but a technique for adjusting the code where problems occur. Even if an Apple chip can execute Switch CPU instructions, the OS's permitted operating conditions will not necessarily match. nxnative corrects such environmental differences where needed.

AD

Reported 60fps Zelda performance and per-version compatibility

In the README, the developer reports that The Legend of Zelda: Breath of the Wild version 1.9.0 and The Legend of Zelda: Tears of the Kingdom version 1.4.3, which run at 30fps on Switch, can be run at 60fps. However, this is the developer's own report for specific versions, not an independent performance test with standardized devices and measurement conditions. It has not been confirmed that 60fps can be maintained on every supported device or in every scene in the game.

nxnative's per-game settings folders store shader tables and manually supplemented information, as well as fixes keyed to build IDs that identify the version of the executable code. In other words, to judge compatibility, the version being run matters as well as the game title. When code is rewritten, as in the stack fix above, the target routine does not necessarily exist at the same location and with the same structure in other versions. According to the README, the tool will attempt to build an app even for versions other than those tested, but it will flag the version as untested and will not apply fixes prepared for tested versions, such as the 60fps patch. For unregistered games, it only attempts a build with provisional settings, and the game may fail to launch.

Some fixes use a mechanism that matches entire functions in updated code, like a fingerprint, to decide whether a fix can be applied safely. If the code has changed or the match is ambiguous, the fix is skipped. The technical documentation for the code-rewriting mechanism also states explicitly that it does not automatically handle every game update. A successful app build and the correct application of fixes suited to that version need to be considered separately.

Likewise, a successful CI (continuous integration) build does not prove that a game is actually playable. nxnative's iOS CI builds the app using synthetic data and checks that the components can be assembled correctly. Because it does not perform code signing or installation on a real device, separate testing on actual hardware is needed to confirm that a game launches and runs during play.

Texture formats and memory limits shape iPhone support

nxnative's operating requirements for iPhone and iPad are iOS/iPadOS 26 or later, with an A17 Pro or later chip (as in the iPhone 15 Pro), or an iPad with an M1 or later chip. According to the developer, this requirement is not determined by CPU performance alone. Nintendo Switch games use texture assets compressed in BC formats, which older iPhones cannot handle. Even if CPU performance is sufficient, a game may be unusable depending on GPU support.

Memory limits are another important constraint. According to the README, without the entitlement that raises the memory limit, an app is restricted to about 3.4 GB of memory. If the app is signed with a tool that can grant the necessary entitlement, relatively recent iPhones can use up to about 6 GB. Hyrule Warriors: Age of Calamity and Hades II may exceed the 3.4 GB limit and be terminated, so having a supported chip alone is not enough. These memory amounts are not guaranteed on every device.

Building an app requires a Mac, Xcode, and Homebrew. The README estimates that the first build takes about 30 to 60 minutes and requires free storage of roughly twice the size of the NSP file plus 10 GB. The generated IPA is installed on iPhone or iPad by sideloading, without going through the App Store. This is not a system where you simply download and install a finished app; users must handle everything themselves, from preparing the game data to building the app and installing it on the device.

Controls support both touch input and physical controllers, and some vibration features and motion controls are also available. amiibo and online features are not supported. In newly visited scenes, momentary stutters may occur while graphics processing is prepared. Even if shaders are converted during the app build, preparation for drawing new scenes on a real device is not entirely complete. Game-specific glitches have also been reported, such as some audio and ground rendering problems after the app is resumed.

nxnative is an interesting effort that extends the technology for running Nintendo Switch games directly on Apple devices from a single title to multiple games. However, more supported titles does not necessarily mean more games that are practically playable. In judging future progress, what matters is not just which game names are added to the compatibility list, but which versions have been verified on which devices, and how far behavior such as graphics, saving, and input has been confirmed. Whether improvements to the shared compatibility layers and per-game settings translate into stable performance on real devices will be the key to widening the range of owned Switch games that can be enjoyed on Apple devices.