Ce n'est pas un émulateur. Le code du jeu s'exécute directement sur la puce Apple, avec les graphismes de la Switch reconstruits sur Metal. Apportez vos fichiers NSP et prod.keys ; un script les transforme en IPA à installer par sideload.
Un portage natif plutôt que de l'émulation : le code du jeu n'est réécrit que là où le noyau d'Apple l'exige.
Les modules NSO de chaque jeu sont réécrits et s'exécutent directement sur le CPU. Une couche hôte remplace Horizon, le système de la Switch : threads, mémoire, système de fichiers, audio et services.
Les appels NVN et Vulkan sont implémentés sur Metal. Les shaders Maxwell sont traduits en SPIR-V, puis en Metal Shading Language, à la compilation.
Rien d'aucun jeu n'est fourni ici. Le script d'empaquetage lit vos NSP avec vos clés sur votre Mac et produit un IPA non signé à installer par sideload.
Chaque jeu a un petit profil de constantes et de tables de shaders dans dm/games/<title id>. Le code lit le profil ; il ne fige jamais un jeu en dur.
Construit sur d2r-mobile, le traducteur de shaders de Ryujinx, Atmosphère, yuzu, LibHac, SPIRV-Cross et d'autres. Voir les remerciements.
Empaquetez un IPA sur un Mac, installez-le par sideload, jouez. La première compilation prend 30 à 60 minutes, les suivantes environ 10.
Prérequis. Un Mac avec Xcode et Homebrew ; un espace disque libre d'environ deux fois la taille des NSP plus 10 Go ; un iPhone 15 Pro ou plus récent (A17 Pro et suivants) ou un iPad avec M1 ou plus récent, sous iOS / iPadOS 26 ou supérieur (les textures compressées BC des jeux l'exigent).
Une seule fois, sur le 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'"Le jeu de base (un NSP ou un dump XCI), sa mise à jour et les éventuels DLC.
~/Games/MarioWonder/
Super Mario Bros. Wonder [010015100B514000][v0].nsp
Super Mario Bros. Wonder [010015100B514800][v327680].nspL'IPA apparaît dans le même dossier.
python3 scripts/build_ipa_from_nsp.py ~/Games/MarioWonder -k ~/keys/prod.keysInstallez l'IPA avec AltStore, Sideloadly, LiveContainer ou équivalent. L'app prend le nom, l'icône et la version du jeu.
Touchez 2D / 3D en haut pour changer la disposition tactile. Une manette connectée masque les commandes tactiles. En 3D, glissez sur le tiers droit de l'écran pour la caméra. Secouez le téléphone pour secouer la manette.
Tous testés sur iPhone et jouables. Choisissez-en un pour voir les détails.












































Anglais par défaut. Choisissez-en une autre à l'empaquetage avec -l (par exemple -l ja), ou ajoutez DM_LANG=zh-Hans à Documents/env.txt.
Dans l'app Fichiers, sous le nom de l'app : save/ et log.txt. Envoyez log.txt en cas de problème.
De courtes saccades à la première apparition d'une scène sont normales : les graphismes sont compilés une fois puis mémorisés.
Certains outils de sideload donnent un nouveau dossier de données. Copiez save/ et pso_user.tsv depuis l'ancien.
Lignes dans Documents/env.txt : DM_OPMODE=0 pour le mode portable, DM_FPS_TARGET=30 pour économiser la batterie, DM_SHOW_FPS=1 pour afficher les ips.
Pas d'amiibo ni de fonctions en ligne. Les autres jeux reçoivent un rapport d'analyse et un IPA « au mieux » qui peut ne pas démarrer.