PC情報管理 一覧

DQ3 プレイヤーキャラクター情報へのアクセス

以前バイナリスレで86氏に教えていただいたPC*1のステータス(HP、MP、力など)の取得/変更(SR: $043414 力取得など)は、大抵3,4個の引数を取りますが、なんとなく2番目が対象キャラクターを示し、3番目以降で変更(もしくは取得)する値の指定をしている程度の理解で実装をしていました。現在行っている作業の中でこれらのSRについて正しく理解する羽目になったのでエントリとして投下します。

そもそも各PCのステータス自体は$7E3925-から1PCにつき60バイトの領域を使用して連続して格納されています。$7E3925-は勇者の情報、$7E3961-はルイーダに最初から入る仲間の1人目の情報…のようになっており、この順番は基本固定で、キャラの順番を入れ替えても格納位置が変わることはありません。実際にパーティに参加しているキャラクターの情報等は以前のエントリ(http://retrogamehackers.net/dq3-pcinfo-management-001/)で説明したように$7E36E2-に各種人数、$7E36E8-に各キャラクターの開始アドレスが配列になって並んでいます。とどのつまりは「この開始アドレスをいかにして取得してくるか」が最終的な目的になります。PCのステータスにアクセスするSRは以下の2種類があります。

  1. Xレジスタに開始アドレスがセットされていることを前提としてAレジスタにデータを返す/Aレジスタのデータに変更する
  2. 1をラップしてより柔軟なデータのやり取りをできるようにする

続きを読む


DQ3 PCの情報管理2

前回のエントリの内容を踏まえると、ルイーダ以外でのキャラクターの追加・削除のやりかたが見えてきます。追加時には以下の手順を踏めばいいということになります。

  1. 空いているPC用アドレスを探して必要情報をセット
  2. $7E36E2の数を操作
  3. $7E36E8-の配列に追加したキャラクターのアドレスを挿入して1つずらす

続きを読む


スポンサーリンク

DQ3 PCの情報管理1

盗賊の登録所のエントリでチラッと触れましたが、ゲストキャラの加入等を実現するためにPC*1の情報管理について必要に迫られて調査しました。パーティからキャラクターを外したり追加したりという処理はDQ3ではルイーダくらいでしかやらないので自分もろくに解析していませんでした(が必要に迫られて解析しました)。まず結論から言うと以下のようになっています。ちなみに、登録できる人数の最大はオリジナルでは22人(勇者を含めて)です。

続きを読む