ほうこうレポート

ほうようポケモン、こうもりポケモン。

【どこかしらドア】全ポケモンゲームから選んだ爆笑バグをできる限り詳しく紹介するーその2

はじめに

クロサナです。
ポケットモンスターの変な話題が大好きなので、一度ここで僕が知っているポケモンの笑い話の一部でもまとめておこうかなと思い。


しばらくの間、僕が知ったときにめちゃくちゃ笑ったバグに関して知ってることと調べたこと記事にします。

バグじゃないやつは、余談とします。

どこかしらドアとは?

初代ポケモンのAny% No Save Corruption レギュRTAで使うバグです。
殿堂入りまでの世界記録は11分27秒らしい。

ちなみにこれでも初代は全力を開放していなくて、
レギュタイトルにある通りレポートバグを解禁すると
1分17秒577
まで短縮されます。ばかすぎる。


レポートバグの話はよくて、どこかしらドアの話。


簡単に言うと、
ライバルの家のドアをくぐると7番道路にワープしたり
タマムシデパートに入ると殿堂入りの部屋にワープしたりする

バグです。


起動条件

ものすごいことをしているバグなのに起動条件がバリ簡単で
バッグの2番目の道具でセレクトバグやるだけ。

(正確に言うと違う)↓

表示する

正確には、
てもちの1番目のポケモンを「やめる」と入れ替えることで起こるバグなので
手持ちのポケモンの数+1個めの道具でセレクトバグをすることになる。

これをやるのが大体ゲーム開始直後の手持ち一匹状態なので、バッグの2番目というのが一番有名。

セレクトバグっていうのは流石に有名ですが、
バッグの道具欄で入れ替え操作(セレクトボタン)を押すことに派生して起こる色んなバグのこと。
「データを入れ替える」っていう動作がバッグを閉じても残っているせいで、本来想定していない色んなデータを入れ替えられてしまうバグです。
それを最大限悪用したのがこの「どこかしらドア」。





なんでそんなバグが?

このバグ、動作原理が面白い。

て「どく」状態

ポケモンの状態異常に「どく」状態ってあるじゃないですか。
1ターンごとにHPが減っていくやつ。


あれ、第4世代まではフィールドでもダメージが入っていたんですよ。
4歩or5歩、歩くごとに毒のポケモンに1ダメージ。

これは初代からある仕様で、フィールド上で4歩歩くごとに手持ちのポケモンにダメージが入るわけです

この現象の内部動作について、
他の作品は知りませんが、

初代だと

  1. 4歩歩くごとに手持ちのポケモンを全て確認する
  2. 毒状態のポケモンがいた場合画面を揺らし、HPを-1する

というプログラムが走るらしいです。

このうち、1番の方に問題があった。

「手持ちのポケモンを全て確認する」ってどうやるの?

「手持ちのポケモンを全て確認する」ってのをプログラムでどう表現しているかというと、

チェック対象のポケモンの種族が「やめる」になるまでチェックを続ける
という処理をしてます。


画像は金銀ですが、ポケモン名の↓に「やめる」がありますよね。
これを検知して、次のポケモンが「やめる」だったら手持ちのポケモンを全部検査したなと判断してプログラムを終了するわけです。

※わかる人のために補足すると、やめる=図鑑ナンバー255(FF)のポケモンということ。「アネ゛デパミ゛」と言った方が伝わるかも?

さぁセレクトバグをしよう

これを元に、セレクトバグをやります。

今手持ちは始めたばかりのデータなので、例えばヒトカゲ1体とします。

これは内部データ上は
「ヒトカゲ」「やめる」の2匹の手持ちを持っている
という扱いになるわけです。

さて、バッグの2番目でセレクトをして……
手持ちの先頭、1番目にいる「ヒトカゲ」を選択。

ポン!

手持ちが
「やめる」「ヒトカゲ」の順番になります。

普通やめるとヒトカゲは入れ替えられないはずなのに、セレクトバグで入れ替わっちゃった!





ここで毒のフィールド効果を思い出してください。
次のポケモンが「やめる」になるまで手持ちのポケモンが毒かどうかをチェックする。


最初のポケモンが「やめる」になってしまったら、プログラムが終わらなくなってしまう……!


どうなってしまうかというと……。


手持ちのポケモン情報の先、

本来バッジの数やIDの部分、マップの情報なんかとして格納されているデータを、
無理矢理ポケモン情報として解釈して読み込んでしまう

ことになります。

そしてもしも
そのマップやらの情報を無理やり読み込んだポケモンが毒状態と判定されたら?



そのポケモンのHPとして判定されたマップデータや道具データなどの内部数値が4歩ごとに1減っていく


という現象が起きるわけです。







どこかしらドア、解明

マサラタウンで、手持ち2番目のセレクトバグをしました。



このとき、
ライバル家のドアの接続先の情報を手持ちの199番目のポケモンが含んでいます。



具体的には、ライバルの家のドアの接続先は、199番目のポケモンのHP情報として読み込まれてしまいます。
そしてこの199番目のポケモン、毒判定を受けています。




4歩歩いたら、199番目のポケモンに毒ダメージが入ります。



毒ダメージが入ったらどうなる?

HPの数字が変わる。

つまり、
ライバルの家のドアの接続先情報が毒ダメージで書き換わってしまう


というわけ。

逆に接続先情報の内部番号を特定して、毒ダメージを入れ続けて調整してやれば好きな場所にワープができる。

これがどこかしらドアの実態、らしい。



おわりに

他のセレクトバグはデータを入れ替えること自体をバグにするじゃないですか。
7番目で経験値データを入れ替えることでレベル100にしたりとか。
どこかしらドアはその入れ替えに限らないデータの波及の仕方ですごく好きです。
手持ちの199番目のポケモンに毒ダメージを入れるとかいう単語面白すぎるし。

小中学生時代ネオグリーンを読んで育ったものでね……。
g-modoki.s59.xrea.com





参考元

参考というか、この記事で仕組みを勉強しました。
どこかしらドア自体は昔から知っていたけれど何回かやって失敗したこともあったので、
この記事を知った当時はめっちゃ納得したし嬉しかった。
alice-wreath.hatenablog.com




雑コラサムネ
ポケモンがいるとまぁまぁいい感じになるんだけどいないときついっすね