DQ3のクリア後の隠しダンジョンはずいぶんと中途半端です。ゼニスの城までのフロア構成は脇道を除いて以下のようになっています。
- ネクロゴンド2F(逆)
- ネクロゴンド4F(逆)
- おろちの洞窟B1F
- ピラミッド2F
- 地底の湖B3F(回復ポイント有)
- ネクロゴンド1F(エンカウントなし)
- サマンオサ場内B1F(エンカウントなし)
- 格闘場(エンカウントなし)
- ポルトガの灯台2F?(エンカウントなし)
改めて見ると実質エンカウントのあるフロア数は実質5フロアと少ない事がわかります。おまけ要素の強い隠しダンジョンでは、フロアの統一性は無視できますが、階段が複数あるような分岐フロアをおいそれと使うわけにも行きません。また、宝箱が多いフロアもその中身を別途考えないといけないため、これまた厄介です。というわけで、そのままだと隠しダンジョンで使用できるフロアにかなりの制限ができてしまうため、この制限を取り払い、フロア中に自由に階段パーツ、宝箱パーツを配置、またその逆を行えるようにします。実際にフロアを移動する情報(階段移動データ)、宝箱の座標と中身(アイテム習得データ等)の座標はグラフィック上の階段パーツとは別に設定するので、これはどうとでもなります。従って実際のマップ上に配置されている階段パーツ、宝箱パーツ、及び宝箱パーツ上に合わせて設定されている通行構成情報上の通行不可フラグをいじればいい、ということになります。
オリジナルでも動的に階段を配置する、という処理はゾーマの城1Fの玉座の裏のように行われているので、その処理を参考にすればいいということになります。今回は例として、ナジミの塔B1F(アリアハンB1F、岬の洞窟B2F、草原のほこら、ナジミの塔1Fに接続するフロア)の宝箱、階段をいじることにします。ナジミの塔、岬の洞窟に通じる階段をなくし、アリアハン城に通じる階段を下り階段に変更します。また、草原のほこらの入り口から入ってすぐの扉の中にある宝箱を1つ消します。
- SR: $0BF376 隠しダンジョン挿入フロア1進入時初期化処理
0BF376 | LDA #$013A | A=#$013A | サブマップID指定 |
---|---|---|---|
0BF379 | JSL $077365 | SR: $077365 | サブマップ画像情報取得 |
0BF37D | JSL $0C9A3A | SR: $0C9A3A | ダンジョンBGM設定 |
0BF381 | JSL $0C997C | SR: $0C997C | |
0BF385 | LDA #$0068 | A=#$0068 | |
0BF388 | LDY #$0001 | Y=#$0001 | |
0BF38B | JSL $077522 | SR: $077522 | |
0BF38F | JSL $0AF9AD | SR: $0AF9AD | |
0BF393 | LDA #$0064 | A=#$0064 | |
0BF396 | LDX #$0018 | X=#$0018 | |
0BF399 | JSL $0777F9 | SR: $0777F9 | フロアのエンカウント(A),戦闘背景設定(X) |
0BF39D | JSL $0ADE63 | SR: $0ADE63 | |
0BF3A1 | JSL $0AE0CE | SR: $0AE0CE | |
0BF3A5 | JSL $077843 | SR: $077843 引数:1#$C9EC54 | 移動・宝箱・ドア・NPC情報設定用SRアドレス設定 |
0BF3AC | JSL $07787B | SR: $07787B 引数:1#$CDE326 | パレットアニメーション1設定 |
0BF3B3 | JSL $077889 | SR: $077889 引数:1#$CAE992 | パレットアニメーション2設定 |
0BF3BA | RTL | return |
- SR: $09EC54 隠しダンジョン挿入フロア1移動・宝箱・ドア・NPC情報設定
09EC54 | LDA #$0C20 | A=#$0C20 | X座標指定(絶対座標?) |
---|---|---|---|
09EC57 | STA $9680 | $9680=A | |
09EC5A | LDA #$08D8 | A=#$08D8 | Y座標指定(絶対座標?) |
09EC5D | STA $9682 | $9682=A | |
09EC60 | LDX #$03A3 | X=#$03A3 | 下り階段のマップパーツ |
09EC63 | LDY #$0000 | Y=#$0000 | 0ならBG1,1ならBG2 |
09EC66 | JSL $C734B3 | SR: $0734B3 | 指定座標にBG1,2を上書き? |
09EC6A | LDA #$0C80 | A=#$0C80 | |
09EC6D | STA $9680 | $9680=A | |
09EC70 | LDA #$0AF8 | A=#$0AF8 | |
09EC73 | STA $9682 | $9682=A | |
09EC76 | LDX #$04DF | X=#$04DF | 空のマップパーツ |
09EC79 | LDY #$0000 | Y=#$0000 | |
09EC7C | JSL $C734B3 | SR: $0734B3 | 指定座標にBG1,2を上書き? |
09EC80 | LDA #$0A00 | A=#$0A00 | |
09EC83 | STA $9680 | $9680=A | |
09EC86 | LDA #$0B88 | A=#$0B88 | |
09EC89 | STA $9682 | $9682=A | |
09EC8C | LDX #$04DF | X=#$04DF | |
09EC8F | LDY #$0000 | Y=#$0000 | |
09EC92 | JSL $C734B3 | SR: $0734B3 | 指定座標にBG1,2を上書き? |
09EC96 | LDA #$0BC0 | A=#$0BC0 | |
09EC99 | STA $9680 | $9680=A | |
09EC9C | LDA #$0A10 | A=#$0A10 | |
09EC9F | STA $9682 | $9682=A | |
09ECA2 | LDX #$04DF | X=#$04DF | |
09ECA5 | LDY #$0000 | Y=#$0000 | |
09ECA8 | JSL $C734B3 | SR: $0734B3 | 指定座標にBG1,2を上書き? |
09ECAC | LDA #$0078 | A=#$0078 | 左上相対X座標指定 |
09ECAF | STA $9C11 | $9C11=A | |
09ECB2 | LDA #$0041 | A=#$0041 | 左上相対Y座標指定 |
09ECB5 | STA $9C13 | $9C13=A | |
09ECB8 | LDA #$0079 | A=#$0079 | 右下相対X座標指定 |
09ECBB | STA $9C15 | $9C15=A | |
09ECBE | LDA #$0043 | A=#$0043 | 右下相対Y座標指定 |
09ECC1 | STA $9C17 | $9C17=A | |
09ECC4 | LDX #$0000 | X=#$0000 | |
09ECC7 | LDY #$0000 | Y=#$0000 | |
09ECCA | JSL $C736C8 | SR: $0736C8 | 通行情報動的設定(#$2000) |
09ECCE | LDX #$01C4 | X=#$01C4 | |
09ECD1 | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
09ECD5 | LDX #$01C5 | X=#$01C5 | |
09ECD8 | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
09ECDC | LDX #$0155 | X=#$0155 | |
09ECDF | JSL $C62407 | SR: $062407 | ドア開閉データ設定 |
09ECE3 | JSL $CBD8C1 | SR: $0BD8C1 | ナジミの塔B1F屋根配置 |
09ECE7 | LDX #$01CC | X=#$01CC | |
09ECEA | JSL $C66696 | SR: $066696 | 宝箱アイテム設定 |
09ECEE | LDX #$01CD | X=#$01CD | |
09ECF1 | JSL $C66696 | SR: $066696 | 宝箱アイテム設定 |
09ECF5 | RTL | return |
絶対座標、相対座標というのはデバッグメニューの「座標ウィンドウ表示」をONにして表示されるWX,WY(絶対座標)、X,Y(相対座標)のことです。で、実際にゲーム上でどうなるか、というのがこちら。
というわけで、フロア中の階段や宝箱の操作を動的に行えるので、何でもやり放題、ということになります。
コメント