久しぶりのお便りコーナーです。第2回目になります。質問内容は
DQ6のしのびあしの効果を倍増させたい(意訳)。
です。基本DQ6は現状専門外なのですが、気になる人は結構いるみたいで、手間の割には需要はありそうなので投下します。DQ6の忍び足の持続時間?はダンジョンではDQ3の半分のようで、コスト0のくせに効果がすぐ切れるので鬱陶しいということですね。コスト0でエンカウント率が下がるというのもどうかと思いますがね。さて、調べ方ですが、バイナリwikiに忍び足のアドレス($7E3BAD-E)が乗っているのと、質問者の方から「#$00からカウントアップが始まって#$80になると効果切れになる」(ちなみにDQ3は#$FFからのカウントダウン方式)という情報を貰っていたので特定は簡単でした。デバッガで$7E3BADにブレークポイントをReadで張り、ダンジョンで忍び足を発動させ1歩歩くだけで場所を特定できました。以下はオリジナルの実装です。
- SR: $30051 移動時処理?
略 | |||
---|---|---|---|
030067 | INC $3BAD | $7E3BAD++ | しのびあし歩数カウントアップ |
03006A | LDA $3BAD | A=$7E3BAD | |
03006D | CMP #$0080 | A>=#$0080? | 歩数が128歩を超えたか |
030070 | BCC #$2B | if(c==off) goto $03009D | |
030072 | STZ $3BAD | $7E3BAD=#$00 | 超えていれば歩数クリア |
030075 | JSL $092E93 | SR: $092E93 引数:1#$7E3D2B 引数:2#$08 引数:3#$0000 | しのびあし効果OFF? |
03007F | JSL $059977 | SR: $059977 引数:1#$16B9 | 移動中メッセージ:「しのびあしの こうりょくが なくなった!」 |
略 |
ということで、変更は簡単です。
- SR: $30051 移動時処理?
略 | |||
---|---|---|---|
03006D | CMP #$00FF | A>=#$00FF? | 歩数が255歩を超えたか |
略 |
たったこれだけで終わりです。定数を変更しているだけなのでリスクはありません。256歩にしたい場合は#$00FFではなく#$0100にしてください。そのへんはお好みで。おそらくこの変更はDQ4^{-}にも転用できるはずです(未確認)。
コメント
ドラクエ6でのトヘロスの歩数を増やす場合はどこを参照にしたらよろしいのでしょうか?
トヘロスの歩数は$7E3BA9-AAに保存されています。ここを参照しているのは$0300A9-ACあたりです。忍び足と同様128歩で切れるようになっているようです。お好みで増減してください。
ご返事ありがとうございます
忍び足もトヘロスも設定できました。お忙しい中ありがとうございました
ドラクエ6のダメージ床の被ダメージを上昇させたのですが
$01D501〜辺りの数値を変更して被ダメを1から2に上昇できましたが、移動中にプレイキャラのHPが0になり移動中に全滅してゲームが積む可能性が発生してしまいました。
ご面倒でなければ解説していただけると助かります。
被ダメを2にあげたなら、直前の現HPをXレジスタにセットして1引いてるところを2引くようにしないとつじつまが合わないのではないでしょうか。オリジナルの実装は現HPを取得してダメージ分(この場合は1)を引いてHPが0(死んでいればマイナス)になるならHP減少処理はしない、というチェックをしてから1を引いているので、2を引きたいなら2を引いて上記のチェックを通してからHP減少処理をするというふうにすればいいはずです(確認してませんけど)。その点DQ3の処理のほうがスマートで(SR:$073AFA-)SRを呼ぶ直前のAレジスタの値をHP減少分として同じチェックをしているのでこういった問題は起きないようになっています。
FC時代のDQ2を知っている身としては、逆になんでバリアでHPが0にならないんだという気がしますけど。