一般的なXTのコード
メモリイメージ
| | XXXXXXXX | YYYYYYYY | <<ここを書き換えるだけでOK | |
コードの形式
XXXXXXXX <<アドレス (暗号化されているらしい)PSO ver2のコード
各データは、ある程度大きさの幾つかブロックになって
メモリのどこかに配置されています。
このままだとデータが何処の位置がプログラムからも
指定できなくなるので何処から始まるかという情報を
特定の位置に持っています。
(ベースポインタ等と呼ばれる。よく使われるプログラミング技法の1つ)
このゲームの場合このベースポインタは8C4E5F80番地あたりに幾つか存在しています。
メモリイメージ
| | 8C4E5F80 | XXXXXXXX | <<データブロックAの格納先アドレス 8C4E5F84 | XXXXXXXX | <<データブロックBの格納先アドレス 8C4E5F88 | XXXXXXXX | ↓これ以降も同じようなものが幾つか続いてるらしい 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 XXXXXXXX+000 | ???????? | <<データブロックAの開始位置 XXXXXXXX+004 | ???????? | XXXXXXXX+008 | ???????? | 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 XXXXXXXX+364 | ???????? | <<(具体例)レベルの位置 XXXXXXXX+368 | ???????? | <<(具体例)経験値の位置 XXXXXXXX+36C | ???????? | <<(具体例)メセタの位置 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 XXXXXXXX+000 | ???????? | <<データブロックBの開始位置 XXXXXXXX+004 | ???????? | XXXXXXXX+008 | ???????? | XXXXXXXX+00C | ???????? | 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
具体的なコード例(メセタ操作の場合)
13B7D9B5\ 40707044 |XTへの特別コマンド? 1C24D797 | 8C006000/ 1484D086\ <<ここからアドレスと命令またはデータが交互に続いている 6112D105 | 1494D086 | 310C9005 | 14A4D086 | 2102D004 | 14B4D086 |目的の位置を操作するためのプログラム本体
402BD001 | 14C4D086 | 036C0009 < <<左半分036Cがメセタへのオフセット、右半分はプログラムの命令 14D4D086 | 8C011ECC | 14E4D086 | 8C4E5F80 | 14F4D086 | 000A0000/ <<データブロックAの格納先アドレス参照用アドレス