概要
Duke Nukem Zero Hour のN64版デコンパイルプロジェクトの利用手順まとめ。 Ubuntu 20.04 または WSL2 環境推奨。 ROMファイルの所有 が前提条件。 ビルド方法、依存パッケージ、Docker利用法 などを詳述。 デバッグやツール の利用方法も解説。
Duke Nukem Zero Hour N64 デコンパイルプロジェクト利用ガイド
- 本リポジトリ は Duke Nukem Zero Hour のN64版デコンパイルプロジェクト
- ROM所有者のみ 利用可能
依存パッケージのインストール
- Ubuntu 20.04 または WSL2 環境推奨
- 必要パッケージをインストール
sudo apt updatesudo apt install make git build-essential binutils-mips-linux-gnu cpp-mips-linux-gnu python3 python3-pip
- Python 3.8以上 が必要
- Pythonパッケージのインストール
pip3 install --upgrade pippip3 install -U splat64[mips]pip3 install -r requirements.txt
ビルド手順
- リポジトリのクローン(サブモジュール同時取得)
git clone https://github.com/Gillou68310/DukeNukemZeroHour.git --recursive
- ディレクトリ移動
cd DukeNukemZeroHour
- Duke Nukem Zero Hour US ROM をリポジトリルートに配置し、
baserom.us.z64にリネーム - ROM抽出
make setup
- ROMビルド
make --jobs
- 成功時、
build/us/dukenukemzerohour.z64ファイル生成
他バージョン対応
- フランス語版 もサポート
- ROMを
baserom.fr.z64にリネームしてリポジトリルートへ配置 - makeコマンドに
VERSION=frを付与
- ROMを
NON_MATCHINGビルド
- 機能的には同等だがバイトレベルでは一致しない関数を含むビルド
- makeコマンドに
NON_MATCHING=1を追加
- makeコマンドに
Docker環境
- 依存関係を含む Dockerイメージ のビルド・実行
docker build --no-cache . -t dukenukemzerohourdocker run --rm -ti --mount src=$(pwd),target=/dukenukemzerohour,type=bind dukenukemzerohour
- WindowsまたはMacでフォルダをバインドする場合、 Mutagen Extension の利用を推奨
docker --context=desktop-linux-mutagen run --rm -ti --mount src=$(pwd),target=/dukenukemzerohour,type=bind dukenukemzerohour
- Docker起動後、上述のビルド手順を実行
デバッグ・ツール利用方法
デバッグ
- mupen64plus + gdb によるデバッグ(現状はWindows限定)
- 最新gccでビルドするため、makeコマンドに
MODERN=1を追加 - gdbサーバー起動:
tools\debugger\win32\gdbserver.bat - gdbクライアント起動:
tools\debugger\win32\gdbclient.bat
- 最新gccでビルドするため、makeコマンドに
- VSCode でのデバッグも可能
- gdbサーバー起動後、VSCodeの「GDB Client(Win32)」構成を実行
主要ツール
- asm-differ :ソースとターゲットのアセンブリ差分比較ツール
- decomp-permuter :コード調整・再ビルド・スコアリング、レジスタ割り当て問題解消支援
- mips2c :アセンブリからCコードへの変換ツール
- splat :n64splitの後継、ROMデコンパイル支援
注意事項
- ゲームROMの所有が必須条件
- 非公式プロジェクト であり、利用は自己責任