Play your Switch games natively on iPhone & iPad

Not an emulator. The game's own code runs directly on the Apple chip, with Switch graphics rebuilt on Metal. Bring your own NSP files and prod.keys; one script turns them into an IPA you sideload.

Get startedBrowse 36 gamesGitHub
36playable games
11upgraded to 60 fps
0game files in the repo
iOS 26+A17 Pro / M1 or newer

Background

A native port instead of emulation: the game's code is rewritten only where Apple's kernel requires it.

Native execution

Each game's NSO modules are rewritten and run directly on the CPU. A host layer stands in for Horizon, the Switch OS: threads, memory, filesystem, audio and services.

Graphics on Metal

NVN and Vulkan calls are implemented on Metal. Maxwell shaders are translated to SPIR-V, then to Metal Shading Language, at build time.

Bring your own game

Nothing from any game ships here. The packing script reads your NSPs with your keys on your Mac and writes an unsigned IPA for you to sideload.

Per-game profiles

Every game has a small profile of constants and shader tables in dm/games/<title id>. Code reads the profile; it never hard-codes a game.

Built on d2r-mobile, Ryujinx's shader translator, Atmosphère, yuzu, LibHac, SPIRV-Cross and more. See the acknowledgements.

Quick guide

Pack an IPA on a Mac, sideload it, play. The first build takes 30–60 minutes, later ones about 10.

Requirements. A Mac with Xcode and Homebrew; free disk of about twice the NSPs' size plus 10 GB; a target iPhone 15 Pro or newer (A17 Pro+) or an iPad with M1 or later, on iOS / iPadOS 26+ (the games' BC-compressed textures need it).

Get nxnative and its tools

Once, on the Mac.

git clone https://github.com/seedds/nxnative.git && cd nxnative
brew install xcodegen zstd spirv-cross
brew install --cask dotnet-sdk
python3 -m pip install lz4 capstone fonttools "backports.zstd; python_version < '3.14'"

Put one game's NSPs in a folder

The base game (an NSP, or an XCI dump), its update and any DLC.

~/Games/MarioWonder/
  Super Mario Bros. Wonder [010015100B514000][v0].nsp
  Super Mario Bros. Wonder [010015100B514800][v327680].nsp

Run the script

The IPA appears in the same folder.

python3 scripts/build_ipa_from_nsp.py ~/Games/MarioWonder -k ~/keys/prod.keys

Sideload

Install the IPA with AltStore, Sideloadly, LiveContainer or similar. The app takes the game's name, icon and version.

Play

Tap 2D / 3D at the top to switch touch layouts. A connected controller hides the touch controls. In 3D, swipe the right third of the screen for the camera. Shake the phone to shake the controller.

Games

All tested on an iPhone and playable. Pick one for its details.

Super Mario Bros. Wonder
Super Mario Bros. Wonder~4 GB IPA
2D layout
Fire Emblem Engage
Fire Emblem Engage~15 GB IPA
2D layout60 fps
Metroid Dread
Metroid Dread~5 GB IPA
2D layout
13 Sentinels: Aegis Rim
13 Sentinels: Aegis Rim~5 GB IPA
2D layout
Super Mario 3D World + Bowser's Fury
Super Mario 3D World + Bowser's Fury~3 GB IPA
3D layout
The Legend of Zelda: Breath of the Wild
The Legend of Zelda: Breath of the Wild~16 GB IPA
3D layout60 fps
The Legend of Zelda: Link's Awakening
The Legend of Zelda: Link's Awakening~6 GB IPA
2D layout
Super Mario Odyssey
Super Mario Odyssey~6 GB IPA
3D layout
Hades
Hades~4 GB IPA
3D layout
Hyrule Warriors: Age of Calamity
Hyrule Warriors: Age of Calamity~15 GB IPA
3D layout60 fps
Fire Emblem: Three Houses
Fire Emblem: Three Houses~13 GB IPA
3D layout60 fps
Super Mario Galaxy
Super Mario Galaxy~3 GB IPA
3D layout
The Legend of Zelda: Tears of the Kingdom
The Legend of Zelda: Tears of the Kingdom~17 GB IPA
3D layout60 fps
Monster Hunter Rise
Monster Hunter Rise~22 GB IPA
3D layout60 fps
Ace Attorney Investigations Collection
Ace Attorney Investigations Collection~7 GB IPA
2D layout
Hades II
Hades II~4 GB IPA
3D layout
Unicorn Overlord
Unicorn Overlord~4 GB IPA
2D layout
Rhythm Heaven Groove
Rhythm Heaven Groove~3 GB IPA
2D layout
Octopath Traveler 0
Octopath Traveler 0~4 GB IPA
2D layout60 fps
Pokémon Legends: Z-A
Pokémon Legends: Z-A~6 GB IPA
2D layout
Cuphead
Cuphead~5 GB IPA
2D layout
Super Mario Galaxy 2
Super Mario Galaxy 2~3 GB IPA
3D layout
FINAL FANTASY TACTICS - The Ivalice Chronicles
FINAL FANTASY TACTICS - The Ivalice Chronicles~11 GB IPA
3D layout
Absolum
Absolum~2 GB IPA
2D layout
Captain Toad: Treasure Tracker
Captain Toad: Treasure Tracker~2 GB IPA
3D layout
Brain Memory Training Academy
Brain Memory Training Academy~0.1 GB IPA
2D layout
The Great Ace Attorney Chronicles
The Great Ace Attorney Chronicles~4 GB IPA
2D layout
STEINS;GATE RE:BOOT
STEINS;GATE RE:BOOT~6 GB IPA
2D layout
Big Brain Academy: Brain vs. Brain
Big Brain Academy: Brain vs. Brain~0.8 GB IPA
2D layout
Patrick's Parabox
Patrick's Parabox~0.2 GB IPA
2D layout
Celeste
Celeste~0.9 GB IPA
2D layout
DRAGON QUEST XI S: Echoes of an Elusive Age – Definitive Edition
DRAGON QUEST XI S: Echoes of an Elusive Age – Definitive Edition~15 GB IPA
3D layout60 fps
Monster Train 2
Monster Train 2~1.6 GB IPA
3D layout60 fps
Raging Loop
Raging Loop~0.9 GB IPA
2D layout
DARK SOULS: REMASTERED
DARK SOULS: REMASTERED~4 GB IPA
3D layout60 fps
Paper Mario: The Thousand-Year Door
Paper Mario: The Thousand-Year Door~5 GB IPA
3D layout60 fps

FAQ & tips

Language

English by default. For Chinese add DM_LANG=zh-Hans to Documents/env.txt.

Saves & logs

In the Files app under the app's name: save/ and log.txt. Send log.txt when something goes wrong.

Stutters

Short stutters the first time a scene appears are normal: graphics compile once and are remembered.

Reinstalling

Some sideloaders give a new data folder. Copy save/ and pso_user.tsv from the old one.

Settings

Lines in Documents/env.txt: DM_OPMODE=0 for handheld, DM_FPS_TARGET=30 to save battery, DM_SHOW_FPS=1 for an FPS counter.

Not supported

No amiibo, no online features. Other games get a survey and a best-effort IPA that may not start.