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 00SR: $02CAD9 引数1:#$203C 引数2:#$00FF
C9 05 00A>=#$0005?

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

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

7E2000-07モンスターID(2Byte*4rec)
7E2008-0F7E2000-07の各グループごとの出現数
7E20110-1bit先制・強襲情報 0:通常 1:先制 2:強襲
2-3bit格闘場で賭けたモンスターのインデックス(#$00-03)
4bit逃げられるか? 0:逃走可能 1:逃走不可
5bitイベント戦闘(パルプンテの一部効果が発現しない、毒針等一撃必殺が発動しない)
6bit戦闘タイプ 0:通常戦闘 1:格闘場
7bit
7E2012-13累積戦闘回数?
7E2030-23A7戦闘中キャラクター情報(37byte*24rec)
20Byte0bit0:敵 1:味方
1bit0:バシルーラで飛ばされた? 1:存在している
2bit
3bitマヒ
4bit混乱
5bit
6bit
7bit防御
21Byte0bit
1bitマホトーン
2bitマヌーサ
3bitバイキルト
4bitマホカンタ
5bitフバーハ
6bitドラゴラム
7bitモシャス
22Byte0bitオール会心
1bit1ターン行動停止
7bit睡眠?(1で行動可能)
23Byte0bit
1bit
2-3bitタップダンス残り有効ターン数
4-7bit1ターン行動停止状態ID 0:びっくり 1:ダジャレ 2:大声で歌う 3:くしゃみ 4:流し目 5:怖い話 7:酒を呑む 9:ぱふぱふ2
24Byte0-5bit1ターン行動停止を仕掛けたキャラクターのインデックス(#$00-$17)
6-7bit
7E23A8
7E23A9最後に倒したモンスターID?
7E23AA時間停止中に動けるキャラクターのインデックス(#$00-$17)
7E23AB0-3bit戦闘終了タイプ 0:? 1:戦闘勝利 2:全滅 3:逃げる? 4:65535ターン経過 5:格闘場当たり 6:格闘場ハズレ 7:格闘場引き分け
4-5bit先制・強襲情報 0:通常 1:先制 2:強襲
6-7bit戦闘終了時のメッセージ種類
7E23AC0-2bit時間停止残りターン数(max4)
3-4bitアストロン残りターン数(max3)
5-6bit
7bitモンスター追加中(テンポラリ?)
7E23AD0bit
1bit
2bitマホカンタ反射中
3bit
4bit
5bit
6bitメガンテで相手が即死する
7bit
7E23AE0-1bit
2bitメガンテが実行された(術者死亡)
3bitアストロン効果持続中
4bit会心・痛恨が発生しない
5bit
6bitパルプンテの暗闇効果ON
7bit攻撃対象が格闘場でかけたモンスターorPC側
7E23AF0-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:プレイヤーキャラクター

コメント

タイトルとURLをコピーしました