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

無限回廊フロアの実装がおわったので、あとは割と普通のフロアの実装…とか思ってたんですが、自然洞窟なので自然っぽく見せるのがメンドクセー!なのでサックリ終わると思ってたんですが、モチベーションの低下も相まって作業速度は下がりそう。困ったものです。

今回はすごろく中のよろずや関連の変更を行います。アイテム売却によるコイン稼ぎを防ぐために1個売ったら即退出させるようにします。

  • SR: $03C77C 店屋共通処理
03C788-91 NOP
03C792 JSR $F78A SR: $03F78A おおごえ呼び出し用ショップID変更
03C7E1 JSR $FF15 SR: $03FF15 売りにきた処理(すごろく中c=on)
03C7E4 BCS #$D8 if(c==on) goto $03C7BE すごろく中なら下記処理をしないで退出処理にジャンプさせる
03C7E6 JSR $FF1D SR: $03FF1D 店屋メッセージ表示(他になにかあるかい?)
03C7E9-B NOP

(6/24修正)
AレジスタにショップIDが格納されているため、そのままだとSR: $03FF09でAレジスタに値が上書きされてしまうので、スタックに積んで戻すようにした。PLAはcフラグには影響しない(はず)。

  • SR: $03F78A おおごえ呼び出し用ショップID変更(新SR)
03F78A PHA Push A
03F78B JSL $C3FF09 SR: $03FF09 すごろく中かどうか(該当c=on)
03F78F PLA Pull A
03F790 BCS #$0D if(c==on) goto $03F79F
03F792 PEA #$3538 Push #$3538
03F795 PEA #$003F Push #$003F
03F798 PEA #$7E00 Push #$7E00
03F79B JSL $C902E9 SR: $0902E9 RAM上情報変更
03F79F RTS return

ショップIDを見てよろず屋の範囲(#$2D~#$32)にあったらおおごえで呼び出すショップIDにセットしない、という実装からすごろく中ならセットしない、というように変えました。一応説明しておくと、おおごえで呼び出されるショップは直前に買い物をしたショップが呼び出される、という仕様になっているため、なにもしないとよろず屋に入った後大声でよろずやを呼び出せてしまい、コインではなくゴールドで買い物が出来てしまいます。これはリリース後にバグとして報告してもらったもので、全く考慮外でした。もう1つ余談ですが、このショップIDのサイズは6ビットなのでショップのレコード拡張は64までにしておいた方が無難のようです。

  • SR: $03FF15 売りにきた処理(すごろく中c=on)(新SR)
03FF15 JSR $CCB1 SR: $03CCB1 売りにきた処理
03FF18 JSL $C3FF09 SR: $03FF09 すごろく中かどうか(該当c=on)
03FF1C RTS return
  • SR: $03FF1D 店屋メッセージ表示(他になにかあるかい?)(新SR)
03FF1D LDA $C3CB4C,X A=$03CB4C+X
03FF21 JSL $C1A95A SR: $01A95A
03FF25 RTS return

ショップでの処理は行ったり来たりが多くうまく実装出来るか不安でしたがなんとか追加の処理をもぐりこませることができました。$03FF1Dは単にスペースを作るためだけに別の場所に実装を移しただけです。