DQ3 フロア中の階段、宝箱を自由に配置する

DQ3のクリア後の隠しダンジョンはずいぶんと中途半端です。ゼニスの城までのフロア構成は脇道を除いて以下のようになっています。

  1. ネクロゴンド2F(逆)
  2. ネクロゴンド4F(逆)
  3. おろちの洞窟B1F
  4. ピラミッド2F
  5. 地底の湖B3F(回復ポイント有)
  6. ネクロゴンド1F(エンカウントなし)
  7. サマンオサ場内B1F(エンカウントなし)
  8. 格闘場(エンカウントなし)
  9. ポルトガの灯台2F?(エンカウントなし)

改めて見ると実質エンカウントのあるフロア数は実質5フロアと少ない事がわかります。おまけ要素の強い隠しダンジョンでは、フロアの統一性は無視できますが、階段が複数あるような分岐フロアをおいそれと使うわけにも行きません。また、宝箱が多いフロアもその中身を別途考えないといけないため、これまた厄介です。というわけで、そのままだと隠しダンジョンで使用できるフロアにかなりの制限ができてしまうため、この制限を取り払い、フロア中に自由に階段パーツ、宝箱パーツを配置、またその逆を行えるようにします。実際にフロアを移動する情報(階段移動データ)、宝箱の座標と中身(アイテム習得データ等)の座標はグラフィック上の階段パーツとは別に設定するので、これはどうとでもなります。従って実際のマップ上に配置されている階段パーツ、宝箱パーツ、及び宝箱パーツ上に合わせて設定されている通行構成情報上の通行不可フラグをいじればいい、ということになります。

オリジナルでも動的に階段を配置する、という処理はゾーマの城1Fの玉座の裏のように行われているので、その処理を参考にすればいいということになります。今回は例として、ナジミの塔B1F(アリアハンB1F、岬の洞窟B2F、草原のほこら、ナジミの塔1Fに接続するフロア)の宝箱、階段をいじることにします。ナジミの塔、岬の洞窟に通じる階段をなくし、アリアハン城に通じる階段を下り階段に変更します。また、草原のほこらの入り口から入ってすぐの扉の中にある宝箱を1つ消します。

  • SR: $0BF376 隠しダンジョン挿入フロア1進入時初期化処理
0BF376LDA #$013AA=#$013AサブマップID指定
0BF379JSL $077365SR: $077365サブマップ画像情報取得
0BF37DJSL $0C9A3ASR: $0C9A3AダンジョンBGM設定
0BF381JSL $0C997CSR: $0C997C
0BF385LDA #$0068A=#$0068
0BF388LDY #$0001Y=#$0001
0BF38BJSL $077522SR: $077522
0BF38FJSL $0AF9ADSR: $0AF9AD
0BF393LDA #$0064A=#$0064
0BF396LDX #$0018X=#$0018
0BF399JSL $0777F9SR: $0777F9フロアのエンカウント(A),戦闘背景設定(X)
0BF39DJSL $0ADE63SR: $0ADE63
0BF3A1JSL $0AE0CESR: $0AE0CE
0BF3A5JSL $077843SR: $077843 引数:1#$C9EC54移動・宝箱・ドア・NPC情報設定用SRアドレス設定
0BF3ACJSL $07787BSR: $07787B 引数:1#$CDE326パレットアニメーション1設定
0BF3B3JSL $077889SR: $077889 引数:1#$CAE992パレットアニメーション2設定
0BF3BARTLreturn

  • SR: $09EC54 隠しダンジョン挿入フロア1移動・宝箱・ドア・NPC情報設定
09EC54LDA #$0C20A=#$0C20X座標指定(絶対座標?)
09EC57STA $9680$9680=A
09EC5ALDA #$08D8A=#$08D8Y座標指定(絶対座標?)
09EC5DSTA $9682$9682=A
09EC60LDX #$03A3X=#$03A3下り階段のマップパーツ
09EC63LDY #$0000Y=#$00000ならBG1,1ならBG2
09EC66JSL $C734B3SR: $0734B3指定座標にBG1,2を上書き?
09EC6ALDA #$0C80A=#$0C80
09EC6DSTA $9680$9680=A
09EC70LDA #$0AF8A=#$0AF8
09EC73STA $9682$9682=A
09EC76LDX #$04DFX=#$04DF空のマップパーツ
09EC79LDY #$0000Y=#$0000
09EC7CJSL $C734B3SR: $0734B3指定座標にBG1,2を上書き?
09EC80LDA #$0A00A=#$0A00
09EC83STA $9680$9680=A
09EC86LDA #$0B88A=#$0B88
09EC89STA $9682$9682=A
09EC8CLDX #$04DFX=#$04DF
09EC8FLDY #$0000Y=#$0000
09EC92JSL $C734B3SR: $0734B3指定座標にBG1,2を上書き?
09EC96LDA #$0BC0A=#$0BC0
09EC99STA $9680$9680=A
09EC9CLDA #$0A10A=#$0A10
09EC9FSTA $9682$9682=A
09ECA2LDX #$04DFX=#$04DF
09ECA5LDY #$0000Y=#$0000
09ECA8JSL $C734B3SR: $0734B3指定座標にBG1,2を上書き?
09ECACLDA #$0078A=#$0078左上相対X座標指定
09ECAFSTA $9C11$9C11=A
09ECB2LDA #$0041A=#$0041左上相対Y座標指定
09ECB5STA $9C13$9C13=A
09ECB8LDA #$0079A=#$0079右下相対X座標指定
09ECBBSTA $9C15$9C15=A
09ECBELDA #$0043A=#$0043右下相対Y座標指定
09ECC1STA $9C17$9C17=A
09ECC4LDX #$0000X=#$0000
09ECC7LDY #$0000Y=#$0000
09ECCAJSL $C736C8SR: $0736C8通行情報動的設定(#$2000)
09ECCELDX #$01C4X=#$01C4
09ECD1JSL $C614BBSR: $0614BB階段移動データ設定
09ECD5LDX #$01C5X=#$01C5
09ECD8JSL $C614BBSR: $0614BB階段移動データ設定
09ECDCLDX #$0155X=#$0155
09ECDFJSL $C62407SR: $062407ドア開閉データ設定
09ECE3JSL $CBD8C1SR: $0BD8C1ナジミの塔B1F屋根配置
09ECE7LDX #$01CCX=#$01CC
09ECEAJSL $C66696SR: $066696宝箱アイテム設定
09ECEELDX #$01CDX=#$01CD
09ECF1JSL $C66696SR: $066696宝箱アイテム設定
09ECF5RTLreturn

絶対座標、相対座標というのはデバッグメニューの「座標ウィンドウ表示」をONにして表示されるWX,WY(絶対座標)、X,Y(相対座標)のことです。で、実際にゲーム上でどうなるか、というのがこちら。

というわけで、フロア中の階段や宝箱の操作を動的に行えるので、何でもやり放題、ということになります。

コメント

タイトルとURLをコピーしました