こちらのブログ記事で公開したセーブデータを作成するために使用したプログラムのソースコードです。 ビルドするとポケモンのバイナリデータが生成されます。生成されたバイナリをゲーム内で所定のアドレスに書き込み、NPCASEを使って起動することでテトリスをプレイできます。
ビルドには Docker, VS Code および Remote Development 拡張機能を利用します。
次の手順に従いディレクトリをコンテナ内で開きます。
- 本リポジトリをダウンロードまたはクローンし、ディレクトリをVSCodeで開く。
- キーボードの [F1] をおしてコマンドパレットを開く。
- "Dev Containers: Reopen in Container" を検索して [Enter] を押して実行する。
ビルドをするには次のようにターミナルからmake
コマンドを実行します。
- VSCodeのメニューの Terminal > New Terminal からターミナルを開く。
- カレントディレクトリ(
/workspaces/pokemon-diamond-tetris
)でmake
コマンドを実行する。
make
コマンドが終了するとout
ディレクトリ下に必要なポケモンのデータが生成されています。
テトリスをプレイするにはゲーム内で以下の2つの作業が必要です。
- 出力されたファイルを所定の位置に書き込む。
- NPCのイベントIDを書き換える。
ここからの作業はマサゴタウンのポケモンセンター2Fで行うこととします。
out
ディレクトリ下には eggsloader_egg.bin, npcase_egg00.bin, npcase_egg01.bin, tetris_egg00.bin, ..., tetris_egg14.bin
の18個のファイルがあるはずです。各バイナリファイルはボックス内のポケモン1匹分のデータです。このバイナリをASEなりなんなりでパソコンのボックスに書き込みます。配置は以下の通りです。
ファイル名 | ボックス番号 | ボクス内の位置 1 | メモリ上のアドレス (from base address 2) |
---|---|---|---|
eggsloader_egg.bin | 1 | 1 | +0xc318 |
tetris_egg00.bin | 1 | 2 | +0xc3a0 |
tetris_egg01.bin | 1 | 3 | +0xc428 |
... | |||
tetris_egg14.bin | 1 | 16 | +0xcb10 |
npcase_egg00.bin | 18 | 28 | +0x1e060 |
npcase_egg01.bin | 18 | 29 | +0x1e0e8 |
アドレスbase + 0x00024EF4
にはNPCのイベントIDが格納されています。このアドレスの値を0x973B
に書き換えます。
もとの記事を御覧ください。
ADAJN0J08(ダイヤモンド日本語初期版)のみ動作を確認しています。