Wonderland Seeker

スマホの子はTOPを見てね

【初代ポケモン】けつばんを教えて【バグポケモン】

-----------------------------------------------------------------------

○現実と虚構の区別がつかない方

○通常プレイするのが辛い方

○バグ技行為をする予定のある方

○任意コード実行にすがりたい方

○検証癖のある方

-----------------------------------------------------------------------

※この記事にはバグによる強い快感を与える内容が含まれています。

上記に該当する方はご遠慮くださるよう、あらかじめお願い申しあげます。

 

けつばん・・・

それは、初代ポケモンの深淵。闇。触れられざる禁忌です

その姿を見たものは無く、噂だけが流れ、その存在は都市伝説となっていました

英語名『Missing No.』 その名の通り彼とは遭うことも出来ないのでしょうか

 

いるさっ ここにひとりな!

 

 

そういうわけで、今回はけつばん』特集になります

ポケモンバグに関して知識が疎くとも聞いたことはあるであろうやべーやつです

 

まずは彼に関しての基本について紹介

 

けつばん』というのは文字通り”欠番”を示す記号であり、ポケモンだったものです

だった、というのは語弊がありますが開発途中においてはポケモンの枠として

(仮名:コカーナとします)例えば内部番号38h(56)にプログラムされていたとします

しかし、何らかの理由によって没案となってしまいました

その枠は未使用領域となり『けつばん』という名前を付けて保存しておいたメモリに格納されます

そう、そのコカーナの亡霊こそが彼の正体ってなるんです

 

では内部番号38hのエンカウントデータをFifth法などで呼び出すとどうなるか?

答えから言ってしまえば画面が暗転しフリーズします

なぜなら存在しない戦闘データを読み込もうとし、その結果メモリが暴走するのです

 

そのためいかなるバグを使おうとも彼と戦うことは出来ません

たったひとつの冴えたやり方を除いて、ね

 

基本が分かったところで、お次は『けつばん』の種類を見ていきます

実は彼はひとりではありません

エンカウント内部番号を見ると255パターン中38パターンが『けつばんでした

開発中に38ものポケモンが没案になった経緯が窺えますね

それに実は内部データこそ『けつばん』ですがバトル可能な個体も存在します

 

内部番号B6h、B7h(182,、183)の個体がそれに当たります

それぞれ、ニビ博物館で使われている化石のグラフィックが参照されていました

もしかすると展示用のグラフィックをポケモンデータとしてこの領域にスタックしているのかもしれませんね

そのため意図して制作された人工型けつばんと捉えることも出来ます

また、種族値は《ゲーム中に最後に読み込んだポケモン》の種族値をコピーします

そのため最後にミュウを見ていれば、個体値オール100エスパータイプけつばん(かせきのすがた)と戦えるわけです

しかし後ろ姿が用意されていないサイズが大きすぎるためプログラムを破壊してしまい、こちらが使うとフリーズします

---追記:相手ポケモンによっては後ろ姿が表示されるようです

彼らに限らず、後姿が参照されないポケモンはこちらが使うとフリーズします

※内部番号F1、F4~F5、F9、FBの5匹も後姿がありません

前述のように存在しない戦闘データを読み込もうとするからでしょう

ちなみに他の『けつばん』とバトルする際において暗転フリーズするのは前姿が参照できないためです

閑話休題

なにはともあれ、念願のけつばんと遭えたわけです

マスターボールを投げたい気持ちが芽生えてくるでしょう

ざんねんながら捕まえたあとにフリーズしてしまいます

そう易々と我が手に納まるような存在ではありません

いま相手にしているのは深淵。闇。触れられざる禁忌です

 

ここで、先ほどのたったひとつの冴えたやり方の出番となります

 

方法自体はいろいろあるのですが最も簡単な手順を記します

 

~下準備するもの~

メタモン

---13ばんどうろ、ななしのどうくつ等で捕獲可能です

はやぶさバッヂ

---13番目セレクトバグ必須です

11ばんどうろの北側のギャンブラー間近で31番目のどうぐにあります

 

~チャート~

1.わざを2つ以上覚えているポケモンとバトルします
メタモンで『へんしん』したあと、1番目のわざを2番目以降とセレクトで入れ替え
その後バトルを終了します

2.メタモンを先頭に配置し、野生のポケモンとエンカウントします

3.『たたかう』を選択すると、ものすごいことになります

Bを連打し、コマンド画面に戻ります

4.どうぐから《はやぶさバッヂ》を使用します

5.マスターボールを使用します

6.「やったー! けつばんを つかまえたぞ!」

 

ちなみに『けつばん』を捕獲した場合、ずかん説明には

ぶんるい:???ポケモン

たかさ:1.0m

おもさ:10.0kg

せつめい:コメントさくせいちゅう

(赤緑であれば空白です)

 

と記されており、開発中は仮データとしてこうした雛形を用意しておいた形跡が見て取れます

 

ちなみに使用することこそ出来ませんが、種族値は用意されています

H0 A1 B3 S0 C1 タイプ・ノーマル/かくとう

・・・これはひどい

38パターンの彼すべてこの種族値だったので、これも仮データの種族値が書き込まれていたのか、それとも別の領域をコピーしたのかどちらかと考えられます

あ、あまりにひどい能力だからバトルしたくないのか。なるほど

 

では、このたったひとつの冴えたやり方についての解説に入ります

疑問点は3つあることでしょう

・どうして『メタモン』!?

・なんで『けつばん』がでてきたの!?

・なぜそこで『はやぶさバッヂ』!?

 

上から見ていきましょう

・どうして『メタモン』!?

別にメタモンである必要はありません

一番簡単な手順を踏めるのがメタモンだったからにすぎません

というのも、一番上のわざを内部番号00の空白のわざにするのが目的だからです

しかし普通にやっていてはそんなことは出来ませんね

そこで『へんしん』の出番です

このわざを使用すると相手のわざをコピーしますよね?

しかしこのわざ、アセンブラに欠陥がありまして・・・

 

仮に《はたく》と《うたう》の2つを覚えているポケモンをコピーしたとします

するとわざリストは

内部番号90の『へんしん』から内部番号01『はたく』内部番号2F『うたう』に変化するわけです

では、バトルが終わると?

01は90に書き換えられて、2Fは00に書き換えられて、結果的に戻るわけですよね

この戻る処理に問題があるんです

と、いうのも

最後に『へんしん』があった順番の場所を『へんしん』に書き換えます

ミュウあたりで試すと挙動が分かりやすいです。3番目にあればそこが『へんしん』に戻ります

これ、本来であればあまり問題がないように思えますよね?

しかしこのゲームは、バトル中であっても習得しているわざの順番を入れ替えられます

さっきのパターンでいえば

『はたく』と『うたう』ですね。この2つを入れ替えてバトルが終わるとどうなるでしょう?

『うたう』は2番目のわざに戻され、『はたく』は1番目のわざの『へんしん』に・・・

あれ?2番目のわざなんてありましたっけ?ありませんよね

ということは参照値は00になるので・・・

『空白のわざ』『へんしん』という順番になってしまいました

これにより一番上のわざを内部番号00の空白のわざにすることが出来ましたね

 

メタモンである必要がないと言ったのは、同じ挙動をピーピーエイドでも可能だからです

たとえば、わざを2つ覚えているポケモンと4つ覚えているポケモンを用意します

わざを2つ覚えているポケモンを戦闘に出します

どうぐから『ピーピーエイド』を使用し、わざを4つ覚えているポケモンを選び
3つ目以降のわざにカーソルだけ合わせたらBでキャンセルします

すると『たたかう』を選んだ時に、カーソルの場所が記憶されており3つ目のわざにカーソルが合うのですがそのポケモンは当然3つ目のわざなど覚えていません

内部番号00の空白のわざにカーソルが合いますね

この瞬間画面は乱れ相手のポケモンは『けつばん』へと崩壊します

 

・なんで『けつばん』がでてきたの!?

そもそも、どうして相手のポケモンは『けつばん』になったのでしょうか?

トリガーが内部番号00の空白のわざにカーソルが合ったからというのは理解しましたね

では、なぜそうするとこのような現象が起きたんでしょう

その答えは画面のデータにあります

《てへ》の記事《任意エンカウント》の記事でも触れた重要な情報です

まず、内部番号00のわざとはなんなんでしょうか?

答えは無の情報です

PPもタイプもすべてが《00》の虚無魔人

ではこの無の情報にカーソルを合わせると何が起きるのか?

『てへ』の挙動と酷似します

ポケモンの情報そのものをコピーするのです

当然20byte以内に0x50が存在しないために画面のデータを読んでコピーを繰り返し、虚無から画面を描写しようとし続けます

結果、描写された画面はバトル中の背景に無数の文字列として並び画面を侵食します

『殴る』『殴る』『殴る』『殴る』『殴る』『殴る』『殴る』

そしてポケモンの情報には38hが書き込まれており、その領域がなんとちょうど相手のポケモンの内部番号に書き換わってしまいます

内部番号38hのポケモン・・・?

 

 

「そうです、あのコがぼくの畏敬するけつばん様なのです」

 

 

・なぜそこで『はやぶさバッヂ』!?

 

こうして『けつばん』と出会う。ないし造り出すことに成功したわけですが

まともなバトルなど不可能ですし、そもそもバトルが終わった瞬間にフリーズしてしまいます。勝っても逃げても捕まえてもフィールドに戻れず闇へと飲み込まれます

どんな姿をしていてもやはり『Missing No.』一筋縄じゃあいきません

 

では、勝たずして逃げずして捕まえずしてバトルを終わらせるには?

あぁ・・・だから『はやぶさバッヂ』を使う必要があったんですね

そしてこの方法で離脱しても現在エンカウントしているポケモンの情報は保存されたままですので、内部番号38hの『けつばん』を捕獲することがようやく可能になります

 

ーーー『はやぶさバッヂ』が無くとも、NPCが存在しないマップであればフリーズしません

ディグダのあなが最も便利だと思います

他には、ななしのどうくつ1F~2F・おつきみやまB1Fが該当します

が、その場合はスタートメニューを開いてからマップ移動してください。NPCが居る(居た)場所に移動した瞬間フリーズします

 

ちなみに、製造した『けつばん』とバトル中に『ポケモン』からつよさをみるでステータス確認してからバトルに戻ると彼はストライクの姿になります

見た目の種族がストライクを参照しているからでしょう

 

視点を少し変えた話をしましょう

このゲーム、グラフィックを反転することが出来ます

やり方は簡単。グラフィックが表示されない(前姿が用意されていない)ポケモンを手持ちにいれて、『つよさをみる』だけです

---捕獲した『けつばん』を利用するのが速いでしょう

すると前姿を描画できなかった際にグラフィックのパターンを読み込もうとするのでしょう、結果もう一度ステータスを見るまで全てのグラフィックが反転してしまいます

 

この状態で、『けつばん』を製造するとどうなるでしょう?

なんと捕まえられるのは

ピカチュウです

\ピカァ♪/

これはいったいどういうことでしょうか

まさか『けつばん』の正体はピカチュウ。。。

いや、反転しているのでピカチュウの正体こそ『けつばん』!?(ぇ

ちくしょうあのネズミ、偉大なるけつばんを馬鹿にしやがって!

落ち着いて真実を究明していきます

解説したように、ポケモンの情報を文字列として画面に描写させ内部番号を38hに変えることで相手ポケモンを『けつばん化』させたわけですね

しかしグラフィックを反転させるとピカチュウになってしまいました

そもそも読み取っているポケモンの情報ってなんでしょうか?

種族値データ・努力値・タイプ・ID・取得経験値・習得わざ・PP...

ですがこれは変動するデータでもあります

どんなポケモンであっても必ず38hに変えるということは変動データが参照されているとするとあり得ませんよね。その場合だと他のメモリに書き換わるはずです

ということは、絶対に書き換えられないポケモンの情報とは?

それはグラフィックです

厳密には、ポケモンそのものの姿ではなく

バトル中に表示されているグラフィックの場所です

絶対に自分は右を向き、相手は左を向くように描画されます。これはゲームの真理です

この真理をもし替えることが出来れば?

 

反転させれば、描画されるグラフィックをも変えることができます

自分は左を向き、相手は右を向いてしまいました

ということは、描画されるポケモンの情報、つまりは画面のデータも変わるわけです

 

38hを反転させると54hになります

内部番号54のポケモンとは・・・?

alice-wreath.hatenablog.com

 

そういうことです

だから、反転させると『けつばん』ではなく『ピカチュウ』が捕まってしまうのでした

 

------追記

ポケモン青ですと、前姿が無理やり参照されているため直接彼と会ってもフリーズしません

この場合、内部メモリでは図鑑No.152をみつけたポケモンとして書き込もうとします

図鑑はNo151までしかないでは?と思う方もおりますでしょうが

メモリ節制のためか、1byteに8匹分ずつ格納することで図鑑の処理を行っていまして・・・8の倍数である152まで存在しているのです

当然No.152のポケモンなど存在しないのですが、そこには便宜上未使用領域となっていますので、実質『けつばん』に該当します

ここまでよろしいでしょうか?

しかし、『けつばん』をつよさでみるから確認してみると

No.000となっています。これは未使用領域のため開発側もメモリを弄っておらず《00》のままのデータだからです

と、いうことは?

図鑑のみつけたポケモンはNo,152ですが内部データでは図鑑のみつけたポケモンはNo,000toなっており齟齬が生じます

この齟齬が条件で、なんと手持ちどうぐの6番目の個数が+128されてしまいます

この現象も原理は簡単で、図鑑データの直後には手持ちのどうぐデータが管理されています

そして図鑑No.000はメインメモリ0xD2ADで管理されており、もし見つけた場合ここの7Bit目を立たせます

そして奇しくもその部分が手持ちどうぐ6個目のデータとリンクしている、というわけでした

話が長くなりましたが要約すると

野生で『けつばん』と遭遇すると手持ちどうぐ6個目が+128個されるのでした

 

改めて、けつばん』の正体についておさらいしましょう

:没案になったポケモンの未使用領域

:彼は38パターン存在している

:出会うとフリーズする(赤緑)

種族値は最底辺

:内部番号00のわざにカーソルを合わせると相手は彼にへんしんする

:反転させるとピカチュウになる

:野生で直接出会うと手持ちどうぐ6個目が128個増える

 

また、『青』では後ろ姿があるため戦闘に出すことが可能です

しかしさまざまなデータをコピーするため不具合が発生しやすいです

バトル後に、バッジやどうぐが変動していたりBGMや座標がずれたりetc...

ありすはボックスのポケモンがすべてけつばんになったことがあります

2022/05/03追記

『赤・緑』において彼を戦闘に出すとフリーズする理由は、後ろ姿が用意されていないわけではなく、後ろ姿のサイズが巨大すぎるためにバトルデータの後に配置されている音楽データやRAMデータまでも書き換えてしまうためです。
そのため、なんらかの方法を用いて後ろ姿を通常のポケモンのサイズにしてしまえば戦闘で使用することが出来るという報告がありました

 

ちなみに、けつばんが格納されている内部番号は前後に、ほのおタイプくさタイプといった数の少ないポケモンやどくタイプみずタイプといった数の多いポケモンが多いので
開発中におけるポケモン実装の試行錯誤が見て取れます

こういった楽しみ方も面白いでしょう

 

今回は以上となります

あえて、画像は一切使用しておりません。なぜか?

けつばん』は初代ポケモンの深淵。闇。触れられざる禁忌

その正体の真偽は、、、読者の皆様にお任せします

 

EXIT