無限回廊フロアの実装がおわったので、あとは割と普通のフロアの実装…とか思ってたんですが、自然洞窟なので自然っぽく見せるのがメンドクセー!なのでサックリ終わると思ってたんですが、モチベーションの低下も相まって作業速度は下がりそう。困ったものです。
今回はすごろく中のよろずや関連の変更を行います。アイテム売却によるコイン稼ぎを防ぐために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は単にスペースを作るためだけに別の場所に実装を移しただけです。
コメント