DQ3 やまびこのぼうしバグ修正

バイナリスレで指摘のあった「やまびこのぼうし装備時に複数対象の呪文の1発目で敵が全滅した場合に『じゅもんが やまびことなって こだまする!』のメッセージが余計に表示される」という問題を修正します。さらに追加で見つけた「やまびこ反響時にMPが引かれ、連続魔になっている」問題もあわせて修正します。やまびこのぼうしの効果については、オリジナルのDQ6と動作が異なる点(1体対象の呪文で1発目の発動で倒した場合にまだ敵が残っていても2発目が発動しない)もちょっと気になるのですが、とりあえず仕様ということで後回しにして、明らかにバグっている部分を修正します。久しぶりに戦闘部分に触ったので完全に忘れていてちょっとあせりました。

  • SR: $02D8E8→$02DAB0に移動
  • #$027974から3バイトを#$02DAB0に変更(上記SRの移動に伴う呼び出し部分の変更)
  • SR: $02DAB0 再度行動を繰り返すか判断する(行動するc=off)
02DABE LDA $260A A=$260A
02DAC1 CMP #$0001 A==#$0001? やまびこのぼうしで反響する
02DAC4 BNE #$0C if(z==off) goto $02DAD2
02DAC6 JSL $C2B32F SR: $02B32F 戦闘終了フラグ設定?
02DACA BCS #$06 if(c==on) goto $02DAD2 戦闘終了条件を満たしている?
02DACC JSL $C1A867 SR: $01A867 引数:1#$017C 戦闘メッセージ表示「じゅもんが やまびことなって…」
02DAD2 PLA Pull A
02DAD3 CLC c=off
02DAD4 RTS return
  • SR: $027C68 MP切れ・マホトーン・呪いで行動できないか決定する
027C78 JSL $C2DAEB SR: $02DAEB 現MPが選択呪文の消費MPより上か
027C89 JSR $DAD5 SR: $02DAD5 やまびこのぼうしの反響中でなければMP消費
027C8C-D NOP
  • SR: $02DAEB 現MPが選択呪文の消費MPより上か(該当c=on)(新SR)
02DAEB JSL $C2DA1B SR: $02DA1B やまびこのぼうし反響中か(該当c=on)
02DAEF BCS #$06 if(c==on) goto $02DAF7
02DAF1 JSL $C2E71C SR: $02E71C 現MPが選択呪文の消費MPより上か
02DAF5 BRA #$01 goto $02DAF8
02DAF7 SEC c=on
02DAF8 RTL return
  • SR: $02DAD5 やまびこのぼうしの反響中でなければMP消費(新SR)
02DAD5 JSL $C2DA1B SR: $02DA1B
02DAD9 BCS #$05 if(c==on) goto $02DAE0
02DADB JSL $C2BE8A SR: $02BE8A 引数:1#$0E
02DAE0 RTS return
  • SR: $02DA1B やまびこのぼうしの反響中か(該当c=on)(新SR)
02DA1B LDA $260A A=$260A
02DA1E CMP #$0001 A==#$0001?
02DA21 BNE #$0B if(z==off) goto $02DA2E
02DA23 LDA $23D8 A=$23D8
02DA26 CMP #$0001 A==#$0001?
02DA29 BNE #$03 if(z==off) goto $02DA2E
02DA2B SEC c=on
02DA2C BRA #$01 goto $02DA2F
02DA2E CLC c=off
02DA2F RTL return

改造スキルが上がっているせいか、修正は割と簡単にできました。全部の呪文の使用時のチェックをまだやっていないのでまだバグがあるかもしれません。もし見つけたら教えてください。

コメント

  1. k.s より:

    いつもお世話になっております。

    もしかしたら別の記事で言及済かもしれませんが、
    はやぶさの剣とやまびこのぼうしの装備者がどちらもいる場合
    一度やまびこ対象の呪文を唱えてしまうと$260A=#$0001のままなので
    その後はやぶさの剣で攻撃すると追撃時に「じゅもんが やまびことなって…」
    のメッセージが表示されてしまいました。

    メッセージ表示後あたりで$260Aをクリアすれば良いだけだと思うので
    大した問題でもありませんが、一応ご報告しておきます。

    管理者より返信:

    手元では再現できませんでした。デバッガで該当のメモリを見ながら確認しましたが、やまびこ実行後にフラグがクリアされていました。お手数ですが現象発生前後のSnes9xのステートセーブをいただけないでしょうか?

  2. k.s より:

    早速ご確認いただきありがとうございます。

    本来は特にケアしなくても自然にクリアされるのですね。。
    k.mixではなく個人的に改造しているROMで発生した現象なので
    自分の改造固有の問題かもしれません。

    個人改造のROMのステートセーブを送られても困ると思いますので
    もう少し自分のほうで見てみたいと思います。
    お手数をおかけして申し訳ありませんでした。

    管理者より返信:

    >本来は特にケアしなくても自然にクリアされるのですね。。

    DQ3 K.Mixではケアしてクリアしています。これはかなり古い実装なので現在はだいぶ変えています。