Switch のゲームを iPhone / iPad でネイティブにプレイ

エミュレータではありません。ゲーム自身のコードが Apple のチップ上で直接動き、Switch のグラフィックスは Metal 上で再構築されます。NSP ファイルと prod.keys を用意すれば、スクリプト 1 つで IPA にまとめてサイドロードできます。

始める45 本のゲームを見るGitHub
45本がプレイ可能
13本が 60 fps 化
0リポジトリ内のゲームファイル
iOS 26+A17 Pro / M1 以降

背景

エミュレーションではなくネイティブ移植。Apple のカーネルが要求する箇所だけ、ゲームのコードを書き換えます。

ネイティブ実行

各ゲームの NSO モジュールを書き換え、CPU 上で直接実行します。ホスト層が Switch の OS である Horizon の代わりに、スレッド、メモリ、ファイルシステム、オーディオ、各種サービスを提供します。

Metal によるグラフィックス

NVN と Vulkan の呼び出しを Metal 上に実装。Maxwell シェーダーはビルド時に SPIR-V、さらに Metal Shading Language へ変換されます。

ゲームは自分で用意

ゲームの内容は一切含まれていません。パッケージ用スクリプトがあなたの Mac 上で、あなたのキーを使って NSP を読み、署名なしの IPA を作成します。

ゲームごとのプロファイル

各ゲームには dm/games/<title id> に、定数とシェーダーテーブルをまとめた小さなプロファイルがあります。コードはプロファイルを読むだけで、特定のゲームを決め打ちしません。

d2r-mobile、Ryujinx のシェーダートランスレーター、Atmosphère、yuzu、LibHac、SPIRV-Cross などの上に成り立っています。謝辞を参照してください。

クイックガイド

Mac で IPA を作り、サイドロードして遊びます。初回ビルドは 30〜60 分、2 回目以降は約 10 分です。

必要なもの。Xcode と Homebrew を入れた Mac。NSP の約 2 倍 + 10 GB の空きディスク。iPhone 15 Pro 以降(A17 Pro 以降)または M1 以降の iPad で、iOS / iPadOS 26 以降(ゲームの BC 圧縮テクスチャに必要)。

nxnative とツールを入手

Mac で 1 回だけ行います。

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'"

1 本分の NSP をフォルダに入れる

本編(NSP または XCI ダンプ)、アップデート、あれば DLC。

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

スクリプトを実行

IPA は同じフォルダに作成されます。

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

サイドロード

AltStore、Sideloadly、LiveContainer などで IPA をインストールします。アプリにはゲームの名前、アイコン、バージョンが使われます。

プレイ

上部の 2D / 3D をタップしてタッチ操作の配置を切り替えます。コントローラーを接続するとタッチボタンは隠れます。3D では画面右 3 分の 1 をスワイプしてカメラを動かします。iPhone を振るとコントローラーが振られます。

ゲーム

すべて iPhone で動作確認済みです。選ぶと詳細が見られます。

Super Mario Bros. Wonder
Super Mario Bros. WonderIPA ~4 GB
2D レイアウト
Fire Emblem Engage
Fire Emblem EngageIPA ~15 GB
2D レイアウト60 fps
Metroid Dread
Metroid DreadIPA ~5 GB
2D レイアウト
13 Sentinels: Aegis Rim
13 Sentinels: Aegis RimIPA ~5 GB
2D レイアウト
Super Mario 3D World + Bowser's Fury
Super Mario 3D World + Bowser's FuryIPA ~3 GB
3D レイアウト
The Legend of Zelda: Breath of the Wild
The Legend of Zelda: Breath of the WildIPA ~16 GB
3D レイアウト60 fps
The Legend of Zelda: Link's Awakening
The Legend of Zelda: Link's AwakeningIPA ~6 GB
2D レイアウト
Super Mario Odyssey
Super Mario OdysseyIPA ~6 GB
3D レイアウト
Hades
HadesIPA ~4 GB
3D レイアウト
Hyrule Warriors: Age of Calamity
Hyrule Warriors: Age of CalamityIPA ~15 GB
3D レイアウト60 fps
Fire Emblem: Three Houses
Fire Emblem: Three HousesIPA ~13 GB
3D レイアウト60 fps
Super Mario Galaxy
Super Mario GalaxyIPA ~3 GB
3D レイアウト
The Legend of Zelda: Tears of the Kingdom
The Legend of Zelda: Tears of the KingdomIPA ~17 GB
3D レイアウト60 fps
Monster Hunter Rise
Monster Hunter RiseIPA ~22 GB
3D レイアウト60 fps
Ace Attorney Investigations Collection
Ace Attorney Investigations CollectionIPA ~7 GB
2D レイアウト
Hades II
Hades IIIPA ~4 GB
3D レイアウト
Unicorn Overlord
Unicorn OverlordIPA ~4 GB
2D レイアウト
Rhythm Heaven Groove
Rhythm Heaven GrooveIPA ~3 GB
2D レイアウト
Octopath Traveler 0
Octopath Traveler 0IPA ~4 GB
2D レイアウト60 fps
Pokémon Legends: Z-A
Pokémon Legends: Z-AIPA ~6 GB
2D レイアウト
Cuphead
CupheadIPA ~5 GB
2D レイアウト
Super Mario Galaxy 2
Super Mario Galaxy 2IPA ~3 GB
3D レイアウト
FINAL FANTASY TACTICS - The Ivalice Chronicles
FINAL FANTASY TACTICS - The Ivalice ChroniclesIPA ~11 GB
3D レイアウト
Absolum
AbsolumIPA ~2 GB
2D レイアウト
Captain Toad: Treasure Tracker
Captain Toad: Treasure TrackerIPA ~2 GB
3D レイアウト
Brain Memory Training Academy
Brain Memory Training AcademyIPA ~0.1 GB
2D レイアウト
The Great Ace Attorney Chronicles
The Great Ace Attorney ChroniclesIPA ~4 GB
2D レイアウト
STEINS;GATE RE:BOOT
STEINS;GATE RE:BOOTIPA ~6 GB
2D レイアウト
Big Brain Academy: Brain vs. Brain
Big Brain Academy: Brain vs. BrainIPA ~0.8 GB
2D レイアウト
Patrick's Parabox
Patrick's ParaboxIPA ~0.2 GB
2D レイアウト
Celeste
CelesteIPA ~0.9 GB
2D レイアウト
DRAGON QUEST XI S: Echoes of an Elusive Age – Definitive Edition
DRAGON QUEST XI S: Echoes of an Elusive Age – Definitive EditionIPA ~15 GB
3D レイアウト60 fps
Monster Train 2
Monster Train 2IPA ~1.6 GB
3D レイアウト60 fps
Raging Loop
Raging LoopIPA ~0.9 GB
2D レイアウト
DARK SOULS: REMASTERED
DARK SOULS: REMASTEREDIPA ~4 GB
3D レイアウト60 fps
Paper Mario: The Thousand-Year Door
Paper Mario: The Thousand-Year DoorIPA ~5 GB
3D レイアウト60 fps
Hollow Knight: Silksong
Hollow Knight: SilksongIPA ~6.4 GB
3D レイアウト
Catherine: Full Body
Catherine: Full BodyIPA ~14 GB
3D レイアウト
Digimon Story Cyber Sleuth: Complete Edition
Digimon Story Cyber Sleuth: Complete EditionIPA ~5 GB
3D レイアウト
Animal Crossing: New Horizons
Animal Crossing: New HorizonsIPA ~10.5 GB
3D レイアウト
DRAGON QUEST VII Reimagined
DRAGON QUEST VII ReimaginedIPA ~5.9 GB
3D レイアウト
FINAL FANTASY RESONANCE
FINAL FANTASY RESONANCEIPA ~10 GB
3D レイアウト60 fps
Luigi's Mansion 3
Luigi's Mansion 3IPA ~7.5 GB
3D レイアウト60 fps
AI: THE SOMNIUM FILES
AI: THE SOMNIUM FILESIPA ~8.3 GB
3D レイアウト
AI: THE SOMNIUM FILES - nirvanA Initiative
AI: THE SOMNIUM FILES - nirvanA InitiativeIPA ~11.6 GB
3D レイアウト

FAQ とヒント

言語

既定は英語です。パッケージ時に -l(例:-l ja)で選ぶか、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 が作られます。