5かいバグとは、ポケットモンスター赤・緑・青・ピカチュウに存在する、任意コード実行ができるバグである。
本記事執筆時点では「5かい」「てふ(てへ)」「なかよしバッヂ」「はやぶさバッヂ」で任意コード実行ができることが発見されている。
「5かい」「てふ(てへ)」「なかよしバッヂ」が赤緑青共通で、「はやぶさバッヂ」がピカチュウ版で使える。
概要
わざマシン・ひでんマシン以外のアイテムを使う場合には、ジャンプテーブルからアイテムの内部コードを元に各アイテムの効果処理を行うサブルーチンのアドレスを取得し、それを実行することでアイテムの処理を行う。
このジャンプテーブルは正規のアイテムの分しか用意されておらず、バグアイテムはジャンプテーブルの範囲外から不正なデータを効果処理ルーチンのアドレスとして読み込み、実行してしまう。そのため無限ループ、スタックを破壊しフリーズ、最悪の場合「フアイルの データが こわれています!」等の残念な結果となる。
しかし、今までフリーズするだけで終わるとされてきたバグアイテムのうちいくつかが、プレイヤーが操作可能なメインメモリ上のアドレスを効果処理ルーチンとして実行することが発見された。これが「5かいバグ」の始まりである。
5かい
「5かい」を使うと、アドレスD123hにジャンプする。
ここは手持ちポケモンのデータが記録されている領域であり、ポケモンの種類・技・ニックネームを調整することでプログラミングを行う。
最初に発見されたコード実行方法であり、「5かいバグ」の名前の元となった。
てふ(てへ)
「てふ」は赤版での名称で、緑版では「てへ」、青版では判別不能なバグ名称。
ジャンプ先はD806hで、本来なら現在マップの野生ポケモンの出現率やレベル・種類が記録されている領域である。
トキワシティのヨッパライから捕獲チュートリアルを受けると、一時的に主人公の名前が「おじいさん」に変更される。元の名前はD806h~D80Bhに退避し、チュートリアル終了時に主人公の名前が元に戻る。このとき出現率に関わるデータは0でクリアされるが、レベル・種類は主人公の名前のままである。
「てふ」を使うとこの主人公の名前の残骸をプログラムとして実行するので、名前を事前に調整しておくことで任意のコードを実行できる。
名前の長いバグアイテムである。画面左上に50hのマップチップが存在しないとバッファオーバーフローを起こしてフリーズするため、使用できる場所に限りがあるのが難点。
なかよしバッヂ
「なかよしバッヂ」を使うと、アドレスD983hにジャンプする。
ここはサファリゾーンの残りボール数が記録されているが、肝心なのはその直後に、育て屋に預けたポケモンのデータが記録される領域が存在することである。預けたポケモンのデータの最初にニックネームのデータがあるので、ニックネームを調整してアイテム欄などにジャンプさせるのが一般的である。
コード実行のための調整の簡単さは、赤緑青で使える3アイテムのうち最強である。(筆者の感想です)
はやぶさバッヂ
ピカチュウ版ではプログラムが大幅に変更されたためか上記3アイテムは使えないが、その代わり「はやぶさバッヂ」を任意コード実行に利用できる。
ジャンプ先はD4CAhで、ここはパソコンに預けたアイテム9番目の種類を指すアドレスである。アイテムの内部コードと所持数でプログラミングを行う。
ただし、初期版ではジャンプ先がDDCAhとなっており、こちらは現在使用中のボックス5匹目のポケモンの親名3文字目からになるため、コードの書き方が大きく異なる。
かいがらバッヂ
こちらもピカチュウ版限定。
初期版・後期版共にジャンプ先はD9B2hで、ここは現在使用中のボックスの預け数になっている。
その直後には預けているポケモンの外見が入るので、外見でジャンプ命令を書き込むことで他のものと同様のコード実行が可能になる。
預け数がそのまま命令として読み込まれる関係上、24匹のポケモンを預けていると思わぬところにジャンプして事故の要因になる点に注意。
無難なものだとボックスにポケモンを30匹預けて2匹目から外見C3h(アム゛)→トランセル→外見DEh(名無し)の順に入れることでボックス5匹目のニックネームから実行可能にするといった感じか。
関連動画
関連項目
- 1
- 0pt