seedds / nxnative
git clone https://github.com/seedds/nxnative.git
Switch games running natively on iPhone, iPad and Mac: an NSP folder becomes an unsigned IPA (NSO rewriter, Horizon HLE host, NVN→Metal)
—
stars, 24h
+904
stars, 7 days · #79
+904
stars, 30 days · #339
904
★ total · +904% this week
191
forks · 11 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageC
LicenseMIT
Created2026-10-13 (7d ago)
Last pushtoday
Watchers3
OwnerUser
Links
- GitHub: github.com/seedds/nxnative
- Releases · Issues · Hacker News mentions
README excerpt
# nxnative Play your own Nintendo Switch games natively on iPhone and iPad. Bring your game (its NSP files) and your `prod.keys`; one script turns them into an IPA that you sideload. It is not an emulator: the game's own code runs directly on the Apple chip, with Switch graphics rebuilt on Metal. Nothing from any game is in this repository, and the project is not affiliated with Nintendo or any game publisher. ## Acknowledgements This project is built on other people's work: - **d2r-mobile** (MIT) developed this native-execution approach, for Diablo II: Resurrected. nxnative (first called smbw-mobile) started as a copy of its generic parts: the NSO rewriter, the host that stands in for Horizon, the NVN-on-Metal layer and the iOS app shell. Fixes go both ways. - **Ryujinx** (MIT): its shader translator (`Ryujinx.Graphics.Shader`, `Ryujinx.Common` and `Spv.Generator` 1.3.2, in `dm/third_party/ryujinx` with a few fixes listed in its README) turns the games' Maxwell shaders into SPIR-V. Its emulation of the kernel and system services is also a reference when the host's behaviour is in doubt. - **Atmosphère**: its kernel, mesosphère, is the reference for Horizon's synchronization semantics (address arbiter, condition variables). - **yuzu**: Maxwell instruction encodings for the shader reference tool, and a cross-check for kernel behaviour. - **LibHac**: reads NSPs and layers updates over the base game in `dm/tools/nx_extract`. **hactool** did the first extractions. - **SPIRV-Cross**: SPIR-V to Metal Shading Language. - **deko3d** (zlib): its texture layout size algorithm is ported in `dm/gfx/nvn/nvn_tex.c`. - **libvpx** (VP9 movies), **stb_vorbis** (movie sound), the **Vulkan headers** and **NVIDIA FLIP** ship in `dm/third_party` with their licenses (list). - **Capstone**, **lz4**, **fontTools** and **XcodeGen** are used by the build. ## Games All of these are tested on an iPhone and playable: | Game | IPA | Notes | |---|---|---| | Super Mario Bros. Wonder | ~4 GB | | | Fire Emblem Engage | ~15 GB | Upgraded to 60 fps (30 fps on Switch); the upgrade needs update 2.0.0, it does not work with other versions | | Metroid Dread | ~5 GB | | | 13 Sentinels: Aegis Rim | ~5 GB | | | Super Mario 3D World + Bowser's Fury | ~3 GB | | | The Legend of Zelda: Breath of the Wild | ~16 GB | Upgraded to 60 fps (30 fps on Switch); the upgrade needs update 1.9.0, it does not work with other versions | | The Legend of Zelda: Link's Awakening | ~6 GB | | | Super Mario Odyssey | ~6 GB | | | Hades | ~4 GB | | | Hyrule Warriors: Age of Calamity | ~15 GB | Upgraded to 60 fps (30 fps on Switch); the upgrade needs update 1.3.0, it does not work with other versions | | Fire Emblem: Three Houses | ~13 GB | Upgraded to 60 fps (30 fps on Switch); the upgrade needs update 1.2.0, it does not work with other versions | | Super Mario Galaxy | ~3 GB | | | The Legend of Zelda: Tears of the Kingdom | ~17 GB | Upgraded to 60 fps (30 fps on Switch); the upgrade needs update 1.4.3, it does no