レポートのデータ構造(初代)

初代ポケモンのレポートは、SRAMに記録されます。初代ポケモンSRAMは32KiBであり、各8KiBのバンク4つ(バンク0~3)で構成されています。この記事では、各SRAMバンクごとのデータ構造を示します。

※開始アドレス・終了アドレスは、メモリ上のアドレスを示しています。
※未使用領域は、データクリア以外で読み書きすることはありません。

バンク0

表1 バンク0の構造
開始アドレス 終了アドレス サイズ(byte) 内容 備考
A000h A187h 392 グラフィックバッファ領域0 圧縮されているグラフィックデータの展開に使用される
(他のバッファ領域も同様)
A188h A30Fh 392 グラフィックバッファ領域1  
A310h A497h 392 グラフィックバッファ領域2  
A498h A597h 256 未使用  
A598h B857h 4800 殿堂入りデータ(50回分)  
B858h BFFFh 1960 未使用  

殿堂入りデータ

殿堂入りデータは1回あたり96バイトで、下位アドレス側から古い順に入っています。

表2 1回の殿堂入りデータの構造
オフセット サイズ(byte) 内容
0 16 1匹目の殿堂入りポケモン
16 16 2匹目の殿堂入りポケモン
32 16 3匹目の殿堂入りポケモン
48 16 4匹目の殿堂入りポケモン
64 16 5匹目の殿堂入りポケモン
80 16 6匹目の殿堂入りポケモン
表3 殿堂入りポケモンの構造
オフセット サイズ(byte) 内容
0 1 外見の内部番号
1 1 レベル
2 6 ニックネーム
8 8 00h (パディング)

1回の殿堂入りポケモンが5匹以下の場合は、その回の最後の殿堂入りポケモンの直後にFFhが入り、FFhより後ろの領域は全て00hとなります。例えば3匹で殿堂入りした場合、最初の3匹分は表3のデータが書き込まれます。4匹目は外見の内部番号にFFhが書き込まれ、残りの15バイト分の領域に00hが書き込まれます。5匹目と6匹目のデータは全て00hが書き込まれます。

バンク1

表4 バンク1の構造
開始アドレス 終了アドレス サイズ(byte) 内容 WRAM・HRAMの対応アドレス 備考
A000h A597h 1432 未使用    
A598h A59Dh 6 主人公の名前 D11Dh~D122h  
A59Eh ACD4h 1847 メインデータ D27Bh~D9B1h  
ACD5h AED4h 512 スプライトデータ C100h~C2FFh  
AED5h B02Ch 344 手持ちポケモンのデータ D123h~D27Ah  
B02Dh B592h 1382 現在選択中のボックスのデータ D9B2h~DF17h  
B593h B593h 1 ? FFD7h 詳細不明(タイル関連の値)
B594h B594h 1 チェックサム - A598h~B593hのチェックサム
B595h BFFFh 2667 未使用    

チェックサムは、次のようにして計算されます: 範囲内の値を1バイト単位で全て足し合わた値を256で割った余りを求める。その値をビット反転した値がチェックサムとなる。

レポートに書き込まれるWRAMのアドレスを昇順に並べると、次のようになります: C100h~C2FFh、D11Dh~DF17h
(すなわち、アドレスC000h~C0FFh、C300h~D11Ch、DF18h~DFFFhのデータはセーブされない)

バンク2・3

表5 バンク2・3の構造
開始アドレス 終了アドレス サイズ(byte) 内容 備考
A000h A565h 1382 ボックス1・5 バンク2はボックス1、バンク3はボックス5
A566h AACBh 1382 ボックス2・6 バンク2はボックス2、バンク3はボックス6
AACCh B031h 1382 ボックス3・7 バンク2はボックス3、バンク3はボックス7
B032h B597h 1382 ボックス4・8 バンク2はボックス4、バンク3はボックス8
B598h B598h 1 チェックサム A000h~B598hのチェックサム(このアドレス自身もチェックサムの計算対象になる)
ただし、このアドレスが読み込まれることはない
B599h BFFFh 2663 未使用  

外部リンク

Save data structure (Generation I) - Bulbapedia, the community-driven Pokémon encyclopedia *1

*1:リンク先の解説は英語版を対象としており、日本語版とは構造が違う点に注意