だらだらと続いたこのシリーズも今回で最後…のつもりだったんですが、残りのバラモス城バラモスの間のイベントの部分が長くなってしまったので、光の鎧入手後のガライ離脱部分は次回に回します。
まず準備として、「条件を満たしている場合は隠し部屋への階段を表示した状態でマップを初期化する」部分を実装します。
- 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倍に制限したバージョン(現在開発中)だと鬼化する予感…。
ところで、この戦闘でこっちが全滅したら一人残されたガライはどういう扱いになるんでしょうかねえ…。
コメント
光の鎧を手に入れる時に現れたあの骨はなにものだったんでしょうか?
バラモスの手下の割にはバラモスを守ろうとしてなかったし
バラモスが死んだ後もこうやって裏切るあたり悪ではない感じだと思いました。
「舐めプ」でペラペラ喋っているという解釈をしてください。