DQ3戦闘部分解説2

先週末にリリースしたDQ6 IFIMP 1.6が思いのほかバグバグで未だ作業中です。3ヶ月以上ほったらかしにしてたため、どこまでいじっていたのか完全に忘れていたのがそもそも原因でした。こうなったら腰をすえて一気にアイテムまわりの作業をふくろだけでなくPC部分までやってしまうつもりです。新規にSRを定義する部分はDQ4^{-}の使用領域と被らないようにする作業もしたのでDQ4^{-}対応をするにしてもだいぶ楽になったというのが今の状態です。DQ6とDQ4^{-}両方に1つのパッチで対応するのは無理にしてもベース部分が共通なら作業はかなり簡略化され、バグが減るのでは、というのが狙いです。

さて、細部の説明に入る前に戦闘部分のプログラムで全般によく出てくるポイントについて説明します。ポイントは

  1. グループ番号
  2. 頻出するRAMアドレスの意味
  3. 固定情報取得SR群、戦闘中情報取得/変更SR群

です。今回は1と2について解説します。

まずは、グループ番号について説明します。グループ番号は0-5まで使用されています。0-3は敵に使用されています。ターゲット選択時に表示される上から順番に0,1,2,3の番号が振られます。4は格闘場で自分が賭けたモンスターに振られ、攻撃開始音(PC*1側の攻撃音になる)や「…は勝ち残った」等のメッセージの表示に使用されているようです。5はPCに振られます。敵味方を判別するのにグループ番号が使わる事が多いです。

22 D9 CA C2 3C 20 FF 00 SR: $02CAD9 引数1:#$203C 引数2:#$00FF
C9 05 00 A>=#$0005?

のようなコードがよく出てくるので知っていればすぐに何をしたいか理解できるので覚えていたほうがいいでしょう。戦闘中キャラクター情報の中に敵か味方かのフラグもあるようですが、どういう使い分けをされているのかよくわかりません。

次に頻出するRAMアドレスの意味です。(随時追加予定)

7E2000-07 モンスターID(2Byte*4rec)
7E2008-0F 7E2000-07の各グループごとの出現数
7E2011 0-1bit 先制・強襲情報 0:通常 1:先制 2:強襲
2-3bit 格闘場で賭けたモンスターのインデックス(#$00-03)
4bit 逃げられるか? 0:逃走可能 1:逃走不可
5bit イベント戦闘(パルプンテの一部効果が発現しない、毒針等一撃必殺が発動しない)
6bit 戦闘タイプ 0:通常戦闘 1:格闘場
7bit
7E2012-13 累積戦闘回数?
7E2030-23A7 戦闘中キャラクター情報(37byte*24rec)
20Byte 0bit 0:敵 1:味方
1bit 0:バシルーラで飛ばされた? 1:存在している
2bit
3bit マヒ
4bit 混乱
5bit
6bit
7bit 防御
21Byte 0bit
1bit マホトーン
2bit マヌーサ
3bit バイキルト
4bit マホカンタ
5bit フバーハ
6bit ドラゴラム
7bit モシャス
22Byte 0bit オール会心
1bit 1ターン行動停止
7bit 睡眠?(1で行動可能)
23Byte 0bit
1bit
2-3bit タップダンス残り有効ターン数
4-7bit 1ターン行動停止状態ID 0:びっくり 1:ダジャレ 2:大声で歌う 3:くしゃみ 4:流し目 5:怖い話 7:酒を呑む 9:ぱふぱふ2
24Byte 0-5bit 1ターン行動停止を仕掛けたキャラクターのインデックス(#$00-$17)
6-7bit
7E23A8
7E23A9 最後に倒したモンスターID?
7E23AA 時間停止中に動けるキャラクターのインデックス(#$00-$17)
7E23AB 0-3bit 戦闘終了タイプ 0:? 1:戦闘勝利 2:全滅 3:逃げる? 4:65535ターン経過 5:格闘場当たり 6:格闘場ハズレ 7:格闘場引き分け
4-5bit 先制・強襲情報 0:通常 1:先制 2:強襲
6-7bit 戦闘終了時のメッセージ種類
7E23AC 0-2bit 時間停止残りターン数(max4)
3-4bit アストロン残りターン数(max3)
5-6bit
7bit モンスター追加中(テンポラリ?)
7E23AD 0bit
1bit
2bit マホカンタ反射中
3bit
4bit
5bit
6bit メガンテで相手が即死する
7bit
7E23AE 0-1bit
2bit メガンテが実行された(術者死亡)
3bit アストロン効果持続中
4bit 会心・痛恨が発生しない
5bit
6bit パルプンテの暗闇効果ON
7bit 攻撃対象が格闘場でかけたモンスターorPC側
7E23AF 0-1bit 「逃げる」を選んだ回数
7E23B0-B1 モンスターグループ1現在の戦闘行動
7E23B2-B3 モンスターグループ2現在の戦闘行動
7E23B4-B5 モンスターグループ3現在の戦闘行動
7E23B6-B7 モンスターグループ4現在の戦闘行動
7E23B8-CF 各キャラクタ攻撃順?(1Byte*24rec)
7E23D0-D1 経過ターン数
7E23D2-D3 現在行動処理している7E23B8-CEのインデックス
7E23D4-D5
7E23D6-D7 行動回数?(戦闘行動実行中)
7E23D8-D9 実行済み行動回数?(戦闘行動実行中)
7E23DA-DB 複数対象攻撃の場合何体目か(1からスタート,戦闘行動実行中)
7E23DC-DF 戦闘中:獲得経験値(合計)/戦闘後:獲得経験値(一人当たり)
7E23E0-E3 獲得ゴールド合計
7E23E4-E5 行動主体者インデックス(戦闘行動実行中)
7E23E6-E7 行動対象情報(戦闘行動実行中)
7E23E8-E9 行動対象者インデックス(戦闘行動実行中)
7E23EA-ED 実行動対象ビットフラグ 7E23EAの1ビット目=0 2ビット目=1… 7E23ECの7ビット目=24
7E23EE-EF 戦闘行動ID(戦闘行動実行中)
7E23F2-F3
7E23FA-FB 確定ダメージ(戦闘行動実行中)
7E23FE-FF モンスターID1
7E2400-01 モンスターID2
7E2402-03 モンスターID3
7E2404-05 モンスターID4
7E240E-0F モンスターID1数
7E2410-11 モンスターID2数
7E2412-13 モンスターID3数
7E2414-15 モンスターID4数
7E2420-27 テンポラリ領域?
7E2428-29 行動主体者インデックス(ダメージ計算中?テンポラリ?)
7E242A-2B
7E242C-2D 行動主体者使用武器アイテムID(チェック用)
7E243E-55 キャラクターインデックス配列?
7E245C-5D 行動主体者使用武器アイテムID?
7E245E-5F
7E2460-61
7E2484-B3 ターン中素早さ(2Byte*24rec)1ターンごとに更新

この中で重要なのは$7E23E4、$7E23E8、$7E23EEです。

*1:プレイヤーキャラクター