この記事は旧バージョンです.新しいバージョンは以下のものとなります.
バイナリエディタ導入チャート ピカチュウ版 - flag3833753
はじめに
ポケモン赤緑で簡易版バイナリエディタを作ったお話 - flag3833753
という記事を以前出させていただきました*1.
この簡易版バイナリエディタをピカチュウ版でも使えるようにしたため*2導入するチャートを書かせていただきます.
注意 (2023/01/30 追記)
このチャートはレポートバグという猶予数フレームのバグ技を使います.
このバグ技が難しいという方向けに森地図チャートも作っていますのでそちらもご参照ください.
バイナリエディタ導入 森地図チャート - flag3833753
オーキド先生研究者さんの動画
【旧記録】バイナリエディタ起動RTA12:45【ポケモン初代(黄) ゆっくり解説】 - YouTube
という動画でバイナリエディタを導入しています.
まだ見たことない方は是非 1 度見ておくことをおすすめします.
この動画ではバイナリエディタの導入を次の 2 段階に分けて行っています.
thfan さんのバイナリエディタは以下で閲覧することができます.
バイナリエディタを真似して作ってみた - thfanのブログですね分かりますん
ただこの動画の簡易的なバイナリエディタ(仮)にはRTA向けということでとても人間向きではなく (褒め言葉) 普通の人が操作するのは不可能に近いです.
この簡易的なバイナリエディタ(仮)の部分をまともに扱えるようにしたのが今回紹介する記事の内容となります.
なのでここで紹介するチャートはこのオーキド先生研究者さんの動画を丸パクリかなり参考にしています.
チャート
環境: ポケモンピカチュウの後期版 (v1.1 から v1.3) のみ動作を確認しています.
初期版 (v1.0) については後述します.
まずデータを初期化します.タイトル画面で「SELECT」+「B」+「↑」を同時に押して消去してください (レポートバグの関係上つづきからでやるのは非推奨です).
1. ライバルの名前を「て空んオオ」にする.
空というのは空白文字の意味です.主人公の名前はなんでも良いです.
2. レポートバグを行う.
レポート中の特定のタイミングで強制リセット*3をすることで手持ちポケモンのメモリに異常を生じさせます.
特定のタイミングというのはレポートを書きますか?に対し「はい」を押してから (私の感覚だと) 0.5 秒もないくらいです.これが一番難しいです.コツとかはないのでできるまで何回もトライしてみてください (としか私からは言えません).
強制リセットのタイミングが早すぎるとセーブされません.
タイミングが少し遅いとセーブデータが壊れるのでデータの初期化からやり直しです.
タイミングが遅すぎると普通にセーブされてしまいます.
オーキド先生研究者さんが布教している動画
ピカチュウ版レポートバグのすすめ(図鑑完成RTA実演)【ポケモン初代(黄) ゆっくり解説】 - YouTube
が参考になるかもしれません.
3. ポケモンの 6 番目と 9 番目を入れ替える.
レポートバグを成功させると手持ちポケモンが開けるようになっているので 6 番目と 9 番目のポケモンを入れ替えます.
そうすることで道具欄のメモリに異常を生じさせます.
4. 主人公の部屋にあるパソコンを開き道具の操作を行う.
具体的には以下のことをします.
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 個上となります.
6. 無限イーブイ編にする.
まずは設定を以下の通りにしてください.
そうすると道具の 26 番目に「はやぶさバッヂ」が錬成されます.
そして以下のことをしてください.
2. ニックネーム「ひでぶデョ」のイーブイを取得し「はやぶさバッヂ」を使う.
3. ニックネーム「ヅやゆョプ」のイーブイを取得し「はやぶさバッヂ」を使う.
イーブイは本来 1 匹しか手に入らないのですが「はやぶさバッヂ」を使うことでボールが再配置されてイーブイを再取得することができるようになります.
3. の「はやぶさバッヂ」で以降イーブイを取得するとき,ボールではなく近くにいるおじさんが消えるようになるのでイーブイを無限に取得することができるようになります.
7. イーブイを取得しニックネームをつけていく.
無限に取得できるようになったイーブイを使ってプログラムを組みます.
下から順番にニックネームをつけてください.
ぶづぜンづ
よヅぜウづ
にぽづがる
ぜい空へパ
ううグ空だ
どグだギョ
べへにんグ
だゲぼダぞ
空へにんグ
わとんヅー
グリググだ
ざグわねん
ぱへふんぴ
へふんボぷ
へふんだし
ぼヂキづご
ョのなひだ
へよんち空
ぼダメにぽ
にュだガに
にヂ空ギて
ボデの
8. 簡易版バイナリエディタを実行する.
上のニックネームを入力した後,
「はやぶさバッヂ」を実行すると簡易版バイナリエディタが起動します.
こんな感じになるかと思います.
起動しない場合はリセットしてレポートバグ直後からやり直してください.
起動できたら一回セーブしておくと良いかもしれません.
簡易版バイナリエディタの操作方法
以下の操作方法でアドレスとその中身を書き換えることができます.
操作方法
B: アドレス-1
↓: 中身+1
↑: 中身-1
→: 中身+10h
←: 中身-10h
Start: 終了
9. バイナリエディタを実行するまで
thfan さんのコードを使ってバイナリエディタを起動させましょう.
バイナリエディタを真似して作ってみた - thfanのブログですね分かりますん
簡易版バイナリエディタを使って D9B4 から DA5E のアドレスの中身をリンク先のものに書き換えます.
ただし DA0D から DA0F については
CD 67 38
ではなくて
CD 40 38
としてください.特に DA0E の値が 40 ということに注意してください.
書き換えたら一回セーブしておくと良いかもしれません.
そして設定を以下の通りにしてください.
そうすると道具の 26 番目に「かいがらバッヂ」が錬成されます.
その「かいがらバッヂ」を実行することでバイナリエディタが起動することができます.
完成するとこんな感じになるかと思います.
バイナリエディタの操作
↑: アドレス-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) に非対応とさせていただいていました.
しかし新快速さんから次のようなコメントを頂きました.
v1.0での任意コード実行法(はやぶさバッヂ使用、v1.0ではボックス5番目の親名3文字目に飛ぶので、主人公名を無害な物にすれば問題ない)はすでにあるので、そっち経由で一旦導入して…ってのはどうでしょうか?
— 新快速 (@JmfyjB069yGvh7X) 2022年8月6日
セーブリセット法だとポケモンが捕まえられないのが厳しいですかね…
主人公の名前を無害なものにすれば初期版 (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