手持ちポケモンと道具欄などで作ったプログラムを、道具「5かい」を使い起動。プログラムに順じた様々な現象を引き起こす。
つまり道具欄をいじって新しくバグ技を作れる。
思わぬ範囲まで効果が及ぶ可能性があるので危険が伴います。実験・使用・使用後のセーブには充分注意しましょう。
5かいで飛ぶのはアドレスD123h。ここは手持ちの総数になり、その後、手持ちポケモンの外見が記録されている。
ここだけでは満足なコードを実行できないが、メノクラゲを利用した相対ジャンプで手持ちポケモンのステータスへ、
さらにその中でジャンプ命令を仕込むことで操作しやすい場所に持っていく。
なかよしバッヂで飛ぶのはアドレスD983h。ここはサファリボールの個数が記録されているが、その直後には育て屋のデータがあり、
育て屋に預けたポケモンのデータは最初にニックネームが入ることを利用して制御しやすいところにジャンプする。
5かいでは手持ちポケモンに、なかよしバッヂでは育て屋の利用に制限がかかります。
至らない点の訂正・追記お願いします
詳しくは→ぽけもん・ばぐ・りっちーず(アーカイブ)
この辺も参考に↓
【5かい】初代ポケモンの任意コード実行解説動画【なかよしバッヂ】 -
ニコニコ動画
ちなみにこのバグができるのは赤緑青のみです。ピカチュウ版はバグアイテムのジャンプ先が異なるため、別のアイテムが必要になります。
サブルーチンの位置の違いはありますが、データの格納位置はそれほど変わらないため、このページのコードもほぼ流用できます。↓
ピカチュウ版における任意コード実行
手持ちのポケモンを使って道具欄などを参照させる為のプログラムを組みます。
ニャースの代わりにプリン(64h)やイーブイ(66h)を用意し、習得技や親IDでジャンプさせることもできます。先述のメノクラゲニャースを使って書き換えると楽です。
プリンの場合は3匹目の技の1番目、イーブイの場合は3匹目の技の3番目に飛びます。
ちなみにズバット(6Bh)だと3匹目の経験値中桁、パラス(6Dh)だと3匹目のHP努力値上桁に飛べます。
努力値から個体値までで12バイト、経験値を含めても14バイトですが、その程度で済んでかつ頻繁に使うコードの場合は頭に入れておくといいでしょう。
数値の書き換えにはバイナリエディタ(簡易型だけでもいい)を導入すると便利です。
なお、プリンで技3からにどげり→おうふくビンタとすることでIDを飛ばして経験値中桁に飛ぶこともでき、とくしゅ努力値下桁からC3 63
D2でニックネームに飛ぶことでもうちょっと長めのコードを仕込むこともできます。
(技で2バイト、経験値~努力値で11バイト、ニックネームで5バイト使えるため、最大18バイトになります)
道具「なかよしバッヂ」を使うと、サファリボールの残り個数のアドレス(D983h)に飛びます。
その直後には育て屋のデータがあり、ニックネームが都合よく最後に預けたポケモンのデータの先頭にあるため、ここにジャンプ命令を書き込めば5かいよりもはるかに簡単にプログラムを実行できるようになります。
道具「あなぬけのヒモ」または技「あなをほる」を使ってダンジョンから脱出しておきます。
育て屋に所定のニックネームを持ったポケモンを預けます。最後に預けたポケモンの情報があればいいので、すぐに引き出しても構いません。
道具欄やパソコンに預けてあるポケモンのニックネームを確認し、「なかよしバッヂ」を使用します。以降は5かい使用時とほぼ同じです。
5かいとジャンプ先を共有したい場合は、3匹目のアドレスが直接入力可能な文字になるのを利用するといいでしょう。
技やPPを使う場合と違い、ボックス1匹目のニックネーム1文字目に飛ばす場合、入力不能文字の「E」(64h、HPバーの一部)の存在が問題になります。
一応おじぞうバッヂ(64h)×222(DEh、これは「ん」でOK)を14番目バグで道具の4番目に埋め込む方法もありますが、おじぞうバッヂの入手方法が問題になります。
そこで、育て屋内の「パパてウん」をなかよしバッヂで「パパてEん」に変換するコードを紹介します。育て屋には預けた状態で実行してください。
これで、ボックス1匹目のニックネームからコードを実行可能になって入力しやすくなります。
なお、このコードはポケモン2匹に収まっているので、5かいからの手持ちニックネーム実行(C3 5D
D2で手持ち2匹目から可能)でも必須枠のポケモンだけで間に合います。
初代ポケモンでコードを書く場所は主に3つあります。
5かいバグ黎明期に開発された方法です。
数値の指定は比較的自由にできますが、アイテムと個数が1セットになっている点、所持数制限により最大38バイトまでのコードしか組めない点、
個数の無いアイテムや名前の長いアイテムが絡むと構築が面倒になる点が問題になります。
より長いコードを書くために開発された方法です。
本来パソコンに道具を預ける場合は1種類当たり99個までで区切られてしまいますが、「やめる」の下のアイテムには個数まとめ処理が発生しないという仕様を利用し、
パソコンの先頭に「やめる」を設置してしまう(これ自体は他の方法で行う必要あり)ことによって道具欄同様にコードを組むことができるようになります。
パソコンには50種類の道具を預けられるので、先頭の「やめる」を除いても最大98バイトものコードが組めるようになります。
道具使用版からだいぶ後に開発された方法です。
ボックスのポケモンのニックネームを利用することで、6文字×30匹分の180バイト(実際には終端文字があるため実質150バイト)ものコードを書くことができる上に、コードを複数個貯めることもできます。
お手軽にコードを組めますが、入力不能文字によってできないことが意外と多く、道具欄に比べて微修正に手間がかかるところが難点と言えます。
また、普通の入力では終端文字(50h・ld d,b)が入ってしまうことや、入力方法によってゴミデータが混じることには注意が必要です。
ちょっと変わった方法として、コード本体はニックネームに書き、数値指定を道具欄で行うといったものもあります。特定のアドレスに好きな数値を入れるような用途で使われることがあります。
以下、コード集。各コードは水平線(hrタグ)で区切る。
種類 | 個数 |
---|---|
むしよけスプレー | xx |
ねむけざまし | yy |
かみなりのいし | 102※ |
ミックスオレ | 67 |
わざマシン33 | 不問 |
1E xx ; ld e,xx
0E yy ; ld c,yy
2166※ 3E ; ld hl,3E66※
43 ; ld b,e
E9 ; jp hl
※赤緑後期版での個数。赤緑初期では120(78h)、青では140(8Ch)にする。ピカチュウ後期(VC版で確認)では83(53h)だが、そもそも道具欄でやるのに向いていない。
むしよけスプレーの個数に応じた種族がねむけざましの個数に応じたレベルで手に入るコード。わざマシン33は何個でもいい。
ポケモンの種族は内部番号で指定するため、文字コード対応表を参考に。
手持ちがいっぱいの場合は、通常のポケモンゲット同様、ボックスの先頭に送られます。
ニックネームコーディングの手助けになれば。
ちなみに任意のポケモンとエンカウントするだけならもっと簡単で、D036hにエンカウントしたいポケモンの内部番号を入れればいい。
D0EChに数値を入れることでレベルを指定することもできる。(指定しなかった場合は最後に読み込んだポケモンのレベルになる)
種類 | 個数 |
---|---|
ミックスオレ | xx |
ねむけざまし | yy |
かみなりのいし | 54 |
わざマシン08 | 119 |
まひなおし | 46 |
わざマシン36 | 113 |
わざマシン01 | 不問 |
3E xx ; ld a,xx
0E yy ; ld c,yy
21 36 D0 ; ld hl,D036
77 ; ld (hl),a
0F ; rrca これ自体は無意味
2E EC ; ld l,EC
71 ; ld (hl),c
C9 ; ret
ミックスオレの個数に応じた種族のポケモンがねむけざましの個数に応じたレベルで出現する。こちらのコードは初代全バージョン対応。
※注!育て屋に預けるポケモンが通常の実行とは異なります。
以下のように技とニックネームを調整したポケモンを育て屋に預けている状態でなかよしバッヂを使用すると、ポケモンゲットイベントが起こせる。
手持ちがいっぱいだとボックスの先頭に送られるが、ボックス自体でコードを使っていないため、繰り返し入手できる。
ニックネームの頭2文字を変えれば入手できるポケモンを変更可能。
入力不能文字が絡む場合は13番目バグや14番目バグを使って調整することになる。(特にミュウだとグレーバッジ×195をニックネームに埋め込む必要がある)
項目 | 内容 | 備考 |
---|---|---|
預けフラグ | 預かっている[01h] | ld bc,yyxxで種族とレベルを指定するため、預けた状態である必要がある。 |
ニックネーム1文字目 | レベルに応じた文字 | 5なら「ガ」、25なら「バ」、50なら「づ」、72なら「ぽ」、128なら「ア」 30や100は14番目バグをうまく使って… |
ニックネーム2文字目 | 種族に応じた文字 | ハクリュー[59h]は文字表示で無限ループを起こすため入手できない。 |
ニックネーム3文字目~ | てハる[C3 99 D9 50 ] |
jp D999で育て屋に預けたポケモンの技1に飛ぶ。 |
技1 | たいあたり[21h] | ld hl,yyxxでジャンプ先を指定。 |
技2 | 初期版:タマゴうみ[78h] 後期版:ものまね[66h] |
サブルーチンの関係上、初期版と後期版で異なる。 どちらもわざマシンは存在するが… |
技3 | オーロラビーム[3Eh] | シェルダーやパウワウから16~19匹目の外見経由でもらってくるのがいいか |
技4 | わざマシン33[E9h] | jp hlによって赤緑初期は3E78h、赤緑後期は3E66hに飛ぶ。 |
ニックネームコードで上記の技構成を作る場合は以下のようになる。(赤緑用、4匹目書き換え)
; がむぜこぼ
26 D1 ; ld h,D1
2E BA ; ld l,BA 手持ち4匹目技4
3E 50 ; ld a,50
; にハづぼぼ
C6 99 ; add a,99 50→E9
32 ; ldd (hl),a 技4「わざマシン33」
3E 3E ; ld a,3E
50 ; ld d,b
; づに※づぼ
32 ; ldd (hl),a 技3「オーロラビーム」
C6 XX ; add a,XX ※初期3A、後期28
32 ; ldd (hl),a 技2初期「タマゴうみ」後期「ものまね」
3E 50 ; ld a,50
; よぞづの
D6 2F ; sub a,2F 50→21
32 ; ldd (hl),a 技1「たいあたり」
C9 ; ret
なお、青版では入力可能文字のみでポケモンゲットイベントを起こせる(「てスぼ」)ため、ニックネームの調整だけでいい。(預けている必要はある)
サファリボール0個かつ、「アアてスぼ」を預けた状態でなかよしバッヂを使用すると、ゴルダックLv.128が手に入る。
(1文字目がレベル、2文字目が種族で、「ア」は80h)
バイナリエディタ導入チャートなどで使われるあれを既存データでやるコード。
イーブイ部屋で実行することでイーブイ復活とボール消失防止を同時に行えるため、一度の実行で大量のイーブイを入手できる。ニックネームコーディングの補助に。
ボールが消えなくてもイーブイ入手フラグは立つため、一度部屋を出るとボールは消える。
直接入力でもコードを変える必要はない。おじさんは助かる。
種類 | 個数 | 参考・文字 |
---|---|---|
かみなりのいし | 77 | あ゛┗ |
わざマシン13 | 52 | ゆど |
ヨクアタール | 45 | ぜず |
わざマシン03 | 174 | ひュ |
わざマシン01 | 不問 | の |
21 4D D5 ; ld hl,D54D
34 ; inc (hl) アイテムボールを消えなくする。
2E 2D ; ld l,2D
CB AE ; res 5,(hl) イーブイ復活
C9 ; ret
; ぜヒひゼョ
2E 9A ; ld l,9A
CB 0D ; rrc l 9A→4D
AF ; xor a
50 ; ld d,b
; がゆづぜず
26 D5 ; ld h,D5
32 ; ldd (hl),a アイテムボールを消えなくする。
2E 2D ; ld l.2D
50 ; ld d,b
; ひュの
CB AE ; res 5,(hl)イーブイ復活
C9 ; ret
※重大なミスがあったので修正しました!申し訳ありません。
; がめぜモぼ
26 D2 ; ld h,D2
2E A1 ; ld l,A1
3E 50 ; ld a,50
; よぶせねリ
D6 3C ; sub a,3C 50→14
BE ; cp (hl) 道具総数チェック
C8 ; ret z 20種なら終了
D8 ; ret c 21種以上でも終了
50 ; ld d,b
; どぷぽョぺ
34 ; inc (hl)
46 ; ld b,(hl)
48 ; ld c,b
AF ; xor a
47 ; ld b,a
50 ; ld d,b
; ひヅズゴべ
CB 11 ; rl c
0C ; inc c
09 ; add hl,bc
3D ; dec a 00→FF
50 ; ld d,b
; づづぶぶ空
32 ; ldd (hl),a 「やめる」
32 ; ldd (hl),a 「×255」
3C ; inc a FF→00
3C ; inc a 00→01
7F ; ld a,a アイテム変更用スペース
50 ; ld d,b
; づの
32 ; ldd (hl),a 「マスターボール」
C9 ; ret
道具欄の末尾にマスターボール255個を生成するコード。道具が20種(以上)あるときは何も起こらない。任意エンカウントの補助に。
1・2匹目で道具が20種未満かの判定を行い、3・4匹目で道具欄の末尾に移動しながらaレジスタをFFhにできる。
5匹目の「ぶぶ空」の部分を変えれば他のアイテムを255個生成することも可能。(アイテムリストと数値の作り方を参照)
ちなみに最短のコードはこうなる。アイテムゲットイベント探してきた方が早そう
数値 | ニモニック | 備考 |
---|---|---|
21 | ld hl,D6A1 | 道具総数参照 |
A1 | ||
D6 | ||
7E | ld a,(hl) | aレジスタに総数を代入 |
3C | inc a | 01h足してみる |
FE | cp a,14 | 21(15h)以上ならキャリーフラグが立たない |
14 | ||
D0 | ret nc | キャリーフラグが立たなかったら終了 |
77 | ld (hl),a | 道具総数書き換え |
07 | rlca | aレジスタを道具総数の2倍に |
4E | ld c,(hl) | 道具総数の2倍をcレジスタに代入 |
0C | inc c | 01h足すことで道具欄末尾を指せるように |
AF | xor a | aレジスタリセット |
47 | ld b,a | 00hにしたaレジスタでbレジスタを上書き |
09 | add hl,bc | hlレジスタの位置を道具欄末尾に |
3D | dec a | 00h→FFh |
32 | ldd (hl),a | 末尾を「やめる」に |
32 | ldd (hl),a | 個数を255個に |
3E | ld a,01 | |
01 | ここで加えたいアイテムを指定(この例ではマスターボール) | |
77 | ld (hl),a | アイテムの種類書き換え |
C9 | ret |
14番目バグでやっていることの応用的な奴。あらかじめ2番目に増やしたい(0個にしたい)道具を置いておくこと。
初代ポケモンにおける0個は256個としても扱え、1個減らすと255個になるが、1個増やすと1個になってしまうことと、0個のアイテムはポケスタ金銀で表示されないことに注意。
あと255個のアイテムがあるときに上のアイテムを消さないようにすること。システムがアイテムの255個を「やめる」と誤認して所持数がずれてしまう。
環境次第で頻繁に使うコードになるため、ポケモンのステータス内で仕込んでおくとスムーズに実行できるかも?
ちなみにAFhではなく97hを使っているのは、技「とける」に相当するため。
5かい用プリンの技を、とける→わざマシン34→わるあがき→わざマシン10の順にし、ID上桁にC9hを仕込むことでコンパクトにまとまる。
プリンをオムスターにして、(りゅうのウロコ)→わざマシン34→わるあがき→わざマシン10→わざマシン01でもいい。
97 EA
A5 D2 C9
97 ;sub a
EA A5 D2 ; ld (D2A5),a
C9 ; ret
; ヅラめョデ
11 A5 D2 ; ld de,D2A5
AF ; xor a
12 ; ld (de),a
50 ; ld d,b
; の
C9 ; ret
14番目バグでわざマシン01を埋め込むなどの方法で6文字目に「の(C9h)」を仕込めれば一応1匹に収まる。
; がめぜレぷ
26 D2 ; ld h,D2
2E A7 ; ld l,A7
46 ; ld b,(hl)
50 ; ld d,b
; ぽじじぷじ
48 ; ld c,b
2C ; inc l
2C ; inc l
46 ; ld b,(hl)
2C ; inc l
50 ; ld d,b
; じごなむデ
2C ; inc l
2A ; ldi (hl),a
C5 ; push bc
D1 ; pop de
11 ; ld (de),a
50 ; ld d,b
; ざョづぜレ
2B ; dec hl
AF ; xor a
32 ; ldd (hl),a
2E A7 ; ld l,A7
50 ; ld d,b
; どたじじど
34 ; inc (hl)
C0 ; ret nz
2C ; inc l
2C ; inc l
34 ; inc (hl)
50 ; ld d,b
; の
C9 ; ret
道具3番目の個数をアドレス下位、4番目の個数をアドレス上位とし、5番目の個数をそのアドレスに書き込むコード。
実行後、アドレスを一つ進め、5番目の個数を0にする処理まで行っている。
バイナリエディタがある現在はそこまで需要の無いコードだが…
事前の個数調整は一部を除いて14番目バグで行える。上記の道具2番目の個数を0個にするコードを利用してもいい。
手持ち4匹目のニックネームを弄りたい場合はD269h~D26Ehを指定することになるので、
道具3番目の個数を105個(入力不能文字なので空白から127を採って22個減らす)、道具4番目の個数を210個(「め」に相当)にすればいい。
道具でやる場合は以下の感じだろうか。
種類 | 個数 |
---|---|
むしよけスプレー | xx |
ねむけざまし | yy |
ミックスオレ | zz |
かみなりのいし | 169 |
わざマシン10 | 67 |
ハイパーボール | 175 |
ポイントアップ(偽) | 43 |
なんでもなおし | 192 |
ヨクアタール | 165 |
どくけし | 51 |
わざマシン01 | 不問 |
1E xx ; ld e,xx
3E 0E yy ; ld c,yy
zz ; ld a,zz
21 A9 D2 ; ld hl,D2A9
43 ; ld b,e
02 : ld (bc),a
AF ; xor a
32 ; ldd (hl),a
2B ; dec hl
34 ; inc (hl)
C0 ; ret nz
2E A5 ; ld l,A5
0B ; dec bc
34 ; inc (hl)
C9 ; ret
むしよけスプレーの個数をアドレス上位、ねむけざましの個数をアドレス下位とし、4番目の個数をそのアドレスに書き込む形式にしている。
実行後、ミックスオレの個数を0個にしつつアドレスを一つ進める処理まで行う。
処理の都合上、ニックネーム版とはアドレスの上下を逆にしている。
11 D4
D2 1A E6 F0 12 C9
11 D4 D2 ;ld de,D2D4
1A ; ld a,(de)
E6 F0 ; and a,F0
12 ; ld (de),a
C9 ; ret
; がめぜやぼ
26 D2 ; ld h,D2
2E D4 ; ld l.D4
3E 50 ; ld a,50
; にメぺござ
C6 A0 ; add a,A0 50→F0
47 ; ld b,a
2A ; ldi (hl),a
2B ; dec hl
50 ; ld d,b
; メづの
A0 ; and b
32 ; ldd (hl),a
C9 ; ret
D2D4hの下位4bitを(F0hとの論理積で)0にすることで、他の設定を保持したままメッセージ送りを一瞬で行えるようにする。
「せってい」を開くとメッセージ送りが「ふつう」に戻されてしまう点に注意。
; がめぜやョ
21 D2 ; ld h,D2
2E D4 ; ld l.D4
AF ; xor a
50 ; ld d,b
; べづの
3D ; dec a 00→FF
32 ; ldd (hl),a
C9 ; ret
D2D5hをFFhにすることで、ジムバッジをすべて取得した状態にする。
ジム戦のフラグは弄っていない。
; がよぜショ
21 D6 ; ld h,D6
2E 8B ; ld l.8B
AF ; xor a
50 ; ld d,b
; べづづの
3D ; dec a 00→FF
32 ; ldd (hl),a
32 ; ldd (hl),a
C9 ; ret
D68AhとD68BhをFFhにすることで、そらをとぶの行き先をすべて開放する。D68Bhは本来07hまででいいんだけれど
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
D68A | セキチク | タマムシ | クチバ | シオン | ハナダ | ニビ | トキワ | マサラ |
D68B | ヤマブキ | セキエイ | グレン |
タケシスルーのページより引用。
; がゆぜがざ
26 D5 ; ld h,D5
2E 26 ; ld l,26
2B ; dec hl
50 ; ld d,b
; ひルの
CB A6 ; res 4,(hl)
C9 ; ret
タケシ撃破後に消失する、ニビジムに連行してくるNPCだけを復活させることで、お手軽に超壁抜けを行えるようになる。
(強制的に連行されるのはタケシ未撃破の時のみ)
ちなみにタケシ撃破フラグだけ立てたい場合は以下のコードを使う。
(わざマシン34入手イベントの会話でニビジム連行NPCが消えるため、そちらの入手フラグも同時に立てる)
; ヅやよビプ
11 D4 D6 ; ld de,D6D4
1A ; ld a,(de)
42 ; ld b,d 上書き防止
50 ; ld d,b
; ゾたあデの
0E C0 ; ld c,C0
B1 ; or c 他のフラグを保持したままbit6、bit7を立てる
12 ; ld (de),a
C9 ; ret
壁抜けのページより引用。
11 38
CD 1A EE 02 12 C9
11 38 CD ; ld de,CD38
1A ; ld a,(de)
EE 02 ; xor a,02
12 ; ld (de),a
C9 ; ret
; がへぜボョ
26 CD ; ld h,CD
2E 1C ; ld l,1C
AF ; xor a
50 ; ld d,b
; ひガぶぶぺ
CB 05 ; rlc l
3C ; inc a
3C ; inc a
47 ; ld b,a
50 ; ld d,b
; ござロづの
2A ; ldi a,(hl)
2B ; dec hl
A8 ; xor b
32 ; ldd (hl),a
C9 ; ret
道具 | 個数 |
---|---|
マスターボール | 56 |
わざマシン05 | 10 |
わざマシン38 | 2 |
ハイパーボール | 2 |
わざマシン01 | 不問 |
01 38 CD ; ld bc,CD38
0A ; ld a,(bc) 現在の移動モード取得
EE 02 ; xor a,02 移動モードの切り替えをxor演算で行う。
02 ; ld (bc),a 切り替えた数値を移動モードに代入。
02 ; ld (bc),a 201個除けのための二重書き込み。特に意味はない。
C9 ; ret
アドレスCD38hを02hにすることで、障害物を無視して歩き回れるようになる。
実行するたびに壁抜け状態のON/OFFを切り替え可能。トレーナーに見つかるか建物に入ると壁抜け状態は終了する。
壁にぶつかって出る必要のある屋内などではOFFにしてから出ないとマップをはみ出してフリーズする。
; てッブ
C3 AC 1B ; jp 1BAC
1BAChを実行することで、そらをとぶの処理を直接行う。ハマリからの脱出用に。
…というかこれだけ短いならボックスに入れるまでもない。
そらをとぶだけなら1BB1hからでもいいのだが、エンカ不可フラグを折っているようなので念のため。
仕様上、行き先を選択した後飛び立つのはメニューを閉じてからになる。
サブルーチンの都合上、他のバージョンではコードの内容を変える必要がある。
ちなみに行先選択後すぐ飛べるようにするには以下のようにする。
; がてぜワヅ(終)ボ
26 C3 ; ld h,C3
2E A9 ; ld l,A9
11 50 1C ; ld de,1C50
; バぼねづ
19 ; add hl,de
3E C8 ; ld a,C8
32 ; ldd (hl),a
50 ; ld d,b
; てッブ
C3 AC 1B ; jp 1BAC
DFF9h(スタック内の戻り先アドレスの一部)の値をC8hにすることで、使用後メニューを閉じるアイテムのように振舞わせる。
(本来04h:5EB7hに帰ってくるところを04h:5EC8hに書き換える)
初代ではF9hが入力できないので、C3A9h+1C50hでDFF9hを作っている。(50hは終端文字から採る)
なお、直接数値を入力する形なら7バイトで済むので、努力値などにも収まる。その場合は以下の通り。
(バイナリエディタなどで間接的に実行する場合は「F8
04」→「21 F9 DF」でDFF9hを直接指定した方が無難)
F8 04 ; ld hl,sp+04 ここでDFF9を指す
36 C8 ; ld (hl),C8
C3 AC 1B ; jp 1BAC
以下、旧版(というかここの一連の処理を1BB1hで行える)
; ョべべぺぽ
AF ; xor a
3D ; dec a
3D ; dec a
47 ; ld b,a
48 ; ld c,b
50 ; ld d,b
; ぼロダぺな
3E A8 ; ld a,A8
0F ; rrca A8→54
47 ; ld b,a
C5 ; push bc 54FEをスタックに
50 ; ld d,b
; ゅにょゾゾ
E1 ; pop hl 54FEを代入
C6 E2 ; add a,E2
0E 0E ; ld c,0E
50 ; ld d,b
; ぺなギボの
47 ; ld b,a
C5 ; push bc 360Eをスタックに
06 1C ; ld b,1C
C9 ; ret
スタックしておいた360Eへ360Eh経由でバンク1Chの54FEhを実行し、そらをとぶの処理を直接行う。
jp 360Eが直接入力できないため、スタックに入れてretしている。
; てかガ
C3 B6 05 ; jp 05B6
05B6hに飛ぶことで、赤緑のはやぶさバッヂと同じ挙動(メニューを強制的に開く等)をするコード。
下記のコードだと06EAhに飛んでいるが、これだと「てゥギ」で入力できない。(実際には「めゥギ」になっているけれど)
D2 EA 06 ; jp nc,06EA
種類 | 個数 |
---|---|
ミックスオレ | xx |
かみなりのいし | 34 |
わざマシン15 | 5 |
わざマシン03 | 198 |
わざマシン34 | 143 |
わざマシン14 | 201 |
3E xx ; ld a,xx
21 22 D7 ; ld hl,D722
05 ; dec b これ自体に意味は無し
CB C6 ; set 0,(hl) 化石預けフラグを立てる
EA 8F D6 ; ld (D68F),a 復元ポケモン変更
C9 ; ret
道具からコードを実行すると、ミックスオレの個数に対応する内部コードのポケモンが化石から復元される。
化石を預ける必要が無いため、もはや変換ではない…?
ちなみにわざマシン15が5個なのは、14番目バグで「らガ」から取れるため。「らパ」でも「ら 」でも問題ない。
HP努力値上桁から書きだせば、すばやさ・とくしゅ個体値までに収まるサイズ。
21 22
D7 CB C6 FA A5 D2 EA 8F D6 C9
21 22 D7 ; ld hl,D722
CB C6 ; set 0,(hl) 化石預けフラグを立てる
FA A5 D2 ; ld a,(D2A5) 道具2番目個数参照
EA 8F D6 ; ld (D68F),a 復元ポケモン変更
C9 ; ret
道具2番目の個数に応じた内部コードのポケモンが化石から復元される。
set 0,(hl)を使っているため、復元したポケモンを引き取らずに連続実行しても大丈夫…なはず。
FA A3 D2 ; ld a,(D2A3) 手持ち道具1番目個数を参照(5かい置く前提じゃ…)
00 ; nop
EA 8F D6 ; ld (D68F),a 復元ポケモンを書き換え
C9 ; ret
これをニックネームで再現しようとすると以下のようになる。
; がめぜユご
26 D2 ; ld h,D2
2E A3 ; ld l,A3
2A ; ldi (hl),a
50 ; ld d,b
; がよぜタづ
26 D6 ; ld h,D6
2E 8F ; ld l,8F
32 ; ldd (hl),a
50 ; ld d,b
; の
C9 ; ret
手持ちのポケモンを変更する場合、アドレスは以下の値となる。
このため、アドレスの指定がやりやすく、5かいでも実行可能な手持ち4匹目(D1C0h~D1CBh)を例にする。
; がむぜひョ
26 D1 ; ld h,D1
2E CB ; ld l,CB
AF ; xor a 50 ; ld d,b
; べづづづづ
3D ; dec a 00→FF
32 ; ldd (hl),a
32 ; ldd (hl),a
32 ; ldd (hl),a
32 ; ldd (hl),a
50 ; ld d,b
; づづづづづ
32 ; ldd (hl),a
32 ; ldd (hl),a
32 ; ldd (hl),a
32 ; ldd (hl),a
32 ; ldd (hl),a
50 ; ld d,b
; づづづの
32 ; ldd (hl),a
32 ; ldd (hl),a
32 ; ldd (hl),a
C9 ; ret
努力値 個体値 |
数値 | ニモニック |
H上 | 21 | ld hl,D1C0 |
H下 | C0 | |
A上 | D1 | |
A下 | 3E | ld a,FF |
B上 | FF | |
B下 | 06 | ld b,0C |
S上 | 0C | |
S下 | 22 | ldi (hl),a |
C上 | 05 | dec b |
C下 | C8 | ret z |
AB個 | 20 | jr nz,FB |
SC個 | FB |
3E FF ; ld a,FF
1E 0C ; ld e,0C ループ回数を指定 努力値と個体値を書き換えるので12回
21 3C D1 ; ld hl,D13C 手持ち1匹目のHP努力値上桁を指す
22 ; ldi (hl),a ループ開始位置
1D ; dec e
20 FC ; jr nz,FC ループ点
C9 ; ret
7番目バグの再現的な奴。詳細は左記のページへ。
経験値上桁を直接弄ることで、再計算によるレベルアップを目指す。
; がむぜすそ
26 D1 ; ld h,D1
2E BD ; ld l,BD
BF ; cp a 事実上のnop
50 ; ld d,b
; ぼドづの
3E 13 ; ld a,13
32 ; ldd (hl),a
C9 ; ret
レベルの数値を直接書き換えた後、ふしぎなアメを使うことで、Lv.100を目指す。
; がむぜみぼ
26 D1 ; ld h,D1
2E D0 ; ld l,D0
3E 50 ; ld a,50
; にドづの
C6 13 ; add a,13 50→63
32 ; ldd (hl),a
C9 ; ret
手持ち4匹目の技1をポイントアップ3回、PP0の任意のもの(例では10まんボルト)に書き換えるコード。技1を00hにしないように。
詳細は9番目バグのページへ。
; がむぜきョ
26 D1 ; ld h,D1
2E B7 ; ld l,B7
AF ; xor a
50 ; ld d,b
; ぺゾじひげ
47 ; ld b,a
0E 2C ; ld c,2C
CB 29 ; sra c
50 ; ld d,b
; ョよンづゴ
AF ; xor a
D6 AB ; sub a,AB 00→55
32 ; ldd (hl),a
09 ; add hl,bc
50 ; ld d,b
; ぼたづの
3E C0 ; ld a,C0
32 ; ldd (hl),a
C9 ; ret
習得する技を変えたい場合は赤字の部分を技コードに合わせ、技の位置を変えたい場合は緑字の「き」を「く」~「こ」に変更する。
ポイントアップ1回にしたい場合はコード4匹目の「ぼた」を「ぼパ」に、ポイントアップ2回にしたい場合は「ぼた」を「ぼア」にすればいい。