今回から肝心の戦闘部分を実装していきます。
流れとしては、
- 町の入り口にいるガライに話し掛ける。
- 「準備はいいか?」に対して「はい」と答えるとガライに銀の竪琴を渡す。
- イベント戦闘6連戦(ボス戦含む)
- 画面切り替わり、説明文章表示
というようにしました。実際にやってみてわかったんですが、いくつか問題点がありました。
- 移動中も戦闘BGMなので戦闘終了→移動画面に切り替え→次の戦闘開始という部分で戦闘BGMの出だしのBGMがかなりの頻度で繰り返されることになるので、鬱陶しい。
- 連戦中にPCの移動がないので、イベント自体の印象が地味www
2点目の問題については、今のところいい案が思いつかないのでとりあえず後回しにします。1点目の問題については、「ボス戦が終わるまでBGMの切り替えは一切行わない」とすることで対処します。
まずはイベント全体の枠を実装してしまいます。例によってイベントの設計を最初に行います。
カウンタ | 処理 |
---|---|
1000 | ガライに銀の竪琴を渡す+ガライが指定座標に移動 |
2000 | PCが指定座標に移動+ガライが銀の竪琴を弾き始める |
3000 | モンスター1出現 |
4000 | 連戦1戦目 |
5000 | モンスター2出現 |
6000 | 連戦2戦目 |
7000 | モンスター3出現 |
8000 | 連戦3戦目 |
9000 | モンスター4出現 |
10000 | 連戦4戦目 |
11000 | モンスター5出現 |
12000 | 連戦5戦目 |
13000 | モンスター6出現 |
14000 | 連戦6戦目(ボス戦) |
15000 | モンスター6台詞+消滅 |
16000 | 兵士1のアクション |
17000 | 兵士2のアクション |
18000 | 画面をフェードアウトさせ、説明台詞を表示、PCを宿屋に移動 |
長いですねー。今回はカウンタを18000まで使います。最後の「説明台詞を表示」というのはボストロールを倒した後に表示されるアレと同じものです。
- SR: $0A4AB2 メルキド進入時初期化処理
略 | |||
---|---|---|---|
0A4AD7 | JSL $CCF735 | SR: $0CF735 | メルキド特殊効果+イベント設定 |
0A4ADB-D | NOP | ||
略 |
- SR: $0CF279 メルキド特殊効果+イベント設定(新SR)
0CF735 | JSL $C77889 | SR: $077889 引数:1#$CAE288 | 特殊効果設定? |
---|---|---|---|
0CF73C | JSL $C7785F | SR: $07785F 引数:1#$CCFD0A | イベント設定 |
0CF743 | RTL | return |
- SR: $0CFA3D NPC1_TalkSR_0581(ガライのNPC)(新SR)
0CFA3D | JSL $CCF2EE | SR: $0CF2EE | メルキド襲撃イベントを一度経験している(該当c=on) |
---|---|---|---|
0CFA41 | BCS #$03 | if(c==on) goto $0CFA46 | |
0CFA43 | BRK $100D ($0C100D) | goto $00FFE6(メッセージ表示) #$100D | |
0CFA46 | BRK $100E ($0C100E) | goto $00FFE6(メッセージ表示) #$100E | |
0CFA49 | JSL $CDAC66 | SR: $0DAC66 | はい/いいえ選択処理(はいc=on) |
0CFA4D | BCC #$02 | if(c==off) goto $0CFA51 | |
0CFA4F | BRA #$04 | goto $0CFA55 | |
0CFA51 | BRK $1017 ($0C1017) | goto $00FFE6(メッセージ表示) #$1017 | |
0CFA54 | RTL | return | |
0CFA55 | JSL $CCF2EE | SR: $0CF2EE | メルキド襲撃イベントを一度経験している(該当c=on) |
0CFA59 | BCC #$08 | if(c==off) goto $0CFA63 | |
0CFA5B | JSL $C737BE | SR: $0737BE 引数:1#$1023 | メッセージ表示 |
0CFA61 | BRA #$10 | goto $0CFA73 | |
0CFA63 | JSL $C737BE | SR: $0737BE 引数:1#$1018 | メッセージ表示 |
0CFA69 | JSL $CCF1AF | SR: $0CF1AF | 銀の竪琴削除 |
0CFA6D | LDA #$0008 | A=#$0008 | |
0CFA70 | TSB $35B1 | A or $35B1 | メルキドにモンスター襲撃中に銀のたてごとをガライに渡した |
0CFA73 | JSL $CDADD8 | SR: $0DADD8 | カウンタに1000をセット |
0CFA77 | RTL | return |
- SR: $0CF45A NPC1_MoveSR_0581(ガライのNPC)(新SR)
0CF45A | COP | goto $00FFE4 | |
---|---|---|---|
0CF45B | JSL $CDAEB1 | SR: $0DAEB1 | カウンタが1000になるまで待機 |
0CF45F | JSL $CC73CF | SR: $0C73CF | キャラクターが足踏みをする処理 |
0CF463 | LDX #$0030 | X=#$0030 | |
0CF466 | LDA #$001E | A=#$001E | |
0CF469 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0CF46D | JSL $CCD59D | SR: $0CD59D | 指定座標にY軸→X軸の順でキャラクター移動 |
0CF471 | JSL $CCD857 | SR: $0CD857 | キャラクターを上に向かせる |
0CF475 | JSL $CDADE6 | SR: $0DADE6 | カウンタに2000をセット |
0CF479 | RTL | return |
- SR: $0CFD0A メルキド追加イベント処理(新SR)
0CFD0A | COP | goto $00FFE4 | |
---|---|---|---|
0CFD0B | JSL $CCE1D1 | SR: $0CE1D1 | イベント開始待ち? |
0CFD0F | JSL $CDAED1 | SR: $0DAED1 | カウンタが2000になるまで待機 |
0CFD13 | JSL $CCD392 | SR: $0CD392 | キャラクターイベント中移動フラグON? |
0CFD17 | JSL $CCD346 | SR: $0CD346 | 移動速度1倍速セット? |
0CFD1B | JSL $CDD687 | SR: $0DD687 | PC先頭キャラクターを移動対象にする? |
0CFD1F | LDX #$0032 | X=#$0032 | |
0CFD22 | LDA #$001C | A=#$001C | |
0CFD25 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0CFD29 | JSL $CCD58C | SR: $0CD58C | 指定座標にX軸→Y軸の順でキャラクター移動 |
0CFD2D | JSL $C737BE | SR: $0737BE 引数:1#$1019 | メッセージ表示 |
0CFD33 | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0CFD37 | JSL $CDADED | SR: $0DADED | カウンタに3000をセット |
0CFD3B | JSL $CDAEF1 | SR: $0DAEF1 | カウンタが4000になるまで待機 |
0CFD3F | JSL $CDEA00 | SR: $0DEA00 | イベント戦闘(メルキド襲撃1戦目) |
0CFD43 | JSL $CDADFB | SR: $0DADFB | カウンタに5000をセット |
0CFD47 | JSL $CDAF11 | SR: $0DAF11 | カウンタが6000になるまで待機 |
0CFD4B | JSL $CDEA3C | SR: $0DEA3C | イベント戦闘(メルキド襲撃2戦目) |
0CFD4F | JSL $CDAE09 | SR: $0DAE09 | カウンタに7000をセット |
0CFD53 | JSL $CDAF31 | SR: $0DAF31 | カウンタが8000になるまで待機 |
0CFD57 | JSL $CDEA78 | SR: $0DEA78 | イベント戦闘(メルキド襲撃3戦目) |
0CFD5B | JSL $CDAE17 | SR: $0DAE17 | カウンタに9000をセット |
0CFD5F | JSL $CDAF51 | SR: $0DAF51 | カウンタが10000になるまで待機 |
0CFD63 | JSL $CDEAB4 | SR: $0DEAB4 | イベント戦闘(メルキド襲撃4戦目) |
0CFD67 | JSL $CDAE25 | SR: $0DAE25 | カウンタに11000をセット |
0CFD6B | JSL $CDAF71 | SR: $0DAF71 | カウンタが12000になるまで待機 |
0CFD6F | JSL $CDEAF0 | SR: $0DEAF0 | イベント戦闘(メルキド襲撃5戦目) |
0CFD73 | JSL $CDAE33 | SR: $0DAE33 | カウンタに13000をセット |
0CFD77 | JSL $CDAF91 | SR: $0DAF91 | カウンタが14000になるまで待機 |
0CFD7B | LDA #$0000 | A=#$0000 | |
0CFD7E | JSL $C778C1 | SR: $0778C1 | BGM設定 |
0CFD82 | JSL $CDEB2C | SR: $0DEB2C | イベント戦闘(メルキド襲撃ボス戦) |
0CFD86 | JSL $CDAE41 | SR: $0DAE41 | カウンタに15000をセット |
0CFD8A | JSL $CDAFD1 | SR: $0DAFD1 | カウンタが18000になるまで待機 |
0CFD8E | JSL $CDA12D | SR: $0DA12D | |
0CFD92 | JSL $CDC5C2 | SR: $0DC5C2 | |
0CFD96 | LDA #$00B1 | A=#$00B1 | |
0CFD99 | LDX #$0000 | X=#$0000 | |
0CFD9C | JSL $C733E5 | SR: $0733E5 | |
0CFDA0 | JSL $C047B2 | SR: $0047B2 引数:1#$F6376B | 特殊効果? |
0CFDA7 | JSL $C04835 | SR: $004835 引数:1#$F6376B | |
0CFDAE | BCC #$02 | if(c==off) goto $0CFDB2 | |
0CFDB0 | BRA #$03 | goto $0CFDB5 | |
0CFDB2 | COP | goto $00FFE4 | |
0CFDB3 | BRA #$F2 | goto $0CFDA7 | |
0CFDB5 | LDA #$0032 | A=#$0032 | |
0CFDB8 | JSL $C74B39 | SR: $074B39 | 処理にインターバルを置く? |
0CFDBC | JSL $CDC68B | SR: $0DC68B | |
0CFDC0 | JSL $CDC638 | SR: $0DC638 | |
0CFDC4 | LDA #$0007 | A=#$0007 | |
0CFDC7 | JSL $C1A988 | SR: $01A988 引数:1#$101C | メッセージ表示 |
0CFDCD | JSL $CDC644 | SR: $0DC644 | |
0CFDD1 | JSL $CDC638 | SR: $0DC638 | |
0CFDD5 | LDA #$0007 | A=#$0007 | |
0CFDD8 | JSL $C1A988 | SR: $01A988 引数:1#$101D | メッセージ表示 |
0CFDDE | JSL $CDC644 | SR: $0DC644 | |
0CFDE2 | JSL $CDA7EE | SR: $0DA7EE | 宿屋一泊BGM再生 |
0CFDE6 | JSL $C3D332 | SR: $03D332 | 生存者HPMP回復 |
0CFDEA | JSL $CDA1B1 | SR: $0DA1B1 | 現在のBGMをフェードアウトして町BGM再生(アレフガルド) |
0CFDEE | LDA #$0198 | A=#$0198 | |
0CFDF1 | JSL $C7315E | SR: $07315E | マップ座標データアクセス |
0CFDF5 | JSL $CCD298 | SR: $0CD298 | イベント終了時処理? |
0CFDF9 | RTL | return |
カウンタ18000以降の処理はいまいち詳細は不明で、サマンオサのボストロールを倒した後の処理をそのままコピって来てるだけです。
- SR: $0DE56A NPC1_MoveSR_0584(モンスター1のNPC)(新SR)
0DE56A | COP | goto $00FFE4 | |
---|---|---|---|
0DE56B | JSL $CDAEE1 | SR: $0DAEE1 | カウンタが3000になるまで待機 |
0DE56F | JSL $CCD392 | SR: $0CD392 | キャラクターイベント中移動フラグON? |
0DE573 | JSL $CCD366 | SR: $0CD366 | 移動速度5/3倍速セット? |
0DE577 | LDA #$0031 | A=#$0031 | |
0DE57A | LDX #$000E | X=#$000E | |
0DE57D | JSL $C75305 | SR: $075305 | キャラクター出現座標を指定 |
0DE581 | LDX #$0031 | X=#$0031 | |
0DE584 | LDA #$0018 | A=#$0018 | |
0DE587 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0DE58B | JSL $CCD59D | SR: $0CD59D | 指定座標にY軸→X軸の順でキャラクター移動 |
0DE58F | JSL $CDADF4 | SR: $0DADF4 | カウンタに4000をセット |
0DE593 | RTL | return |
- SR: $0DE594 NPC1_MoveSR_0585(モンスター2のNPC)(新SR)
- SR: $0DE5BE NPC1_MoveSR_0586(モンスター3のNPC)(新SR)
- SR: $0DE5E8 NPC1_MoveSR_0587(モンスター4のNPC)(新SR)
- SR: $0DE612 NPC1_MoveSR_0588(モンスター5のNPC)(新SR)
- SR: $0DE660 NPC1_MoveSR_0589(モンスター6のNPC)(新SR)
同様の実装のため省略
以外と長くなってしまったため、肝心の戦闘部分のところまでたどり着けませんでした。次回説明することにします。
コメント