Skip to content

user40/pokemon-diamond-tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pokemon-diamond-tetris

これは何?

こちらのブログ記事で公開したセーブデータを作成するために使用したプログラムのソースコードです。 ビルドするとポケモンのバイナリデータが生成されます。生成されたバイナリをゲーム内で所定のアドレスに書き込み、NPCASEを使って起動することでテトリスをプレイできます。

ビルドの方法

前提条件

ビルドには Docker, VS Code および Remote Development 拡張機能を利用します。

ディレクトリをコンテナ内で開く

次の手順に従いディレクトリをコンテナ内で開きます。

  1. 本リポジトリをダウンロードまたはクローンし、ディレクトリをVSCodeで開く。
  2. キーボードの [F1] をおしてコマンドパレットを開く。
  3. "Dev Containers: Reopen in Container" を検索して [Enter] を押して実行する。

ビルドする

ビルドをするには次のようにターミナルからmakeコマンドを実行します。

  1. VSCodeのメニューの Terminal > New Terminal からターミナルを開く。
  2. カレントディレクトリ(/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

NPCのイベントIDを書き換える

アドレスbase + 0x00024EF4にはNPCのイベントIDが格納されています。このアドレスの値を0x973Bに書き換えます。

テトリスのプレイ方法

もとの記事を御覧ください。

対応バージョン

ADAJN0J08(ダイヤモンド日本語初期版)のみ動作を確認しています。

Footnotes

  1. 左上が1,その右隣が2,...,一番右下を30とします。

  2. baseはセーブデータの起点になるアドレスで、ソフトを起動時にランダムに決められる。ダイヤモンド日本語版では0x02108818にその値が格納されている。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published