ゾーマに新しく実装した「暗黒の波動」が強すぎワラタ。レベル99のパーティでも複数種類のステータス異常でたちどころに崩される様はまさに恐怖です。ゾーマ自体のスペックも高い真・ゾーマ戦はかなり楽しんでもらえるのではないかと予想してwktkしてます。
以前の変更で既にアレフガルドのフィールド上に洞窟のアイコン?は設定済みでしたが、ただの張りぼてで、当たり前ながらキャラクターが重なっても何もおきません。というわけで、まず「洞窟のアイコンに重なったら洞窟内のマップに移動(とその逆)」をできるようにすることを目標とします。これを実現するに当たって必要な作業は
- フロアデータ($08A6D4-)レコード数拡張
- フロアデータインデックス($0802F4-)レコード数拡張
- フロア進入時初期化SR配列($0804A3-)レコード数拡張
- サブマップインデックス($08C1F3-)レコード数拡張
- BG1,2インデックス($05187D-)レコード数拡張
- 通行構成データ($010000-)レコード数拡張
- 階段移動データ($0856AA-)レコード数拡張
- 座標移動3データ($085A70-)レコード数拡張
- オリハルコンの洞窟B1Fフロア情報設定
- オリハルコンの洞窟B1F進入時初期化SR実装
- オリハルコンの洞窟B1FBG1,2,通行情報レコード設定
- オリハルコンの洞窟B1F実マップデータ作成
となります。 1から8の作業は1回やれば十分な作業なので次回マップを追加する場合は9から12の作業をすればいいだけになります。レコード数拡張は別エントリでアドレス移動などについて作業内容を書くので省略します。
フィールドマップから街・ダンジョンなどのマップ(便宜上サブマップと呼びます)への移動は「座標移動3データ」の座標データを使用します。サブマップ中での階段などの移動は「階段移動データ」が使われているようです。おそらく、同一サブマップ中ではドア開閉などの情報($7E3618-27)を共有していて、座標移動3で移動したときにクリアする、という動作なのではないかと推測しています。
さて、肝心のオリハルコンの洞窟B1Fのマップですが、マップ編集は初挑戦なので、まずは既存のマップをパクって改変することにしました。元ネタは「ネクロゴンドの洞窟3F」(落とし穴に一度落ちるフロア)です。50%くらい改変しているのと、出入り口がまったく違うので同じ洞窟とはあんまりわからないと思いますがまあ勘弁してくださいwww。ちなみにB2F以降は完全オリジナルにしています(パーツは流用ですが)。今回マップを編集するにあたって「マップ編集ツール」を使わせてもらいました。非常に直感的に作業ができるので楽に作業ができました。こちらの勝手な意見も聞いていただき、作者の45氏には感謝感謝です。
若干端折りますが、フィールドマップ←→洞窟の部分の実装を行います。
- SR: $0A8589 アレフガルドフィールド移動・NPC情報設定
略 | |||
---|---|---|---|
0A85EF-F1 | NOP | ||
0A85F2 | JSL $CAF771 | SR: $0AF771 | アレフガルド移動情報設定(サブ) |
略 |
- SR: $0AF771 アレフガルド移動情報設定(サブ)(新SR)
0AF771 | LDX #$0228 | X=#$0228 | ルビスの塔の座標移動3データ |
---|---|---|---|
0AF774 | JSL $C61509 | SR: $061509 | |
0AF778 | LDX #$024C | X=#$024C | オリハルコンの洞窟の座標移動3データ |
0AF77B | JSL $C61509 | SR: $061509 | |
0AF77F | RTL | return |
- SR: $0AF714 フロア進入時初期化SRアドレス_SRアドレス_0164(新SR)
0AF714 | JSL $CBF86D | SR: $0BF86D | |
---|---|---|---|
0AF718 | RTL | return |
- SR: $0BF86D オリハルコンの洞窟B1F進入時初期化実処理(新SR)
0BF86D | LDA #$0176 | A=#$0176 | |
---|---|---|---|
0BF870 | JSL $C77365 | SR: $077365 | サブマップ画像取得 |
0BF874 | JSL $CC9A82 | SR: $0C9A82 | ダンジョンBGM(アレフガルド)設定 |
0BF878 | LDA #$006A | A=#$006A | |
0BF87B | LDX #$000F | X=#$000F | |
0BF87E | JSL $C777F9 | SR: $0777F9 | フロアのエンカウント,戦闘背景設定 |
0BF882 | JSL $CADEB1 | SR: $0ADEB1 | フロア階層設定(B1F) |
0BF886 | JSL $CDFF1B | SR: $0DFF1B | オリハルコンの洞窟B1Fの呪文封印を解いたか(該当c=on) |
0BF88A | BCS #$04 | if(c==on) goto $0BF890 | |
0BF88C | JSL $CBF9DC | SR: $0BF9DC | 呪文無効環境設定 |
0BF890 | JSL $C77843 | SR: $077843 引数:1#$CDE803 | 移動・宝箱・ドア・NPC情報設定用SRアドレス設定 |
0BF897 | JSL $C7787B | SR: $07787B 引数:1#$CDE326 | 特殊効果設定 |
0BF89E | JSL $C77889 | SR: $077889 引数:1#$CAEADB | 特殊効果設定 |
0BF8A5 | RTL | return |
- SR: $0DE803 オリハルコンの洞窟B1F移動・宝箱・ドア・NPC情報設定(新SR)
0DE803 | LDX #$024D | X=#$024D | アレフガルド地上への移動 |
---|---|---|---|
0DE806 | JSL $C61509 | SR: $061509 | |
0DE80A | LDX #$01AC | X=#$01AC | |
0DE80D | JSL $C614BB | SR: $0614BB | |
0DE811 | JSL $CDFF47 | SR: $0DFF47 | オリハルコンの洞窟B1Fの封魔石を倒しているか |
0DE815 | BCS #$09 | if(c==on) goto $0DE820 | |
0DE817 | NOP | ||
0DE818 | NOP | ||
0DE819 | LDA #$058B | A=#$058B | 封魔石のNPC |
0DE81C | JSL $C75828 | SR: $075828 | NPC1設定 |
0DE820 | JSL $CDE92C | SR: $0DE92C | オリハルコンの洞窟NPC1設定(サブ) |
0DE824 | RTL | return |
- SR: $0DE92C オリハルコンの洞窟NPC1設定(サブ)(新SR)
0DE92C | LDA $3545 | A=$3545 | |
---|---|---|---|
0DE92F | AND #$0008 | A&=#$0008 | ゾーマを倒しているか |
0DE932 | BNE #$07 | if(z==off) goto $0DE93B | |
0DE934 | LDA #$0597 | A=#$0597 | 洞窟に倒れているNPC |
0DE937 | JSL $C75828 | SR: $075828 | NPC1設定 |
0DE93B | RTL | return |
これでフィールドマップ上の洞窟のアイコンに重なるとマップが切り替わり洞窟内部に移動できます。逆もできることを確認します。
コメント
Kmix楽しくプレイさせて頂いております。
マップ編集ツールってDQ3-MAP.exeですよね。
こちらはKmixでも使えるのでしょうか?
使ってみたら街中の改造は出来ましたが外がぐちゃぐちゃになりました
あちらのリドミに
初めて開くゲームファイルの場合、保存する前に一度は設定してください。
とはありましたが
どう設定したらいいのかわかりません。
もともと記述されているアドレスをオリジナルロムで辿って
そこにある16進数の数字を10程
コピーしてKmixの方で検索という手法でKmixに対応するアドレスを
下記のように割り出したつもりですが外がぐちゃぐちゃになる現象は変わりません
(BG3)
0x118000 0x11C39F
(BG12)
0x11C45A 0x16BDB3
(ワールドマップ)
0x19797C 0x1A37E7
(通行)
0x1A36D0 0x1B9960
正常にDQ3-MAP.exeをKmixで使う方法をご教示くださいませ。
いろいろ場所を変えているのでまともに使えないと思います。試したこともありません。