ポケモン枠拡張

Last-modified: 2024-01-29 (月) 23:14:40

ポケモン枠拡張調査(FR) 

 まず何匹に増やしたいか決めること。800以内に留めておくのが無難。
 遭遇・捕獲フラグは832までなら問題ないと思われるが、それ以上は不明。
 遭遇情報を保存する位置の関係で、既存のセーブデータの使い回しはできない。図鑑の内容を確認する場合は
チートを使用して該当する範囲を全て0xFFで埋めていくといい。
 殿堂入りデータの管理がレベル7ビットポケモンコード9ビットになっているため
現在のところ01FF(16進数)までしか殿堂入りに登録できないので注意。

データベースの移動

 各種データベースを抜き出し、増やしたい数だけ後ろ側を拡張、各々の参照先を新たに移行させたアドレスの先頭へ書き換える。移行する必要があるものは以下の通り。サイズは10進。
0x21118C~の能力テーブルに関しては先頭アドレス+0x11(0x21119D)で参照している処理が存在するので変更し忘れないようにすること。

アドレスアドレス末尾データサイズ内容
0x1F3FB00x1F468F4バイト正面画像位置
0x1F46900x1F544F8バイト正面画像
0x1F54500x1F5B2F4バイト背面画像位置
0x1F5B300x1F68EF8バイト背面画像
0x1F68F00x1F76AF8バイト通常色パレット
0x1F76B00x1F846F8バイト色違いパレット
0x1F95E80x1F97831バイト
0x203CB80x20465F6バイト名前
0x20E9F60x20ED2B2バイト図鑑番号
0x20F5D00x2102AF8バイト技マシン習得情報
0x2103DC0x2104E92バイト※ 第三世代(ID276以降)の鳴き声
0x21118C0x213E9B28バイト能力
0x21615C0x21A1BB40バイト進化情報
0x21A1BC0x21A82B4バイトレベル技習得情報
0x39BCA80x39C3874バイトアイコン
0x39C3880x39C53F1バイトアイコンパレット
0x4041640x4047D34バイト足跡
0x40E2D00x410D2328バイト図鑑情報
0x41930E0x4196452バイト技教えリスト
0x4220680x4228785バイトアイテム使用時の表示位置
0x4515540x45278312バイト鳴き声
0x3AF2D80x3AF46B2バイト定型文の「ポケモン2」カテゴリ表記順
0x3B384C0x3B3A412バイト定型文の「ポケモン」カテゴリ表記順(手紙などで使用)
0x4089580x408C8D2バイト索引・アイウエオ順 (図鑑番号で順番を指定)
0x408C8E0x408F912バイト索引・軽い順 (図鑑番号で順番を指定)
0x408F920x4092952バイト索引・低い順 (図鑑番号で順番を指定)
0x4092960x4095CB2バイト索引・タイプ順 (ポケモンのIDで順番を指定)

 ID252~276の鳴き声を設定する作業があるため、第三世代の鳴き声リストは先頭に50byteの空きを追加する。
 鳴き声テーブル化してある場合は第三世代の鳴き声を移動させる必要はない。
 ID412~439(0x19C~0x1B7)までは画像がタマゴとアンノーンのB~?に割り当てられているので、能力の設定をしてはいけない。進化先に設定したり、野生に出すのも禁止。
 0x40E2D0からある図鑑情報の順番はポケモンのIDではなく図鑑番号による。
 移行させたデータベースの中から、ニドラン♀(ID29)の位置に当たる画像とパレットのアドレスを探し、ゲーム開始時に読まれる場所へ書き込む。
 画像は0x1317B4、パレットは0x1317B8。
 また、0x13034C、0x131760の数値を指定したいポケモンのIDに変えることで、255以内の好きな対象にできるようだ。
 定型文は、それぞれの先頭アドレスを指定している位置の4byte先にある数値が表示数を決めている。
「ポケモン」→0xFB(0x3B3AF0)
「ポケモン2」→0xCA(0x3B3A48)
 0x1FF(=511)以降のIDのポケモンは登録できない。

?????対策

 名前や画像が?????になる現象を数値を書き換えて防ぐ。
 以下のアドレスにある0xCEを0xFFに、その2byte先にあるだろう0x40を0x80にする。

アドレス内容
0xE648進化時
0xE720ボックス
0xEB64ステータス(正面画像表示時?)
0x406CE名前(これだけ処理が異なる。406D0を0x7Fから0xBFへ)
0x43746野生(通常色パレット?)
0x73DFC背面画像位置
0x73ECC正面画像位置
0x73F2C
0x9689E背面
0x969B2アイコン
0x96A36トレーナーカードのアイコン(だと思う)
0x96AD2アイコンパレット(技表示時のみ)
0x96B6Aアイコン関連の何か?
0x96BFEアイコンパレット(図鑑閲覧時のみ)

タマゴ

 タマゴに関する処理を変更する。
 0x44FB0の数値を増やしたい枠の数と同じに、0x44F90と0x44F92によって計算される数値を増やしたい枠の数+
1にする。増やしたい枠の数が偶数の場合、0x44F97をD0からDCへ。
 卵技を追加するならば、0x45288にある卵で引き継げる技の数の上限を変更。(卵技データの末尾FFFFを除いた
先頭からのデータサイズ-2)/2となっている。
 0x4583Cで指定されているアドレスを、移行した能力値の情報の先頭+0x11に書き換える。
 卵技を追加する場合は、0x21B918~0x21C1FDの卵技リストを別の場所へと移行し、参照先を書き換える。

フラグ

 遭遇と捕獲に関する情報を記録する命令を変更。実際は遭遇フラグが書き込まれる位置を後ろに回しただけで、捕獲フラグは元の位置のまま。
 遭遇情報は三回読み書きが行われ、対象も三箇所あるが、これを一回にした上で書き込む位置を変更する。遭遇と捕獲の情報は、ポケモンのIDではなく図鑑番号で管理されている。
 捕獲情報はメモリ内の0x02024510、遭遇情報は0x020245A8から開始となる。

アドレス変更箇所書き換え
0x10593407 4B1A E0
0x1058F00A 480F E0
0x1059285CC0
0x1058BE5CC0
0x1058E45CC0
0x4B81A7C00

図鑑表示項目数

 必要があれば、全国図鑑のリストの最大数を決める部分を変更する。

アドレス変更箇所書き換え
0x103374C1 20 00 01表示したい数の8倍
0x42904CD 24 64 00FF 24 A4 00
0x1046DC81 01増やしたい数-1
0x1059E481 01増やしたい数-1

 図鑑番号(元0x20E9F6~0x20ED2B)を編集し、ID412(0x19C)~439(0x1B7)までを図鑑の表示項目数の上限より後ろの番号になるように変える。
 ID0に割り当てられた番号は無く、先頭はフシギダネ(ID1)になっているので編集の際には注意。
 0x103374は「00 01」の部分で16倍の処理が行われているため、C1の部分が16倍して表示したい数の8倍になるようにしなければならない。
(例:0xC1は10進数で193、それを16倍すると3088=デフォルトの386匹の8倍の数になっている。)アセンブリが分からない人はC1の部分だけを編集しよう。
 図鑑番号は一つでも欠けた数値があってはならない。設定ミスがあると大変なことになる。
 0x42930の数値を変えると図鑑表示できなくなるところがあるので書き換えないほうがいい。

索引

索引アドレス変更箇所書き換え備考
アイウエオ順104438CD 20 40 001バイト目×2を(表示したい数-1)に3バイト目を80にすると1バイト目×4が(表示できる数-1)になる
タイプ順1044DCCD 20 40 001バイト目×2を(表示したい数-1)に3バイト目を80にすると1バイト目×4が(表示できる数-1)になる
かるい順10458C81 01表示したい数-1
ひくい順10462881 01表示したい数-1

いろんな場所にいるポケモン

 新しく「いろんな場所にいるポケモン」に登録を行う。
 拡張した分を野生に出現させないなら変更する必要はないが、そうでない場合、拡張した番号のポケモンを捕
まえる度に「いろんな場所にいるポケモン」の先頭(何も変えていないならコラッタ)が表示されてしまう。
 また、索引を拡張する場合にも登録しておく必要がある。索引に追加しただけでは、選択してもページに飛ぶことができない。
 0x411AB4~0x411AFBが各項目の設定の大元。一項目ごとに8byteが割り当てられ、前半4byteが先頭のページ情
報の参照先、後半4byteが項目の総ページ数。
 ページ情報は1ページ当たり8byte。前半4byteが表示対象のIDリストの指定先の先頭(2byte区切り。指定され
る数値は図鑑番号ではなくポケモンのID)、後半4byteが1ページ毎に表示されるポケモンの数(最大4匹)。
 ページ情報を別の場所に移し、表示対象のIDリストに新しく追加する分を設定。0x411AB4からのページ情報の
参照先と、項目の総ページ数を変更。

鳴き声

 鳴き声に関する処理の変更を行う。
 0x2103DCからのリストを移動させ、その先頭に50byte分、未使用分の鳴き声に対応する空白を入れる。
 0x42A18のアドレスを移行先の先頭(50byte分の空白は含めない)へ書き換える。
 鳴き声をテーブル化している場合はこの処理は不要。
 また鳴き声を追加する場合(テーブル化してない状態)、リストの最後(通常ならチリーン)から
56バイト分空けて新規のボイスID(図鑑番号ではないので注意)に-1した数値を入れると鳴き声が正常に動作する。

未使用分の鳴き声を設定する場合に変更する部分

アドレス変更箇所書き換え
0x42A1413 0100 00
0x42A1CEC FE05 FF

未使用分の登録とは無関係に、以下の書き換えを行う

アドレス変更箇所書き換え
0x7186E7FFF
0x71872F8 0938 0A

移行、拡張を行った0x451554からの鳴き声リストの読み込み位置の調整

アドレス書き換え
0x718B8移行先の先頭
0x718DC移行先の先頭+0xC00
0x71900移行先の先頭+0x1800
0x7193C移行先の先頭+0x2400