ゲスト追加 一覧

DQ3 ゲストキャラクター概念の追加6(移動中編3)

1年以上放置していたこのトピックですが、ようやくスマートな解決方法がわかったのでそちらを最終的な解決策として投下してこのトピックは終わらせます。そもそも根本の原因は「特定のキャラクターを抜いたPC*1リストを選択した結果値がパーティ内の実インデックスではなくリスト中のインデックスそのままで返ってくる」ということが問題でした(http://retrogamehackers.net/dq3-guest-004/参照のこと)。このズレを補うために下流まで延々と場当たり的な対処をしていく羽目になりました。これをパーティ内の実インデックスを返すようにすれば下流は一切変える必要はありませんし、余計な対応表を持っておく必要もありません。実は今回お試しでAIを実装する作業の途中で「勇者を抜いて他のPCに設定された作戦情報を表示」「ウィンドウに表示された項目とそのIDとの関係」を調べる必要に迫られたため、時間もじっくりあるということで腰を据えて調べたところ理解が進みました。

続きを読む


DQ3 ゲストキャラクター概念の追加5(移動中編2)

随分間が開いてしまいましたが、前回最後で思いついた方式については時間が取れず全く手を付けられていません。他の作業等もあり、いつ手を付けられそうか全く不明なため、とりあえず現状実装している方式について先にエントリを投下して時間稼ぎをすることにします。

追加で使用するメモリ領域は以下のとおり。メニューを開いている間のみなので使用期間は限定的です。

7E2700メニュー上1番目の実インデックス
7E2702メニュー上2番目の実インデックス
7E2704メニュー上3番目の実インデックス
7E2706メニュー上4番目の実インデックス
7E27081なら移動中メニュー処理中

  • SR: $03AC8A 移動中メニュー処理
03AD27JMP $FC5F ($03FC5F)goto $03FC5F
03AD2ABCS #$DEif(c==on) goto $03AD0A

続きを読む


スポンサーリンク

DQ3 ゲストキャラクター概念の追加4(移動中編1)

随分間が空いてしまいましたが、移動中のメニューの変更はかなり広範囲に渡り、実装中はバグまたバグの連続で(実際リリース後にもバグが見つかりました)正直二度と触りたくない部分の一つだったのと、作業したのが随分前だったので変更箇所を余り覚えていないのもあって、筆が進みませんでした(笑)。

今回からは移動中のメニューにゲストの概念を導入していきます。対処をしないといけないのは「どうぐ」メニューでゲストのアイテムにさわれないようにする、一部のアイテム(性格変更アイテム)の使用対象から外すという部分です。「どうぐ」メニューの処理は$03AF02-に実装されていますが、内部でJMP命令を使いまくっているトータル1200バイト以上の巨大なSRになっています。当然機能としてはかなり多機能になっているため、「ゲストがいる場合に処理の頭でゲストがいることを想定した道具メニュー処理に飛ばす」というのはコピーする対象かなり広範囲になるため諦めました(処理の安全性で言えば、ゲストがいない場合の通常の道具メニュー処理に影響を及ぼす可能性がないので分けたほうがいいのは確かです)。というわけで仕方なく、既存の道具メニュー処理にゲストがいる・いない両方を想定した処理を混ぜ込んでいくことにします。

基本的な方針として「メニュー上で選択されたPC*1のインデックスと実際のインデックスの対応表を作っておき、適宜置き換える」ということをしていくことになります。

続きを読む


DQ3 ゲストキャラクター概念の追加3(戦闘中編3)

次に幽霊船追加イベント中に傭兵が仲間に参加している場合の全滅判定です。傭兵を除いた3人、傭兵のみでの全滅判定をそれぞれ行い、該当していれば全滅扱いとする、という方針で作業します。ここで、$SR: $02C766の引数で指定できるアドレスの配列を拡張し、「傭兵のビットも生死にかかわらずOFFにする」「傭兵以外のビットも生死にかかわらずOFFにする」というSRを作れば従来の仕組みの中で対応出来ます。

  • SR: $05D8A0 幽霊船追加イベント中PC側全滅判定(新SR)
05D8A0JSL $C2C739SR: $02C739 引数:1#$08行動可能チェック用マスクデータ作成
05D8A5JSL $C2C766SR: $02C766 引数:1#$2C行動可能フラグセット(傭兵以外の生存チェック)
05D8AALDA $00A=DP($00)
05D8ACORA $02Aor=DP($02)
05D8AEBNE #$01if(z==off) goto $05D8B1
05D8B0RTSreturn
05D8B1JSL $C2C739SR: $02C739 引数:1#$08行動可能チェック用マスクデータ作成
05D8B6JSL $C2C766SR: $02C766 引数:1#$2E行動可能フラグセット(傭兵生存チェック)
05D8BBLDA $00A=DP($00)このSRを出た後で判定するので不要
05D8BDORA $02Aor=DP($02)このSRを出た後で判定するので不要
05D8BFRTSreturn

続きを読む


スポンサーリンク

DQ3 ゲストキャラクター概念の追加2(戦闘中編2)

前回の解析結果を踏まえると、どうすればいいかという方向性が見えてきます。通常の全滅判定をした後、全滅していなければ特定条件下でのみ発動する追加の全滅判定を行えばいい、ということになります。というわけで今回はまず過去テドン編。「誰か一人が死んでいても全滅扱い」という条件を追加することにします。

  • SR: $02B32F 戦闘終了時フラグセット?
02B356JSR $F320SR: $02F320PC側行動可能チェック

続きを読む


1 2