残っている追加フロアとガライ離脱部分を実装します。追加フロア自体はイシスのほしふるうでわのあるフロアをそのまま使いまわします。また、ガライの離脱ですが、まあ普通に考えればDQ4のパノン離脱時のように「フィールドに出たら離脱」が自然なのですが、フィールド上のイベント処理のSRがいまいち理解できない(ほかにも処理が存在したのでどう間にはさめばいいかよくわからない)ため、やむを得ず光の鎧を入手直後に離脱するようにしました。敵地でひとりで出歩くなんて根性ありますねw。イベントは光の鎧入手直後、所定座標にPCが到達したときに発生させるようにします。当然ながらルーラ、リレミトは使用禁止です。
- SR: $0DF255 バラモス城B2F進入時初期化処理(新SR)
0DF255 | LDA #$00AD | A=#$00AD | |
---|---|---|---|
0DF258 | JSL $C77365 | SR: $077365 | サブマップ画像情報取得 |
0DF25C | JSL $CC997C | SR: $0C997C | |
0DF260 | JSL $CADEB9 | SR: $0ADEB9 | フロア階層設定(B2F) |
0DF264 | JSL $CADE4F | SR: $0ADE4F | ルーラ・キメラの翼使用不可(封印)設定 |
0DF268 | JSL $C77843 | SR: $077843 引数:1#$CDF28C | 移動・宝箱・ドア・NPC情報設定用SRアドレス設定 |
0DF26F | JSL $C7785F | SR: $07785F 引数:1#$CDF2A2 | イベント設定 |
0DF276 | JSL $C7787B | SR: $07787B 引数:1#$CDE326 | 特殊効果設定? |
0DF27D | JSL $C77889 | SR: $077889 引数:1#$CAE51B | 特殊効果設定? |
0DF284 | RTL | return |
- SR: $0DF28C バラモス城B2F移動・宝箱・ドア・NPC情報設定
0DF28C | LDX #$01B5 | X=#$01B5 | |
---|---|---|---|
0DF28F | JSL $C614BB | SR: $0614BB | 階段移動データ設定 |
0DF293 | LDX #$014B | X=#$014B | 中身:光の鎧 |
0DF296 | JSL $C66696 | SR: $066696 | 宝箱アイテム設定 |
0DF29A | LDA #$05A3 | A=#$05A3 | ガライ離脱時のNPC |
0DF29D | JSL $C75828 | SR: $075828 | NPC1設定 |
0DF2A1 | RTL | return |
準備は出来たのでイベントの設計を行います。トリガーはPCが指定座標に到達したらセットされます。
カウンタ | 処理 |
---|---|
1000 | ガライのNPC表示 |
2000 | PC再描画し、5人目を透明表示にする |
3000 | ガライを階段に移動させ、消滅させる |
4000 | イベント終了処理 |
- SR: $0DF2A2 バラモス城B2Fイベント処理
0DF2A2 | LDA $35B4 | A=$35B4 | |
---|---|---|---|
0DF2A5 | AND #$0008 | A&=#$0008 | ガライと別れた |
0DF2A8 | BEQ #$06 | if(z==on) goto $0DF2B0 | |
0DF2AA | JSL $CCD298 | SR: $0CD298 | イベント終了時処理? |
0DF2AE | BRA #$2C | goto $0DF2DC | |
0DF2B0 | COP | goto $00FFE4 | |
0DF2B1 | JSL $CCD276 | SR: $0CD276 | |
0DF2B5 | LDA #$08B0 | A=#$08B0 | |
0DF2B8 | LDX #$08D0 | X=#$08D0 | |
0DF2BB | LDY #$08F0 | Y=#$08F0 | |
0DF2BE | JSL $C75365 | SR: $075365 | PCが指定座標(X座標は範囲指定)に到達しているか?(しているc=on) |
0DF2C2 | BCS #$02 | if(c==on) goto $0DF2C6 | |
0DF2C4 | BRA #$EB | goto $0DF2B1 | |
0DF2C6 | JSL $CDE6E1 | SR: $0DE6E1 | 光の鎧を入手しているか(該当c=on) |
0DF2CA | BCC #$E5 | if(c==off) goto $0DF2B1 | |
0DF2CC | JSL $CDADD8 | SR: $0DADD8 | カウンタに1000をセット |
0DF2D0 | JSL $CDAED1 | SR: $0DAED1 | カウンタが2000になるまで待機 |
0DF2D4 | JSL $CDD682 | SR: $0DD682 | PC再描画? |
0DF2D8 | JSL $CDADED | SR: $0DADED | カウンタに3000をセット |
0DF2DC | JSL $CDAEF1 | SR: $0DAEF1 | カウンタが4000になるまで待機 |
0DF2E0 | JSL $CCD298 | SR: $0CD298 | イベント終了時処理? |
0DF2E4 | RTL | return |
- SR: $0DF546 NPC1_MoveSR_05A3(ガライのNPC)(新SR)
0DF546 | COP | goto $00FFE4 | |
---|---|---|---|
0DF547 | JSL $CCD392 | SR: $0CD392 | キャラクターイベント中移動フラグON? |
0DF54B | JSL $CDAEB1 | SR: $0DAEB1 | カウンタが1000になるまで待機 |
0DF54F | JSL $C4297C | SR: $04297C 引数:1#$01 引数:2#$FF | パーティ人数取得 |
0DF555 | ASL | A<<1 | |
0DF556 | TAY | Y=A | |
0DF557 | LDA $C5E5,Y | A=$C5E5+Y | |
0DF55A | PHA | Push A | |
0DF55B | LDX $C625,Y | X=$C625+Y | |
0DF55E | PHX | Push X | |
0DF55F | JSL $C7C85B | SR: $07C85B | 出現先座標をWX,WYで指定 |
0DF563 | JSL $CCD847 | SR: $0CD847 | キャラクターを下に向かせる |
0DF567 | BRK $1055 ($0D1055) | goto $00FFE6(メッセージ表示) #$1055 | |
0DF56A | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0DF56E | LDA #$0008 | A=#$0008 | |
0DF571 | TSB $35B4 | A or $35B4 | |
0DF574 | JSL $CDADE6 | SR: $0DADE6 | カウンタに2000をセット |
0DF578 | JSL $CDAEE1 | SR: $0DAEE1 | カウンタが3000になるまで待機 |
0DF57C | PLX | Pull X | |
0DF57D | PLA | Pull A | |
0DF57E | CPX #$08F0 | X>=#$08F0? | |
0DF581 | BCS #$0E | if(c==on) goto $0DF591 | |
0DF583 | LDX #$0018 | X=#$0018 | |
0DF586 | LDA #$001D | A=#$001D | |
0DF589 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0DF58D | JSL $CCD59D | SR: $0CD59D | 指定座標にY軸→X軸の順でキャラクター移動 |
0DF591 | LDX #$0018 | X=#$0018 | |
0DF594 | LDA #$0025 | A=#$0025 | |
0DF597 | JSL $C75474 | SR: $075474 | キャラクター移動先座標指定 |
0DF59B | JSL $CCD59D | SR: $0CD59D | 指定座標にY軸→X軸の順でキャラクター移動 |
0DF59F | JSL $C1E32E | SR: $01E32E 引数:1#$0053 | 再生BGM設定? |
0DF5A5 | JSL $C75930 | SR: $075930 | キャラクター消滅 |
0DF5A9 | JSL $CDADF4 | SR: $0DADF4 | カウンタに4000をセット |
0DF5AD | RTL | return |
処理自体は特にこれといって特筆する点はありません。今まで説明したエッセンスの組み合わせで実装できます。これで光の鎧入手がらみの追加イベントは終わりです。実装は大変でしたが概ね事前の構想通り実現できました。
コメント