
在移动设备上游玩主机游戏一直以来都是极客玩家乐此不疲的热门话题。以往在 iOS 上玩任天堂 Switch 游戏,玩家通常只能依赖 Folium、DolphiniOS 等前端或 Sudachi、MeloNX 等各类开源模拟器移植版。然而,由于 iOS 平台严格的安全机制(如 JIT 动态编译权限限制、内存配额封锁),传统模拟器往往面临发热严重、掉帧甚至无法运行的窘境。
近期在 GitHub 上引起广泛关注的开源项目 nxnative提出了一条全新的思路:它不是模拟器,而是让游戏以“原生应用”的形式跑在 Apple 芯片上。
nxnative:https://github.com/seedds/nxnative
nxnative 不模拟 Switch 的 ARM CPU,而是利用 Nintendo Switch 和现代 iPhone/iPad/Mac 同样采用 ARM64 架构这一点,对 Switch 游戏程序进行重写,让游戏自己的 ARM64 代码直接运行在 Apple 芯片上。然后再通过兼容层补齐 Nintendo Horizon OS 的系统服务,并把 Switch 使用的 NVIDIA NVN 图形 API 转换为 Apple Metal。
用户只需提供自己的 NSP 文件(本体 + 更新 + DLC)和 prod.keys,通过 build_ipa_from_nsp.py 脚本打包成未签名 IPA,侧载到 iPhone、iPad 或 Mac 上运行。
nxnative 的核心工作流:
通过 build_ipa_from_nsp.py 脚本,nxnative 将用户合法获取的 Switch 游戏 NSP / XCI 文件直接打包成一个无需越狱的 iOS .ipa 安装包:
1. NSO 可执行文件重写(NSO Rewriter): 解析 Switch 的可执行格式(NSO),调整符号与内存布局,重写为符合 iOS/Darwin 平台 ABI 规范的可执行 Mach-O。
2. Horizon OS 宿主抽象(HLE Host): 模拟实现 Switch 的底层操作系统 Horizon 关键服务(线程调度、同步原语如 Address Arbiter、音频服务与文件系统等)。
3. 图形翻译管道(NVN → SPIR-V → Metal): Switch 游戏的原生渲染基于 NVN 或 OpenGL。nxnative 集成了 Ryujinx 的着色器翻译模块将 Maxwell 指令转为 SPIR-V,再借助 SPIRV-Cross 将其转译为 Apple 的 Metal Shading Language (MSL),实现硬件级 Metal 加速。
这种静态重构方案让游戏绕过了 iOS 对 JIT 的封锁,不仅效率极其接近原生应用,更让多款游戏在 iPhone 上解锁了 60 FPS,例如《塞尔达传说:旷野之息》《火焰纹章:风花雪月》《怪物猎人:崛起》等在 Switch 上原本锁定 30 FPS 的游戏。
系统要求
- 硬件:iPhone 15 Pro 及以上(A17 Pro+)或 M1 及以上 iPad/Mac。原因是游戏纹理多为 BC 压缩格式,旧设备无法直接读取。
- 系统:iOS / iPadOS 26 或更高。
- 构建环境:一台装有 Xcode 和 Homebrew 的 Mac。首次构建耗时 30–60 分钟,后续约 10 分钟。需要约 2 倍 NSP 大小 + 10 GB 空闲空间。
- 安装:使用 AltStore、Sideloadly、LiveContainer 等工具侧载。大游戏建议启用 Increased Memory Limit 能力,突破默认约 3.4 GB 内存限制。
打包与安装流程
1. 准备环境(基于 macOS):
git clone https://github.com/seedds/nxnative.git && cd nxnativebrew install xcodegen zstd spirv-cross glslangbrew install --cask dotnet-sdkpython3 -m pip install lz4 capstone fonttools "backports.zstd; python_version < '3.14'"
2. 准备资源: 将提取的游戏 ROM(.nsp 或 .xci、更新补丁、DLC)及解密密钥 prod.keys 放入指定目录。
3. 生成 IPA:
python3 scripts/build_ipa_from_nsp.py ~/Games/YourGame -k ~/keys/prod.keys
4. 侧载安装(Sideloading): 建议使用 AltStore、Sideloadly 或 LiveContainer 进行签名安装。由于大型 3D 游戏内存开销通常超 3.5GB,侧载时建议勾选 Increased Memory Limit 扩展内存权限。
支持游戏
项目 README 已列出大量经作者实测可玩的游戏,部分在特定更新下可稳定 60 帧(Switch 原版多为 30 帧)。代表性作品包括:
- 《超级马力欧兄弟 惊奇》《超级马力欧奥德赛》《超级马力欧 3D 世界 + 库巴之怒》
- 《塞尔达传说:旷野之息》(更新 1.9.0 可 60 帧)、《王国之泪》(更新 1.4.3 可 60 帧)
- 《密特罗德 生存恐惧》《火焰纹章 Engage》《火焰纹章 风花雪月》
- 《哈迪斯》《哈迪斯 2》《茶杯头》《八方旅人》《节奏天国 Groove》
- 《超级斯马什兄弟 终极》(离线模式)、《贝优妮塔 3》《宝可梦传说 Z-A》等
需要强调一下:nxnative 本身不包含 Nintendo 游戏、固件或密钥。项目要求用户使用自己合法拥有并自行 Dump 的游戏文件和 prod.keys。涉及游戏备份、侧载及相关工具时,请遵守所在地法律以及相应平台和软件的许可条款。
nxnative 代表了一种新的游戏移植范式:利用同架构优势,让主机游戏以接近原生的方式运行在苹果设备上。如果你手头有合法游戏文件、符合硬件要求,并且愿意接受侧载和构建过程,nxnative 是目前在 iPhone / iPad / Mac 上玩 Switch 游戏最“原生”的方案之一。
实际上在 Claude 、ChatGPT等大模型加持下,针对各种主机游戏的跨平台移植成为众多开发者 Vibe Coding 的重要内容,这一波“原生移植”浪潮的一些典型项目:
https://github.com/jhaizhou-ops/d2r-mobile
https://github.com/ly05010419/MacNativeGames
https://github.com/Xc1Ym/LumaDock
https://github.com/MZhao-ouo/Touchable
https://github.com/IshaanKalra2103/BotWRecomp
https://github.com/realskyrin/ns-game-apple-arm-port