どうも、バグポケ投稿者のありす*です。
なんでも、2021/10/25にガナヒビ様の動画においてこちらの記事が参考にされたようで、久しぶりに自分で読み返したところ気になっていた箇所が残っていたので追記・編集をしてみました。(2021/10/27)
では、【どこかしらドア】についての解説をしましょう。
ググれば、ポケモンの裏技サイトが出てくるしバグをよくしているトレーナーなら使ったこともあるかと思うくらいにはメジャーなバグ技のひとつです。
このなかよしバッヂ導入チャートでも使っていますね。
このドアを使った方は歩数を変えながらどこにワープできるのか試した方もいることでしょう。
しかし、なぜワープできるのか?という原理を知っている方は少ないのでないかと思います。
というわけで、
1日そのものフルに使ってまで原理を解明してきました
や、原理自体は知ってたんですけど実際にメモリ見るのと仮説が正しいのか確認してたら、思いのほか時間かかっちゃったんですよ……bgbでDebuggerから見るくらいしか方法なくて
まず
ライバル宅のドアがなんでワープ装置になるの?
ってなりますよね。
ライバル家のドアの移動先はD335にアドレスしている
ということを頭に入れてください。
では普通のポケモンでの話をします。
「どく」状態ってありますよね。
そうです、ストーリーだとビードルやドガースから貰いやすい状態異常のことですね
ポジるという言葉が浮かんだ兄貴は走ってどうぞ。
フィールド上だと4歩ごとに1ダメージと視覚ダメージをくらいます。
この処理、実は手持ちのポケモンだけではないんですね。
次に処理するポケモンが終端コードFFになるまで毒の処理がつづきます
プログラミング用語でいえば番兵(Sentinel)データで書かれていました。
フィールドで「どく」状態ならばメソッドが呼び出されています。
この処理に付け入る隙が生じた、というのが原因なのです。
というのも、この処理は本来であれば手持ちポケモンの最後には、
⇒やめる、つまり終端コードFFがあること前提だから問題がないわけです。
手持ちポケモンの最後に終端コード……。
そうです。
手持ちのポケモン自体に終端コードFFhがいると
次に処理するポケモンも終端コードFFhにならないので
終端コードFFhを見つけるまで一生処理を続けてしまいます
するとどうなるか?
ゲームを開始した直後、具体的には最速で行えるタイミングなら
メモリが綺麗なので(ほとんどのメモリが00ばかり)
ステータス、ずかんを超えて手持ちどうぐ終了のセンチネルまで処理を続けるのです
ちなみにステータスの近くにIDのメモリがあるのでここにFFhが含まれる数字があればこのFFを終端コードとして読み取って処理はそこで止まります。
当然ですが、ステータス自体にFFhがあってもダメです。
具体的には
経験値を管理している3byteの数字・努力値を管理している合計10byteの数字・攻撃、防御の個体値をセットで管理している1byteの数字・素早さ・特殊の個体値セットを管理している1byte
以上のメモリになります。
そのためどこかしらドアをする際はID厳選が必要になる訳ですが
256の倍数-1のIDなんて引くほうが確率低いのでそこまで気になりません。
もちろん、個体値についても中々引き当てませんね。2Vなんてそう出ませんよ。
さらに細かく条件を付けくわえると
~どこかしらドアが失敗する条件~
・IDにFFhが入っている(00255、00511、00767……65023、65279、65280~65536等)
・取得経験値にFFhが入っている(99、199、9900等)
・攻撃・防御、もしくは素早さ・特殊がV個体
・努力値にFFhが入っている
・0xD335(手持ち12番目のポケモンのぼうぎょ実数値上位Bit)のミラー領域である0xF335(手持ち199番目のポケモンの現在HP下位Bit)が反映されないハード
つまり0xD125~0xD12BまでのメモリにFFhが入ってないデータであることですね。
で、処理を続けていくと手持ちのどうぐまでもが、手持ちのポケモンとして処理されてしまうのです。
この場合、ポケモンでないデータがコピーされポケモンのステータスとして描写されるのですが、
199番目のポケモンのHPアドレスがD335とリンクしています
そしてそのポケモンは毒状態になっているので4歩ごとに1ダメージ受けます。
ここで頭に入れるよう言ったアドレス、覚えていますか?
そう、D335が出てきました。
このD335とは?
なんと、ライバル家のドアの移動先アドレスのことです。
さらに199番目の現在HPが移動先のマップ番号に対応しているのです。
これこそが、ライバルの家から自在にワープできる仕組みだったのです。
さて、マップ番号なんて解析している方ですら覚えていないので表を置いておきましょう。
※10進数/16進数/マップ
フリーズ地点はマップ自体用意されていません
バグ空間はアニメーションの挙動があることからマップに描写される動くオブジェ制御用の場所……かもしれません
赤文字は没マップです、3つはBGM違いですが4Eは没テキスト付き
00 | 00 | マサラタウン | |
01 | 01 | トキワシティ | |
02 | 02 | ニビシティ | |
03 | 03 | ハナダシティ | |
04 | 04 | シオンタウン | |
05 | 05 | クチバシティ | |
06 | 06 | タマムシシティ | |
07 | 07 | セキチクシティ | |
08 | 08 | グレンタウン | |
09 | 09 | セキエイこうげん | |
10 | 0A | ヤマブキシティ | |
11 | 0B | フリーズ | |
12 | 0C | 1ばんどうろ | |
13 | 0D | 2ばんどうろ | |
14 | 0E | 3ばんどうろ | |
15 | 0F | 4ばんどうろ | |
16 | 10 | 5ばんどうろ | |
17 | 11 | 6ばんどうろ | |
18 | 12 | 7ばんどうろ | |
19 | 13 | 8ばんどうろ | |
20 | 14 | 9ばんどうろ | |
21 | 15 | 10ばんどうろ | |
22 | 16 | 11ばんどうろ | |
23 | 17 | 12ばんどうろ | |
24 | 18 | 13ばんどうろ | |
25 | 19 | 14ばんどうろ | |
26 | 1A | 15ばんどうろ | |
27 | 1B | 16ばんどうろ | |
28 | 1C | 17ばんどうろ | |
29 | 1D | 18ばんどうろ | |
30 | 1E | 19ばんすいどう | |
31 | 1F | 20ばんすいどう | |
32 | 20 | 21ばんすいどう | |
33 | 21 | 22ばんどうろ | |
34 | 22 | 23ばんどうろ | |
35 | 23 | 24ばんどうろ | |
36 | 24 | 25ばんどうろ | |
37 | 25 | マサラ自宅1階 | |
38 | 26 | マサラ自宅2階 | |
39 | 27 | マサラライバル宅 | |
40 | 28 | オーキド研究所 | |
41 | 29 | トキワPC | |
42 | 2A | トキワFS | |
43 | 2B | トキワ南民家 | |
44 | 2C | トキワ北民家 | |
45 | 2D | トキワジム | |
46 | 2E | ディグダの穴ニビ側 | |
47 | 2F | トキワの森北ゲート | |
48 | 30 | 2ばんどうろ民家 | |
49 | 31 | 2ばんどうろゲート | |
50 | 32 | トキワの森南ゲート | |
51 | 33 | トキワの森 | |
52 | 34 | ニビ博物館1階 | |
53 | 35 | ニビ博物館2階 | |
54 | 36 | ニビジム | |
55 | 37 | ニビ北民家 | |
56 | 38 | ニビFS | |
57 | 39 | ニビ南民家 | |
58 | 3A | ニビPC | |
59 | 3B | おつきみやま1階 | |
60 | 3C | おつきみやまB1階 | |
61 | 3D | おつきみやまB2階 | |
62 | 3E | ハナダ泥棒された家 | |
63 | 3F | ハナダ中央民家 |
64 | 40 | ハナダポケセン | |
65 | 41 | ハナダジム | |
66 | 42 | ハナダミラクルサイクル | |
67 | 43 | ハナダFS | |
68 | 44 | おつきみやまPC | |
69 | 45 | 洞窟BGMのハナダ泥棒された家 | |
70 | 46 | ヤマブキ北ゲート | |
71 | 47 | ちかつうろ(タテ)北入り口 | |
72 | 48 | そだてやさん | |
73 | 49 | ヤマブキ南ゲート | |
74 | 4A | ちかつうろ(タテ)南入り口 | |
75 | 4B | クチバBGMの地下通路南入り口 | |
76 | 4C | ヤマブキ西ゲート | |
77 | 4D | ちかつうろ(よこ)西ゲート | |
78 | 4E | タマムシBGMの完全没部屋 | |
79 | 4F | ヤマブキ東ゲート | |
80 | 50 | ちかつうろ(よこ)東入り口 | |
81 | 51 | イワヤマトンネルPC | |
82 | 52 | イワヤマトンネルB1階 | |
83 | 53 | むじんはつでんしょ | |
84 | 54 | 11ばんどうろゲート1階 | |
85 | 55 | ディグダの穴クチバ側 | |
86 | 56 | 11ばんどうろゲート2階 | |
87 | 57 | 12ばんどうろゲートシオン側1階 | |
88 | 58 | みさきのこや(マサキ) | |
89 | 59 | クチバPC | |
90 | 5A | クチバだいすきクラブ | |
91 | 5B | クチバFS | |
92 | 5C | クチバジム | |
93 | 5D | クチバ南民家 | |
94 | 5E | サント・アンヌ号船外 | |
95 | 5F | サント・アンヌ号1階 | |
96 | 60 | サント・アンヌ号2階 | |
97 | 61 | サント・アンヌ号1階 | |
98 | 62 | サント・アンヌ号B1階 | |
99 | 63 | サント・アンヌ号デッキ | |
100 | 64 | サント・アンヌ号キッチン | |
101 | 65 | サント・アンヌ号船長室 | |
102 | 66 | サント・アンヌ号1階客室 | |
103 | 67 | サント・アンヌ号2階客室 | |
104 | 68 | サント・アンヌ号B1階客室 | |
105 | 69 | フリーズ | |
106 | 6A | フリーズ | |
107 | 6B | フリーズ | |
108 | 6C | チャンピオンロード1階 | |
109 | 6D | フリーズ | |
110 | 6E | フリーズ | |
111 | 6F | フリーズ | |
112 | 70 | フリーズ | |
113 | 71 | ポケモンリーグワタルの間 | |
114 | 72 | フリーズ | |
115 | 73 | フリーズ | |
116 | 74 | フリーズ | |
117 | 75 | フリーズ | |
118 | 76 | 殿堂入りの部屋 | |
119 | 77 | ちかつうろ(タテ) | |
120 | 78 | ポケモンリーグチャンピオンの間 | |
121 | 79 | ちかつうろ(よこ) | |
122 | 7A | タマムシデパート1階 | |
123 | 7B | タマムシデパート2階 | |
124 | 7C | タマムシデパート3階 | |
125 | 7D | タマムシデパート4階 | |
126 | 7E | タマムシデパート屋上 | |
127 | 7F | タマムシデパートエレベータ |
128 | 80 | タマムシマンション1階 | |
129 | 81 | タマムシマンション2階 | |
130 | 82 | タマムシマンション3階 | |
131 | 83 | タマムシマンション屋上 | |
132 | 84 | タマムシマンション屋上部屋 | |
133 | 85 | タマムシPC | |
134 | 86 | タマムシジム | |
135 | 87 | タマムシゲームコーナー | |
136 | 88 | タマムシデパート5階 | |
137 | 89 | タマムシゲームコーナー交換所 | |
138 | 8A | タマムシ食堂 | |
139 | 8B | タマムシ南民家 | |
140 | 8C | タマムシ旅館 | |
141 | 8D | シオンPC | |
142 | 8E | シオンポケモンタワー1階 | |
143 | 8F | シオンポケモンタワー2階 | |
144 | 90 | シオンポケモンタワー3階 | |
145 | 91 | シオンポケモンタワー4階 | |
146 | 92 | シオンポケモンタワー5階 | |
147 | 93 | シオンポケモンタワー6階 | |
148 | 94 | シオンポケモンタワー7階 | |
149 | 95 | シオンフジろうじん宅 | |
150 | 96 | シオンFS | |
151 | 97 | シオン南民家 | |
152 | 98 | セキチクFS | |
153 | 99 | セキチク南民家 | |
154 | 9A | セキチクPC | |
155 | 9B | セキチクえんちょう宅 | |
156 | 9C | セキチクサファリ入り口 | |
157 | 9D | セキチクジム | |
158 | 9E | セキチクサファリいいんかい | |
159 | 9F | ふたごじまB1階 | |
160 | A0 | ふたごじまB2階 | |
161 | A1 | ふたごじまB3階 | |
162 | A2 | ふたごじまB4階 | |
163 | A3 | クチバつりオヤジ宅 | |
164 | A4 | セキチクつりオヤジ宅 | |
165 | A5 | ポケモンやしき1階 | |
166 | A6 | グレンジム | |
167 | A7 | グレン研究所入り口 | |
168 | A8 | グレン研究所応接室 | |
169 | A9 | グレン研究所研究室 | |
170 | AA | グレン研究所実験室 | |
171 | AB | グレンPC | |
172 | AC | グレンFS | |
173 | AD | グレンBGMの没グレンFS | |
174 | AE | セキエイ高原PC | |
175 | AF | ヤマブキものまね娘宅1階 | |
176 | B0 | ヤマブキものまね娘宅2階 | |
177 | B1 | ヤマブキ格闘道場 | |
178 | B2 | ヤマブキジム | |
179 | B3 | ヤマブキ北西民家 | |
180 | B4 | ヤマブキFS | |
181 | B5 | シルフカンパニー1階 | |
182 | B6 | ヤマブキPC | |
183 | B7 | ヤマブキエスパー親父宅 | |
184 | B8 | セキチク南ゲート1階 | |
185 | B9 | セキチク南ゲート1階 | |
186 | BA | サイクリングロード北ゲート1階 | |
187 | BB | サイクリングロード北ゲート2階 | |
188 | BC | サイクリングロード民家 | |
189 | BD | 12ばんどうろつりオヤジ宅 | |
190 | BE | サイクリングロード南ゲート1階 | |
191 | BF | サイクリングロード南ゲート2階 |
192 | C0 | ふたごじま1階 |
193 | C1 | グレーバッジチェックゲート |
194 | C2 | チャンピオンロード2階 |
195 | C3 | 12ばんどうろゲートシオン側2階 |
196 | C4 | クチバ中央民家 |
197 | C5 | ディグダの穴内部 |
198 | C6 | チャンピオンロード3階 |
199 | C7 | ロケット団アジトB1階 |
200 | C8 | ロケット団アジトB2階 |
201 | C9 | ロケット団アジトB3階 |
202 | CA | ロケット団アジトB4階 |
203 | CB | ロケット団アジトエレベータ |
204 | CC |
アジトBGMのバグ空間 |
205 | CD | |
206 | CE | |
207 | CF | シルフカンパニー2階 |
208 | D0 | シルフカンパニー3階 |
209 | D1 | シルフカンパニー4階 |
210 | D2 | シルフカンパニー5階 |
211 | D3 | シルフカンパニー6階 |
212 | D4 | シルフカンパニー7階 |
213 | D5 | シルフカンパニー8階 |
214 | D6 | ポケモンやしき2階 |
215 | D7 | ポケモンやしき3階 |
216 | D8 | ポケモンやしきB1階 |
217 | D9 | サファリゾーン東 |
218 | DA | サファリゾーン北 |
219 | DB | サファリゾーン西 |
220 | DC | サファリゾーン南 |
221 | DD | サファリ南休憩所 |
222 | DE | サファリトレジャーハウス |
223 | DF | サファリ西休憩所 |
224 | E0 | サファリ東休憩所 |
225 | E1 | サファリ北休憩所 |
226 | E2 | ハナダななしの洞窟2階 |
227 | E3 | ハナダななしの洞窟B1階 |
228 | E4 | ハナダななしの洞窟1階 |
229 | E5 | シオン姓名判断氏 |
230 | E6 | ハナダバッジおじさん |
231 | E7 | フリーズ |
232 | E8 | イワヤマトンネルB2階 |
233 | E9 | シルフカンパニー9階 |
234 | EA | シルフカンパニー10階 |
235 | EB | シルフカンパニー11階 |
236 | EC | シルフカンパニーエレベータ |
237 | ED | フリーズ |
238 | EE | フリーズ |
239 | EF | 通信交換ルーム |
240 | F0 | 通信対戦ルーム |
241 | F1 | フリーズ |
242 | F2 | フリーズ |
243 | F3 | フリーズ |
244 | F4 | フリーズ |
245 | F5 | ポケモンリーグカンナの間 |
246 | F6 | ポケモンリーグシバの間 |
247 | F7 | ポケモンリーグキクコの間 |
248 | F8 | バグ空間 |
249 | F9 | バグ空間 |
250 | FA | バグ空間 |
251 | FB | フリーズ |
252 | FC | バグ空間 |
253 | FD | バグ空間 |
254 | FE | フリーズ |
255 | FF | フリーズ |
さて、ライバル宅のマップ番号は39です、
そこで、終端コードFFが手持ちに居る状態で84歩進むとどうなるでしょう。
答えは毒ダメージが21回発生し(A-B)*4=Cで、
それぞれAには39、Bには18、Cには84が入ります。
(この計算式を頭に入れるとワープしたい先までの歩数計算に便利です)
よって、マップ番号18の7ばんどうろが移動先の座標になるということです。
以上がどこかしらドアの原理になります。
ちなみにタマムシマンションの左入り口も移動先がD335ですよ。
また、直接関係はない事例ですがどこかしらドアを行う時点で、
大抵がおとどけもの入手後と思いますから記述しておきます。
終端コードFFと入れ替えたあと逃げるか負けるとフリーズするのは
終端コードFFはポケモンとしてデータ領域をコピーするとレベル0最大HP0のためです
レベル0はともかく最大HP0はゼロ除算によりフリーズします
トリガーとなるバトルでは、1番目と2番目のポケモンを入れ替えてアネ゙デパミ゙化させたあとに、《たたかう》コマンドを選べばそのまま逃亡してもフリーズを回避できます。
これは、たたかうを選んだ際に最大HPをコピーすることで更新されるためです。
ただし、実際にステータスに反映されるわけではないので、その後エンカウントしてアネ゙デパミ゙を繰り出すとフリーズしてしまうので注意。
※どこかしらドアが機能する出口アドレスであるD335ですが
どく状態で書き換わる199番目のHPアドレスは
正確にはD335のミラーであるF335のアドレスを書き換えています
そのためどうしても行えないハードがあるため、その場合は諦めましょう
現在わかっている範囲での
どこかしらドアが確実に成功する実機とエミュまとめ
OK⇒GB、GBA、GBASP、SFC、3DS、レトロフリーク、bgb
不明⇒GBC(たぶん大丈夫とは思います)
NG⇒VBA、John GBAC
※3DSとJohn GBACに関しては有志からの報告からです。
OKの機種を使っているのに出来ない!という場合は、そのゲーム機がミラー領域を処理できなくなっている場合があります。
というか、ステータスかIDにFFhがないのに失敗するのはだいたいそれでしょう。