ようやく無限回廊フロアの実装が終わりました。ロンダルキア同様フロア内に複数の分岐があり、ミスったら振り出しに戻り、の例のやつです。ところが、作り終わってから
無限回廊は自分にとっては全然無限じゃない
ということに気がつきました。自分で作ってるのでしょうがないわけですが、かわりに皆さんに味わってもらうことにします。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になってしまいます。もうひとつはすごろく中のゴールド獲得部分を「コイン」に変える作業ですが、基本メッセージの変更のみなので省略します。(戦闘終了後の部分については別途説明します)
コメント