セレクトバグ > 7番目バグ

技編(レベル100とか)

7番目の技にはそのポケモンの経験値上桁(65536の桁)が入っている。
これを適当に大きくすること上限を大きく上回る経験値にし、戦闘や育て屋で経験値を再計算させることでレベルを100にできる。

入れ替える技だが、そらをとぶ(13h)以降の技ならどの経験値タイプでもLv.100に達する。
わるあがき(A5h)までの普通の技の範囲なら問題ないため通常は気にしなくていいが、わざマシン55(FFh)とかと入れ替えると戦闘以外でレベルを上げようとするとフリーズすることがある点に注意。
これは経験値からレベルを再計算する際に無限ループが起こってしまうケースが存在するため。(戦闘だとレベル100に必要な経験値以上ならレベル100になるためフリーズしない)
各ポケモンがどの経験値タイプなのかは各自ググって

フリーズするレベル
経験値タイプ フリーズ経験値
(~16777215)
該当レベル
80万型 13265100
(CA68CCh)
255
100万型 16581375
(FD02FFh)
255
105万型 16777162
(FFFFCAh)
1
125万型 16640066
(FDE842h)
237

一応、105万型はレベル1でも経験値が0~8(9からレベル2になる)の場合は問題が起こらない。もちろんレベル100にするという目的とはかみ合わないが

参考(フリーズする原理とか):まへっち(@mahetti)氏のX(旧Twitter)ポスト

手順

  1. 道具の7番目でSELECTを押し、メニューを閉じる。赤緑初期版の場合は戦闘中に行ってもいい。
  2. 戦闘で「たたかう」を選び、適当な技でSELECTを押す。この時、先頭の技は極力選ばない方がいい。

この先は分岐となる。

とりあえずLv.100にしたい場合

戦闘でそのまま敵を倒せば、(経験値が十分なら)Lv.100になる。この場合、金銀以降と違って飛ばしたレベルの技は覚えられない。

ここでレベルが100を超えてしまう(94とかで止まる場合も怪しい)場合は見た目と中身が一致していないので、一度育て屋に預けてみるといいかもしれない。

技を揃えたい場合

技を入れ替えた後に逃げると、レベルと経験値が一致しないままポケモンを連れ歩ける。

これを育て屋に預ければ、レベル100に至る途中の技を覚えることができる。しかし、初代の仕様として秘伝技を持ったポケモンは育て屋に預けられない

もしくはレベルと経験値が一致しないまま金銀クリスタルに(タイムカプセルで)送り、戦闘(演出が長くなるので頭出し・学習装置推奨)でレベルを上げると途中の技を取捨選択することもできる。(わざテーブルはバージョン準拠になる)
原理上、ピカ版に送って育て屋に預け、ピカ版限定の技を覚えさせることも一応可能(大半は金銀で何とかなるが)

レベルを101以上にしたい場合

技を入れ替えた後に逃げるのは育て屋利用と同様だが、ボックスに預けてから引き出すと、経験値が再計算されずにレベルが再計算される。
これがLv.101以上になっている場合はふしぎなアメでレベルをさらに上げることができる。
しかし、上限突破しているレベルは戦闘を挟むと100に戻ってしまうため、あくまでステータスを見て自己満足する程度の用途となる。
また、上述のフリーズするレベル(以上ではなく該当レベルぴったり)の時はボックスや育て屋に預けないように。ボックスの場合はまだ逃がしたりポケスタで移動したりできるが、育て屋に預けてしまうと以降育て屋が利用できなくなる
それに関連して、経験値105万型のLv.246~255、125万型のLv.238~255をパソコンに預けると引き出した際レベルが下がる。

Lv.255からさらに上げようとするとLv.0になるが、これを金銀クリスタルに送ってLv.1にすると、初期技を覚えることが可能だったりする。(初代では初期技のテーブルが発生時にしか参照されないので無理)

任意コード実行でやるには

任意コード実行でLv.100にしようとする場合、2つの方法が考えられる。

  • 経験値上桁に適当な数値を入れてから再計算させる。
    • 育て屋式の再計算ルーチンが見つかれば、途中の技も覚えられそう。
  • レベルの値を99にしてからふしぎなアメを使う。

どちらもできるよう、書き換え先のアドレスは両方記載してみることにする。

経験値上桁と現在レベルのアドレス
手持ち位置 経験値上桁 レベル
1 D139 D14C
2 D165 D178
3 D191 D1A4
4 D1BD D1D0
5 D1E9 D1FC
6 D215 D228

例として、手持ち4匹目の経験値上桁やレベルの操作コードを紹介する。

手持ち4匹目の経験値上桁を13hにする

  1. がむぜすそ
  2. ぼドづの
; がむぜすそ
26 D1 ; ld h,D1
2E BD ; ld l,BD
BF ; cp a 事実上のnop
50 ; ld d,b
; ぼドづの
3E 13 ; ld a,13
32 ; ldd (hl),a
C9 ; ret

手持ち4匹目のレベルを99にする

  1. がむぜみぼ
  2. にドづの
; がむぜみぼ
26 D1 ; ld h,D1
2E D0 ; ld l,D0
3E 50 ; ld a,50
; にドづの
C6 13 ; add a,13 50→63
32 ; ldd (hl),a
C9 ; ret

ポケモン編(親名変更とか)

ポケモンの7番目は事情がかなり複雑になり、外見は(6匹埋めたことがあれば)FFh(アネ゛デパミ゛)になるのだが、中身が先頭のポケモンの親名からのデータが入れ替わることになる。
これが曲者で、親名とニックネームのデータも同時に入れ替わるため、そのまま戻してもデータが完全に戻らないという事態が発生してしまう。そのため、7番目(8~12番目含む)のポケモンを使った技は普段のセレクトバグとは勝手の違うものになる。今となっては任意コード実行を使用した方が無難と言える。(この技に限らないが)

参考資料

ポケモンの名前を変える!(裏技研究所より)

親名変更

  1. 親名を変更したいポケモンを手持ちの4匹目に、変更したい親名をニックネームに付けたポケモンを手持ちの1番目に置く。
  2. 道具の7番目でSERECT。
  3. 戦闘や姓名判断士でのポケモン選択画面で、4匹目のポケモンにカーソルを合わせA。
  4. そのまま2、3を繰り返す。

この方法で親名を変更したポケモンはこうげき~すばやさの数値がおかしくなっている(HP努力値下桁~すばやさ努力値上桁と入れ替わる)ため、一度ボックスに預ける等でステータスを再計算させよう。

ニックネーム変更

親名変更の応用で、埋め込んだ親名をニックネームに移し替える。

  1. 適当なポケモンを手持ちの4匹目に、変更したいニックネームを付けたポケモンを手持ちの1番目に置く。
  2. 道具の7番目でSERECT。
  3. 戦闘や姓名判断士でのポケモン選択画面で、4匹目のポケモンにカーソルを合わせA。
  4. そのまま2、3を繰り返す。これで4匹目の親名が変更したいニックネームに変わる。
  5. ニックネームを変えたいポケモンを手持ちの1番目に、親名を変更したポケモンを手持ちの4番目に置く。
  6. 2、3を2回行う。

 任意コード実行でやる場合

任意コード実行で親名やニックネームを書き換える場合、対応するアドレスは以下のようになる。

手持ちの親名とニックネーム
  親名 ニックネーム
1 2 3 4 5 6 1 2 3 4 5 6
1文字目 D233 D239 D23F D245 D24B D251 D257 D25D D263 D269 D26F D275
2文字目 D234 D23A D240 D246 D24C D252 D258 D25E D264 D26A D270 D276
3文字目 D235 D23B D241 D247 D24D D253 D259 D25F D265 D26B D271 D277
4文字目 D236 D23C D242 D248 D24E D254 D25A D260 D266 D26C D272 D278
5文字目 D237 D23D D243 D249 D24F D255 D25B D261 D267 D26D D273 D279
6文字目 D238 D23E D244 D24A D250 D256 D25C D262 D268 D26E D274 D27A

下位アドレスに入力不能文字が多く、起点を決めるには一工夫必要。
例として、手持ち4匹目のニックネームを5匹目と同じにするコードを紹介する。

手持ち4匹目のニックネームを5匹目と同じにする

  1. がめぜ空ョ
  2. ひラぶゾさ
  3. ぺなヅめめ
  4. ひジゾギぱ
  5. ぺガの
; がめぜ空ョ
26 D2 ; ld h,D2
2E 7F ; ld l,7F
AF ; xor a
50 ; ld d,b
; ひラぶゾさ
CB A5 ; res 4,l
3C ; inc a
0E BB ; ld c,BB
50 ; ld d,b
; ぺなヅめめ
47 ld b,a
C5 ; push bc
11 D2 D2 ; ld de,D2D2
50 ; ld d,b
; ひジゾギぱ
CB 0B ; rrc e
0E 06 ; ld c,06
44 ; ld b,h
50 ; ld d,b
; ぺガの
47 ; ld b,a
05 ; dec b
C9 ; ret

サブルーチン011Bhは、hlレジスタで示したアドレスからdeレジスタで示したアドレスに、bcレジスタで示したサイズのコピーを行うものとなる。
そのため今回はhlレジスタにD26Fh、deレジスタにD269h、bcレジスタに0006hを入れることを目標とする。
6Fhは7Fhをres 4する形で作り、69hはD2hをrrcする形で作っている。
011Bhへのジャンプは01hが入力できないため、bcレジスタで011bhを作ってスタックに入れてretする形で実現している。(終了処理のretは飛んだ先で賄う)
応用で主人公(D11Dh~)やライバル(D2CEh~)の名前を書き換えることも可能。

赤緑後期版なら上記のコードで大丈夫だが、サブルーチン011Bhが使用できない場合のために、未使用版も付録する。
ループの都合上、ボックスの6匹目から記述する形にする。(1匹目に「てウん」を添えれば1匹目からも実行できる)

  1. がむぜ空ョ
  2. ひラヅめめ
  3. ぱひジゾギ
  4. ごデドプそ
  5. ゼつナんの
; がめぜ空ョ
26 D2 ; ld h,D2
2E 7F ; ld l,7F
AF ; xor a
50 ; ld d,b
; ひラヅめめ
CB A5 ; res 4,l
11 D2 D2 ; ld de,D2D2
50 ; ld d,b
; ぱひジゾギ
44 ; ld b,h
CB 0B rrc e
0E 06 ; ld c,06
50 ; ld d,b
; ごデドプそ
DE94:
2A ; ldi a,(hl)
12 ; ld (de),a
13 ; inc de
42 ; ld b,d
BF ; cp a
50 ; ld d,b
; ゼつナんの
0D ; dec c
C2 94 DE ; jp nz,DE94
C9 ; ret

付録:7番目ポケモンのデータ
ポケモン情報 対応データ アドレス
外見 手持ち終端(基本FF) D12A
中身 1匹目親名1文字目 D233
現在HP上桁 1匹目親名2文字目 D234
現在HP下桁 1匹目親名3文字目 D235
引き取りレベル 1匹目親名4文字目 D236
状態異常 1匹目親名5文字目 D237
タイプ1 1匹目親名終端 D238
タイプ2 2匹目親名1文字目 D239
持ち物 2匹目親名2文字目 D23A
技1 2匹目親名3文字目 D23B
技2 2匹目親名4文字目 D23C
技3 2匹目親名5文字目 D23D
技4 2匹目親名終端 D23E
親ID上桁 3匹目親名1文字目 D23F
親ID下桁 3匹目親名2文字目 D240
経験値上桁(65536) 3匹目親名3文字目 D241
経験値中桁(256) 3匹目親名4文字目 D242
経験値下桁(1) 3匹目親名5文字目 D243
HP努力値上桁 3匹目親名終端 D244
HP努力値下桁 4匹目親名1文字目 D245
こうげき努力値上桁 4匹目親名2文字目 D246
こうげき努力値下桁 4匹目親名3文字目 D247
ぼうぎょ努力値上桁 4匹目親名4文字目 D248
ぼうぎょ努力値下桁 4匹目親名5文字目 D249
すばやさ努力値上桁 4匹目親名終端 D24A
すばやさ努力値下桁 5匹目親名1文字目 D24B
とくしゅ努力値上桁 5匹目親名2文字目 D24C
とくしゅ努力値下桁 5匹目親名3文字目 D24D
こうげき・ぼうぎょ個体値 5匹目親名4文字目 D24E
すばやさ・とくしゅ個体値 5匹目親名5文字目 D24F
技1PP 5匹目親名終端 D250
技2PP 6匹目親名1文字目 D251
技3PP 6匹目親名2文字目 D252
技4PP 6匹目親名3文字目 D253
レベル 6匹目親名4文字目 D254
最大HP上桁 6匹目親名5文字目 D255
最大HP下桁 6匹目親名終端 D256
こうげき上桁 1匹目ニックネーム1文字目 D257
こうげき下桁 1匹目ニックネーム2文字目 D258
ぼうぎょ上桁 1匹目ニックネーム3文字目 D259
ぼうぎょ下桁 1匹目ニックネーム4文字目 D25A
すばやさ上桁 1匹目ニックネーム5文字目 D25B
すばやさ下桁 1匹目ニックネーム終端 D25C
とくしゅ上桁 2匹目ニックネーム1文字目 D25D
とくしゅ下桁 2匹目ニックネーム2文字目 D25E
親名1文字目 1匹目ニックネーム1文字目 D257
親名2文字目 1匹目ニックネーム2文字目 D258
親名3文字目 1匹目ニックネーム3文字目 D259
親名4文字目 1匹目ニックネーム4文字目 D25A
親名5文字目 1匹目ニックネーム5文字目 D25B
親名終端 1匹目ニックネーム終端 D25C
ニックネーム1文字目 捕まえたフラグ1~8 D27B
ニックネーム2文字目 捕まえたフラグ9~16 D27C
ニックネーム3文字目 捕まえたフラグ17~24 D27D
ニックネーム4文字目 捕まえたフラグ25~32 D27E
ニックネーム5文字目 捕まえたフラグ33~40 D27F
ニックネーム終端 捕まえたフラグ41~48 D280

上記の通り、ただでさえ1匹目のニックネームが二重に入れ替わることに加え、入れ替えるポケモンの位置によって親名も二重に入れ替わってしまう。
3~6匹目の場合は4回の入れ替えで元に戻せるが、1・2匹目の場合はニックネームの入れ替えが三重に行われる関係上10回も入れ替えないと完全に元に戻らなくなる。

タグ:

+ タグ編集
  • タグ:
最終更新:2024年04月20日 14:30