5かいバグのページでも触れているように、ピカチュウ版ではバグアイテムのジャンプ先が微妙に変わっているため、赤緑青と同じアイテムでの任意コード実行ができない。
そこで、2種類のバグアイテムに白羽の矢が立った。
後期版(Ver.1.1~1.3。VC版は1.3)ではアドレスD4CAhに飛ぶ。
この場所はパソコンの道具9番目の種類となるため、うまくジャンプ命令を書き込むことで手持ちやボックスのポケモンのニックネームに飛べるようにするのが基本。
手持ちの道具欄にも飛ばせはするが、セレクトバグが使えないピカチュウ版では道具でコードを書くのがかなり難しいので非推奨。
ちなみに初期版で飛ぶのはアドレスDDCAh。こちらはボックス5匹目の親名3文字目からになるため、親名を「○○てウん」(〇は任意の文字)にすることで6匹目のニックネームから書きだすこともできる。
主人公の名前を「〇〇てウん」にするのが手っ取り早いが…
初期版・後期版共にアドレスD9B2hに飛ぶ。
この場所は現在使用中のボックスの預け数となるが、その直後に続くのがポケモンの外見。
そして、5かいバグの時同様、メノクラゲがjr命令になることを利用して適当な場所にジャンプさせられれば、はやぶさバッヂ同様の任意コード実行ができる。
しかし、戻りジャンプで通常使用可能なポケモンの最大値がウツボット(BEh。-42hのため、41バイト後ろに飛ぶ)で、ここから現実的に弄れそうな育て屋に預けたポケモンのニックネーム(B985h)まで飛ばすには19匹目にメノクラゲ、20匹目にウツボットを置く必要が出てくる。
使い勝手を考慮するなら最初の任意コード実行でボックスの先頭5匹の外見を書き換え、以降6匹目のニックネームから実行できるようにするのがいいだろう。
パソコンの道具9番目から以下のようにアイテムを並べる。「○○」から取るは14番目バグを使う話。
アドレス | 値 | 内容 | ニモニック | 備考 |
---|---|---|---|---|
D4CA | 21 | かみなりのいし | ld hl,DE63 | 207900円 |
D4CB | 63 | ×99 | ||
D4CC | DE | わざマシン22 | (非番品、「んが」から38個取って捨てるか売る) | |
D4CD | 23 | ×35 | inc hl | |
D4CE | E9 | わざマシン33 | jp hl | 1000円~ |
D4CF | xx | ×任意 | 計208900円… かみなりのいしは「ア」で128個に増やして捨てるか売るのが吉か |
わざマシン22(ソーラービーム)は個数限定品のため、使用しないバージョンも併記する。
アドレス | 値 | 内容 | ニモニック | 備考 |
---|---|---|---|---|
D4CA | 21 | かみなりのいし | ld hl,CF20 | 67200円 |
D4CB | 20 | ×32 | ||
D4CC | CF | わざマシン07 | 2000円 | |
D4CD | 01 | ×1 | ld bc,0F44 | |
D4CE | 44 | スペシャルアップ | 5250円 | |
D4CF | 0F | ×15 | ||
D4D0 | 0F | まひなおし | rrca | 1800円 |
D4D1 | 09 | ×9 | add hl,bc | CF20h+0F44h=DE64h アイテム09hはポケモンずかん |
D4D2 | E9 | わざマシン33 | jp hl | 1000円~ |
D4D3 | xx | ×任意 | 計77250円 四天王2周でほぼ貯まる |
アドレス | 値 | 内容 | ニモニック | 備考 |
---|---|---|---|---|
D4CA | 21 | かみなりのいし | ld hl,D257 | 182700円 |
D4CB | 57 | ×87 | ||
D4CC | D2 | わざマシン10 | (非売品、「めガ」から取る) | |
D4CD | 05 | ×5 | dec b | |
D4CE | E9 | わざマシン33 | jp hl | 1000円~ |
D4CF | xx | ×任意 | 計183700円… かみなりのいしは「ア」から128個に増やして捨てるか売るのが吉か |
わざマシン10(すてみタックル)が個数限定品のため、使用しないバージョンも併記する。
アドレス | 値 | 内容 | ニモニック | 備考 |
---|---|---|---|---|
D4CA | 21 | かみなりのいし | ld hl,CF13 | 39900円 |
D4CB | 13 | ×19 | ||
D4CC | CF | わざマシン07 | 2000円 | |
D4CD | 01 | ×1 | ld bc,0344 | |
D4CE | 44 | スペシャルアップ | 1050円 | |
D4CF | 03 | ×3 | ||
D4D0 | 0F | まひなおし | rrca | 1800円 |
D4D1 | 09 | ×9 | add hl,bc | CF13h+0344h=D257h |
D4D2 | E9 | わざマシン33 | 1000円~ | |
D4D3 | xx | ×任意 | 計45750円 四天王2周で問題なく貯まる |
アドレス | 値 | 内容 | ニモニック | 備考 |
---|---|---|---|---|
D4CA | 21 | かみなりのいし | ld hl,CF41 | 136500円 |
D4CB | 41 | ×65 | 1個減らすとジャンプ先を 預けフラグ(D984h)にできる。 |
|
D4CC | CF | わざマシン07 | 2000円 | |
D4CD | 01 | ×1 | ld bc,0A44 | |
D4CE | 44 | スペシャルアップ | 3500円 | |
D4CF | 0A | ×10 | ||
D4D0 | 0F | まひなおし | rrca | 1800円 |
D4D1 | 09 | ×9 | add hl,bc | CF41h+0A44h=D985h |
D4D2 | E9 | わざマシン33 | jp hl | 1000円~ |
D4D3 | xx | ×任意 | 計144800円… 四天王4周+ネコにこばんで何とか? |
理想としては下記のように先頭5匹を固定し、6匹目からコードを書くようにしたい。
これは19匹目メノクラゲ→20匹目ウツボット→育て屋てウん→6匹目そぐっ→1匹目ニックネームからの実行で間に合うので、最初の仕込みで完成させてしまいたい。
外見だけでなく中身も書き換えられるのが理想だが、それは外見だけ出来上がってからでもいいだろう。
アドレス | 値 | 外見 | ニモニック | 備考 |
---|---|---|---|---|
D9B3 | 00 | ィ゛ゃゾぇA | nopまたは即値 | 00を二つ挟むことで3バイト命令にも対応可能にする。 |
D9B4 | 00 | ィ゛ゃゾぇA | nopまたは即値 | カモネギ(40h、ld b,b)やパラス(ld l,l)等でも一応代用は可能だが、 ld (yyxx),spを考えると00hが確実だろう。 |
D9B5 | C3 | アム゛ | jp DE82 | ボックス6匹目のニックネーム1文字目へ飛ぶ。 |
D9B6 | 82 | ゴルバット | 即値 | |
D9B7 | DE | (名無し) | 即値 |
まずは後期版用はやぶさバッヂのセットアップから。(かいがらバッヂも同時に用意できる)
ポケスタ金銀の道具整理を使えば異なるROM間での道具のやり取りができるため、(後期版では)
の5種を持ってくれば ボックスのニックネームからの実行をすぐにすることができる。
かいがらバッヂとの併用をする場合は、上記3種を
に変えることで、ボックス6匹目のニックネームから実行する形にするのもいいだろう。
初期版の場合はパソコンの道具ではなくボックスのポケモンを利用するため、
の3種を用意する。お好みでメノクラゲ・ウツボットも一緒に連れて行くと、かいがらバッヂのセットアップもスムーズにできる。
この場合は毒サファリいあいぎり法でコイン枚数からはやぶさバッヂ(とかいがらバッヂ)を入手するのが確実。
ボックス1匹目のポケモンのニックネームに飛ばすセットアップで説明する。
ここまでの手順により、はやぶさバッヂでボックス1匹目のニックネームから任意コードが実行可能になる。
この状態で「がゆぜがざ」→「ひにぼづそ」→「ヅけやデの」を実行すれば、パソコンの道具預け数が50に戻ってやめるの下に行かなくなる。
ついでにはやぶさバッヂを1個減らした分をフォロー。これをやっておかないとマサラタウンにオーキドが出現してしまう。(実害は無いので放っておいても大丈夫なのだが)
[26 D5 2E 26 2B 50 CB
C6 3E 32 BF 50 11 B9 D4
12 C9]
ld h,D5→ld l,26→dec hl→ld d,b→set
0,(hl)→ld a,32→cp a→ld d,b→ld de,D4B9→ld
(de),a→ret
パソコンの預け数だけ変える場合は、「がやぜけそ」→「ぼづづの」を実行すればいい。
[26 D4 2E B9 BF 50 3E 32 32 C9 ; ld h,D4→ld l,B9→cp a→ld d,b→ld a,32→ldd (hl),a→ret]
ポケットモンスター ピカチュウ バイナリエディタ - flag3
ピカチュウ版レポートバグのすすめ(図鑑完成RTA実演)【ポケモン初代(黄) ゆっくり解説】 - YouTube - セーブ中リセットのタイミングの参考に
新規データからやる場合なら戦闘のいらないこのチャートが手っ取り早い。(後期版ではパソコンの使用が制限されるが)
ここでははやぶさバッヂの入手に留める方針で紹介する。(バイナリエディタの導入自体は30分もあればできるが…)
データの完全消去が必要なため、既存データのポケモンを引き継いだりはできない。
ここまで完了すれば、はやぶさバッヂでボックスのニックネーム(初期版は6匹目、後期版は1匹目)からコードを実行可能な状態でシナリオを最初から始めることができる。
(初期版の場合は「ヅづキぎむ」をボックス5匹目に置きっぱなしにすること)
以降は主人公やライバルの名前を変更しても大丈夫。でもやっぱり主人公「がんョぜメ」でバイナリエディタ作った方がすぐ弄れて便利な気がする
一応、イーブイの取得フラグは折られたままのため、再取得したい場合は無限イーブイモードのコードを…
fifth法でけつばんを見ると6番目の道具が128個増えることを利用して255個の道具を用意し、道具所持数を255にしてアイテムの発掘を行う方法。
セレクトバグができない以上化石変換等で姿を見ずに入手することはできず、ピカチュウ版で通常のけつばんを見ようとするとバグトレーナー戦になってフリーズしてしまうため、とくしゅ値は182~184にする必要がある。
はやぶさバッヂ(65h)を手に入れるところまでの手順を紹介。
道具所持数を元に戻すには、1番目の道具を1個捨てて255個にした後、カーソルが「やめる」で止まるようになるまで1番目の道具を全部捨てればいい。(200回以上は繰り返すことになるけれど…)
面倒なのでコードで修正したいという場合は以下のような感じになる。(道具所持数変更のみ)
[3E 13 3C BF BF 50] ld
a,13→inc a→cp a→cp a→ld d,b
[11 A1 D2 12 C9 50] ld de,D2A1→ld (de),a→ret
道具所持数を元に戻した後、255個のアイテム群を処分するときは下から捨てる、またはすべて254個以下にしてから操作すること。
とくしゅ182~184を作るには、ハナダのどうくつに出現するウツドン(2FにLv.58個体が出現、ウツボットに進化させて使う)やクサイハナ(2FにLv.58個体が出現、ラフレシアに進化させて使う)、ラッキー(B1FにLv.56個体が出現)にリゾチウムを投与して育てるのが適当だろう。
育成場所の候補としては以下のあたりだろうか。
なお、fifith法でLv.1のニドキングを出現させてLv.100にする方法もある。
具体的には、
以降は数値によってリゾチウムの投与とメノクラゲ狩りで努力値を調整すればいい。
とくしゅ値 | 調整方法 | 調整後 | 出るけつばん |
---|---|---|---|
156 | リゾチウム×5 | 183 | プテラの化石 |
158 | リゾチウム×4 | 182 | カブトプスの化石 |
160 | リゾチウム×4 | 184 | ゴースト(ゆうれい) |
162 | リゾチウム×3 | 183 | プテラの化石 |
164 | リゾチウム×2+メノクラゲ×5 | 182 | カブトプスの化石 |
166 | リゾチウム×2 | 183 | プテラの化石 |
168 | リゾチウム×1+メノクラゲ×10 | 182 | カブトプスの化石 |
170 | リゾチウム×1+メノクラゲ×1 | 182 | カブトプスの化石 |
172 | リゾチウム×1 | 183 | プテラの化石 |
174 | メノクラゲ×13 | 182 | カブトプスの化石 |
176 | メノクラゲ×8 | 182 | カブトプスの化石 |
178 | メノクラゲ×4 | 182 | カブトプスの化石 |
180 | メノクラゲ×2 | 182 | カブトプスの化石 |
182 | 調整不要 | 182 | カブトプスの化石 |
184 | 調整不要 | 184 | ゴースト(ゆうれい) |
参考資料
【VC版対応】ポケットモンスターピカチュウ 任意コード実行下準備チュートリアル : 魚肉の雑記帳
ピカチュウ版ではトキワのもりにfifth法を行えるトレーナー(出口から2番目にいるむしとりのしょうねん)が追加されており、民家でタウンマップを見る→メニューを開かずにトキワのもりに侵入…の流れでボックスの19匹目のポケモンのニックネームをメッセージとして読んでしまうことを利用して任意コードを実行できる。
具体的な手順は、
空白のメッセージが出て、目的のコードが実行されていれば成功。
ゲーム開始直後にモンスターボールを19個入手するには、
といった流れでかろうじて他のトレーナーを倒さずに間に合う。1匹ずつ確実に捕まえていくのが無難か。
; べがめぜュ
3D ; dec a 00→FF
26 D2 ; ld h.D2
2E AE ; ld l,AE 道具7番目
50 ; ld d,b
; づぶづぶづ
32 ; ldd (hl),a 「やめる」
3C : inc a FF→00
32 ; ldd (hl),a 「×0」
3C : inc a 00→01
32 ; ldd (hl),a 「マスターボール」
50 ; ld d,b
; ぶづよマづ
3C : inc a 01→02
32 ; ldd (hl),a 「&tomes;2」
D6 9D ; sub a,9D 02→65 32 ; ldd (hl),a 「はやぶさバッヂ」
50 ; ld d,b
; にせづにさ
C6 BE ; add a,BE 65→23
32 ; ldd (hl),a 「×35」
C6 BB ; add a,BB 23→DE
50 ; ld d,b
; づよさづそ
32 ; ldd (hl),a 「わざマシン22」
D6 BB ; sub a,BB DE→23
32 ; ldd (hl),a 「×35」
BF ; cp a
50 ; ld d,b
; にョづよバ
C6 AF ; add a,AF 23→D2
32 ; ldd (hl),a 「わざマシン10」
D6 19 ; sub a,19 D2→B9
50 ; ld d,b
; づよノづづ
32 ; ldd (hl),a 「×185」
D6 98 ; sub a,98 B9→21
32 ; ldd (hl),a「かみなりのいし」
32 ; ldd (hl),a 「×33」
50 ; ld d,b
; にねづよー
C6 C8 ; add a,C8 21→E9
32 ; ldd (hl),a 「わざマシン33」
D6 E3 ; sub a,E3 E9→06
50 ; ld d,b
; づがんずの
32 ; ldd (hl),a 道具所持数を6に
26 DE ; ld h,DE
2D ; dec l これでhl=DE9F 10匹目のニックネーム末尾
C9 ; ret 終端文字(50h)を読み込んでメッセージに戻る
; ゲョぐに
08 ; 機械語モード移行(メッセージなので)
AF : xor a ゼロフラグを立てるついでにa初期化
28 C6 ; jr z,C6 10匹目のニックネームへ
0087名無しさん、君に決めた!@無断転載は禁止2017/01/22(日) 22:50:33.16ID:icLY0FXLO>>74の字数削減
>>83にマスボを追加
・殿堂入り(森地図)
09:ギらひだヅ
10:がゾねツデ
11:なゃくの
19:ゲョオだそ
・v1.0用はやぶさバッヂスターターセット(森地図)
手持ち1番目を「ボックス6番目NNへジャンプ」用の親名に、
手持ち2番目を「手持ち1番目NNへジャンプ」用の親名に書き換える
道具欄を「はやぶさバッヂ x2 / マスターボール x0 / やめる」に書き換える
手持ちNN
01:ボックスへ
02:てもちへ
ボックスNN
08:がめぜルべ
09:づョづぶづ
10:ぶづよマづ
11:にマづぜべ
12:ョオづにカ
13:づよナづぼ
14:づにレづざ
15:よバづにヨ
16:づよそづぼ
17:づにッづそ
18:ぜどの
19:ゲョぐこ
; がめぜルべ
26 D2 ; ld h,D2
2E A6 ; ld l,A6 道具3番目
3D ; dec a 00→FF
50 ; ld d,b
; づョづぶづ
32 ; ldd (hl),a 「やめる」
AF ; xor a FF→00
32 ; ldd (hl),a「×0」
3C : inc a 00→01
32 ; ldd (hl),a 「マスターボール」
50 ; ld d,b
; ぶづよマづ
3C : inc a 01→02
32 ; ldd (hl),a 「×2」
D6 9D ; sub a,9D 02→65
32 ; ldd (hl),a 「はやぶさバッヂ」
50 ; ld d,b
; にマづぜべ
C6 9D ; add a,9D 65→02
32 ; ldd (hl),a 道具所持数を2に
2E 3D ; ld l,3D 手持ち2匹目親名5文字目
50 ; ld d,b
; ョオづにカ
AF ; xor a 02→00
84 ; add h 00→D2
32 ; ldd (hl),a 「め」
C6 85 ; add a,85 D2→57 50 ; ld d,b
; づよナづぼ
32 ; ldd (hl),a 「※無効(57h)」
D6 94 ; sub a,94 57→C3
32 ; ldd (hl),a 「て」
3E 50 ; ld a,50
; づにレづざ
32 ; ldd (hl),a 「終端(50h)」正しく表示できないため?
C6 A7 ; add a,A7 50→F7 32 ; ldd (hl),a 「1」
2B ; dec hl 次から手持ち1匹目 50 ; ld d,b
; よバづにヨ
D6 19; sub a,19 F7→DE 32 ; ldd (hl),a 「ん」
C6 A4 add a,A4 DE→82
50 ; ld d,b
; づよそづぼ
32 ; ldd (hl),a 「ウ」
D6 BF ; sub a,BF 82→C3
32 ; ldd (hl),a 「て」
3E 50 ; ld a,50
; づにッづそ
32 ; ldd (hl),a 「終端(50h)」
C6 AC ; add a,AC 50→FC
32 ; ldd (hl),a 「6」
BF ; cp a 50 ; ld d,b
; ぜどの
2E 14 ; ld l,14 これでhl=D234 先ほど入れた終端文字を指す
C9 : ret 終端文字を読み込んでメッセージに戻る
; ゲョぐこ
08 ; 機械語モード移行(メッセージなので)
AF : xor a ゼロフラグを立てるついでにa初期化
28 BA ; jr z,BA 8匹目のニックネームへ
ボックスのポケモンの種族とニックネームを下記のようにする。余計なポケモンは預けないこと。(特に24匹預けると問題が出るため)
順番 | 種族 | ニックネーム | ニモニック | 備考 |
---|---|---|---|---|
1 | コラッタ | がるぜきそ | and l | ポッポはinc h |
2 | コラッタ | ぼんづぼて | and l | |
3 | コラッタ | ざづョづづ | and l | |
4 | ゴルバット | の | add,d | 82h枠だが無害なので そのまま流用する |
5 | コラッタ | ののののの | and l | 字余り パラスはld l,l、プリンはld h,h、ニドリーノはand a |
6 | コラッタ | そぐっ | and l | 「てウん」でここに飛んで 「そぐっ」で1匹目まで飛ばす |
7~18 | コラッタ | 不問 | and l | |
19 | メノクラゲ | jr BF | スタックポインタを-42h、つまり41h後ろに行くことになる。 | |
20 | ウツボット | (即値) | ここの41h後ろが育て屋に預けたポケモンのニックネーム これ以上の数値はバグポケモンになるので ピカ版では用意が困難 |
以上の状態でかいがらバッヂを使用すると、以降は育て屋の情報に関係なくボックス6匹目のニックネームに直接飛べるようになる。(先頭5匹は固定)
先頭5匹の外見は(ゴルバット以外)バグポケモンになっているのでむやみにステータスを見ないこと。
毒サファリいあいぎり法でかいがらバッヂを手に入れた場合、パソコンやオーキド博士の消失フラグが壊れているため、これらを修復するコードを書いておくといい。
放置していてもあまり実害はないが
ボックスの6匹目から以下のように並べる。セットアップのおかげで種族は不問。
ld h,D5でD5h、ld l,26→dec hlで25hを作り、set 0,(hl)ではやぶさバッヂを1個引き出した分をフォローした後、パソコンの預け数(D4B9h)を50(32h)にしている。
セットアップが終わった段階では外見しか変えていないため、ふとしたきっかけで書き換わってしまうことがある。(基本ポケスタでは弄らない方がいい)
そこで、中身の方も書き換えておくことで安定性を上げておくといいだろう。金銀クリスタルへの転送は前提としないため、タイプは気にしなくてもいい。
やはりボックスの6匹目から。
まずld a,11→rlcaで22hを作り、ld b,a→ld c,bでcレジスタに22hを入れておく。
次にボックス1匹目の種族(D9D2h)を0にした後、ld b,aでbレジスタを0にすることで、add
hl,bcで22hバイト(lddで戻る分を考慮)進めるようにする。
hlレジスタの流れと代入する値は、D9D2h(00h)→D9D1h→D9F3h(00h)→D9F2h→DA14h(C3)→DA13h→DA35h→DA57h→DA56h(DEh)となる。
5匹目に置かれたバグポケモンの親名を3文字目から「て(57h)め」にすると、はやぶさバッヂで手持ち1匹目のニックネームからコードを実行可能になる。
短いコードや使うたびに細かく調整するコードなど、ボックスでは扱いにくいコードを使いたいときに重宝するかも?
例によってボックスの6匹目から。ボックス5匹目の情報を直接書き換えるので動かさないこと。
初代ポケモンでは「を」が入力できないため、ld h,DC→set 0,hを組み合わせてhレジスタにDDhを作る。
「ぼ(終端)」で作っておいた50hをDDCDhに、次はDDCChにD2h。
D2h+85hで57hを作ってDDCBhに57h、最後はDDCAhにC3h…となっている。
これでかいがらバッジを使えば、初期版のはやぶさバッヂが手持ちニックネームに飛べるようになる。
なお、(57h)はメッセージ終了処理を表す文字で表示ができない。