今回からイベントの実装を行います。イベントのトリガーは「銀の竪琴を持った状態でガライに話し掛ける」です。
| カウンタ |
処理 |
| 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)
フラグチェックのみなので省略
| 略 |
|
|
|
| 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」の看板を消しています。
コメント