次は、ゾーマの城再突入時にフロア数を増やすようにします。全体としてやることは特に難しいことはありません。フロア初期化処理中の移動先データをフラグを見て差し替えるだけで条件に応じたフロアの追加は実現できます(この切り替え処理をミスってテストプレイをしてくれた方には階段に重なっても移動しないというご迷惑をかけしてしまいましたorz)。今回問題となるのは、フロア自体のギミックです。 予定では
- 裏技で突破できない回転床フロア
- 無限回廊フロア
を追加する予定だったんですが、時間切れで回転床フロアしか実装できませんでした。無限回廊フロアはイメージ的にはDQ2のロンダルキアの洞窟クラスの嫌らしいのを用意したかったのですが、DQ3の無限回廊は簡単なものしかなく、いいお手本がないのでまだ実装出来ていません。DQ6のスフィーダの盾のダンジョン(でしたっけ?)でも見て参考にしようと思います。
- SR: $0AA880 ゾーマの城B3F移動・宝箱・ドア・NPC情報設定
略 | |||
---|---|---|---|
0AA88E-90 | NOP | ||
0AA891 | JSL $CDF811 | SR: $0DF811 | ゾーマの城B3F階段移動データセット |
略 |
- SR: $0DF811 ゾーマの城B3F階段移動データセット(新SR)
0DF811 | LDA $35B4 | A=$35B4 | |
---|---|---|---|
0DF814 | AND #$0020 | A&=#$0020 | オルテガが竜の女王の石化の呪いを解いた |
0DF817 | BEQ #$08 | if(z==on) goto $0DF821 | |
0DF819 | LDX #$01B6 | X=#$01B6 | |
0DF81C | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF820 | RTL | return | |
0DF821 | LDX #$00BB | X=#$00BB | |
0DF824 | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF828 | RTL | return |
- SR: $0AA8A1 ゾーマの城B4F移動・宝箱・ドア・NPC情報設定
0AA8A1-3 | NOP | ||
---|---|---|---|
0AA8A4 | JSL $CDF829 | SR: $0DF829 | ゾーマの城B4F階段移動データセット |
略 |
- SR: $0DF829 ゾーマの城B4F階段移動データセット(新SR)
0DF829 | LDA $35B4 | A=$35B4 | |
---|---|---|---|
0DF82C | AND #$0020 | A&=#$0020 | オルテガが竜の女王の石化の呪いを解いた |
0DF82F | BEQ #$08 | if(z==on) goto $0DF839 | |
0DF831 | LDX #$01BB | X=#$01BB | 追加フロアに移動 |
0DF834 | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF838 | RTL | return | |
0DF839 | LDX #$00BC | X=#$00BC | |
0DF83C | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF840 | RTL | return |
- SR: $0DF7DA ゾーマの城追加フロア1進入時初期化処理
0DF7DA | LDA #$017A | A=#$017A | |
---|---|---|---|
0DF7DD | JSL $C77365 | SR: $077365 | サブマップ画像情報取得 |
0DF7E1 | LDA #$001C | A=#$001C | |
0DF7E4 | LDX #$0020 | X=#$0020 | |
0DF7E7 | JSL $C777F9 | SR: $0777F9 | フロアのエンカウント(A),戦闘背景設定(X) |
0DF7EB | LDA #$000A | A=#$000A | |
0DF7EE | JSL $C7773F | SR: $07773F | 移動単位設定? |
0DF7F2 | JSL $CC997C | SR: $0C997C | |
0DF7F6 | JSL $CADEC9 | SR: $0ADEC9 | フロア階層設定(B4F) |
0DF7FA | JSL $CADE4F | SR: $0ADE4F | ルーラ・キメラの翼使用不可(封印)設定 |
0DF7FE | JSL $C7786D | SR: $07786D 引数:1#$CDA5BF | BGM設定 |
0DF805 | JSL $C77843 | SR: $077843 引数:1#$CDF841 | 移動・宝箱・ドア・NPC情報設定用SRアドレス設定 |
0DF80C | RTL | return |
- SR: $0DF841 ゾーマの城追加フロア1移動・宝箱・ドア・NPC情報設定用SRアドレス設定
0DF841 | LDX #$01B7 | X=#$01B7 | |
---|---|---|---|
0DF844 | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF848 | LDX #$01B8 | X=#$01B8 | |
0DF84B | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF84F | LDX #$01B9 | X=#$01B9 | |
0DF852 | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF856 | LDX #$01C3 | X=#$01C3 | |
0DF859 | JSL $C66696 | SR: $066696 | 宝箱アイテム設定 |
0DF85D | LDX #$01C4 | X=#$01C4 | |
0DF860 | JSL $C66696 | SR: $066696 | 宝箱アイテム設定 |
0DF864 | JSL $C738E2 | SR: $0738E2 引数:1#$00 引数:2#$01 引数:3#$CBB707 | サブマップイベント等設定? |
0DF86D | JSL $C738E2 | SR: $0738E2 引数:1#$00 引数:2#$00 引数:3#$CBB70C | サブマップイベント等設定? |
0DF876 | JSL $C738E2 | SR: $0738E2 引数:1#$01 引数:2#$04 引数:3#$CAF7B7 | サブマップイベント等設定? |
0DF87F | RTL | return |
フロアの編集自体はDQ3マップエディタで回転床の編集もサポートしてもらったのでサクサクできました。直前のフロアの通行情報を見るに、1マス16×16の左上8×8のみに回転床属性をセットすればいいようです。ここで肝になるのは$0DF7EE-,$0DF864-,$0DF86D-の3箇所です。DQ3SFCは通常は1歩は8ピクセル分で16×16の1マスを2歩で移動しますが、$0DF7EE-でこの単位を変え、1歩16ピクセル分で16×16の1マスを1歩で移動するようにしています。$0DF864-,$0DF86D-は回転床の設定です(ここでまた回転床の種類の設定を逆にしてしまい、テストプレイをしてくれた方に指摘される始末。通行情報を作りなおすことも考えたのですが、SRの引数をオリジナルと逆にするだけで見た目正しく動くようになったのでそのままにしています)。
コメント