NX2navi — Switch 2版『時のオカリナ』をWindowsネイティブに静的再コンパイルするプロジェクト
tangerineturtle1/NX2navi
★ 3,279 ・ C ・ MIT
概要
NX2navi は、Nintendo Switch 2 向けに提供されている『ゼルダの伝説 時のオカリナ』(ゲームバージョン 1.1.1)を、Windows 向けのネイティブ x86-64 アプリケーションへと静的再コンパイル(Static Recompilation)するためのプロジェクトです。レンダラーには Vulkan が採用されています。
本プロジェクトはエミュレーションではなく、実機から抽出したゲームバイナリを実行環境のネイティブコードに変換して実行する手法をとっています。これにより、PC のハードウェア性能を直接活かした動作が可能となります。PC の高解像度ディスプレイや高リフレッシュレート環境で同作を動作させたいユーザーや、静的再コンパイル技術の実装に関心を持つ開発者に向いています。
プロジェクトの状態は開発初期(Early development)とされており、タイトル画面やセーブデータからのプレイが可能です。README によると、コキリの森、カカリコ村、デスマウンテン登山道や火口、時の神殿、大妖精の泉などのエリアにおいて、現行の GPU 上で 60 fps 以上の動作が確認されています。ただし、初期段階であるため描画上のバグやクラッシュが発生する場合があるとされています。
主な特徴
-
ネイティブコードによる高フレームレート動作
エミュレータを介さずネイティブコードで動作します。標準で 60 fps で動作するほか、30〜240 fps の制限、ディスプレイのリフレッシュレートへの同期、または無制限のフレームレート設定が可能です。 -
高解像度およびウルトラワイド表示への対応
1080p やゲーム本来の解像度(1440p)を超える 1800p、4K、5K、任意のウィンドウサイズでのレンダリングに対応しています。また、アスペクト比 21:9 や 32:9 のウルトラワイド表示をネイティブにサポートし、HUD やメニュー、ムービーシーンは 16:9 の比率を保ったまま表示されます。 -
最新のアップスケーリングおよびフレーム生成技術
NVIDIA DLSS(DLAA、各パフォーマンスモード)や AMD FSR 3.1、AMD FSR 4(Radeon RX 6000/7000/9000 シリーズ対応)を利用した 3D シーンのアップスケーリングに対応します。さらに、NVIDIA DLSS Frame Generation(RTX 40/50 シリーズ対応、RTX 50 では最大 4 倍生成)や AMD FSR 3.1 によるフレーム生成も備えており、HUD への影響を抑えながらフレームレートを向上させることができます。 -
HDR 表示のサポート
HDR 対応ディスプレイ向けに、ゲーム本来のトーンに合わせたトーンマッピングを行う方式と、ゲームネイティブの HDR 方式の 2 種類が用意されています。メニューからピーク輝度やゲーム、HUD の輝度を調整できます。 -
シェーダーの事前構築とバックグラウンド処理
既知のシェーダーはゲームのビルド時に準備され、プレイ中に遭遇するパイプラインは起動時のバックグラウンドで再構築されます。これにより、ゲームの描画スレッドをブロックせずにワーカースレッドで処理を行い、シェーダーコンパイルによるフレーム停止を抑える工夫が施されています。 -
多彩な操作デバイスと入力機能のサポート
キーボードやマウス、各種ゲームパッド(Nintendo、Xbox、PlayStation のボタン配列)に対応し、ボタンのリマップ、振動、ジャイロ操作をサポートしています。ゲーム内のボタンガイド表示も接続デバイスに合わせて描画されるほか、DualShock 3 の直接読み込みにも対応しています。 -
オーディオおよびその他の機能
ステレオ出力および 5.1ch サラウンド出力に対応し、マイク入力も利用可能です。また、コンソールの「ドックモード」と「携帯モード」の切り替え、プレイ状況を Discord に表示する Discord Rich Presence 機能、設定用のゲーム内メニュー(F1 キー)やパフォーマンスオーバーレイ(F10 キー)が用意されています。
使い方
本プロジェクトにはゲームの著作物データは一切含まれていません。利用にはユーザー自身が所有する正規のゲーム機本体からダンプした .nup 形式のゲームファイルが必須となります。
必要環境
- OS: Windows 10 以降
- CPU: SSE4.2 対応の x86-64 CPU(AVX2/FMA 対応 CPU ではビルド時間が短縮されます)
- メモリ: 16 GB RAM 以上(16 GB 環境ではハイラル平原でメモリ不足になる可能性があります)
- ストレージ空き容量: ゲーム用に約 34 GB、ランチャーとツール用に約 1.5 GB
- GPU: Vulkan 1.3、
VK_EXT_external_memory_host、およびVK_EXT_mesh_shader拡張機能をサポートする GPU
インストール手順
- リポジトリの Releases から
NX2navi-Setup-.exeをダウンロードします。 - ダウンロードしたセットアップ実行ファイルを、用意した
.nupダンプファイルと同じディレクトリに配置して実行します。 - インストールされたランチャーがダンプファイルを検出し、必要なビルドツールを自動で取得して、ローカルマシン上でゲームのビルドを行います(初回のビルドには 20 分から 45 分程度かかります)。
- ビルド完了後、ランチャーからゲームが起動します。以後は変更があった部分のみが再ビルドされる仕組みです。
※インストーラーには電子署名がないため、Windows の SmartScreen 警告が表示される場合があります。手動でのビルド手順や Linux 上でのビルドツールについては、リポジトリ内の docs/ 配下にドキュメントが用意されています。
技術的なポイント
NX2navi は主に C 言語で実装されており、Vulkan API を通じて描画パイプラインを制御しています。アーキテクチャの核となるのは、コンソール向けバイナリを Windows 用のネイティブ命令に変換する静的再コンパイル手法です。
レンダリング面では、Vulkan 1.3 に加えて VK_EXT_external_memory_host や VK_EXT_mesh_shader といった比較的新しい Vulkan 拡張機能を要求仕様としており、最新の GPU アーキテクチャを前提とした設計がなされています。
また、メモリ管理面では Windows がビデオメモリをシステムのコミットリミットに算入する仕様を考慮し、ビデオメモリが 20 GiB かつシステム RAM が 48 GiB 以上の環境でない限り、テクスチャデータを BC3 圧縮状態のまま保持してメモリ消費量を約半分に抑制する制御が組み込まれています。
ビルドシステムとしては、Python スクリプト(tools/make_game.py など)を補助ツールとして利用しており、Linux 上でのネイティブビルドにも一部対応する構造をとっています。ビルド生成物はすべて build/ や generated/ などの git 管理外ディレクトリに分離されるよう整理されています。
注意点
-
ゲームファイルの自己用意が必須:
著作権保護の観点から、ゲームデータはリポジトリに含まれておらず、入手方法の案内も提供されていません。各自が正規に取得した実機ダンプを用いる必要があります。生成されたバイナリは個人利用に限定され、再配布は禁止されています。 -
ライセンス構成:
リポジトリのベース部分は MIT License となっていますが、本プロジェクトで追加・変更されたコード群については「All rights reserved(著作権留保)」となっており、書面による許可なく複製や公開を行うことは認められていません。また、サードパーティ製コードはそれぞれのライセンスに従います。 -
既知の不具合:
- 初回起動時や新しいエリアへの進入時に、グラフィックスドライバのシェーダー構築に伴う一時的なカクつきが発生することがあります。
- メモリが 16 GB の PC では、ハイラル平原などの広大なマップでシステムメモリ不足に陥るリスクがあります。
- AMD の内蔵 GPU(iGPU)では、ホストメモリヒープの容量不足によりタイトル画面で動作が停止する問題が報告されています。
- パーティクル関連コードに起因するクラッシュが稀に発生することが確認されています。
まとめ
NX2navi は、Nintendo Switch 2 版『時のオカリナ』を PC 向けに静的再コンパイルし、Vulkan レンダラーと最新のグラフィックス技術を適用して動作させるファン主導のプロジェクトです。エミュレータを介さないネイティブ実行により、高解像度化や DLSS/FSR、フレーム生成といった PC ならではの恩恵を受けることができます。導入には一定のハードウェア要件と正規のゲームデータが必要ですが、リコンパイル技術の活用例として注目されるリポジトリです。





