先週末にリリースしたDQ6 IFIMP 1.6が思いのほかバグバグで未だ作業中です。3ヶ月以上ほったらかしにしてたため、どこまでいじっていたのか完全に忘れていたのがそもそも原因でした。こうなったら腰をすえて一気にアイテムまわりの作業をふくろだけでなくPC部分までやってしまうつもりです。新規にSRを定義する部分はDQ4^{-}の使用領域と被らないようにする作業もしたのでDQ4^{-}対応をするにしてもだいぶ楽になったというのが今の状態です。DQ6とDQ4^{-}両方に1つのパッチで対応するのは無理にしてもベース部分が共通なら作業はかなり簡略化され、バグが減るのでは、というのが狙いです。
さて、細部の説明に入る前に戦闘部分のプログラムで全般によく出てくるポイントについて説明します。ポイントは
- グループ番号
- 頻出するRAMアドレスの意味
- 固定情報取得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:プレイヤーキャラクター
コメント