DQ3 盗賊に切り返し(カウンター)を実装する3

前回からの続き。今回はダメージを発生させるところから。

  • SR: $02D580 直接攻撃反射ダメージ計算等
省略
02D593 JSL $CFAEB8 SR: $0FAEB8 盗賊切り返しダメージ処理
省略
  • SR: $0FAEB8 盗賊切り返しダメージ処理(新SR)
0FAEB8 PHA Push A
0FAEB9 PHX Push X
0FAEBA PHY Push Y
0FAEBB LDA $2602 A=$2602
0FAEBE AND #$0004 A&=#$0004
0FAEC1 BEQ #$14 if(z==on) goto $0FAED7
0FAEC3 LDA $23E4 A=$23E4 攻撃主体と行動対象を入れ替える
0FAEC6 PHA Push A
0FAEC7 LDA $23E8 A=$23E8
0FAECA PHA Push A
0FAECB JSL $CFAEDB SR: $0FAEDB 盗賊切り返しダメージ処理(コア)
0FAECF PLA Pull A
0FAED0 STA $23E8 $23E8=A 攻撃主体と行動対象を元に戻す
0FAED3 PLA Pull A
0FAED4 STA $23E4 $23E4=A
0FAED7 PLY Pull Y
0FAED8 PLX Pull X
0FAED9 PLA Pull A
0FAEDA RTL return
  • SR: $0FAEDB 盗賊切り返しダメージ処理(コア)(新SR)
0FAEDB LDA $23E4 A=$23E4
0FAEDE PHA Push A
0FAEDF LDA $23E8 A=$23E8
0FAEE2 STA $23E4 $23E4=A
0FAEE5 PLA Pull A
0FAEE6 STA $23E8 $23E8=A
0FAEE9 JSR $AF16 SR: $0FAF16 切り返し発生時エフェクト処理
0FAEEC LDA $2603 A=$2603 切り返しダメージ値をダメージ値用バッファにセット
0FAEEF STA $23FA $23FA=A
0FAEF2 JSL $C29200 SR: $029200 ダメージ確定後の処理メイン
0FAEF6 LDA #$001C A=#$001C
0FAEF9 TRB $2602 A ^ $2602 切り返し発生フラグをクリア
0FAEFC STZ $2603 $2603=#$00
0FAEFF RTL return
  • SR: $0FAF16 切り返し発生時エフェクト処理(新SR)
0FAF16 JSL $C1E32E SR: $01E32E 引数:1#$00BC 再生BGM設定?
0FAF1C JSL $C1A867 SR: $01A867 引数:1#$01FA 戦闘メッセージ表示
0FAF22 LDY #$0000 Y=#$0000
0FAF25 LDX $23E8 X=$23E8
0FAF28 JSL $C2CAD9 SR: $02CAD9 引数:1#$203A 引数:2#$00FF 戦闘中キャラクター情報取得 インデックス:X
0FAF30 STA $4F50,Y $4F50+Y=A
0FAF33 INC $4F4E $4F4E++
0FAF36 LDA #$8D72 A=#$8D72 稲妻の剣のエフェクトを使用
0FAF39 STA $4F4C $4F4C=A
0FAF3C LDA #$000E A=#$000E
0FAF3F STA $4F68 $4F68=A
0FAF42 JSL $C48D49 SR: $048D49 エフェクト実行
0FAF46 STZ $4F4E $4F4E=#$00
0FAF49 LDA #$0000 A=#$0000
0FAF4C STA $4F50,Y $4F50+Y=A
0FAF4F RTS return

基本的にやっていることは刃の鎧や嘆きの盾の反射と同じなので特筆すべき点はないのですが、エフェクトが起きるようにしています。装備している武器のエフェクトではなく固定のエフェクトを使うようにしています。