DQ3 ストーリー変更(オリハルコンの洞窟2)

ゾーマに新しく実装した「暗黒の波動」が強すぎワラタ。レベル99のパーティでも複数種類のステータス異常でたちどころに崩される様はまさに恐怖です。ゾーマ自体のスペックも高い真・ゾーマ戦はかなり楽しんでもらえるのではないかと予想してwktkしてます。

以前の変更で既にアレフガルドのフィールド上に洞窟のアイコン?は設定済みでしたが、ただの張りぼてで、当たり前ながらキャラクターが重なっても何もおきません。というわけで、まず「洞窟のアイコンに重なったら洞窟内のマップに移動(とその逆)」をできるようにすることを目標とします。これを実現するに当たって必要な作業は

  1. フロアデータ($08A6D4-)レコード数拡張
  2. フロアデータインデックス($0802F4-)レコード数拡張
  3. フロア進入時初期化SR配列($0804A3-)レコード数拡張
  4. サブマップインデックス($08C1F3-)レコード数拡張
  5. BG1,2インデックス($05187D-)レコード数拡張
  6. 通行構成データ($010000-)レコード数拡張
  7. 階段移動データ($0856AA-)レコード数拡張
  8. 座標移動3データ($085A70-)レコード数拡張
  9. オリハルコンの洞窟B1Fフロア情報設定
  10. オリハルコンの洞窟B1F進入時初期化SR実装
  11. オリハルコンの洞窟B1FBG1,2,通行情報レコード設定
  12. オリハルコンの洞窟B1F実マップデータ作成

となります。1から8の作業は1回やれば十分な作業なので次回マップを追加する場合は9から12の作業をすればいいだけになります。レコード数拡張は別エントリでアドレス移動などについて作業内容を書くので省略します。

フィールドマップから街・ダンジョンなどのマップ(便宜上サブマップと呼びます)への移動は「座標移動3データ」の座標データを使用します。サブマップ中での階段などの移動は「階段移動データ」が使われているようです。おそらく、同一サブマップ中ではドア開閉などの情報($7E3618-27)を共有していて、座標移動3で移動したときにクリアする、という動作なのではないかと推測しています。

さて、肝心のオリハルコンの洞窟B1Fのマップですが、マップ編集は初挑戦なので、まずは既存のマップをパクって改変することにしました。元ネタは「ネクロゴンドの洞窟3F」(落とし穴に一度落ちるフロア)です。50%くらい改変しているのと、出入り口がまったく違うので同じ洞窟とはあんまりわからないと思いますがまあ勘弁してくださいwww。ちなみにB2F以降は完全オリジナルにしています(パーツは流用ですが)。今回マップを編集するにあたって「マップ編集ツール」を使わせてもらいました。非常に直感的に作業ができるので楽に作業ができました。こちらの勝手な意見も聞いていただき、作者の45氏には感謝感謝です。

若干端折りますが、フィールドマップ←→洞窟の部分の実装を行います。

  • SR: $0A8589 アレフガルドフィールド移動・NPC情報設定
0A85EF-F1NOP
0A85F2JSL $CAF771SR: $0AF771アレフガルド移動情報設定(サブ)
  • SR: $0AF771 アレフガルド移動情報設定(サブ)(新SR)
0AF771LDX #$0228X=#$0228ルビスの塔の座標移動3データ
0AF774JSL $C61509SR: $061509
0AF778LDX #$024CX=#$024Cオリハルコンの洞窟の座標移動3データ
0AF77BJSL $C61509SR: $061509
0AF77FRTLreturn
  • SR: $0AF714 フロア進入時初期化SRアドレス_SRアドレス_0164(新SR)
0AF714JSL $CBF86DSR: $0BF86D
0AF718RTLreturn
  • SR: $0BF86D オリハルコンの洞窟B1F進入時初期化実処理(新SR)
0BF86DLDA #$0176A=#$0176
0BF870JSL $C77365SR: $077365サブマップ画像取得
0BF874JSL $CC9A82SR: $0C9A82ダンジョンBGM(アレフガルド)設定
0BF878LDA #$006AA=#$006A
0BF87BLDX #$000FX=#$000F
0BF87EJSL $C777F9SR: $0777F9フロアのエンカウント,戦闘背景設定
0BF882JSL $CADEB1SR: $0ADEB1フロア階層設定(B1F)
0BF886JSL $CDFF1BSR: $0DFF1Bオリハルコンの洞窟B1Fの呪文封印を解いたか(該当c=on)
0BF88ABCS #$04if(c==on) goto $0BF890
0BF88CJSL $CBF9DCSR: $0BF9DC呪文無効環境設定
0BF890JSL $C77843SR: $077843 引数:1#$CDE803移動・宝箱・ドア・NPC情報設定用SRアドレス設定
0BF897JSL $C7787BSR: $07787B 引数:1#$CDE326特殊効果設定
0BF89EJSL $C77889SR: $077889 引数:1#$CAEADB特殊効果設定
0BF8A5RTLreturn

  • SR: $0DE803 オリハルコンの洞窟B1F移動・宝箱・ドア・NPC情報設定(新SR)
0DE803LDX #$024DX=#$024Dアレフガルド地上への移動
0DE806JSL $C61509SR: $061509
0DE80ALDX #$01ACX=#$01AC
0DE80DJSL $C614BBSR: $0614BB
0DE811JSL $CDFF47SR: $0DFF47オリハルコンの洞窟B1Fの封魔石を倒しているか
0DE815BCS #$09if(c==on) goto $0DE820
0DE817NOP
0DE818NOP
0DE819LDA #$058BA=#$058B封魔石のNPC
0DE81CJSL $C75828SR: $075828NPC1設定
0DE820JSL $CDE92CSR: $0DE92Cオリハルコンの洞窟NPC1設定(サブ)
0DE824RTLreturn

  • SR: $0DE92C オリハルコンの洞窟NPC1設定(サブ)(新SR)
0DE92CLDA $3545A=$3545
0DE92FAND #$0008A&=#$0008ゾーマを倒しているか
0DE932BNE #$07if(z==off) goto $0DE93B
0DE934LDA #$0597A=#$0597洞窟に倒れているNPC
0DE937JSL $C75828SR: $075828NPC1設定
0DE93BRTLreturn

これでフィールドマップ上の洞窟のアイコンに重なるとマップが切り替わり洞窟内部に移動できます。逆もできることを確認します。

20091109021244.jpg

スポンサーリンク

コメントを書く

メールアドレスが公開されることはありません。コメントは管理者の承認後表示されます。