今回からイベントの実装を行います。イベントのトリガーは「銀の竪琴を持った状態でガライに話し掛ける」です。
カウンタ | 処理 |
---|---|
1000 | BGMを戦闘中の音楽に変える+兵士のセリフ |
2000 | 兵士が宿屋に駆け込んできて宿屋のカウンター前に到達する |
3000 | 未使用 |
4000 | モンスター襲撃を知らせる兵士のセリフ |
5000 | 宿屋の主人がジャンプする+兵士退出&消滅 |
6000 | ガライのセリフ |
7000 | ガライ退出&消滅 |
- SR: $0B2FCD NPC1_TalkSR_01B0(メルキド宿屋のガライのNPC)
略 | |||
---|---|---|---|
0B2FE1 | JSR $F1BE | SR: $0BF1BE | メルキド宿屋ガライ会話追加処理 |
略 |
- SR: $0BF1BE メルキド宿屋ガライ会話追加処理(新SR)
0BF1BE | JSL $CCF2E1 | SR: $0CF2E1 | メルキド襲撃イベントが終わっているか(該当c=on) |
---|---|---|---|
0BF1C2 | BCC #$05 | if(c==off) goto $0BF1E9 | |
0BF1C4 | BRK $1020 ($0B1020) | goto $00FFE6(メッセージ表示) #$1020 | |
0BF1C7 | BRA #$32 | goto $0BF21B | |
0BF1C9 | JSL $CCF2EE | SR: $0CF2EE | メルキド襲撃イベントを一度経験している(該当c=on) |
0BF1CD | BCC #$05 | if(c==off) goto $0BF1F4 | |
0BF1CF | BRK $1021 ($0B1021) | goto $00FFE6(メッセージ表示) #$1021 | |
0BF1D2 | BRA #$27 | goto $0BF21B | |
0BF1D4 | BRK $0348 ($0B0348) | goto $00FFE6(メッセージ表示) #$0348 | |
0BF1D7 | BRK $0349 ($0B0349) | goto $00FFE6(メッセージ表示) #$0349 | |
0BF1DA | LDA #$0040 | A=#$0040 | |
0BF1DD | TSB $354B | A or $354B | |
0BF1E0 | LDA $35B1 | A=$35B1 | |
0BF1E3 | AND #$0008 | A&=#$0008 | |
0BF1E6 | BNE #$13 | if(z==off) goto $0BF21B | |
0BF1E8 | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0BF1EC | LDA #$00C4 | A=#$00C4 | 銀の竪琴のアイテムID |
0BF1EF | LDX #$0104 | X=#$0104 | |
0BF1F2 | JSL $C78238 | SR: $078238 | アイテム保持チェック(持っているc=on) |
0BF1F6 | BCC #$0B | if(c==off) goto $0BF223 | |
0BF1F8 | BRK $100A ($0B100A) | goto $00FFE6(メッセージ表示) #$100A | |
0BF1FB | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0BF1FF | JSL $CDADD8 | SR: $0DADD8 | カウンタに1000をセット |
0BF203 | RTS | return |
- SR: $0CF2E1 メルキド襲撃イベントが終わっているか(該当c=on)(新SR)
- SR: $0CF2EE メルキド襲撃イベントを一度経験している(該当c=on)(新SR)
フラグチェックのみなので省略
- SR: $0CE694 メルキド宿屋イベント処理
略 | |||
---|---|---|---|
0CE6B8 | JSL $CCFC10 | SR: $0CFC10 | メルキド宿屋追加イベント処理 |
略 |
- SR: $CFC10 メルキド宿屋追加イベント処理(新SR)
0CFC10 | JSL $CCF8DE | SR: $0CF8DE | メルキド襲撃イベント終了後ガライと会話をしたか(該当c=on) |
---|---|---|---|
略 | (後ほど別途解説) | ||
0CFC37 | BRA #$34 | goto $0CFC6D | |
0CFC39 | COP | goto $00FFE4 | |
0CFC3A | JSL $CCE1D1 | SR: $0CE1D1 | イベント開始待ち? |
0CFC3E | JSL $CDAEB1 | SR: $0DAEB1 | カウンタが1000になるまで待機 |
0CFC42 | JSL $C1E32E | SR: $01E32E 引数:1#$001A | BGM(戦闘中BGM)再生 |
0CFC48 | LDA #$001A | A=#$001A | |
0CFC4B | JSL $C778C1 | SR: $0778C1 | BGM設定 |
0CFC4F | JSL $C1A92E | SR: $01A92E 引数:1#$100F | メッセージ表示 |
0CFC55 | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0CFC59 | JSL $CDADE6 | SR: $0DADE6 | カウンタに2000をセット |
0CFC5D | JSL $CDAEE1 | SR: $0DAEE1 | カウンタが3000になるまで待機 |
0CFC61 | JSL $CDADF4 | SR: $0DADF4 | カウンタに4000をセット |
0CFC65 | JSL $CDAF21 | SR: $0DAF21 | カウンタが7000になるまで待機 |
0CFC69 | JSL $CADE4F | SR: $0ADE4F | ルーラ・キメラの翼使用不可(封印)設定 |
0CFC6D | JSL $CCD298 | SR: $0CD298 | イベント終了時処理? |
0CFC71 | RTL | return |
- SR: NPC1_MoveSR_057E (モンスター襲撃を知らせに来る兵士のNPC)
0CFBA0 | COP | goto $00FFE4 | |
---|---|---|---|
0CFBA1 | JSL $CDAED1 | SR: $0DAED1 | カウンターが2000になるまで待機 |
0CFBA5 | JSL $CCD392 | SR: $0CD392 | キャラクターイベント中移動フラグON? |
0CFBA9 | JSL $CCD35E | SR: $0CD35E | 移動速度4/3倍速セット? |
0CFBAD | LDA #$0016 | A=#$0016 | |
0CFBB0 | LDX #$0027 | X=#$0027 | |
0CFBB3 | JSL $C75305 | SR: $075305 | キャラクター出現座標を指定 |
0CFBB7 | JSL $CCD857 | SR: $0CD857 | キャラクターを上に向かせる |
0CFBBB | LDX #$0016 | X=#$0016 | |
0CFBBE | LDA #$001F | A=#$001F | |
0CFBC1 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0CFBC5 | JSL $CCD59D | SR: $0CD59D | 指定座標にY軸→X軸の順でキャラクター移動 |
0CFBC9 | JSL $CDADED | SR: $0DADED | カウンタに3000をセット |
0CFBCD | JSL $CDAEF1 | SR: $0DAEF1 | カウンタが4000になるまで待機 |
0CFBD1 | JSL $C1A92E | SR: $01A92E 引数:1#$100B | メッセージ表示 |
0CFBD7 | JSL $CDADFB | SR: $0DADFB | カウンタに5000をセット |
0CFBDB | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0CFBDF | LDX #$0016 | X=#$0016 | |
0CFBE2 | LDA #$0027 | A=#$0027 | |
0CFBE5 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0CFBE9 | JSL $CCD59D | SR: $0CD59D | 指定座標にY軸→X軸の順でキャラクター移動 |
0CFBED | JSL $C75930 | SR: $075930 | キャラクター消滅 |
0CFBF1 | LDA #$0010 | A=#$0010 | |
0CFBF4 | TSB $35B1 | A or $35B1 | |
0CFBF7 | JSL $CDAE02 | SR: $0DAE02 | カウンタに6000をセット |
0CFBFB | RTL | return |
- SR: $0CF796 NPC1_MoveSR_01AF(宿屋の主人のNPC)
0CF796 | COP | goto $00FFE4 | |
---|---|---|---|
0CF797 | JSR $CDAF01 | SR: $0DAF01 | カウンタが5000になるまで待機 |
0CF79B | LDA #$0018 | A=#$0018 | |
0CF79E | JSR $C74B39 | SR: $074B39 | 処理にインターバルを置く? |
0CF7A2 | JSRL $CC7289 | SR: $0C7289 | キャラクターがその場で飛び上がる処理 |
0CF7A6 | RTL | return |
- SR: $0DE518 NPC1_MoveSR_01B0(ガライのNPC)
0DE518 | JSL $CCDADF | SR: $0CDADF | |
---|---|---|---|
0DE51C | COP | goto $00FFE4 | |
0DE51D | JSL $CDAF11 | SR: $0DAF11 | カウンタが6000になるまで待機 |
0DE521 | JSL $CCF2EE | SR: $0CF2EE | メルキド襲撃イベントを一度経験している(該当c=on) |
0DE525 | BCC #$05 | if(c==off) goto $0DE52C | |
0DE527 | BRK $1022 ($0D1022) | goto $00FFE6(メッセージ表示) #$1022 | |
0DE52A | BRA #$03 | goto $0DE52F | キー入力でメッセージウィンドウを閉じる |
0DE52C | BRK $100C ($0D100C) | goto $00FFE6(メッセージ表示) #$100C | |
0DE52F | JSL $CDACD2 | SR: $0DACD2 | |
0DE533 | JSL $CCD392 | SR: $0CD392 | キャラクターイベント中移動フラグON? |
0DE537 | LDX #$001C | X=#$001C | |
0DE53A | LDA #$001F | A=#$001F | |
0DE53D | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0DE541 | JSL $CCD58C | SR: $0CD58C | 指定座標にX軸→Y軸の順でキャラクター移動 |
0DE545 | LDX #$0016 | X=#$0016 | |
0DE548 | LDA #$0027 | A=#$0027 | |
0DE54B | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0DE54F | JSL $CCD58C | SR: $0CD58C | 指定座標にX軸→Y軸の順でキャラクター移動 |
0DE553 | JSL $C75930 | SR: $075930 | キャラクター消滅 |
0DE557 | JSL $CDAE09 | SR: $0DAE09 | カウンタに7000をセット |
0DE55B | RTL | return |
いつものとおりのイベント処理なのですが、宿屋の場合は一泊した後のメッセージなどのイベントがもともと設定されているのでSR中で追加イベント用に分岐させる必要があります($0CE6B8)。もう1点、宿屋の主人が飛び上がると背中にある「INN」の看板の下にもぐりこんでしまい、一瞬頭半分がちょん切れてしまうため、DQ3マップエディタを使って「INN」の看板を消しています。
コメント