ポケモン金銀にバイナリエディタを移植したお話 (ver.20230407)

この記事は旧バージョンです.新しいバージョンは以下のものとなります.
ポケモン金銀にバイナリエディタを移植したお話 - flag3833753

注意: 2023/04/07 に内容をアップデートしました.旧バージョンを見たい方はこちらからどうぞ

はじめに

以前,初代でバイナリエディタを導入する記事を出させていただきました.

このバイナリエディタポケモン金銀に移植しました.

そういうことで導入する方法について書こうと思います.

簡易版バイナリエディタ導入の方法

まずは簡易版バイナリエディタを導入します.
環境:ポケモン金銀での動作を確認しております.クリスタル版には非対応です.
準備:「たいせつポケット」の「わざマシン17」を用いた「最後に読んだメール」による任意コード実行環境*1

準備の詳細は次のブログ,動画にお任せします.Teraman64DD さんの動画だと Part.04 で導入しています.

以下の手順を踏むと簡易版バイナリエディタが起動します*2

  1. ボックスの名前を表 1 の通りにする.
  2. 表 2, 3, 4 のメールを用意する.
  3. 表 2 のメールを読んで「わざマシン17」を使用する.
  4. 表 3 のメールを読んで「わざマシン17」を使用する.
  5. 表 4 のメールを読んで「わざマシン17」を使用する.

手順 3. の前にセーブすることをオススメします.

表 1

  1. ぼへへマだへォ
  2. グだとどグだガム
  3. てやりグだガムよ
  4. だガグだギぼヂキ
  5. づごぱヅまてへぐ
  6. ぴへぐまボぷへぐ
  7. タダだこごョダだ
  8. ざダへャだダり
  9. だかがヲぜナだィ

表 2

がりぜォひニョぶづぜすづぶぜェづ
ぶぜうづぜこよゾづのののののだっ

表 3

がりぜふぼダづぜァずョよダづぼま
づぜんづぜけよハづのののののだっ

表 4

ョぶゃよて6リなひだヘぞまちぼダ
メに0だガにだにだ空ボデののだっ

簡易版バイナリエディタを起動するとこんな感じになると思います.

左 4 桁がアドレス,右 2 桁がその中身となっています.

見ての通り表示がおかしいのですが気にせず使いましょう.
■は A,▲は B,携帯マークは C だと思ってください.
ちなみに上の画像はアドレスが AA94 で中身は CD です.

注意

初期アドレスは AA94 となっています.
これは 9 番目のボックスの 4 文字目「ヲ」と 6 文字目「ナ」に対応しています.
この 2 文字を変えることで初期アドレスを変更することができます.
初期アドレスを変えたくなった場合は 9 番目のボックスの名前を変更して表 4 のメールを実行すれば良いです.表 2, 3 のメールを既に実行した場合再度実行しなくても良いです.

簡易版バイナリエディタの操作方法

以下の操作方法でアドレスとその中身を書き換えることができます.
操作方法

A: アドレス+1
B: アドレス-1
↓: 中身+1
↑: 中身-1
→: 中身+10h
←: 中身-10h
Start: 終了

簡易版バイナリエディタを再度起動する場合は表 4 のメールを読んで「わざマシン17」を使用すれば良いです.表 2, 3 のメールを読む必要はありません.

バイナリエディタを起動するまで

簡易版バイナリエディタを使ってアドレス AA94 から AB4C の中身を以下のものにしてください.
2023/12/04 更新: コードを変更しました.

AA90:             CD A8 34 11 B2 4E 21 00 90 01 23 3E
AAA0: CD 76 0E CD 87 0D CD 95 0D AF 3C E0 D6 F0 9F F5
AAB0: 21 00 D0 CD 24 DD E5 11 F8 FF 19 E5 D1 21 A9 C3
AAC0: F0 9F D7 CD 9D 30 CD 72 DD 01 0C 00 36 7C 23 7A
AAD0: CD 72 DD 7B CD 72 DD 36 7F 23 1A CD 72 DD 13 36
AAE0: 7C 09 7C FE C5 20 E5 CD AD 30 3E ED EA 4B C4 E1
AAF0: 18 C1 CD F4 36 F0 AB 5F 01 01 00 07 38 14 0B 0B
AB00: 07 38 0F 0E F0 07 38 0A 01 10 00 07 38 04 48 07
AB10: 38 09 CB 53 28 0F CB 43 28 05 E9 E1 F1 D7 C9 F0
AB20: 9F 81 E0 9F C9 79 CB 43 20 06 CB 4B 20 0F 09 C9
AB30: F5 F0 9F CD 9D 30 F1 86 77 CD AD 30 C9 84 67 C9
AB40: F5 CB 37 CD 79 DD F1 E6 0F C6 F6 22 C9

次の内容のメールを用意して,内容を読んでから「わざマシン17」を使用することでバイナリエディタを起動することができます.起動するとこのページの上の方にある画像のような感じとなります.

ョぺぶぶぶヅにわがヲぜナへマだ空
ゾそへよだへャだてにわ空空空だっ

二重線で囲まれた領域の左 4 桁がアドレス,右 2 桁がその中身となっています.
ゲーム画面の上部にも (16 進数で) 2 桁の数字があるのですが,これは SRAM バンクの数字が表示されています.アドレス A000 から BFFF の中身を扱う際に必要になってきます.

バイナリエディタの操作

初代でのバイナリエディタと殆ど同じですが「SELECT」のみ少し違います.

↓: アドレス+1
↑: アドレス-1
→: アドレス+10
←: アドレス-10
B+↓: アドレス+100
B+↑: アドレス-100
B+→: アドレス+1000
B+←: アドレス-1000
A+↓: 中身+1
A+↑: 中身-1
A+→: 中身+10
A+←: 中身-10
SELECT+↓: バンク+1
SELECT+↑: バンク-1
SELECT+→: バンク+10
SELECT+←: バンク-10
SELECT+A: 指しているアドレスを実行
START: 終了

「SELECT+A」は不用意に押すとフリーズする可能性が高いので気をつけましょう.

注意

DCC6 から DD7F のアドレスを用いてバイナリエディタを作成しているので,
この部分をバイナリエディタでいじると壊れるので注意してください.

「バグモード図鑑」による任意コード実行環境について (2023/08/16 追記,2023/12/04 更新)

基本的には上記の手順とほぼ同様です.ただし表 4 のメールは

へロど空て6リなひだヘぞまちぼダ
メに0だガにだにだ空ボデののだっ

としてください.特に先頭 4 文字が変わります.

バイナリエディタ起動チャート (2023/09/19 追記)

さいしょから始めてバイナリエディタを起動するチャートについて記述しました.

またバイナリエディタのコードを短くしたので以下のURLを参照してください.

参考文献

今回のバイナリエディタを作るにあたって参考にした文献は次の 3 つです.日本語版のポケモン金銀バイナリエディタに関する動画,記事は (執筆者の調べた限りだと) 最初の 2 つぐらいしかない気がします.

pokemonbug @ ウィキさんの記事にもバイナリエディタのコードがあります.こちらは 344 バイトととても長くまた操作が初代でのバイナリエディタと異なります.そのため初代のバイナリエディタを移植するという形でポケモン金銀でもバイナリエディタを使えるようにしました.こちらは 186 バイトとなっています.
pokemonbug @ ウィキさんの記事にあるバイナリエディタは ROM バンクの切り替えもできるようですが,この機能は今回紹介するバイナリエディタの機能にはありません.

*1:ポケットは「わざマシンポケット」でなければ良いです.アドレス CF21 が実行できれば「わざマシン17」である必要もありません.「わざマシン17」でない道具で任意コード実行環境を用意した場合は適宜読み替えてください.

*2:手順 3. と 4. の順番はどちらが先でも良いです.