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に示します。
出口番号 | 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のようになります。
出口番号 | 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日閲覧。