初代ポケモンをプレイしたことがある人なら、一度は耳にしたことがあるはずの「セレクトバグ」。いきなりレベル100になったり、道具が大量に増えたり、ミュウが手に入ったり——まるでゲームの常識を根底から覆すこの伝説的なバグが、なぜ起きるのか・どうすれば防げるのか・そして任意コード実行で"直す"ことまでできるのかを、この記事で完全に解き明かします。
30年以上語り継がれてきたバグの全貌を理解することで、あなたは初代ポケモンをまったく新しい視点で楽しめるようになります。🔥
🧩 セレクトバグとは?初代ポケモン最強のバグ入門
📖 セレクトバグの基本概要
セレクトバグとは、ポケモン赤・緑・青において発生する、データの入れ替えによってゲーム内のあらゆるデータを書き換えられるバグです。その名の通り、セレクトボタンを押すことで発動します。
このバグ1つから派生する現象は非常に多岐にわたります。
- ⚡ いきなりレベル100になる
- 💼 道具欄が大幅に拡張される(道具増殖バグ)
- 🚪 ライバル宅のドアの行き先が変わる(どこかしらドア)
- 🧬 水タイプのポケモンをミュウに変換できる(ミュウ変換)
- 💻 任意コード実行(ACE)も可能
これらすべてがたった1つのバグから生まれているという事実は、初めて知った人なら衝撃を受けることでしょう。
🏃 RTAでも別カテゴリーに分けられるほどの強さ
セレクトバグはあまりにも強力なため、ポケモンのRTA(リアルタイムアタック)コミュニティでも「セレクトバグあり」「なし」でカテゴリーが明確に分けられています。「あり」カテゴリーでは、なんとわずか4分半でエンディングを迎えることが可能です。
🕹️ バージョンによる違いを知っておこう
初代ポケモンには赤・緑・青・ピカチュウ版の4バージョンが存在します。重要なポイントは以下の通りです。
- 🟥🟩 赤・緑(後期版) → セレクトバグ発生
- 🟥🟩 赤・緑(初期版) → 後期版とは異なる手順でも発生
- 🔵 青版 → セレクトバグ発生
- 💛 ピカチュウ版 → セレクトバグは修正済み
本記事では、最も広く使われる後期版の手順を中心に解説します。
🔬 セレクトバグの仕組み|初期化し忘れが生んだ伝説
🧠 「入れ替えメモリ」という共通の仕組み
セレクトバグを理解するには、まず入れ替えメモリという概念を押さえる必要があります。
ポケモン赤緑では、道具・ポケモン・技の入れ替えに共通の1つのメモリ領域が使われています。これを「入れ替えメモリ」と呼びます。
仕組みはシンプルです。
- 入れ替えたいアイテムの上でセレクトを押す → 何番目で押したかがメモリに保存される
- 別のアイテムの上でもう一度セレクトを押す → メモリを参照して2つのアイテムを入れ替える
- 入れ替え完了後、メモリは0(ゼロ)にリセットされる
なお、このメモリは「0のとき=まだ1回目を押していない状態」「0以外=すでに1回押した状態」というフラグとしても機能しています。メモリを一石二鳥で使うことでRAMの節約を図っていたわけです。
⚠️ なぜバグが起きるのか?「初期化のし忘れ」
問題は、道具欄でセレクトを押した後、Bボタンで道具欄を閉じた場合に起きます。
本来であれば、入れ替えをキャンセルした時点でメモリを0に戻す処理が必要です。しかし、そのコードが存在しません。結果として、「1回セレクトを押した」という情報がメモリに残ったまま、ゲームが続行されてしまいます。
そしてこの入れ替えメモリは、道具だけでなくポケモンの並び替えや技の入れ替えでも共通して使われています。道具欄を閉じた後で戦闘中のポケモン選択画面や技選択画面に入ると、「すでに1回押した状態」と誤認識され、まったく別のデータが入れ替えの対象になってしまうのです。
エアコンのリモコンを使っていたら、テレビの電源が入ってしまった——そんなイメージです📺
🔁 なぜメニューのポケモンでは起きないのか?
フィールドのメニューからポケモン選択画面を開いても、セレクトバグは起きません。これは、メニューのポケモン画面を開く際のプログラムに入れ替えメモリを0に初期化するコードが含まれているためです。
一方、戦闘中のポケモン・技選択画面にはその初期化コードが存在しません。同じポケモン選択画面のプログラムを使いながら、初期化を行う「外側のプログラム」が異なるために、戦闘中でのみバグが発動するというわけです。
つまり、セレクトバグが生まれるには2段階の初期化漏れが奇跡的に重なる必要がありました。逆に言えば、どちらか一方の初期化が行われていれば、このバグは存在しなかったのです。
⚡ 実践!セレクトバグの基本手順
🎯 レベル100バグ(7番目セレクト)の完全手順
最も有名なセレクトバグの使い方が、いきなりレベル100にするものです。ゲーム開始からわずか3分で実行可能です。
用意するもの 🛠️
- 技を2つ以上覚えているポケモン
- 道具欄に7個以上の道具
手順 📋
- バッグを開き、7番目の道具にカーソルを合わせる
- セレクトボタンを押す(道具の左に白い三角マークが出る)
- Bボタンを2回押してバッグを閉じる
- 草むらに入るなどして野生ポケモンとエンカウントする
- 戦闘中に「たたかう」を選び、2番目以降の技にカーソルを合わせる
- そこでセレクトボタンを押す
- そのまま戦闘に勝利して経験値をもらう
この操作を「7番目セレクトBB」と呼ぶこともあります。BBはBボタン2回を意味します。
何が起きるのか? ✨
技のデータから数えて7番目のメモリは、ポケモンの経験値の上位バイトに相当しています。例えばレベル5のポッポ(経験値135)の場合、砂かけ(内部番号0x1C)と入れ替わると経験値が約183万に膨れ上がります。これは理論上Lv119に相当するため、戦闘に勝って経験値が再計算されるとレベル100に切り詰められます。
注意点 ⚠️
- 2段階進化するポケモンは最終進化形になれません(すでにLv100のため進化タイミングを逃すため)
- バグでLv100になったポケモンは、努力値を積んでいないため同レベルの正規個体より大幅に弱い
- 1番目の技でバグを起こすと別の問題が生じることがあるため、必ず2番目以降の技で行うこと
💼 道具欄拡張バグ(13番目セレクト)の手順と仕組み
🎒 道具欄拡張の完全手順
用意するもの 🛠️
- 道具13個(13種類)
- ニックネームをつけた適当なポケモン1匹(ニックネームの3文字目を伸ばし棒「ー」にする)
- 事前に玉ムシティカの山吹きジムに1度入っておくこと(フリーズ防止)
手順 📋
- 道具欄の13番目にカーソルを合わせてセレクトを押す
- Bボタンを2回押す(13番目セレクトBB)
- 野生ポケモンとエンカウントし、「ポケモン」を開く
- ニックネームをつけたポケモンにカーソルを合わせてAボタンを押す
- 戦闘を終了する
結果として何が起きるか? 💥
通常は13種類しかなかった道具欄が、大量の道具で埋め尽くされます。これは、13番目のポケモンのニックネーム(3文字目)が道具の個数を管理するメモリと同じ場所を使っているためです。伸ばし棒(ー)の内部番号は0xE3(=227)なので、道具が227個存在すると誤認識されます。
🔥 フリーズしないために必要な準備
山吹きジムに入っておく必要があるのは、最大HPの値が特殊だとフリーズ(ソフトロック)するという問題を回避するためです。13番目セレクトでは、ワープ用データがポケモンのステータスとして引き出されます。その中のある値が最大HPに入ると、HPバー表示のループが終わらなくなってしまいます。
山吹きジムのワープ先データはセーブデータに保存されているため、1度入っておけば問題を回避できます。
🔄 元に戻す方法
同じポケモンに対してもう一度13番目セレクトをかけ直すと、ほぼ元通りに戻ります。ただし、セレクトバグの最中に何らかのデータ書き換えがあると完全には戻らない場合があるため、大切なポケモンでは絶対に試さないことを強くおすすめします。
🧪 ミュウ変換バグの手順と仕組み
🌊 なぜ水タイプのポケモンが必要なのか
ミュウ変換バグを行うには、タイプ1が水タイプのポケモンが必要です。その理由は、水タイプの内部番号(0x15)とミュウの内部番号(0x15)が同じ値だからです。
🔮 ミュウ変換の完全手順
用意するもの 🛠️
- 道具13個
- 手持ちポケモン1番目に、タイプ1が水タイプのポケモン(コイキングなど)
- シオンタウンの生き物判断士の家
手順 📋
- シオンタウンの生き物判断士の建物に入る(特定のデータを準備するため)
- 道具欄の13番目でセレクトBBを行う
- 生き物判断士に話しかける
- ポケモン選択画面で1番目の水タイプポケモンにカーソルを合わせてAボタンを押す
- ポケモンが選択されたらBボタンでキャンセルする
- もう一度13番目セレクトを2回かけ直す(偶数回目のタイミングを調整する)
なぜミュウになるのか? 🧬
ポケモンのデータは「外見データ6匹分 → ステータスデータ6匹分 → おや名 → ニックネーム」という順番でメモリに配置されています。6匹を超えると、13匹目の外見データのアドレスが1匹目のタイプ1のアドレスと重複します。
セレクトバグで外見と他のデータが入れ替わる際、この重複によりタイプの値が外見の値として入るという循環が起きます。水タイプ=ミュウの内部番号0x15なので、結果的に見た目だけミュウになるのです。
注意点 ⚠️
- 中身はコイキングのままなので、育て屋に預けると元のポケモンに戻ります
- 完全なミュウが欲しい場合は別途ステータスの調整が必要です
💻 任意コード実行(ACE)との関係
🔧 セレクトバグはACEの「補助役」
セレクトバグは、任意コード実行(ACE)においても重要な役割を果たします。ただし正確には、セレクトバグ固有のACEというよりも、データの入れ替えという機能を活用してACEを準備するという使い方が一般的です。
🚀 82番目セレクトによるACE
道具欄拡張を使って82番目まで道具欄を拡張した状態で、82番目セレクトをポケモンにかけると、主人公の名前付近にプログラムが飛んでACEが実行できます。
これはポケモン入れ替えにセレクトバグを使った場合に、技のデータだけでなく画面描画のタイル初期化処理が走ることを利用しています。5番目以降の技選択画面表示でポインタが範囲外に向かい、その結果として特定の値が特定のメモリに書き込まれ、最終的にプログラムが主人公の名前に向かって飛ぶというわけです。
主人公の名前やポケモンのステータスを特定の値にしておくことで、任意の処理を実行できます。
🔧 任意コード実行でセレクトバグを「直す」挑戦
💡 修正の方針は単純明快
セレクトバグの原因は「入れ替えメモリの初期化漏れ」ただ1点です。つまり、道具欄を閉じたタイミングで入れ替えメモリに0を書き込むコードを追加すれば解決します。
🚫 失敗例1:常時初期化では逆効果
最初に試したのは、VブランクごとにRAM上のコードを実行して、毎フレーム入れ替えメモリを0にするという方法です。結果として、セレクトバグどころか道具・技・ポケモンのすべての入れ替え機能が使えなくなりました。メモリに値が入っても即座に0に戻されるため、入れ替えそのものがキャンセルされてしまうのです。
🚫 失敗例2:戦闘メモリを監視しても不完全
次に「戦闘に入ったタイミングで初期化する」という方法を試しました。戦闘状態を管理するメモリを監視して、変化があった時だけ初期化するコードです。
戦闘中のセレクトバグは防げましたが、生き物判断士や育て屋でのセレクトバグは戦闘中ではないため防げませんでした。戦闘メモリは変化しないので、監視しても意味がないのです。
✅ 成功!道具の開閉フラグを監視する
最終的に有効だったのは、「ボタン長押しを管理するフラグ」を監視する方法です。このフラグは道具欄を開くとON、閉じるとOFFになります。しかも道具開閉のプログラム内で明示的に変更されるため、意図しないタイミングで変化することがありません。
このフラグが変化した(=道具欄が閉じられた)タイミングで入れ替えメモリを0にすることで、道具・技・ポケモンの入れ替え機能を保ちながらセレクトバグのみを無効化できました。
コードの全体像(40バイト) 📝
Vブランクごとにこのフラグを監視し、変化があった際のみ入れ替えメモリを0に書き込む処理を実行します。戦闘時も生き物判断士でも、すべてのケースで確認済みです。
🔄 リセット後も効果を永続させる仕組み
RAMに書いたプログラムはリセットで消えてしまうため、VブランクコードとマップスクリプトをRAMとセーブ領域で相互補完させる仕組みを追加しました。
- VブランクコードはRAMに存在し、毎フレーム実行されるがリセットで消える
- マップスクリプトはセーブ領域に存在し、リセット後も残るがマップ切り替えで上書きされる
- 互いが互いのコードを書き直し続けることで、どちらが消えてももう片方が復元する
この仕組みにより、リセット後ロード後も修正効果が持続します。なお、電動入りすると両方同時に消えますが、その場合はソフトリセットとセーブデータ読み込みによって特殊処理が走り、どちらも無効化されます。
🆕 新規セーブデータへの引き継ぎ
さらに上を目指し、この修正状態を新しいセーブデータに持ち越す仕組みも実装しました。
通常、最初から始めるとすべてのメモリが0にリセットされます。これを特定の領域(プログラムが書かれたボックスポケモンのデータ部分)だけリセットをスキップさせることで、真っさらな状態から始めながら修正効果を引き継げます。
最終的なコードは合計252バイトです。
🚪 どこかしらドアとは?仕組みと手順
📍 セレクトバグ由来の別の有名バグ
どこかしらドアとは、ライバル宅のドアの行き先が変化するバグです。具体的には、ドアに入るまでに歩いた歩数によって行き先が変わります。
🗺️ なぜ歩数で行き先が変わるのか
2番目セレクトBBを行うと、手持ちポケモンの外見データの並びでFF(データ終端の値)が1番目のポジションに来てしまいます。本来FFは「ここでポケモンのデータが終わり」を示す値ですが、それが外見データの先頭に来ることで、毒ダメージ処理が「ポケモンのデータがはるか遠くまで続いている」と誤認します。
処理が延々と続く中で、遠く離れたメモリ(199番目のポケモンに相当するアドレス)がワープ先データと重なっています。歩くたびに毒ダメージ処理がそのメモリを更新するため、行き先がどんどん変化するというわけです。
📋 どこかしらドアの手順
用意するもの 🛠️
- 道具が2種類だけ入った状態(フレッシュウォーターとモンスターボールなど何でもOK)
- ポケモンが毒状態になっていなくてもOK(毒処理が延々と走るのは内部処理のため)
手順 📋
- バッグを開き、2番目の道具にカーソルを合わせてセレクトを押す
- Bボタンを2回押してバッグを閉じる
- 任意の歩数だけ歩いて行き先を調整する
- ライバル宅のドアに入る
歩数を管理することで、任意の場所にワープすることも可能です。RTAでは大幅なルート短縮に活用されています。
新規セーブデータでは乱数次第 ⚠️
新規セーブデータでは、特定のメモリの値次第でバグが発動しないことがあります。その場合はセーブデータを作り直した方が早い場合もあります。
🛠️ バグを直すためのコードを使う方法
📱 バイナリーエディタとは
バイナリーエディタとは、ポケモン赤緑で任意コード実行を簡単に行えるようにするゲーム内ツールです。主人公の名前やポケモンのステータスなど、プレイヤーが書き換えられるメモリを利用して、任意の処理をゲームに実行させることができます。
元々プログラムされているROMの部分を書き換えるわけではなく、RAM上に実行可能なコードを配置して読み込ませるのが基本原理です。
✅ セレクトバグ修正コードの使い方
- バイナリーエディタをゲーム内で導入する
- セレクトバグ修正コード(252バイト版)を入力する
- 実行すると、最初から始めることができる画面に移行する
- 修正効果が引き継がれた状態で新規ゲームが始まる
ロード後も道具の入れ替え・技の入れ替え・セレクトバグ無効化がすべて正常に動作することが確認されています。
バージョン別のコードは赤・緑初期版・緑後期版・青版それぞれ異なります。お使いのROMのバージョンに合わせたコードをご使用ください。
❓ よくある質問(FAQ)
❓ Q1. セレクトバグはどのバージョンで起きますか?
🅰️ ポケモン赤・緑(初期版・後期版)・青版で発生します。ピカチュウ版では修正済みで発生しません。
❓ Q2. 通常プレイ中に意図せずセレクトバグが起きることはありますか?
🅰️ あります。道具を入れ替えようとしてキャンセルした後、そのまま戦闘に入って技のカーソル移動中にセレクトを押してしまうと発動します。VTuberが生配信で意図せず起こして話題になったこともあります。
❓ Q3. セレクトバグでバグLv100にしたポケモンは強いですか?
🅰️ 弱いです。努力値がまったく積まれていない状態でLv100になるため、同レベルの正規個体と比べてステータスが大幅に低くなります。不思議な飴を使ったポケモンと同じ理屈です。
❓ Q4. ミュウ変換で作ったミュウは正規のミュウと同じですか?
🅰️ いいえ、異なります。外見だけがミュウになっており、中身は元のポケモン(コイキングなど)のままです。育て屋に預けると元のポケモンに戻ってしまいます。
❓ Q5. 修正コードを入れたら元に戻せますか?
🅰️ 電動入りするとコードが消えてリセットされます。また、修正効果が気に入らない場合はコードが書き込まれたボックスデータを削除することでも無効化できます。
❓ Q6. どこかしらドアが発動しないことがあるのはなぜですか?
🅰️ 最初にもらうポケモンの個体値やトレーナーIDに0xFF(255)が含まれているとバグの条件が早期終了してしまい発動しません。その場合は新しいセーブデータで試してみてください。
❓ Q7. ピカチュウ版ではわずか4バイトの追加でセレクトバグを修正できたとのことですが、本当ですか?
🅰️ 本当です。キャンセル時に入れ替えメモリを0にするコードを追加するだけで解決できます。公式ではピカチュウ版でこの修正が実装されました。後から任意コード実行で修正しようとすると252バイト必要になるのと比べると、リリース前のデバッグがいかに重要かがよく分かります。
❓ Q8. セレクトバグは何番目でセレクトを押すかで効果が変わるのですか?
🅰️ はい、大きく変わります。技から数えた番目によって入れ替えられるデータが変わるため、7番目なら経験値、20番目なら個体値、29番目なら実数値に届くなど、目的に応じて番目を選ぶことができます。
🎯 まとめ|セレクトバグは30年越しに「直せる」時代へ
セレクトバグは1996年の発売以来、30年近くにわたって語り継がれてきた伝説のバグです。その原因は「入れ替えメモリの初期化漏れ」というシンプルな1点のみ。しかし、その1点から生まれる影響は計り知れないほど広大でした。⚡
今やゲーム内の任意コード実行によって、このバグを永続的に無効化することも可能な時代になっています。「バグを持ってバグを制す」という逆転の発想で初代ポケモンを新たに楽しめるというのは、コアなポケモンファンにとってたまらないロマンではないでしょうか。🎮
セレクトバグの仕組みを理解したあなたは、同じゲームをまったく違う視点で楽しめるようになっているはずです。修正コードを試してセレクトバグのないポケモンを体験してみるも良し、逆にバグをフル活用してRTAや検証プレイに挑戦するも良し——初代ポケモンの世界は、まだまだ奥が深いです。🔥

コメント