バイナリエディタ導入チャート ピカチュウ版 (ver.20220806)

この記事は旧バージョンです.新しいバージョンは以下のものとなります.
バイナリエディタ導入チャート ピカチュウ版 - flag3833753

はじめに

ポケモン赤緑で簡易版バイナリエディタを作ったお話 - flag3833753
という記事を以前出させていただきました*1
この簡易版バイナリエディタピカチュウ版でも使えるようにしたため*2導入するチャートを書かせていただきます.

注意 (2023/01/30 追記)

このチャートはレポートバグという猶予数フレームのバグ技を使います.
このバグ技が難しいという方向けに森地図チャートも作っていますのでそちらもご参照ください.
バイナリエディタ導入 森地図チャート ピカチュウ版 - flag3833753

オーキド先生研究者さんの動画

【旧記録】バイナリエディタ起動RTA12:45【ポケモン初代(黄) ゆっくり解説】 - YouTube
という動画でバイナリエディタを導入しています.
まだ見たことない方は是非 1 度見ておくことをおすすめします.

この動画ではバイナリエディタの導入を次の 2 段階に分けて行っています.

1. 簡易的なバイナリエディタ(仮)を作る.
2. 簡易的なバイナリエディタ(仮)を使って thfan さんのバイナリエディタを作成する.

thfan さんのバイナリエディタは以下で閲覧することができます.
バイナリエディタを真似して作ってみた - thfanのブログですね分かりますん

ただこの動画の簡易的なバイナリエディタ(仮)にはRTA向けということでとても人間向きではなく (褒め言葉) 普通の人が操作するのは不可能に近いです.
この簡易的なバイナリエディタ(仮)の部分をまともに扱えるようにしたのが今回紹介する記事の内容となります.
なのでここで紹介するチャートはこのオーキド先生研究者さんの動画を丸パクリかなり参考にしています.

チャート

環境: ポケモンピカチュウの後期版 (v1.1 から v1.3) のみ動作を確認しています.
初期版 (v1.0) については後述します.

まずデータを初期化します.タイトル画面で「SELECT」+「B」+「↑」を同時に押して消去してください (レポートバグの関係上つづきからでやるのは非推奨です).

1. ライバルの名前を「て空んオオ」にする.

空というのは空白文字の意味です.主人公の名前はなんでも良いです.

2. レポートバグを行う.

レポート中の特定のタイミングで強制リセット*3をすることで手持ちポケモンのメモリに異常を生じさせます.

特定のタイミングというのはレポートを書きますか?に対し「はい」を押してから (私の感覚だと) 0.5 秒もないくらいです.これが一番難しいです.コツとかはないのでできるまで何回もトライしてみてください (としか私からは言えません).

強制リセットのタイミングが早すぎるとセーブされません.
タイミングが少し遅いとセーブデータが壊れるのでデータの初期化からやり直しです.
タイミングが遅すぎると普通にセーブされてしまいます.

オーキド先生研究者さんが布教している動画
ピカチュウ版レポートバグのすすめ(図鑑完成RTA実演)【ポケモン初代(黄) ゆっくり解説】 - YouTube
が参考になるかもしれません.

3. ポケモンの 6 番目と 9 番目を入れ替える.

レポートバグを成功させると手持ちポケモンが開けるようになっているので 6 番目と 9 番目のポケモンを入れ替えます.
そうすることで道具欄のメモリに異常を生じさせます.

4. 主人公の部屋にあるパソコンを開き道具の操作を行う.

具体的には以下のことをします.

a. 道具の 1 番目の「やめる」を 1 個預ける.
b. 道具の 22 番目の「カードキー」を預ける.これを 6 回行う.
c. 道具の 23 番目の「ポケモン」を 100 個預ける.
d. 道具の 24 番目の「わざマシン22」を 1 個預ける.
e. 道具の 25 番目の「ぬのヅ」を 34 番目にある道具と入れ替える.

a. について,もし道具の 1 番目が「やめる」になってなければ最初からやり直してください.レポートバグのところで失敗している可能性があります.
c. について,道具の 23 番目にある「ポケモン」は最初 127 個持っています.「いくつ あずけますか?」のところで「↓」を使って数を減らしていく方が早いです.100 が分からないようでしたら 99 個預けるでも構いません.2 回に分けて預けるのはダメです.
e. について,道具の 35 番目は「モンスターボール」になっていると思うのでこれを目印にすると良いです.道具の 34 番目はこの「モンスターボール」の 1 個上となります.

5. タマムシマンションの屋上のイーブイの部屋へとワープする.

4. によって主人公の家の玄関はタマムシシティの屋上のイーブイの部屋と繋がっています.家から出ましょう.

6. 無限イーブイ編にする.

まずは設定を以下の通りにしてください.

はなしのはやさ:おそい
せんとうアニメ:じっくりみる
しあいのルール:かちぬきタイプ
サウンド:イヤホン2

そうすると道具の 26 番目に「はやぶさバッヂ」が錬成されます.
そして以下のことをしてください.

1. ニックネーム「ヅずゆデの」のイーブイを取得し「はやぶさバッヂ」を使う.
2. ニックネーム「ひでぶデョ」のイーブイを取得し「はやぶさバッヂ」を使う.
3. ニックネーム「ヅやゆョプ」のイーブイを取得し「はやぶさバッヂ」を使う.

イーブイは本来 1 匹しか手に入らないのですが「はやぶさバッヂ」を使うことでボールが再配置されてイーブイを再取得することができるようになります.

3. の「はやぶさバッヂ」で以降イーブイを取得するとき,ボールではなく近くにいるおじさんが消えるようになるのでイーブイを無限に取得することができるようになります.

7. イーブイを取得しニックネームをつけていく.

無限に取得できるようになったイーブイを使ってプログラムを組みます.
下から順番にニックネームをつけてください.

がんぜクョ
ぶづぜンづ
よヅぜウづ
にぽづがる
ぜい空へパ
ううグ空だ
どグだギョ
べへにんグ
だゲぼダぞ
空へにんグ
わとんヅー
グリググだ
ざグわねん
ぱへふんぴ
へふんボぷ
へふんだし
ぼヂキづご
ョのなひだ
へよんち空
ぼダメにぽ
にュだガに
にヂ空ギて
ボデの

8. 簡易版バイナリエディタを実行する.

上のニックネームを入力した後,
はやぶさバッヂ」を実行すると簡易版バイナリエディタが起動します.
こんな感じになるかと思います.

起動しない場合はリセットしてレポートバグ直後からやり直してください.

起動できたら一回セーブしておくと良いかもしれません.

簡易版バイナリエディタの操作方法
以下の操作方法でアドレスとその中身を書き換えることができます.
操作方法

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

9. バイナリエディタを実行するまで

thfan さんのコードを使ってバイナリエディタを起動させましょう.
バイナリエディタを真似して作ってみた - thfanのブログですね分かりますん
簡易版バイナリエディタを使って D9B4 から DA5E のアドレスの中身をリンク先のものに書き換えます.
ただし DA0D から DA0F については

CD 67 38

ではなくて

CD 40 38

としてください.特に DA0E の値が 40 ということに注意してください.
書き換えたら一回セーブしておくと良いかもしれません.

そして設定を以下の通りにしてください.

はなしのはやさ:ふつう
せんとうアニメ:じっくりみる
しあいのルール:かちぬきタイプ
サウンド:イヤホン2

そうすると道具の 26 番目に「かいがらバッヂ」が錬成されます.
その「かいがらバッヂ」を実行することでバイナリエディタが起動することができます.
完成するとこんな感じになるかと思います.

バイナリエディタの操作

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

簡易版バイナリエディタよりも操作できることが増えて快適になるかと思います.

「SELECT」は不用意に押すとフリーズする可能性が高いので気をつけましょう.
慣れてないうちは「SELECT」はないものと思って良いかもしれません.

注意 (2022/08/07 追記)

D9B4 から DA5E のアドレスを用いてバイナリエディタを作成しているので,
この部分をバイナリエディタでいじると壊れるので注意してください.
特に DA00 から始まるプログラムを公開している方が一定数 (?) いらっしゃるので
これらのプログラムを動かしたいのであれば DA5F からでも実行できるように調整するというのが一つあります.
もう一つの方法として詳細は省くのですが完成したバイナリエディタを使ってもう一度 DE64 からバイナリエディタを作るという方法があります.
この手法を取る場合は D9B4 から D9B6 *4 を C3 64 DE にして「かいがらバッヂ」を使うことで DE64 からのバイナリエディタが実行でき,かつ DA00 からプログラムを書くことができるようになります.

ストーリーに戻るには

バイナリエディタが起動できるようになったので大抵のことはできるようになりました.
この先どうするかは自由ですが,1 つの案として普通のストーリー進行に戻るというのがあるかもしれないのでこれを紹介します.

レポートバグによって手持ちポケモンのメモリと道具欄のメモリに異常が発生しているのでまずこれを直す必要があります.
D123 を 00 にすることで手持ちを 0 匹にすることができます.
D2A1 を 01 に,D2A2 を 63 にすることで道具を「かいがらバッヂ」のみ所有にすることができます.バイナリエディタ終了後はカーソルがまだ 26 番目にあるので 1 番目になるまで「↑」を押すことで道具欄が正常 (?) になります.
また D287 から D28D の値を 00 にすることでつかまえた数を 0 にすることができます (これをしておかないとオーキド博士から図鑑がもらえなくなります).

D331 と D335 を 00 に書き換えてからイーブイの部屋を出るとマサラタウンに戻ることができます.これでストーリーを進めることができます.

余談

7. のニックネームについて 4, 5 匹目以外は前回の記事と全く同じだったりします.

最後の「かいがらバッヂ」ですが道具コードは 63,効果は D9B2 にジャンプするものとなっています.
内部コード 63 は設定から錬成可能で,D9B2 はボックスに預けているポケモンの匹数なのでバイナリエディタを実行するのにかなり都合の良いアイテムだと思いました.

「かいがらバッヂ」に関する情報は以下の記事 (特に下の方の画像版) を参考にさせていただきました.
【初代ポケモン】アイテムのアドレス参照先リスト - Wonderland Seeker

初期版について (2022/08/07 追記)

初期版 (v1.0) だと上の通りに動きません.なぜなら「はやぶさバッヂ」のジャンプアドレスが初期版 (v1.0) と後期版 (v1.1 から v1.3) で異なるためです.
そのためこの記事を公開した当初は初期版 (v1.0) に非対応とさせていただいていました.
しかし新快速さんから次のようなコメントを頂きました.

https://twitter.com/JmfyjB069yGvh7X/status/1555954676734238720

主人公の名前を無害なものにすれば初期版 (v1.0) でも任意コード実行ができるということを教えていただいたので,これを使って初期版でも導入方法を紹介したいと思います.後期版と何が違うのかを書いていきます.
ただし執筆者が初期版を持っていなく実際にできるか確認していないので自己責任でお願いします.何か問題がありましたらお知らせいただけますと幸いです.

「2. レポートバグを行う.」「3. ポケモンの 6 番目と 9 番目を入れ替える.」「5. タマムシマンションの屋上のイーブイの部屋へとワープする.」「6. 無限イーブイ編にする.」「8. 簡易版バイナリエディタを実行する.」は後期版と全く同じです.

「1. ライバルの名前を「て空んオオ」にする.」のところは大きく変更となります.
初期版 (v1.0) では,主人公の名前を「ギるゾい」にし,ライバルの名前はなんでも良いです.「オオオオオ」としてください.実際には5文字目が「オ」であればなんでも良いです.(2022/10/29 修正)

「4. 主人公の部屋にあるパソコンを開き道具の操作を行う.」は e. の操作のみ行ってください.道具の入れ替えをするだけなのでパソコンを開かずにメニュー欄の道具から開いても良いです.
2022/10/29 追記: ただし 25 番目の道具は「ぬのヅ」ではなくもっとバグった名称になっています.

「7. イーブイを取得しニックネームをつけていく.」についてはニックネームが少しだけ変わります.
上から 4, 5 匹目

にぽづがる
ぜい空へパ
の部分を
にぽづにグ
づなゅへへ
に読み替えてください.

「9. バイナリエディタを実行するまで」について
DA0D から DA0F について初期版 (v1.0) は

CD 3F 38

としてください.

コード

WRA1:DE64 26 DE            ld   h,DE
WRA1:DE66 2E 87            ld   l,87
WRA1:DE68 AF               xor  a
WRA1:DE69 50               ld   d,b
WRA1:DE6A 3C               inc  a
WRA1:DE6B 32               ldd  (hl),a
WRA1:DE6C 2E AB            ld   l,AB
WRA1:DE6E 32               ldd  (hl),a
WRA1:DE6F 50               ld   d,b
WRA1:DE70 D6 11            sub  a,11
WRA1:DE72 2E 82            ld   l,82
WRA1:DE74 32               ldd  (hl),a
WRA1:DE75 50               ld   d,b
WRA1:DE76 C6 48            add  a,48
WRA1:DE78 32               ldd  (hl),a
WRA1:DE79 26 D9            ld   h,D9
WRA1:DE7B 50               ld   d,b
WRA1:DE7C 2E B2            ld   l,B2
WRA1:DE7E 7F               ld   a,a

WRA1:DE7F CD 40 (38)       call 3840
WRA1:DE82 (F0) B3          ld   a,(ff00+B3)
WRA1:DE84 07               rlca 
WRA1:DE85 7F               ld   a,a
WRA1:DE86 30 (01)          jr   nc,DE89
WRA1:DE88 34               inc  (hl)
WRA1:DE89 07               rlca 
WRA1:DE8A 30 06            jr   nc,DE92
WRA1:DE8C AF               xor  a
WRA1:DE8D 50               ld   d,b
WRA1:DE8E 3D               dec  a
WRA1:DE8F CD C6 DE         call DEC6
WRA1:DE92 07               rlca 
WRA1:DE93 50               ld   d,b
WRA1:DE94 30 08            jr   nc,DE9E
WRA1:DE96 3E 0F            ld   a,0F
WRA1:DE98 2F               cpl  
WRA1:DE99 50               ld   d,b
WRA1:DE9A 7F               ld   a,a
WRA1:DE9B CD C6 DE         call DEC6
WRA1:DE9E 07               rlca 
WRA1:DE9F 50               ld   d,b
WRA1:DEA0 DC C4 DE         call c,DEC4
WRA1:DEA3 11 E3 50         ld   de,50E3
WRA1:DEA6 07               rlca 
WRA1:DEA7 D8               ret  c
WRA1:DEA8 07               rlca 
WRA1:DEA9 07               rlca 
WRA1:DEAA 30 (01)          jr   nc,DEAD
WRA1:DEAC 2B               dec  hl
WRA1:DEAD 07               rlca 
WRA1:DEAE DC C8 DE         call c,DEC8
WRA1:DEB1 50               ld   d,b
WRA1:DEB2 44               ld   b,h
WRA1:DEB3 CD CC DE         call DECC
WRA1:DEB6 45               ld   b,l
WRA1:DEB7 50               ld   d,b
WRA1:DEB8 CD CC DE         call DECC
WRA1:DEBB 1C               inc  e
WRA1:DEBC 46               ld   b,(hl)
WRA1:DEBD 50               ld   d,b
WRA1:DEBE CD CC DE         call DECC
WRA1:DEC1 30 BC            jr   nc,DE7F
WRA1:DEC3 50               ld   d,b

WRA1:DEC4 3E 10            ld   a,10

WRA1:DEC6 86               add  (hl)
WRA1:DEC7 32               ldd  (hl),a

WRA1:DEC8 2A               ldi  a,(hl)
WRA1:DEC9 50               ld   d,b
WRA1:DECA AF               xor  a
WRA1:DECB C9               ret  

WRA1:DECC C5               push bc
WRA1:DECD CB 30            swap b
WRA1:DECF 50               ld   d,b
WRA1:DED0 CD D6 DE         call DED6
WRA1:DED3 C1               pop  bc
WRA1:DED4 7F               ld   a,a
WRA1:DED5 50               ld   d,b
WRA1:DED6 3E 0F            ld   a,0F
WRA1:DED8 A0               and  b
WRA1:DED9 C6 48            add  a,48
WRA1:DEDB 50               ld   d,b
WRA1:DEDC C6 AE            add  a,AE
WRA1:DEDE 30 05            jr   nc,DEE5
WRA1:DEE0 C6 50            add  a,50
WRA1:DEE2 C6 10            add  a,10
WRA1:DEE4 7F               ld   a,a
WRA1:DEE5 06 C3            ld   b,C3
WRA1:DEE7 50               ld   d,b
WRA1:DEE8 1C               inc  e
WRA1:DEE9 12               ld   (de),a
WRA1:DEEA C9               ret  
WRA1:DEEB 50               ld   d,b

バイナリ

26 DE 2E 87 AF 50 
3C 32 2E AB 32 50 
D6 11 2E 82 32 50 
C6 48 32 26 D9 50 
2E B3 7F CD 40 50 
B3 B3 07 7F 30 50 
34 07 30 06 AF 50 
3D CD C6 DE 07 50 
30 08 3E 0F 2F 50 
7F CD C6 DE 07 50 
DC C4 DE 11 E3 50 
07 D8 07 07 30 50 
2B 07 DC C8 DE 50 
44 CD CC DE 45 50 
CD CC DE 1C 46 50 
CD CC DE 30 BC 50 
3E 10 86 32 2A 50 
AF C9 C5 CB 30 50 
CD D6 DE C1 7F 50 
3E 0F A0 C6 48 50 
C6 AE 30 05 C6 50 
C6 10 7F 06 C3 50 
1C 12 C9 50 

*1:そんなにアクセス数はないのでいい感じに拡散していただけると執筆者が喜びます.

*2:前の記事を書いた段階でピカチュウ版に対応する簡易版バイナリエディタも作っていましたが執筆者の怠惰のためしばらく実際に動かしていませんでした.

*3:「A」+「B」+「Start」+「Select」によるリセットではなくハードごとリセットをする必要があります.

*4:先程壊れると書いたのですがこの 3 つならまだなんとかなります.