次に、特定のモンスターIDをターン終了時にスイッチさせる処理、オルテガがゾーマ初戦開始2ターン後に乱入してくる部分を実装します。 オルテガが乱入するかどうかはゾーマ戦開始直前に特定のフラグをONにしておき、そのフラグがONになっている戦闘中のみ2ターン経過後乱入処理を行うというようにします。
- SR: $0CCB6F ゾーマの城B5FNPC情報設定
0CCBA0-2 | NOP | ||
---|---|---|---|
0CCBA3 | JSL $CDE76C | SR: $0DE76C | ゾーマの城5FNPC設定(サブ) |
略 |
- SR: $0DE76C ゾーマの城5FNPC設定(サブ)(新SR)
0DE76C | LDA #$005F | A=#$005F | |
---|---|---|---|
0DE76F | JSL $C758DE | SR: $0758DE | NPC2設定 |
0DE773 | LDA #$05A5 | A=#$05A5 | オルテガのNPC |
0DE776 | JSL $C75828 | SR: $075828 | NPC1設定 |
0DE77A | JSL $CDE7E6 | SR: $0DE7E6 | オルテガゾンビが出現する条件か(該当c=on) |
0DE77E | BCC #$07 | if(c==off) goto $0DE787 | |
0DE780 | LDA #$05A6 | A=#$05A6 | オルテガのNPC |
0DE783 | JSL $C75828 | SR: $075828 | NPC1設定 |
0DE787 | RTL | return |
- SR: $0D5661 イベント戦闘(vsラスト4連戦)
略 | |||
---|---|---|---|
0D594E | JSL $C6F59F | SR: $06F59F | ゾーマ戦処理 |
略 |
- SR: $06F59F ゾーマ戦処理(新SR)
06F59F | PHA | Push A | |
---|---|---|---|
06F5A0 | LDA $35B4 | A=$35B4 | |
06F5A3 | AND #$0020 | A&=#$0020 | オルテガが竜の女王の石化の呪いを解いた |
06F5A6 | BNE #$06 | if(z==off) goto $06F5AE | |
06F5A8 | LDA #$0080 | A=#$0080 | |
06F5AB | TSB $35B4 | A or $35B4 | オルテガが未出現でゾーマと戦闘中(テンポラリフラグ扱い) |
06F5AE | PLA | Pull A | |
06F5AF | JSL $C687A0 | SR: $0687A0 | イベント戦闘処理? |
06F5B3 | JSL $C907CC | SR: $0907CC 引数:1#$35B4 引数:2#$7E 引数:3#$80 引数:4#$00 引数:5#$00 | RAM上情報変更(OFF) |
06F5BD | LDA $35B5 | A=$35B5 | |
06F5C0 | AND #$0001 | A&=#$0001 | |
06F5C3 | BEQ #$14 | if(z==on) goto $06F5D9 | |
06F5C5 | JSL $C907CC | SR: $0907CC 引数:1#$35B5 引数:2#$7E 引数:3#$01 引数:4#$00 引数:5#$00 | RAM上情報変更(OFF) |
06F5CF | LDA #$0002 | A=#$0002 | |
06F5D2 | TSB $3554 | A or $3554 | ゾーマに1度挑んで全滅した? |
06F5D5 | JSL $CDF652 | SR: $0DF652 | オルテガにゾーマから逃がしてもらう処理 |
06F5D9 | RTL | return |
- SR: $02A41F ターン終了時処理(全体)
略 | |||
---|---|---|---|
02A448 | JSR $D8E8 | SR: $02D8E8 | ターン終了時処理 |
略 |
- SR: $02D8E8 ターン終了時処理(新SR)
02D8E8 | JSR $DDDD | SR: $02DDDD | オルテガがゾーマに攻撃をしかける処理(処理実行c=on) |
---|---|---|---|
02D8EB | BCS #$0E | if(c==on) goto $02D8FB | |
02D8ED | JSL $C2B32F | SR: $02B32F | 戦闘終了時フラグセット? |
02D8F1 | BCS #$08 | if(c==on) goto $02D8FB | |
02D8F3 | JSR $DB85 | SR: $02DB85 | ターン終了時処理(毒ダメージ) |
02D8F6 | BCS #$03 | if(c==on) goto $02D8FB | |
02D8F8 | JSR $F32E | SR: $02F32E | ターン終了時処理(各キャラクターごと) |
02D8FB | RTS | return |
- SR: $02A44E ターン終了時処理(各キャラクターごと)
略 | |||
---|---|---|---|
02A475 | JSR $DB7B | SR: $02DB7B | ターン終了時各キャラクター処理(自動回復+モンスターID切り替え) |
略 |
- SR: $02DB7B ターン終了時各キャラクター処理(自動回復+モンスターID切り替え)(新SR)
02DB7B | JSR $DCA8 | SR: $02DCA8 | 勇者自動回復処理 |
---|---|---|---|
02DB7E | JSR $A47F | SR: $02A47F | 自然回復処理 |
02DB81 | JSR $DD00 | SR: $02DD00 | モンスターID切り替え処理 |
02DB84 | RTS | return |
- SR: $02DD00 モンスターID切り替え処理
02DD00 | STX $2428 | $2428=X | |
---|---|---|---|
02DD03 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$203C 引数:2#$00FF | 戦闘中PC情報取得 |
02DD0B | CMP #$0005 | A>=#$0005? | |
02DD0E | BCS #$23 | if(c==on) goto $02DD33 | |
02DD10 | JSL $C2CA5B | SR: $02CA5B 引数:1#$2049 | 戦闘中PC情報取得 |
02DD16 | JSR $DD34 | SR: $02DD34 | モンスターID切り替え(切り替えたc=on) |
02DD19 | BCC #$18 | if(c==off) goto $02DD33 | |
02DD1B | PHA | Push A | |
02DD1C | JSL $C2CAD9 | SR: $02CAD9 引数:1#$203C 引数:2#$00FF | 戦闘中PC情報取得 |
02DD24 | ASL | A<<1 | |
02DD25 | TAY | Y=A | |
02DD26 | PLA | Pull A | |
02DD27 | JSL $C2CA98 | SR: $02CA98 引数:1#$2049 | 戦闘中PC情報変更 |
02DD2D | JSL $C2CA98 | SR: $02CA98 引数:1#$204B | 戦闘中PC情報変更 |
02DD33 | RTS | return |
- SR: $02DD34 モンスターID切り替え(切り替えたc=on)(新SR)
02DD34 | CMP #$0088 | A==#$0088? | 光ゾーマ |
---|---|---|---|
02DD37 | BEQ #$1B | if(z==on) goto $02DD54 | |
02DD39 | CMP #$00B4 | A==#$00B4? | 光ゾーマ2 |
02DD3C | BEQ #$1B | if(z==on) goto $02DD59 | |
02DD3E | CMP #$00B5 | A==#$00B5? | 灰ゾーマ |
02DD41 | BEQ #$1B | if(z==on) goto $02DD5E | |
02DD43 | CMP #$00B6 | A==#$00B6? | 灰ゾーマ2 |
02DD46 | BEQ #$1B | if(z==on) goto $02DD63 | |
02DD48 | CMP #$00A6 | A==#$00A6? | ダークドレアム |
02DD4B | BEQ #$1B | if(z==on) goto $02DD68 | |
02DD4D | CMP #$00A6 | A==#$00A7? | ダークドレアム2 |
02DD50 | BEQ #$1B | if(z==on) goto $02DD6D | |
02DD52 | CLC | c=off | |
02DD53 | RTS | return | |
02DD54 | LDA #$00B4 | A=#$00B4 | 光ゾーマ2 |
02DD57 | BRA #$17 | goto $02DD70 | |
02DD59 | LDA #$0088 | A=#$0088 | 光ゾーマ |
02DD5C | BRA #$12 | goto $02DD70 | |
02DD5E | LDA #$00B6 | A=#$00B6 | 灰ゾーマ2 |
02DD61 | BRA #$0D | goto $02DD70 | |
02DD63 | LDA #$00B5 | A=#$00B5 | 灰ゾーマ |
02DD66 | BRA #$08 | goto $02DD70 | |
02DD68 | LDA #$00B7 | A=#$00B7 | ダークドレアム2 |
02DD6B | BRA #$03 | goto $02DD70 | |
02DD6D | LDA #$00A6 | A=#$00A6 | ダークドレアム |
02DD70 | SEC | c=on | |
02DD71 | RTS | return |
- SR: $02DDDD オルテガがゾーマに攻撃をしかける処理(処理実行c=on)(新SR)
02DDDD | LDA $35B4 | A=$35B4 | |
---|---|---|---|
02DDE0 | AND #$0080 | A&=#$0080 | オルテガが未出現でゾーマと戦闘中(テンポラリフラグ扱い) |
02DDE3 | BEQ #$08 | if(z==on) goto $02DDED | |
02DDE5 | LDA $23D0 | A=$23D0 | |
02DDE8 | CMP #$0001 | A>=#$0001? | 経過ターン数チェック |
02DDEB | BCS #$02 | if(c==on) goto $02DDEF | |
02DDED | CLC | c=off | |
02DDEE | RTS | return | |
02DDEF | JSR $DE6E | SR: $02DE6E | ゾーマ戦で行動主体を勇者に行動対象をゾーマにする |
02DDF2 | JSL $C1A867 | SR: $01A867 引数:1#$017E | 戦闘メッセージ表示 |
02DDF8 | JSL $C1A867 | SR: $01A867 引数:1#$017F | 戦闘メッセージ表示 |
02DDFE | JSL $C1A867 | SR: $01A867 引数:1#$0180 | 戦闘メッセージ表示 |
02DE04 | LDA #$005D | A=#$005D | |
02DE07 | JSL $C1E314 | SR: $01E314 | BGM再生 |
02DE0B | JSL $C1A867 | SR: $01A867 引数:1#$0181 | 戦闘メッセージ表示 |
02DE11 | LDA #$8D72 | A=#$8D72 | |
02DE14 | STA $4F4C | $4F4C=A | |
02DE17 | JSR $CF59 | SR: $02CF59 | 行動対象の強制変更? |
02DE1A | LDA #$000E | A=#$000E | |
02DE1D | STA $4F68 | $4F68=A | |
02DE20 | INC $4F4E | $4F4E++ | |
02DE23 | JSR $CF31 | SR: $02CF31 | 攻撃時エフェクト実行 |
02DE26 | JSL $C1E32E | SR: $01E32E 引数:1#$005F | 再生BGM設定? |
02DE2C | LDA $23E6 | A=$23E6 | |
02DE2F | TAX | X=A | |
02DE30 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$203A 引数:2#$00FF | 戦闘中PC情報取得 |
02DE38 | TAX | X=A | |
02DE39 | JSL $C02ABA | SR: $002ABA 引数:1#$C48726 | |
02DE40 | JSL $C48344 | SR: $048344 | エフェクト実行? |
02DE44 | JSL $C1A867 | SR: $01A867 引数:1#$0182 | 戦闘メッセージ表示 |
02DE4A | JSL $C1A867 | SR: $01A867 引数:1#$0183 | 戦闘メッセージ表示 |
02DE50 | JSL $C1A867 | SR: $01A867 引数:1#$0184 | 戦闘メッセージ表示 |
02DE56 | JSL $CDA15A | SR: $0DA15A | 現在のBGMフェードアウト? |
02DE5A | JSL $C1A867 | SR: $01A867 引数:1#$0185 | 戦闘メッセージ表示 |
02DE60 | LDA #$0020 | A=#$0020 | |
02DE63 | TSB $35B4 | A or $35B4 | オルテガが竜の女王の石化の呪いを解いた |
02DE66 | LDA #$0001 | A=#$0001 | |
02DE69 | TSB $35B5 | A or $35B5 | オルテガが竜の女王の石化の呪いを解いた(テンポラリフラグ扱い) |
02DE6C | SEC | c=on | |
02DE6D | RTS | return |
- SR: $02DE6E ゾーマ戦で行動主体を勇者に行動対象をゾーマにする(新SR)
02DE6E | LDY #$0000 | Y=#$0000 | |
---|---|---|---|
02DE71 | LDA $243E,Y | A=$243E+Y | |
02DE74 | AND #$00FF | A&=#$00FF | |
02DE77 | CMP #$0018 | A>=#$0018? | |
02DE7A | BCS #$2D | if(c==on) goto $02DEA9 | |
02DE7C | STA $2428 | $2428=A | |
02DE7F | PHY | Push Y | |
02DE80 | TAY | Y=A | |
02DE81 | JSL $C2CAE0 | SR: $02CAE0 引数:1#$203C 引数:2#$00FF | 戦闘中PC情報取得 |
02DE89 | CMP #$0005 | A>=#$0005? | |
02DE8C | BCC #$10 | if(c==off) goto $02DE9E | |
02DE8E | JSL $C2BE8A | SR: $02BE8A 引数:1#$24 | |
02DE93 | CMP #$0008 | A==#$0008? | |
02DE96 | BNE #$0A | if(z==off) goto $02DEA2 | |
02DE98 | TYA | A=Y | |
02DE99 | STA $23E4 | $23E4=A | |
02DE9C | BRA #$04 | goto $02DEA2 | |
02DE9E | TYA | A=Y | |
02DE9F | STA $23E6 | $23E6=A | |
02DEA2 | PLY | Pull Y | |
02DEA3 | INY | Y++ | |
02DEA4 | CPY #$0018 | Y>=#$0018? | |
02DEA7 | BCC #$C8 | if(c==off) goto $02DE71 | |
02DEA9 | RTS | return |
このSRはオルテガの攻撃対象をゾーマに、またメッセージ中の会話の対象を勇者にセットするために必要です(オルテガから勇者への会話中の名前の呼びかけは行動主体[B7]にしているため)。あ、でもこれ勇者が死んでると間抜けですね。
- SR: $0DF652 オルテガにゾーマから逃がしてもらう処理(新SR)
0DF652 | LDA #$0019 | A=#$0019 | |
---|---|---|---|
0DF655 | JSL $C74B8C | SR: $074B8C | 行動対象キャラクター指定? |
0DF659 | LDA #$0041 | A=#$0041 | |
0DF65C | LDX #$002C | X=#$002C | |
0DF65F | JSL $C75305 | SR: $075305 | キャラクター出現座標を指定 |
0DF663 | JSL $CCD857 | SR: $0CD857 | キャラクターを上に向かせる |
0DF667 | LDA #$0041 | A=#$0041 | |
0DF66A | LDX #$0030 | X=#$0030 | |
0DF66D | JSL $C74279 | SR: $074279 | 視点移動座標指定 |
0DF671 | JSL $CDE0D0 | SR: $0DE0D0 | |
0DF675 | LDA #$0020 | A=#$0020 | |
0DF678 | JSL $C74B8C | SR: $074B8C | 行動対象キャラクター指定? |
0DF67C | LDA #$0041 | A=#$0041 | |
0DF67F | LDX #$0030 | X=#$0030 | |
0DF682 | JSL $C75305 | SR: $075305 | キャラクター出現座標を指定 |
0DF686 | JSL $CDDC4D | SR: $0DDC4D | |
0DF68A | JSL $CDD806 | SR: $0DD806 | |
0DF68E | LDX #$0004 | X=#$0004 | |
0DF691 | LDA #$0008 | A=#$0008 | |
0DF694 | JSL $C7891B | SR: $07891B | |
0DF698 | JSL $CDD682 | SR: $0DD682 | PC再描画? |
0DF69C | LDA $3402 | A=$3402 | |
0DF69F | CMP #$1770 | A>=#$1770? | |
0DF6A2 | BCC #$02 | if(c==off) goto $0DF6A6 | |
0DF6A4 | BRA #$03 | goto $0DF6A9 | |
0DF6A6 | COP | goto $00FFE4 | |
0DF6A7 | BRA #$F3 | goto $0DF69C | |
0DF6A9 | LDA #$0101 | A=#$0101 | |
0DF6AC | LDX #$0000 | X=#$0000 | |
0DF6AF | JSL $C733E5 | SR: $0733E5 | |
0DF6B3 | JSL $CCD07D | SR: $0CD07D | |
0DF6B7 | LDA #$0006 | A=#$0006 | |
0DF6BA | JSL $C74B39 | SR: $074B39 | 処理にインターバルを置く? |
0DF6BE | JSL $CDC5F3 | SR: $0DC5F3 | |
0DF6C2 | LDA #$0010 | A=#$0010 | |
0DF6C5 | JSL $C74B39 | SR: $074B39 | 処理にインターバルを置く? |
0DF6C9 | BRK $105B ($0D105B) | goto $00FFE6(メッセージ表示) #$105B | |
0DF6CC | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0DF6D0 | BRK $105C ($0D105C) | goto $00FFE6(メッセージ表示) #$105C | |
0DF6D3 | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0DF6D7 | BRK $105D ($0D105D) | goto $00FFE6(メッセージ表示) #$105D | |
0DF6DA | JSL $CDACD2 | SR: $0DACD2 | キー入力でメッセージウィンドウを閉じる |
0DF6DE | JSL $C1E32E | SR: $01E32E 引数:1#$0065 | 再生BGM設定? |
0DF6E4 | JSL $C737BE | SR: $0737BE 引数:1#$105E | メッセージ表示 |
0DF6EA | JSL $CC7B5A | SR: $0C7B5A | パーティ人数が1人か調べる(1人c=on) |
0DF6EE | BCS #$08 | if(c==on) goto $0DF6F8 | |
0DF6F0 | JSL $C737BE | SR: $0737BE 引数:1#$1060 | メッセージ表示 |
0DF6F6 | BRA #$06 | goto $0DF6FE | |
0DF6F8 | JSL $C737BE | SR: $0737BE 引数:1#$105F | メッセージ表示 |
0DF6FE | LDA #$0020 | A=#$0020 | |
0DF701 | JSL $C74B39 | SR: $074B39 | 処理にインターバルを置く? |
0DF705 | LDA #$0019 | A=#$0019 | |
0DF708 | JSL $C1E7D9 | SR: $01E7D9 | ルーラエフェクト処理(別バンク用) |
0DF70C | RTL | return |
- SR: $01E7D9 ルーラエフェクト処理(別バンク用)(新SR)
01E7D9 | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
---|---|---|---|
01E7DB | PEA #$7E7E | Push #$7E7E | |
01E7DE | PLB | Pull DB | |
01E7DF | PLB | Pull DB | |
01E7E0 | JSL $C1E32E | SR: $01E32E 引数:1#$0096 | 再生BGM設定? |
01E7E6 | PHA | Push A | |
01E7E7 | JSR $D1AC | SR: $01D1AC | ルーラでPCが飛び上がる描画 |
01E7EA | JSR $D19B | SR: $01D19B | ルーラによる時刻変更 |
01E7ED | PLA | Pull A | |
01E7EE | JMP $0731E0 | goto $0731E0 |
個々の部分の処理は特筆すべき点は特にありません。まあ今までやってきたことの総まとめといったところですね。
コメント