DQ3 すごろくシステム変更2

ようやく無限回廊フロアの実装が終わりました。ロンダルキア同様フロア内に複数の分岐があり、ミスったら振り出しに戻り、の例のやつです。ところが、作り終わってから

無限回廊は自分にとっては全然無限じゃない

ということに気がつきました。自分で作ってるのでしょうがないわけですが、かわりに皆さんに味わってもらうことにします。readmeのネタバレには正解ルートを書いておくのでとっとと先に行きたい人はそちらを参照してください。だんだん1つのギミックの実装にかかる時間が長くなっているような気がする上に、まだあれこれと実装のメドのたたない変更をするつもりなのでいつになったらリリースできるかわかりませんが、手をつけにくいところを後回しにしているのでそれもしょうがないかなと自己弁護。

さて、まずは大枠の変更から手をつけます。まずはすごろく開始時に所持金を別領域に退避させ終了時に元に戻す部分に手をつけます。所持金の退避には3バイトあればOKなので、セーブデータを展開しているRAMの一部をテンポラリ用バッファとして使用します(あんまりよくないと思うのですが、他に確実に空いてそうなところを探すのが面倒だったので)。すごろく中かどうかを意味するフラグは$7E353Bの2ビット目なので、そのフラグをONにしている部分に処理を追加するようにします。

  • SR: $05FA24 すごろく中フラグon+所持金1化処理(新SR)
05FA24 JSL $C90789 SR: $090789 引数:1#$353D 引数:2#$7E 引数:3#$04 引数:4#$00 引数:5#$00 すごろく中フラグON
05FA2E LDA $3696 A=$3696
05FA31 STA $35C0 $35C0=A
05FA34 LDA $3697 A=$3697
05FA37 STA $35C1 $35C1=A 所持金を退避
05FA3A LDA #$0001 A=#$0001
05FA3D STA $3696 $3696=A
05FA40 STZ $3697 $3697=#$00 所持金に1をセット
05FA43 RTL return

  • SR: $0A3331 すごろく場1イベント処理?
0A333D JSL $C5FA24 SR: $05FA24 すごろく中フラグon+所持金1化処理(新SR)
0A3341 NOP
0A3342 NOP

…他変更箇所多数

  • SR: $05FA44 すごろく中フラグoff+所持金リストア処理(新SR)
05FA44 JSL $C3FF09 SR: $03FF09 すごろく中かどうか(該当c=on)
05FA48 BCC #$26 if(c==off) goto $05FA70
05FA4A JSL $C907CC SR: $0907CC 引数:1#$353D 引数:2#$7E 引数:3#$04 引数:4#$00 引数:5#$00
05FA54 JSL $C907CC SR: $0907CC 引数:1#$35B5 引数:2#$7E 引数:3#$38 引数:4#$00 引数:5#$00
05FA5E LDA $35C0 A=$35C0
05FA61 STA $3696 $3696=A
05FA64 LDA $35C1 A=$35C1
05FA67 STA $3697 $3697=A 所持金情報を戻す
05FA6A STZ $35C0 $35C0=#$00
05FA6D STZ $35C1 $35C1=#$00
05FA70 RTL return

  • SR: $057FE7 落とし穴処理
05805A JSL $C5FA44 SR: $05FA44 すごろく中フラグoff+所持金リストア処理
05805E NOP
05805F NOP

…他変更箇所多数

(2010-06-11追記)
すごろく中フラグoff+所持金リストア処理をしないといけないのは以下のケースです。多分抜けはないと思いますがもしあったらバグ(もしくはここに記載漏れ)ですのでぜひお知らせを。

  • あがりになったとき
  • 落とし穴に落ちたとき
  • 残り回数がなくなったとき
  • 自発的に「やめる」を選んだとき
  • ダメージパネルでHPが0になったとき
  • 戦闘中に全滅したとき

すごろく中フラグoff+所持金リストア処理SRの中で現在すごろく中かチェックしている理由はこのフラグをクリアするSRが複数回呼ばれることがあるためです。チェックしないと所持金のリストア処理が2回行われ、すごろく終了後に所持金が0になってしまいます。もうひとつはすごろく中のゴールド獲得部分を「コイン」に変える作業ですが、基本メッセージの変更のみなので省略します。(戦闘終了後の部分については別途説明します)

コメント

タイトルとURLをコピーしました