Wonderland Seeker

スマホの子はTOPを見てね

13番目セレクトバグ---鞄は13で出来ている。アンリミテッドアイテムワークス---

今回取り上げるのはいわゆる13番目セレクトバグと呼ばれる、どうぐ欄のやめるよりも下にスクロールすることができるわざの仕組みについてです。

なかよしバッヂを導入する際にも活用していますね。

該当記事においても

 

13番目のポケモンのニックネームで管理していた20という枠が

【ーーーぐー】というニックネームになったことで外れたわけです

3文字目の文字でどうぐの枠を管理しているのですが”ー”は文字コード227なので

制御文字である終端のコードである50まで枠が増えた(ものと思います)

 

と記していましたが、もう少しかみくだく話をしましょうか。

まず13番目のポケモンはRAM領域のD250~で管理されている場所ということは皆様周知の事実ですよね。

そして入れ替えた先となるポケモンは、手持ち道具を管理している領域をコピーしてポケモンのデータとして無理やり記号化されるため手持ち道具の1番目~2番目の種類と個数を参照した値になるわけですね。

つまり入れ替える元となるポケモンのニックネームがそのまま手持ち道具の1~2番目の種類と個数に代わるわけです。

だから、なかよしバッヂ導入の際にふしぎなアメ227個が手持ち道具の1番目にあったわけですね。

ちなみに元々の手持ち道具の1~2番目の種類と個数を参照して無理やりポケモンとして記号化されたポケモンは当然その道具の種類と個数がポケモンとニックネームになります。ただしステータスを見るとプログラムがループされるためフリーズしますけどね。

ここで重要なのは13番目のポケモン(本来はポケモンであるはずがないのですが以下の話をスムーズに進めるためそう仮定します)のニックネームです。

ここのニックネームの3番目の文字コードが16進数で“20”に当たるため手持ちのどうぐは20種類までしか入らないように制御されています。

そして13番目のポケモンのニックネームなど本来は変更されることがないためそれでゲーム的にはOKですよね。

ここで登場するのが、13番目のどうぐにセレクトすることで行われる13番目セレクトバグです。

これにより自分の手持ちである任意のニックネームを13番目のポケモンに入れ替える

(=制御番号を変える)ことが出来ます。

最大数は255といいたいところですが、ニックネームに使用できる文字だと”ー”の227が限界です。逆に最小数はニックネーム1文字にした場合で7となります。参照数が存在しないためですね。

もしこうなった場合13番目のどうぐにセレクトが出来ないため詰みます。

 

さて、余談ですがタマムシシティかヤマブキジムに一度でも入ったことがないと13番目のポケモンと入れ替えた時点でフリーズします。

別のサイト様ではレインボーバッジが必要と明記されている場合もありますがそれは間違いです、レインボーバッジが無くてもOKです。

 

---2020/10/16追記

13番目セレクトをしたとき
4箇所目の行き先出口番号・行き先マップ番号が現在HPになります
ここが両方とも0になることはゲーム開始からトキワシティに入るまでの間を除いてありません。

そのため、トキワシティに入った後は最大HPを0(および1024の倍数+0~3)以外にしないとフリーズします。
13番目のポケモンの最大HPは
上位: 12箇所目の出口の行き先マップ番号
下位: 13箇所目の出口のY座標
なので、少なくとも出口が12箇所以上あるマップに行かない限りフリーズします。
出口が12箇所以上あるマップは
サントアンヌ号2階客室(12箇所)
タマムシシティ(13箇所)
ヤマブキジム(32箇所)
なのですが、このうちサントアンヌ号2階客室は
各出口の行き先マップ番号が0x60(サントアンヌ号2階)になっているので
出口が13箇所以上あるマップに行かない限り最大HPが1024の倍数になってしまい、フリーズしてしまいます。

そのため、サントアンヌ号2階客室に行っても、13番目セレクトでフリーズすることは回避できません。
従って、タマムシシティかヤマブキジムに行かない限り、13番目セレクトをするとフリーズしてしまいます。

まへっち様より)

 

ここで思った方もいることでしょう。

フリーズするということは見てはいけないステータスを見たのと同じ原理では?

ご明察です。

ひとことでいってしまえば、最大HPのゼロ除算が行われるためです。

というのも当時のゲームボーイのプログラム環境では掛け算と割り算が出来ないんですね。すべて足し算と引き算のループのみで計算されています。

では、どうすればいいか?

簡単です、最大HPを変更させてしまえばいいのです。

実は13番目のポケモンの最大HPは出口の行き先の数で決定されています。

その数が一定数ある場所に一度でも入れば記録されっぱなしになります。

だから、出口の行き先が多いタマムシかヤマブキジムに行く必要があったんですね。

問☆題☆解☆決☆

 

まぁそもそも最大HPが0という現象自体がまずあり得ない現象なので通常プレイでは気にすることはないです。

 

以上が13番目セレクトバグの基本的な仕組みとなります。

ここからはどうぐの21番目より下、更なる危険な領域へと突入していきましょう。

 

あ、そうだ

手持ちのどうぐが20種類未満。たとえば15種類しか持っていない場合16~20番目の空白がどうなっているか気になりますよね?

空白番目の種類=FF 個数=0 これが空白の分だけ並んでいます。

FFであるわざマシン55が0個並んでいるわけです。ただし選択することは出来ません。

つまり、初期状態だと透明のわざマシン55を20種類持っているわけですね。

 

閑話休題

現在わかっている範囲での対応表を置いておきます。

バッグ 道具番号
10/16進
道具個数
10/16進
概要
       
01 参照 参照  01が、トリガーポケモンのニックネーム4文字目、5文字目、6文字目(終了記号50)。文字数が少ない時は03や0Cが入っている
 トリガーポケモンの名前を「ーーーぐー」にすればふしぎなアメ227個なる
02 参照  
20 255/FF
000/00
001/01
000/00
 本来バッグに入れられる最大種類数。ちなみに道具が20個未満の場合「やめる」とそこから20番までの「空白」はわざマシン55=256個分として働く
21 255/FF 変動  所持金を制御する場所
 21番目個数_22番目道具名_22番目個数 = XX_XX_XX円で
 10進数がそのまま入る
22 変動 変動
23 基本固定 基本固定  ライバルの名前。25番目の個数は文の終わりを示す記号(50)で
 ここが変動するとライバルの名前が崩壊する。
 文字コードについてはこちらから
24 基本固定 基本固定
25 基本固定 080/50
26 変動 変動

 道具番号=せってい
 はやい*みる*いれかえ=01 ←マスターボール
 
ふつう*みる*いれかえ=03
 おそい*みる*いれかえ=05
 はやい*みる*かちぬき=41
 ふつう*みる*かちぬき=43
 おそい*みる*かちぬき=45
はやい*みない*いれかえ=81
ふつう*みない*いれかえ=83
おそい*みない*いれかえ=85
はやい*みない*かちぬき=C1
ふつう*みない*かちぬき=C3
おそい*みない*かちぬき=C5

 個数=現在のバッジ状況
 0個でバッジ0個、255(FF)でバッジ8個
 所持バッジの組合せ(8*8通り)によって2*16進数の数値が決まる
27 000/00 001/01  長文バグ道具(00)1個。処理待機中か否かで変わる
28 基本固定 基本固定  自分のID(00000~65535)
 道具番号_道具個数 = XX_XXを10進数にしたもの
29 変動 変動  そのマップで流れるBGMに対応する道具番号&個数
 自転車やなみのりから降りることでBGM変更が可能
30 基本同じ
変動
変動  道具番号=コントラスト、個数=今いるマップ番号
 戦闘中に個数を変えることでマップ移動が可能
31 変動 変動  199個前後。道具発掘に使われるマップ制御区域
(道具番号によって座標指定。個数はマップそのものの制御)
32 変動 変動  主人公が今いる座標。道具番号=行、個数=列
33 000/00
001/01
000/00
001/01
 主人公が31番における4マス区域の何処に居るか
 道具番号は上00か下01で、個数は左00か右01
34 変動  

 道具番号=直前にどのマップに居たか
 個数は10個だったり25個だったりでまちまち

 部屋内で道具番号を変えることでマップ移動が可能。
 ドアやそらをとぶなどによるマップ移動で更新される

 

35番目⇒現在いる場所で種類・個数ともに変動

37番目⇒個数と38番目の種類がテキストデータの読み込み部分

この個数をいじるとオブジェクトにAを押した時エラーを吐くが、4bit単位でいじることでそのマップ番号に対応したテキストデータが表示されます、これについては実験済みです。
38番目の個数と39番目の種類については
この記事をお読みください

今回は以上となります。

以下、情報提供してもらいました。

2020/10/12追記

13番目のポケモンの最大HPが0だとフリーズするとありますが、これに加えて1024n+0~3 (ただし、nは1~63の整数)でもフリーズするようです。
なお後者のフリーズ条件ですが、サントアンヌ号2階客室に入ったことがあって、タマムシにもヤマブキジムにも入ったことがないときに発生します。
どちらの場合も、現在HPが0の場合はフリーズしません。
まへっち様より)

2020/11/19追記

このバグを実行する際は、出口の場所が3か所以下のマップで行わないと

トリガーにしたポケモンが完全に元に戻らないようです。

これはフィールドに戻った時点で、出口情報が再度書き込まれるためのようです。
まへっち様より)

2021/05/03追記

13番目セレクトバグでフリーズすることがあるのは、13番目のポケモンの最大HPが0か1024で割ったあまりが0~3で、現在HPが1以上になっているため。
タマムシシティかヤマブキジムに入れば回避できる。
まへっち様より)

 

なかよしバッヂのチャートでは、出口が2か所しかない9ばんどうろで行っているので問題はありませんが、別の方法を行う際には気を付けるようにしましょう。

 

EXIT