ポケモン枠拡張調査(FR)
まず何匹に増やしたいか決めること。800以内に留めておくのが無難。
遭遇・捕獲フラグは832までなら問題ないと思われるが、それ以上は不明。
遭遇情報を保存する位置の関係で、既存のセーブデータの使い回しはできない。図鑑の内容を確認する場合は
チートを使用して該当する範囲を全て0xFFで埋めていくといい。
殿堂入りデータの管理がレベル7ビットポケモンコード9ビットになっているため
現在のところ01FF(16進数)までしか殿堂入りに登録できないので注意。
データベースの移動
各種データベースを抜き出し、増やしたい数だけ後ろ側を拡張、各々の参照先を新たに移行させたアドレスの先頭へ書き換える。移行する必要があるものは以下の通り。サイズは10進。
0x21118C~の能力テーブルに関しては先頭アドレス+0x11(0x21119D)で参照している処理が存在するので変更し忘れないようにすること。
アドレス | アドレス末尾 | データサイズ | 内容 |
0x1F3FB0 | 0x1F468F | 4バイト | 正面画像位置 |
0x1F4690 | 0x1F544F | 8バイト | 正面画像 |
0x1F5450 | 0x1F5B2F | 4バイト | 背面画像位置 |
0x1F5B30 | 0x1F68EF | 8バイト | 背面画像 |
0x1F68F0 | 0x1F76AF | 8バイト | 通常色パレット |
0x1F76B0 | 0x1F846F | 8バイト | 色違いパレット |
0x1F95E8 | 0x1F9783 | 1バイト | 影 |
0x203CB8 | 0x20465F | 6バイト | 名前 |
0x20E9F6 | 0x20ED2B | 2バイト | 図鑑番号 |
0x20F5D0 | 0x2102AF | 8バイト | 技マシン習得情報 |
0x2103DC | 0x2104E9 | 2バイト | ※ 第三世代(ID276以降)の鳴き声 |
0x21118C | 0x213E9B | 28バイト | 能力 |
0x21615C | 0x21A1BB | 40バイト | 進化情報 |
0x21A1BC | 0x21A82B | 4バイト | レベル技習得情報 |
0x39BCA8 | 0x39C387 | 4バイト | アイコン |
0x39C388 | 0x39C53F | 1バイト | アイコンパレット |
0x404164 | 0x4047D3 | 4バイト | 足跡 |
0x40E2D0 | 0x410D23 | 28バイト | 図鑑情報 |
0x41930E | 0x419645 | 2バイト | 技教えリスト |
0x422068 | 0x422878 | 5バイト | アイテム使用時の表示位置 |
0x451554 | 0x452783 | 12バイト | 鳴き声 |
0x3AF2D8 | 0x3AF46B | 2バイト | 定型文の「ポケモン2」カテゴリ表記順 |
0x3B384C | 0x3B3A41 | 2バイト | 定型文の「ポケモン」カテゴリ表記順(手紙などで使用) |
0x408958 | 0x408C8D | 2バイト | 索引・アイウエオ順 (図鑑番号で順番を指定) |
0x408C8E | 0x408F91 | 2バイト | 索引・軽い順 (図鑑番号で順番を指定) |
0x408F92 | 0x409295 | 2バイト | 索引・低い順 (図鑑番号で順番を指定) |
0x409296 | 0x4095CB | 2バイト | 索引・タイプ順 (ポケモンの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から開始となる。
アドレス | 変更箇所 | 書き換え | |
0x105934 | 07 4B | → | 1A E0 |
0x1058F0 | 0A 48 | → | 0F E0 |
0x105928 | 5C | → | C0 |
0x1058BE | 5C | → | C0 |
0x1058E4 | 5C | → | C0 |
0x4B81A | 7C | → | 00 |
図鑑表示項目数
必要があれば、全国図鑑のリストの最大数を決める部分を変更する。
アドレス | 変更箇所 | 書き換え | |
0x103374 | C1 20 00 01 | → | 表示したい数の8倍 |
0x42904 | CD 24 64 00 | → | FF 24 A4 00 |
0x1046DC | 81 01 | → | 増やしたい数-1 |
0x1059E4 | 81 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の数値を変えると図鑑表示できなくなるところがあるので書き換えないほうがいい。
索引
索引 | アドレス | 変更箇所 | 書き換え | 備考 | |
アイウエオ順 | 104438 | CD 20 40 00 | → | 1バイト目×2を(表示したい数-1)に | 3バイト目を80にすると1バイト目×4が(表示できる数-1)になる |
タイプ順 | 1044DC | CD 20 40 00 | → | 1バイト目×2を(表示したい数-1)に | 3バイト目を80にすると1バイト目×4が(表示できる数-1)になる |
かるい順 | 10458C | 81 01 | → | 表示したい数-1 | |
ひくい順 | 104628 | 81 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した数値を入れると鳴き声が正常に動作する。
未使用分の鳴き声を設定する場合に変更する部分
アドレス | 変更箇所 | 書き換え | |
0x42A14 | 13 01 | → | 00 00 |
0x42A1C | EC FE | → | 05 FF |
未使用分の登録とは無関係に、以下の書き換えを行う
アドレス | 変更箇所 | 書き換え | |
0x7186E | 7F | → | FF |
0x71872 | F8 09 | → | 38 0A |
移行、拡張を行った0x451554からの鳴き声リストの読み込み位置の調整
アドレス | 書き換え |
0x718B8 | 移行先の先頭 |
0x718DC | 移行先の先頭+0xC00 |
0x71900 | 移行先の先頭+0x1800 |
0x7193C | 移行先の先頭+0x2400 |