- SR: $02DA30 まねまね反撃時の対象情報作成(新SR)
02DA30 | JSL $C2CC2C | SR: $02CC2C 引数:1#$0075 引数:2#$0003 | |
---|---|---|---|
02DA38 | CMP #$0003 | A>=#$0003? | |
02DA3B | BCC #$05 | if(c==off) goto $02DA42 | |
02DA3D | LDA #$0041 | A=#$0041 | |
02DA40 | BRA #$15 | goto $02DA57 | |
02DA42 | CMP #$0002 | A>=#$0002? | |
02DA45 | BCC #$0D | if(c==off) goto $02DA54 | |
02DA47 | JSL $C2CB2B | SR: $02CB2B 引数:1#$203C 引数:2#$00FF | |
02DA4F | ORA #$0020 | Aor=#$0020 | |
02DA52 | BRA #$03 | goto $02DA57 | |
02DA54 | JSR $E659 | SR: $02E659 | |
02DA57 | STA $23E6 | $23E6=A | |
02DA5A | RTS | return |
- SR: $02DA0D まねまねで使用するRAM領域の初期化(新SR)
02DA0D | LDX #$001E | X=#$001E | |
---|---|---|---|
02DA10 | LDA #$FFFF | A=#$FFFF | |
02DA13 | STA $2620,X | $2620+X=A | |
02DA16 | DEX | X– | |
02DA17 | DEX | X– | |
02DA18 | BPL #$F9 | if(n==off) goto $02DA13 | |
02DA1A | RTS | return |
前回のエントリで重要と書きましたが、完全に解析はできておらず、デバッガでRAM上の値をのぞきながら「これが確からしい」というものでしかありません。反撃する戦闘行動の対象設定値を取得し、3(全体)、2(グループ)、1(敵1体)によって$7E23E4にセットする値を変えています。この値は、戦闘中キャラクター情報($7E2030-)の5バイト目の2-7ビットを1ビット右にシフトしたものと同じです。
もう1つ前回のエントリで説明し忘れたのですが、「SR: $02D907 まねまねによる反撃処理」でまねまねによる反撃処理が終わった後に「SR: $02DA0D まねまねで使用するRAM領域の初期化」を呼んで関連する領域($7E2620-3F)の初期化を行っています。ただ、このままだと、戦闘開始直後に上記の領域が初期化されないので初期化を行う必要があります。
- SR: $025A56 戦闘中使用RAM領域初期化
025A69 | JSR $D7C0 | SR: $02D7C0 | |
---|---|---|---|
025A6C-74 | NOP |
- SR: $02D7C0 戦闘中使用RAM領域初期化(新SR)
02D7C0 | LDA #$FFFF | A=#$FFFF | |
---|---|---|---|
02D7C3 | STA $2462 | $2462=A | |
02D7C6 | STA $2464 | $2464=A | |
02D7C9 | STA $2465 | $2465=A | |
02D7CC | JSR $D54F | SR: $02D54F | |
02D7CF | JSR $DA0D | SR: $02DA0D | |
02D7D2 | RTS | return |
SR: $025A56は戦闘に入った直後に1回だけ呼ばれる(はず)のSRですが、空き領域がないのでそれっぽい処理と共に別SRで初期化を行っています。
とりあえずこれでまねまねの実装は終わりです。分割して書きづらかったので読むほうも理解しにくいと思われますが、これから改造界に踏み入ろうとする人の助けになればいいなと思います。
現時点で問題が1点あります。PC*1側のエフェクトがもともと存在しない戦闘行動(炎を吐くなど)はエフェクトが何も出ません。解析できればDQ6からエフェクトをコピれればこの部分も問題なくなるでしょう。
実装してから気がついたのですが、この特技(呪文?)はキメラ+はぐれメタルの組み合わせのときに、キメラが炎を吐くとぐれメタルを高確率で仕留められることに気が付きました。コマンドとしてまねまねを選んでいればキメラがはぐれメタルよりも先に炎を吐いてきた場合にははぐれメタルを一網打尽にできます。ドラゴラムのように1ターン待つ必要もないですし、遊び人自体の素早さも関係ありません。思わぬところで遊び人の存在価値が上がりました。
*1:プレイヤーキャラクター
コメント