zelda3 - ゼルダ3の再実装。

(NULL)

Created at: 2022-08-11 09:11:41
Language: C++
License: MIT

ゼルダ3

ゼルダ3の再実装。

これは、ゼルダ 3 のリバース エンジニアリングされたクローン - 過去へのリンクです。

これは約 70 ~ 80kLOC の C/C++ コードで、元のゲームのすべての部分を再実装しています。ゲームは最初から最後までプレイ可能です。

ゲームのリソース (レベル、画像) を抽出するには、ROM のコピーが必要です。それが完了したら、ROMはもう必要ありません。

LakeSnes の PPU および DSP 実装を使用します。さらに、元のマシン コードを並べて実行するように構成することもできます。次に、各フレームの後に RAM の状態が比較され、C++ の実装が正しいことが検証されます。

スパニエリズムの Zelda 3 JP 逆アセンブルと、関数名と変数の負荷を文書化した他のものから多くの支援を得ました。

コンパイル中

ROMをtables/zelda3.sfcに入れます

cd tables

Python の依存関係をインストール

pip install pillow
します。
pip install pyyaml

を実行

python extract_resources.py
して、ROM からリソースをより人間が読める形式に抽出します。

python compile_resources.py
C++ コードによってインクルードされる .h ファイルを生成するために実行します。

ウィンドウズ

Visual Studio で .sln ファイルをビルドする

Linux

apt install libsdl2-dev

ルート ディレクトリにいることを確認します。

clang++ -I/usr/include/SDL2 -lSDL2 -O2 -ozelda3 *.cpp snes/*.cpp

使用法と管理

ゲームはスナップショットをサポートしています。ジョイパッドの入力履歴もスナップショットに保存されます。したがって、ターボ モードでプレイスルーをリプレイして、ゲームが正しく動作することを確認できます。

ゲームは

./zelda3
、C++ コードが元の動作と一致することをフレームごとに検証する ROM ファイルへのオプションのパスを使用して実行されます。

ボタン
上矢印
下矢印
左矢印
右矢印
始める 入る
選択する 右シフト
バツ
B Z
バツ S
L D
R C

さらに、次のコマンドを使用できます。

アクション
W ヘルス/マジックを埋める
ハードリセット
P 一時停止
T リプレイターボの切り替え
K 現在のスナップショットからすべての入力履歴をクリアする
F1~F10 スナップショットをロード
Shift+F1-F10 スナップショットを保存
Ctrl+F1-F10 スナップショットを再生する

さらに、ゲームのすべてのダンジョンをプレイする一連のプレイスルー スナップショットが含まれています。数字キーでアクセスします。ターボ モードでステージを再生したい場合は、Ctrl+数字 (例: Ctrl-5) を押します。

ライセンス

このプロジェクトは、MIT ライセンスの下でライセンスされています。詳しくは「LICENSE.txt」をご覧ください。