DQ3 ストーリー変更(光の鎧入手8)

だらだらと続いたこのシリーズも今回で最後…のつもりだったんですが、残りのバラモス城バラモスの間のイベントの部分が長くなってしまったので、光の鎧入手後のガライ離脱部分は次回に回します。

まず準備として、「条件を満たしている場合は隠し部屋への階段を表示した状態でマップを初期化する」部分を実装します。

  • SR: $0AA1E2 バラモス城B1Fバラモスの間移動・宝箱・ドア・NPC情報設定
0AA209 JSL $CDE763 SR: $0DE763 バラモスの間NPC設定+追加イベント用各種設定
  • SR: $0DE763 バラモスの間NPC設定+追加イベント用各種設定(新SR)
0DE763 JSL $CCC8A2 SR: $0CC8A2 バラモスの間NPC情報設定
0DE767 JSL $CDF23F SR: $0DF23F バラモスの間追加イベント用設定
0DE76B RTL return
  • SR: $0CC8A2 バラモスの間NPC情報設定
0CC8A2 JSR $F22E SR: $0CF22E バラモスの間NPC設定(サブ)
  • SR: $0CF22E バラモスの間NPC設定(サブ)(新SR)
0CF22E JSL $CDE55C SR: $0DE55C バラモス城追加ボスを倒したか(該当c=on)
0CF232 BCS #$24 if(c==on) goto $0CF258
0CF234 JSL $CCFF1C SR: $0CFF1C ガライが仲間になっているか(該当c=on)
0CF238 BCC #$17 if(c==off) goto $0CF251
0CF23A LDA #$059A A=#$059A モンスター1体目のNPC
0CF23D JSL $C75828 SR: $075828 NPC1設定
0CF241 LDA #$059B A=#$059B モンスター2体目のNPC
0CF244 JSL $C75828 SR: $075828 NPC1設定
0CF248 LDA #$05A2 A=#$05A2 ガライのNPC
0CF24B JSL $C75828 SR: $075828 NPC1設定
0CF24F BRA #$07 goto $0CF258
  • SR: $0DF23F バラモスの間追加イベント用設定
0DF23F JSL $CDF2F0 SR: $0DF2F0 バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定(処理済c=on)
0DF243 BCS #$0F if(c==on) goto $0DF254
0DF245 LDA $35B4 A=$35B4
0DF248 AND #$0001 A&=#$0001 エルフの女王に光の鎧の隠し場所のアタリを聞いた
0DF24B BEQ #$07 if(z==on) goto $0DF254
0DF24D LDX #$0097 X=#$0097
0DF250 JSL $C666FA SR: $0666FA しらべるイベント設定
0DF254 RTL return
  • SR: $0DF2F0 バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定(処理済c=on)(新SR)
0DF2F0 LDA $35B4 A=$35B4
0DF2F3 AND #$0010 A&=#$0010
0DF2F6 BEQ #$07 if(z==on) goto $0DF2FF
0DF2F8 JSL $CDF301 SR: $0DF301
0DF2FC SEC c=on
0DF2FD BRA #$01 goto $0DF300
0DF2FF CLC c=off
0DF300 RTL return
  • SR: $0DF301 バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定(新SR)
0DF301 LDA #$0980 A=#$0980
0DF304 STA $9680 $9680=A 階段マップパーツX座標指定
0DF307 LDA #$0910 A=#$0910
0DF30A STA $9682 $9682=A 階段マップパーツY座標指定
0DF30D LDX #$03A3 X=#$03A3
0DF310 LDY #$0000 Y=#$0000
0DF313 JSL $C734B3 SR: $0734B3 マップパーツ差し替え?
0DF317 LDX #$01B4 X=#$01B4
0DF31A JSL $C614BB SR: $0614BB 階段移動データ設定
0DF31E RTL return

次にイベントを実装します。例によってまずイベントの設計を行います。今回は結構長いです。

カウンタ 処理内容
1000 ガライのNPCを表示する
2000 PC再描画を行い、5人目を透明にする
3000 ガライを指定座標に移動する
4000 竪琴のSE再生+画面エフェクト+マップパーツ差し替え
5000 モンスターNPC1出現+指定座標に移動
6000 モンスターNPC2出現+指定座標に移動
7000 モンスターNPC1指定座標に移動
8000 イベント戦闘
9000 ガライの台詞+5人目の座標に移動
10000 PC再描画を行い、5人目を実体化する
11000 ガライのNPC消滅
12000 イベント終了時のPC表示処理
  • SR: $0DF32A バラモスの間追加イベント処理2(新SR)
0DF32A COP goto $00FFE4
0DF32B JSL $CCD276 SR: $0CD276
0DF32F LDA #$0960 A=#$0960
0DF332 LDX #$09A0 X=#$09A0
0DF335 LDY #$09B0 Y=#$09B0
0DF338 JSL $C75365 SR: $075365 PCが指定座標(X座標は範囲指定)に到達しているか?(しているc=on)
0DF33C BCS #$02 if(c==on) goto $0DF340
0DF33E BRA #$EB goto $0DF32B
0DF340 JSL $CDD687 SR: $0DD687 PC先頭キャラクターを移動対象にする?
0DF344 JSL $CCD392 SR: $0CD392 キャラクターイベント中移動フラグON?
0DF348 JSL $CCD346 SR: $0CD346 移動速度1倍速セット?
0DF34C LDX #$0030 X=#$0030
0DF34F LDA #$002C A=#$002C
0DF352 JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DF356 JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DF35A JSL $CDADD8 SR: $0DADD8 カウンタに1000をセット
0DF35E JSL $CDAED1 SR: $0DAED1 カウンタが2000になるまで待機
0DF362 LDA #$0008 A=#$0008
0DF365 TSB $3638 A or $3638
0DF368 JSL $CDD682 SR: $0DD682 PC再描画?
0DF36C JSL $CDADED SR: $0DADED カウンタに3000をセット
0DF370 JSL $CDAEF1 SR: $0DAEF1 カウンタが4000になるまで待機
0DF374 LDA #$0020 A=#$0020
0DF377 JSL $C74B39 SR: $074B39 処理にインターバルを置く?
0DF37B JSL $C737BE SR: $0737BE 引数:1#$1053 メッセージ表示
0DF381 JSL $C1E32E SR: $01E32E 引数:1#$003C 再生BGM設定?
0DF387 JSL $C028B4 SR: $0028B4 入力ブロック?
0DF38B JSL $C1E59C SR: $01E59C 引数:1#$003C BGM停止
0DF391 BCC #$F4 if(c==off) goto $0DF387
0DF393 JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0DF397 LDA #$0038 A=#$0038
0DF39A JSL $C74B39 SR: $074B39 処理にインターバルを置く?
0DF39E JSL $CA1DB1 SR: $0A1DB1 岩を砕くBGM?
0DF3A2 JSL $CDE1BD SR: $0DE1BD 画面を揺らす効果?
0DF3A6 LDA #$0048 A=#$0048
0DF3A9 JSL $C74B39 SR: $074B39 処理にインターバルを置く?
0DF3AD JSL $CA1DB1 SR: $0A1DB1 岩を砕くBGM?
0DF3B1 JSL $CDE1BD SR: $0DE1BD 画面を揺らす効果?
0DF3B5 LDA #$0010 A=#$0010
0DF3B8 JSL $C74B39 SR: $074B39 処理にインターバルを置く?
0DF3BC JSL $C1E32E SR: $01E32E 引数:1#$003F 再生BGM設定?
0DF3C2 JSL $CDF301 SR: $0DF301 バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定
0DF3C6 JSL $CCD066 SR: $0CD066
0DF3CA JSL $CCD07D SR: $0CD07D
0DF3CE JSL $CDADFB SR: $0DADFB カウンタに5000をセット
0DF3D2 JSL $CDAF31 SR: $0DAF31 カウンタが8000になるまで待機
0DF3D6 JSL $CDF509 SR: $0DF509 イベント戦闘(vsキラーマジンガ+マジックアーマー)
0DF3DA LDA #$0010 A=#$0010
0DF3DD TSB $35B4 A or $35B4
0DF3E0 JSL $CDAE17 SR: $0DAE17 カウンタに9000をセット
0DF3E4 JSL $CDAF51 SR: $0DAF51 カウンタが10000になるまで待機
0DF3E8 JSL $C907CC SR: $0907CC 引数:1#$3638 引数:2#$7E 引数:3#$08 引数:4#$00 引数:5#$00 RAM上情報変更(OFF)
0DF3F2 JSL $CDD682 SR: $0DD682 PC再描画?
0DF3F6 JSL $CDAE25 SR: $0DAE25 カウンタに11000をセット
0DF3FA JSL $CDAF71 SR: $0DAF71 カウンタが12000になるまで待機
0DF3FE LDA #$0020 A=#$0020
0DF401 JSL $C74B8C SR: $074B8C 行動対象キャラクター指定?
0DF405 JSL $CDD65C SR: $0DD65C PC表示?
0DF409 JSL $CCD298 SR: $0CD298 イベント終了時処理?
0DF40D RTL return
  • SR: $0DF40E NPC1_MoveSR_05A2(ガライのNPC)(新SR)
0DF40E COP goto $00FFE4
0DF40F JSL $CDAEB1 SR: $0DAEB1 カウンタが1000になるまで待機
0DF413 JSL $CCD392 SR: $0CD392 キャラクターイベント中移動フラグON?
0DF417 JSL $C4297C SR: $04297C 引数:1#$01 引数:2#$FF パーティ人数取得
0DF41D ASL A<<1
0DF41E TAY Y=A
0DF41F LDA $C5E5,Y A=$C5E5+Y
0DF422 LDX $C625,Y X=$C625+Y
0DF425 JSL $C7C85B SR: $07C85B 出現先座標をWX,WYで指定
0DF429 JSL $CCD857 SR: $0CD857 キャラクターを上に向かせる
0DF42D JSL $CDADE6 SR: $0DADE6 カウンタに2000をセット
0DF431 JSL $CDAEE1 SR: $0DAEE1 カウンタが3000になるまで待機
0DF435 LDX #$002C X=#$002C
0DF438 LDA #$002C A=#$002C
0DF43B JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DF43F JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DF443 JSL $CCD863 SR: $0CD863 キャラクターを右に向かせる
0DF447 BRK $1052 ($0D1052) goto $00FFE6(メッセージ表示) #$1052
0DF44A JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0DF44E JSL $CCD857 SR: $0CD857 キャラクターを上に向かせる
0DF452 JSL $CDADF4 SR: $0DADF4 カウンタに4000をセット
0DF456 JSL $CDAF41 SR: $0DAF41 カウンタが9000になるまで待機
0DF45A JSL $CCD863 SR: $0CD863 キャラクターを右に向かせる
0DF45E BRK $1054 ($0D1054) goto $00FFE6(メッセージ表示) #$1054
0DF461 JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0DF465 JSL $C4297C SR: $04297C 引数:1#$01 引数:2#$FF パーティ人数取得
0DF46B ASL A<<1
0DF46C ADC #$002C A+=(#$002C+c)
0DF46F LDX #$0030 X=#$0030
0DF472 JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DF476 JSL $CCD59D SR: $0CD59D 指定座標にY軸→X軸の順でキャラクター移動
0DF47A JSL $CCD857 SR: $0CD857 キャラクターを上に向かせる
0DF47E JSL $CDAE1E SR: $0DAE1E カウンタに10000をセット
0DF482 JSL $CDAF61 SR: $0DAF61 カウンタが11000になるまで待機
0DF486 JSL $C75930 SR: $075930 キャラクター消滅
0DF48A JSL $CDAE2C SR: $0DAE2C カウンタに12000をセット
0DF48E RTL return
  • SR: $0DF48F NPC1_MoveSR_059A(モンスター1体目NPC)(新SR)
0DF48F COP goto $00FFE4
0DF490 JSL $CDAF01 SR: $0DAF01 カウンタが5000になるまで待機
0DF494 LDA #$0030 A=#$0030
0DF497 LDX #$0022 X=#$0022
0DF49A JSL $C75305 SR: $075305 キャラクター出現座標を指定
0DF49E JSL $CCD85D SR: $0CD85D キャラクターを下に向かせる
0DF4A2 JSL $CCD392 SR: $0CD392 キャラクターイベント中移動フラグON?
0DF4A6 JSL $CC7289 SR: $0C7289 キャラクターがその場で飛び上がる処理
0DF4AA JSL $CCD35E SR: $0CD35E 移動速度4/3倍速セット?
0DF4AE LDX #$0030 X=#$0030
0DF4B1 LDA #$0024 A=#$0024
0DF4B4 JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DF4B8 JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DF4BC JSL $CDAE02 SR: $0DAE02 カウンタに6000をセット
0DF4C0 JSL $CDAF21 SR: $0DAF21 カウンタが7000になるまで待機
0DF4C4 LDX #$0030 X=#$0030
0DF4C7 LDA #$002A A=#$002A
0DF4CA JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DF4CE JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DF4D2 JSL $CDAE10 SR: $0DAE10 カウンタに8000をセット
0DF4D6 RTL return
  • SR: $0DF4D7 NPC1_MoveSR_059A(モンスター2体目NPC)(新SR)
0DF4D7 COP goto $00FFE4
0DF4D8 JSL $CDAF11 SR: $0DAF11 カウンタが6000になるまで待機
0DF4DC LDA #$0030 A=#$0030
0DF4DF LDX #$0022 X=#$0022
0DF4E2 JSL $C75305 SR: $075305 キャラクター出現座標を指定
0DF4E6 JSL $CCD85D SR: $0CD85D キャラクターを下に向かせる
0DF4EA JSL $CCD392 SR: $0CD392 キャラクターイベント中移動フラグON?
0DF4EE JSL $CC7289 SR: $0C7289 キャラクターがその場で飛び上がる処理
0DF4F2 JSL $CDAE09 SR: $0DAE09 カウンタに7000をセット
0DF4F6 JSL $CCD35E SR: $0CD35E 移動速度4/3倍速セット?
0DF4FA LDX #$0030 X=#$0030
0DF4FD LDA #$0028 A=#$0028
0DF500 JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DF504 JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DF508 RTL return

階段のマップパーツを動的に表示する部分はゾーマの城の1Fの隠し階段を見つける部分を参考にしました。また、モンスター登場時のエフェクトはノルドの洞窟(アッサラーム東)のホビットに抜け道を空けてもらう部分を参考にしました。この部分は珍しく一発でやりたいことが出来たので達成感は高かったですw。

1点心残りだったのが、戦闘背景を替えざるを得なかったことです。ボスモンスター「マジックアーマー」の色合い(紫)だともともとのバラモス城の戦闘背景だと見にくくなったため、仕方なくゾーマの城の背景に差し替えました。


うーん。やはり見にくい。床の色がもうちょっと赤っぽかったらねえ。

というわけで妥協の結果こうなりました。マジックアーマーの色を青くするのも試してみたのですが、いまいちしっくり来なかったのでやむを得ず。あと、原案では「キラーマジンガ1体+マジックアーマー2体」だったのですが、イオナズンを2体揃って連発されるともうどうしようもないのでやめましたw。しかしこいつら、スクルトの上限を守備力の2倍に制限したバージョン(現在開発中)だと鬼化する予感…。

ところで、この戦闘でこっちが全滅したら一人残されたガライはどういう扱いになるんでしょうかねえ…。

コメント

  1. 匿名 より:

    光の鎧を手に入れる時に現れたあの骨はなにものだったんでしょうか?
    バラモスの手下の割にはバラモスを守ろうとしてなかったし
    バラモスが死んだ後もこうやって裏切るあたり悪ではない感じだと思いました。

    管理者より返信:

    「舐めプ」でペラペラ喋っているという解釈をしてください。