用原生移植代替模拟:只有苹果内核要求的地方,才会改写游戏代码。
每个游戏的 NSO 模块经过改写后直接在 CPU 上运行。宿主层代替 Switch 系统 Horizon,提供线程、内存、文件系统、音频和各类服务。
NVN 和 Vulkan 调用在 Metal 上实现。Maxwell 着色器在构建时先转换为 SPIR-V,再转换为 Metal 着色语言。
本仓库不含任何游戏内容。打包脚本在你的 Mac 上用你的密钥读取 NSP,生成未签名的 IPA 供你侧载。
每个游戏在 dm/games/<title id> 里有一份很小的配置,记录常量和着色器表。代码读取配置,从不把某个游戏写死。
基于 d2r-mobile、Ryujinx 的着色器转换器、Atmosphère、yuzu、LibHac、SPIRV-Cross 等项目。详见致谢。
在 Mac 上打包 IPA,侧载到设备,开玩。第一次构建需要 30–60 分钟,之后约 10 分钟。
环境要求。装有 Xcode 和 Homebrew 的 Mac;空闲磁盘约为 NSP 大小的两倍再加 10 GB;目标设备为 iPhone 15 Pro 或更新机型(A17 Pro 及以上),或 M1 及以上的 iPad,系统为 iOS / iPadOS 26 及以上(游戏的 BC 压缩纹理需要)。
在 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'"基础游戏(NSP,或 XCI 转储)、它的更新包和任何 DLC。
~/Games/MarioWonder/
Super Mario Bros. Wonder [010015100B514000][v0].nsp
Super Mario Bros. Wonder [010015100B514800][v327680].nspIPA 会出现在同一个文件夹里。
python3 scripts/build_ipa_from_nsp.py ~/Games/MarioWonder -k ~/keys/prod.keys用 AltStore、Sideloadly、LiveContainer 等工具安装 IPA。应用会使用游戏的名称、图标和版本。
点击顶部的 2D / 3D 切换触控布局。连接手柄后触控按键会隐藏。3D 模式下,在屏幕右侧三分之一处滑动来控制视角。摇晃手机即可摇动手柄。
全部在 iPhone 上测试过,可以游玩。点开查看详情。












































默认英文。打包时用 -l 指定(例如 -l zh-Hans),或在 Documents/env.txt 中加入 DM_LANG=zh-Hans。
在“文件”应用里,位于应用名称下:save/ 和 log.txt。出问题时请发送 log.txt。
场景第一次出现时的短暂卡顿是正常的:图形只编译一次,之后会被记住。
部分侧载工具会给重装的应用新的数据文件夹。请把旧文件夹里的 save/ 和 pso_user.tsv 复制过来。
在 Documents/env.txt 中加入:DM_OPMODE=0 为掌机模式,DM_FPS_TARGET=30 省电,DM_SHOW_FPS=1 显示帧率。
没有 amiibo,没有联网功能。其他游戏会得到一份分析报告和尽力而为的 IPA,不一定能启动。