この記事は旧バージョンです.新しいバージョンは以下のものとなります.
ポケモン金銀にバイナリエディタを移植したお話 - flag3833753
注意: 2023/04/07 に内容をアップデートしました.旧バージョンを見たい方はこちらからどうぞ
簡易版バイナリエディタ導入の方法
まずは簡易版バイナリエディタを導入します.
環境:ポケモン金銀での動作を確認しております.クリスタル版には非対応です.
準備:「たいせつポケット」の「わざマシン17」を用いた「最後に読んだメール」による任意コード実行環境*1
準備の詳細は次のブログ,動画にお任せします.Teraman64DD さんの動画だと Part.04 で導入しています.
- 理解できなくても出来る任意コード実行解説【ポケモン金銀ver】 - nakayoshibaddi’s blog
- ポケモン金銀で任意コード実行! ポケモン第二世代任意コード実行講座 Part.01 - YouTube
- ボックスの名前を表 1 の通りにする.
- 表 2, 3, 4 のメールを用意する.
- 表 2 のメールを読んで「わざマシン17」を使用する.
- 表 3 のメールを読んで「わざマシン17」を使用する.
- 表 4 のメールを読んで「わざマシン17」を使用する.
手順 3. の前にセーブすることをオススメします.
表 1
- ぼへへマだへォ
- グだとどグだガム
- てやりグだガムよ
- だガグだギぼヂキ
- づごぱヅまてへぐ
- ぴへぐまボぷへぐ
- タダだこごョダだ
- ざダへャだダり
- だかがヲぜナだィ
表 2
ぶぜうづぜこよゾづのののののだっ
表 3
づぜんづぜけよハづのののののだっ
表 4
メに0だガにだにだ空ボデののだっ
簡易版バイナリエディタを起動するとこんな感じになると思います.
左 4 桁がアドレス,右 2 桁がその中身となっています.
見ての通り表示がおかしいのですが気にせず使いましょう.
■は A,▲は B,携帯マークは C だと思ってください.
ちなみに上の画像はアドレスが AA94 で中身は CD です.
注意
初期アドレスは AA94 となっています.
これは 9 番目のボックスの 4 文字目「ヲ」と 6 文字目「ナ」に対応しています.
この 2 文字を変えることで初期アドレスを変更することができます.
初期アドレスを変えたくなった場合は 9 番目のボックスの名前を変更して表 4 のメールを実行すれば良いです.表 2, 3 のメールを既に実行した場合再度実行しなくても良いです.
簡易版バイナリエディタの操作方法
以下の操作方法でアドレスとその中身を書き換えることができます.
操作方法
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
→: アドレス+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」は不用意に押すとフリーズする可能性が高いので気をつけましょう.
「バグモード図鑑」による任意コード実行環境について (2023/08/16 追記,2023/12/04 更新)
基本的には上記の手順とほぼ同様です.ただし表 4 のメールは
メに0だガにだにだ空ボデののだっ
としてください.特に先頭 4 文字が変わります.
バイナリエディタ起動チャート (2023/09/19 追記)
さいしょから始めてバイナリエディタを起動するチャートについて記述しました.
またバイナリエディタのコードを短くしたので以下のURLを参照してください.
参考文献
今回のバイナリエディタを作るにあたって参考にした文献は次の 3 つです.日本語版のポケモン金銀のバイナリエディタに関する動画,記事は (執筆者の調べた限りだと) 最初の 2 つぐらいしかない気がします.
- バイナリエディタ導入編! ポケモン第二世代任意コード実行講座 Part.05【VOICEROID紲星あかり】 - YouTube
- バイナリエディタ(第二世代) - pokemonbug @ ウィキ - atwiki(アットウィキ)
- Glitch City Laboratories Archives - Powerful (but large!) memory editor for G/S - Page 1
pokemonbug @ ウィキさんの記事にもバイナリエディタのコードがあります.こちらは 344 バイトととても長くまた操作が初代でのバイナリエディタと異なります.そのため初代のバイナリエディタを移植するという形でポケモン金銀でもバイナリエディタを使えるようにしました.こちらは 186 バイトとなっています.
pokemonbug @ ウィキさんの記事にあるバイナリエディタは ROM バンクの切り替えもできるようですが,この機能は今回紹介するバイナリエディタの機能にはありません.