13番目セレクトバグでハマる原因と回避条件

ピカチュウバージョン以外の初代ポケモンには、13番目セレクトバグというどうぐ欄のやめるよりも下にスクロールすることができる裏技があります[1]。この裏技は、ある程度ストーリーを進めていないと、バグらせるポケモンを選んだときにハマりが起こります。これは入れ替えて出てくる手持ち13番目のポケモンのHPが、HPバーの長さ計算でハマる条件を満たしているためです。

※この記事を読む前に、HPバーについて(初代)の記事を見ることをおすすめします。

手持ち13番目のポケモン

そもそも手持ち13番目のポケモンとは、一体何でしょうか。初代ポケモンでは手持ちポケモンは6匹までであり、メモリ上でも6匹分だけの領域が確保されています。6匹目のデータより後ろには、手持ちポケモンとは別のデータが入っています。

13番目セレクトバグをした場合、バグらせるポケモンと手持ち13番目のポケモンのデータを入れ替える処理が行われます。前述の通り手持ち7番目以降のポケモンのデータは存在しませんが、ポケモンのデータを入れ替える処理ではそれを気にせず手持ち13番目のポケモンに相当する領域のデータと入れ替えが行われます。

メモリ上、手持ちポケモンのデータは以下のように配置されています[2][3]。

手持ちポケモンの数
D123h
手持ちポケモンの外見
D124h~D129h、1匹あたり1バイト
終端(手持ちポケモンを6匹持っているときに使用される)
D12Ah
手持ちポケモンのデータ
D12Bh~D232h、1匹あたり44バイト
手持ちポケモンの親名
D233h~D256h、1匹あたり6バイト
手持ちポケモンのニックネーム
D257h~D27Ah、1匹あたり6バイト

手持ち7番目以降のポケモンの外見・データ・親名・ニックネームの領域は、それぞれ手持ち6番目のポケモンの領域以降に続いているものとみなします。したがって、手持ち13番目のポケモンに相当するメモリ上の領域は、以下のようになります。

外見
D130h (手持ち1番目のタイプ1)
データ
D33Bh~D366h (現在いるマップの出口情報の一部、後述)
親名
D27Bh~D280h (捕まえたフラグ (図鑑No. 1~48))
ニックネーム
D29Fh~D2A4h (見つけたフラグ (図鑑No. 137~152)、手持ち道具所持数、手持ち道具1番目の種類・個数、手持ち道具2番目の種類)

冒頭で書いた通り、ハマりの原因は手持ち13番目のポケモンのHPにあります。手持ち13番目のポケモンの現在HPのアドレスはD33Ch~D33Dh、最大HPのアドレスはD35Dh~D35Ehです。このアドレスは、出口情報の一部分です。出口情報については次で説明します。

出口情報

出口情報とは、現在いるマップに存在する扉・階段・ワープパネルなどの出口について、出口ごとに座標と移動先を定めているものです*1。1つの出口情報は、出口のY座標・X座標・移動先出口番号・移動先マップ番号の4バイトで構成され、アドレスD32Eh以降に配置されます[4]。これとは別に、アドレスD32Dhに現在いるマップの出口の数が格納されます[4]。

出口情報とアドレスの対応を表1に示します。

表1 出口番号ごとの出口情報とアドレスの対応[4]
出口番号 Y座標 X座標 移動先出口番号 移動先マップ番号
0 D32Eh D32Fh D330h D331h
1 D332h D333h D334h D335h
2 D336h D337h D338h D339h
3 D33Ah D33Bh D33Ch D33Dh
中略
11 D35Ah D35Bh D35Ch D35Dh
12 D35Eh D35Fh D360h D361h
中略
31 D3AAh D3ABh D3ACh D3ADh

例えばマサラタウンにいる場合、アドレスD32Dhの値は03hとなり、D32Eh以降に配置される出口情報は表2のようになります。

表2 マサラタウンにいるときの出口情報
出口番号 Y座標 X座標 移動先出口番号 移動先マップ番号
0 05h 05h 00h 25h (主人公の家 1階)
1 05h 0Dh 00h 27h (ライバルの家)
2 0Bh 0Ch 01h 28h (オーキド研究所)

出口情報は、最初から始めたときは全領域が00hになっており、マップを切り替えたときか戦闘を終わらせたときに、現在いるマップに対応した情報に更新されます。このとき更新される出口情報は、出口番号0番から(現在いるマップの出口の数 - 1)番までで、(現在いるマップの出口の数)番目以降の情報はそのまま残ります*2。また、出口情報はレポートに記録されるので、リセットして続きから始めても初期化されることはありません。

手持ち13番目のポケモンのHPと出口情報の関係

手持ち13番目のポケモンのデータは、3番出口のX座標から14番出口のY座標に対応します。このうち、現在HPのアドレスは3番出口の移動先出口番号・移動先マップ番号、最大HPのアドレスは11番出口の移動先マップ番号・12番出口のY座標に対応します。これらのアドレスの値が変わる条件を述べます。

手持ち13番目のポケモンの現在HPが変わる条件

手持ち13番目のポケモンの現在HPは、ゲームを始めた時点では0です。現在HPは、出口が4箇所以上あるマップに入ったときに変わります。現在HPが始めて変わるタイミングは、最初にトキワシティ(5箇所)に入ったときです*3。一度トキワシティに入った後は、手持ち13番目のポケモンの現在HPが0になることはありません*4

手持ち13番目のポケモンの最大HPが変わる条件

手持ち13番目のポケモンの最大HPは、ゲームを始めた時点では0です。最大HPは、出口が12箇所以上あるマップに入ったときに変わります。出口が12箇所以上あるマップは、以下のとおりです(緑後期で確認)。

  • ヤマブキジム (32箇所)
  • タマムシシティ (13箇所)
  • サントアンヌ号 2階客室 (12箇所)

それぞれのマップに入った後の最大HPは、以下のようになります(緑後期で確認)。

ヤマブキジム
45585 (B211h)
タマムシシティ
35611 (8B1Bh)
サントアンヌ号 2階客室
上記2マップに入っていない場合: 24576 (6000h)
ヤマブキジム→客室の順で入った場合: 24593 (6011h)
タマムシシティ→客室の順で入った場合: 24603 (601Bh)

13番目セレクトバグでハマりを回避する条件

結論から先にいうと、13番目セレクトバグでハマりが起こらなくなる条件は、「タマムシシティかヤマブキジムに1度でも入る」です。以下で詳細を述べます。

ゲームを始めてからトキワシティに入るまでの間は、手持ち13番目のポケモンの最大HP・現在HPはともに0であるため、この時点では13番目セレクトバグを行ってもハマることはありません。しかし、この時点で道具を13種類以上持つことは不可能であるため、そもそも13番目セレクトバグはできません。

トキワシティに入ってから出口が12箇所以上あるマップに入るまでの間は、手持ち13番目のポケモンの最大HPは0・現在HPは0でない値となり、HPバーの長さ計算でハマる条件を満たしているためハマりが起こります。出口が12箇所以上あるマップのうちサントアンヌ号 2階客室だけ入った場合、最大HPは24576となります。これは1024の倍数であるため、同様にハマりが起こります。

タマムシシティかヤマブキジムに1度でも入った場合、最大HPは45585・35611・24593・24603のいずれかとなります。これらは1024で割ったあまりが4以上であるため、HPバーの長さ計算でハマる条件を満たさずハマりは起こりません。

別の回避方法として、バグらせるポケモンを外見がアネ゛デパミ゛ポケモンより下に置いて13番目セレクトバグを行うという方法があります[5]。この場合はカギカッコ内の条件を満たす必要はありません。

参考文献

[1] ありす*、13番目セレクトバグ---鞄は13で出来ている。アンリミテッドアイテムワークス--- - Wonderland Seeker、https://alice-wreath.hatenablog.com/entry/2019/11/14/114946、2022年6月14日閲覧。

[2] ゴールド、レポートデータ | POKeMON Bug HiSTORiA、http://pokemon.s20.xrea.com/bug/1st/memory.html、2022年6月16日閲覧。

[3] れんだ、D120からDFFFまでを表したCの構造体 | 8D A7 87 93 19 07 50、https://www.msmrrenda.net/~renda/select/memory_struct.h、2022年6月16日閲覧。

[4] 2P、利用者:2P/第一世代のワープバグ - ポケモンWiki

https://wiki.ポケモン.com/wiki/%E5%88%A9%E7%94%A8%E8%80%85:%EF%BC%92%EF%BC%B0/%E7%AC%AC%E4%B8%80%E4%B8%96%E4%BB%A3%E3%81%AE%E3%83%AF%E3%83%BC%E3%83%97%E3%83%90%E3%82%B0、2022年6月20日閲覧。

[5] れんだ、シュレディンガーのゼロ除算 - タマムシ未到着で道具欄拡張 | 8D A7 87 93 19 07 50、http://www.msmrrenda.net/~renda/select/07_schroedinger.html、2022年6月22日閲覧。

*1:ただし、ふたごじまなどに存在する落とし穴やポケモン屋敷に存在する上から飛び降りるマスは含みません。

*2:出口が1つもないマップに移動したときは、出口の数だけ更新されます。

*3:マサラタウンマサラタウンの建物(4マップ)は出口が3箇所以下、1番道路は出口なし

*4:マサラタウンの0番出口につながるのは主人公の家 1階のみだが、移動先出口番号はFFhとなっている。