オープンソース
Ogre Battle 64 再コンパイルプロジェクト、進捗99.05%
Ogre Battle 64 Recompiled Project at 99.05% (github.com)
要約
N64エミュレータN64Recompツールチェーンを使用して、N64ゲーム「Ogre Battle 64: Person of Lordly Caliber」のPCネイティブ実行ファイルへの静的再コンパイルを行うプロジェクトの進捗報告です。現在、主要コードセグメントの807関数がC言語に完全に再コンパイルされており、次のマイルストーンとしてランタイムアプリケーション(レンダリング、入力、オーディオ)の開発が進められています。プロジェクトはオープンソースで公開されており、ユーザーは自身のROMデータを提供する必要があります。
全文翻訳
Ogre Battle 64: Person of Lordly Caliber (PCポートプロジェクト)
N64Recompツールチェーンを使用して、N64ゲーム「Ogre Battle 64: Person of Lordly Caliber」(USA, Rev A)をネイティブPC実行ファイルに静的に再コンパイルするプロジェクトです。このリポジトリには著作権で保護されたゲームデータは含まれていません。ユーザーは自身のROMダンプを提供する必要があります(下記参照)。
AI免責事項
このプロジェクトの作業の大部分は、DeepSeek v4/v4.1 Flashモデルによって行われました。
ステータス
主要コードセグメント(807関数)は完全にC言語に再コンパイルされました。次のマイルストーンはランタイムアプリケーション(レンダリング、入力、オーディオ)です。完全な計画、現在のステータス、および技術的な発見については、PLAN.mdを参照してください。
ディレクトリ構成
assets/
あなたのROM(gitignored; big-endian .z64を想定)
asmsplatt-generated disassembly
debug/headless-browser probes for the wasm build (see debug/README.md)
config.yaml
splat config (segments, vram mapping)
config.toml
N64Recomp config
Makefile
assemble + link + recompile
n64recomp-ob64.patch
our N64Recomp modifications (apply to upstream clone)
rt64-plume-sdl.patch
our RT64 plume patch — SDL >= 2.0.22 guard (apply to the tools/RT64 submodule on systems with older SDL2, e.g. Ubuntu 22.04)
PLAN.md
the project plan
はじめに
Reproduce in PLAN.mdを参照してください。
# tools (macOS)
brew install mips-linux-gnu-binutils cmake
python3 -m venv tools/venv && tools/venv/bin/pip install 'splat64[mips]'
git clone --recurse-submodules https://github.com/N64Recomp/N64Recomp.git tools/N64Recomp
git -C tools/N64Recomp apply ../../n64recomp-ob64.patch
cmake -S tools/N64Recomp -B tools/N64Recomp/build -DCMAKE_BUILD_TYPE=Release
cmake --build tools/N64Recomp/build --target N64RecompCLI -j4
# ROM: put your .z64 dump in assets/, then regenerate the recompiled code
# (see docs/guides/app-build.md -> "Regenerating the recompiled code")
make regenerate
ROMはUSA Rev Aダンプ(40 MB、.n64 16ビットバイトスワップ済みまたは既に変換された.z64)である必要があります。tools/convert_rom.pyは.n64 → .z64を変換します。新規クローンは、make regenerateが一度実行されるまでアプリをビルドできません。再コンパイルされたCコード(RecompiledFuncs/, Bank*Funcs/, RspFuncs/, app/src/bank_funcs.inc)は、ユーザー自身のROMから生成され、意図的にコミットされていません。make regenerateは、splat、MIPSリンク、34バンクユニット、メイン再コンパイル、およびRSPマイクロコードを、機能する唯一の順序で実行します。
アプリのビルドと実行
cmake -S app -B build-app -DCMAKE_BUILD_TYPE=Release
cmake --build build-app -j
./build-app/ogrebattle64
起動時に、アプリは黒いスタート画面を表示します — OGRE BATTLE 64: RECOMP / CLICK TO LOAD YOUR ROM (OR DROP IT IN THIS WINDOW)。それをクリックしてROMを選択するか、ROMをウィンドウにドラッグするか、ROMを実行ファイルの隣に置きます。ROMはハッシュによって検証され、保存されるため、後続の起動は直接ゲームに入ります。バッテリーセーブは、実行ファイルの隣のsaves/に保存されます。
プレイ可能なビルド
make dist
# -> dist/ogre-battle-64-recomp/ (single self-contained executable)
make dist-zip
# -> dist/ogre-battle-64-recomp-<platform>.zip
パッケージは単一のファイルです。SDL2は静的にリンクされています(make distは、Homebrewのsdl2がSDL3ベースの互換シムであり、静的ライブラリがないため、ピン留めされた実際のSDL2を一度取得してビルドします)。ゲームデータは含まれていないため、プレイヤーはスタート画面で自身のROMを提供します。詳細はdocs/guides/app-build.md → "Distribution"を参照してください。
レンダラー(tools/RT64)はgitサブモジュールであり、アップストリームコミットにピン留めされており、SDL < 2.0.22のシステム(例: Ubuntu 22.04はSDL 2.0.20を出荷しますが、SDL_GetWindowSizeInPixelsは2.0.22+を必要とします)では、独自の1回限りのパッチが必要です。
git submodule update --init --recursive
git -C tools/RT64/src/contrib/plume apply ../../../../rt64-plume-sdl.patch
tools/RT64内のgit submodule update後に再適用してください。これはサブモジュールをリセットし、パッチを破棄します。
法的情報
Ogre Battle 64 © Quest / Nintendo。このプロジェクトは、保存と相互運用性の研究を目的としています。ROMまたはその抽出されたアセットを配布しないでください。