ラスボス編は若干やっつけ気味ですが今回で終わりです。初回ゾーマの城離脱後親父とのバトルが追加される部分の説明をしていませんが、大したこともしていないので省略します。次回からは未解説の各種ギミックの解説をします。
最後はゾーマに追加する戦闘行動「暗黒の波動」の実装です。ネオエクスデス(FF5)のグランドクロスと似たようなものですが、リボンなどの完全防御のアイテムがない分こっちのほうが脅威です。完全防御のアイテムを用意することも考えましたが、「完全に防ぐ手立てが無い」ほうが緊張感が保てると思ったので見送りました。暗黒の波動の効果は敵全体に対し、凍てつく波動+ラリホー+マホトーン+マヌーサ+メダパニとなります。凍てつく波動は必中ですが、残りは通常のそれぞれの呪文のオリジナルと同じ成功率を使用します。
- SR: $02DEF4 暗黒の波動(新SR)
02DEF4 | JSL $C29E44 | SR: $029E44 | 凍てつく波動 |
---|---|---|---|
02DEF8 | PHA | Push A | |
02DEF9 | STZ $260C | $260C=#$00 | |
02DEFC | LDA #$0030 | A=#$0030 | 戦闘行動を差し替え |
02DEFF | STA $23EE | $23EE=A | |
02DF02 | JSR $DD72 | SR: $02DD72 | 暗黒の波動(ラリホー) |
02DF05 | BCS #$06 | if(c==on) goto $02DF0D | |
02DF07 | LDA #$0001 | A=#$0001 | |
02DF0A | TSB $260C | A or $260C | |
02DF0D | LDA #$0032 | A=#$0032 | 戦闘行動を差し替え |
02DF10 | STA $23EE | $23EE=A | |
02DF13 | JSR $DFFA | SR: $02DFFA | 暗黒の波動(マホトーン) |
02DF16 | BCS #$06 | if(c==on) goto $02DF1E | |
02DF18 | LDA #$0002 | A=#$0002 | |
02DF1B | TSB $260C | A or $260C | |
02DF1E | LDA #$0033 | A=#$0033 | 戦闘行動を差し替え |
02DF21 | STA $23EE | $23EE=A | |
02DF24 | JSR $E03D | SR: $02E03D | 暗黒の波動(マヌーサ) |
02DF27 | BCS #$06 | if(c==on) goto $02DF2F | |
02DF29 | LDA #$0004 | A=#$0004 | |
02DF2C | TSB $260C | A or $260C | |
02DF2F | LDA #$003F | A=#$003F | 戦闘行動を差し替え |
02DF32 | STA $23EE | $23EE=A | |
02DF35 | JSR $E07B | SR: $02E07B | 暗黒の波動(メダパニ) |
02DF38 | BCS #$06 | if(c==on) goto $02DF40 | |
02DF3A | LDA #$0008 | A=#$0008 | |
02DF3D | TSB $260C | A or $260C | |
02DF40 | LDA #$0120 | A=#$0120 | |
02DF43 | STA $23EE | $23EE=A | |
02DF46 | LDA $260C | A=$260C | |
02DF49 | CMP #$000F | A==#$000F? | |
02DF4C | BNE #$08 | if(z==off) goto $02DF56 | |
02DF4E | JSL $C1A867 | SR: $01A867 引数:1#$000F | 戦闘メッセージ表示 |
02DF54 | BRA #$04 | goto $02DF5A | |
02DF56 | JSL $C2B977 | SR: $02B977 | パーティウィンドウ再描画? |
02DF5A | STZ $260C | $260C=#$00 | |
02DF5D | PLA | Pull A | |
02DF5E | RTL | return |
- SR: $02DD72 暗黒の波動(ラリホー)(新SR)
02DD72 | LDY $23E8 | Y=$23E8 | |
---|---|---|---|
02DD75 | STY $2428 | $2428=Y | |
02DD78 | JSL $C2BE8A | SR: $02BE8A 引数:1#$16 | |
02DD7D | BCS #$1B | if(c==on) goto $02DD9A | |
02DD7F | JSL $C2CAE0 | SR: $02CAE0 引数:1#$2047 引数:2#$00FF | 戦闘中PC情報取得 |
02DD87 | BNE #$11 | if(z==off) goto $02DD9A | |
02DD89 | JSR $A3EB | SR: $02A3EB | 耐性を考慮して成否判定+PC側耐性計算? |
02DD8C | BCC #$0C | if(c==off) goto $02DD9A | |
02DD8E | JSL $C2B5D8 | SR: $02B5D8 | |
02DD92 | JSL $C1A867 | SR: $01A867 引数:1#$0041 | 戦闘メッセージ表示 |
02DD98 | SEC | c=on | |
02DD99 | RTS | return | |
02DD9A | CLC | c=off | |
02DD9B | RTS | return |
- SR: $02DFFA 暗黒の波動(マホトーン)(新SR)
02DFFA | LDX $23E8 | X=$23E8 | |
---|---|---|---|
02DFFD | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2051 引数:2#$0002 | 戦闘中PC情報取得 |
02E005 | BEQ #$02 | if(z==on) goto $02E009 | |
02E007 | CLC | c=off | |
02E008 | RTS | return | |
02E009 | JSR $989B | SR: $02989B | 行動対象者のMPが0か? |
02E00C | BCS #$05 | if(c==on) goto $02E013 | |
02E00E | JSR $A3EB | SR: $02A3EB | 耐性を考慮して成否判定+PC側耐性計算? |
02E011 | BCS #$02 | if(c==on) goto $02E015 | |
02E013 | CLC | c=off | |
02E014 | RTS | return | |
02E015 | LDA #$0001 | A=#$0001 | |
02E018 | JSL $C2CB70 | SR: $02CB70 引数:1#$2051 引数:2#$0002 | 戦闘中PC情報変更 |
02E020 | JSR $DD9C | SR: $02DD9C | 暗黒の波動効果メッセージ切り替え(味方,マホトーン) |
02E023 | PHA | Push A | |
02E024 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$203C 引数:2#$00FF | 戦闘中PC情報取得 |
02E02C | CMP #$0004 | A>=#$0004? | |
02E02F | BCS #$05 | if(c==on) goto $02E036 | |
02E031 | JSR $DDB0 | SR: $02DDB0 | 暗黒の波動効果メッセージ切り替え(敵,マホトーン) |
02E034 | STA $01,S | Stack($01)=A | |
02E036 | PLA | Pull A | |
02E037 | JSL $C1A87A | SR: $01A87A | 戦闘メッセージ表示 |
02E03B | SEC | c=on | |
02E03C | RTS | return |
- SR: $02E03D 暗黒の波動(マヌーサ)(新SR)
02E03D | LDX $23E8 | X=$23E8 | |
---|---|---|---|
02E040 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2051 引数:2#$0004 | 戦闘中PC情報取得 |
02E048 | BEQ #$02 | if(z==on) goto $02E04C | |
02E04A | CLC | c=off | |
02E04B | RTS | return | |
02E04C | JSR $A3EB | SR: $02A3EB | 耐性を考慮して成否判定+PC側耐性計算? |
02E04F | BCS #$02 | if(c==on) goto $02E053 | |
02E051 | CLC | c=off | |
02E052 | RTS | return | |
02E053 | LDA #$0001 | A=#$0001 | |
02E056 | JSL $C2CB70 | SR: $02CB70 引数:1#$2051 引数:2#$0004 | 戦闘中PC情報変更 |
02E05E | JSR $E067 | SR: $02E067 | 暗黒の波動効果メッセージ切り替え(マヌーサ) |
02E061 | JSL $C1A87A | SR: $01A87A | 戦闘メッセージ表示 |
02E065 | SEC | c=on | |
02E066 | RTS | return |
- SR: $02E07B 暗黒の波動(メダパニ)(新SR)
02E07B | LDY $23E8 | Y=$23E8 | |
---|---|---|---|
02E07E | STY $2428 | $2428=Y | |
02E081 | JSL $C2BE8A | SR: $02BE8A 引数:1#$28 | |
02E086 | BCC #$09 | if(c==off) goto $02E091 | |
02E088 | JSR $E0C3 | SR: $02E0C3 | 暗黒の波動効果メッセージ切り替え(メダパニ2) |
02E08B | JSL $C1A87A | SR: $01A87A | 戦闘メッセージ表示 |
02E08F | SEC | c=on | |
02E090 | RTS | return | |
02E091 | JSL $C2CAE0 | SR: $02CAE0 引数:1#$2051 引数:2#$0040 | 戦闘中PC情報取得 |
02E099 | BNE #$05 | if(z==off) goto $02E0A0 | |
02E09B | JSR $A3EB | SR: $02A3EB | 耐性を考慮して成否判定+PC側耐性計算? |
02E09E | BCS #$02 | if(c==on) goto $02E0A2 | |
02E0A0 | CLC | c=off | |
02E0A1 | RTS | return | |
02E0A2 | JSL $C2B673 | SR: $02B673 | 混乱直後の処理(戦闘行動変更?) |
02E0A6 | JSR $E0AF | SR: $02E0AF | 暗黒の波動効果メッセージ切り替え(メダパニ) |
02E0A9 | JSL $C1A87A | SR: $01A87A | 戦闘メッセージ表示 |
02E0AD | SEC | c=on | |
02E0AE | RTS | return |
- SR: $02DD9C 暗黒の波動効果メッセージ切り替え(味方,マホトーン)(新SR)
02DD9C | LDA $260C | A=$260C | |
---|---|---|---|
02DD9F | AND #$0001 | A&=#$0001 | |
02DDA2 | CMP #$0001 | A==#$0001? | |
02DDA5 | BNE #$05 | if(z==off) goto $02DDAC | |
02DDA7 | LDA #$0067 | A=#$0067 | |
02DDAA | BRA #$03 | goto $02DDAF | |
02DDAC | LDA #$0193 | A=#$0193 | |
02DDAF | RTS | return |
取り立ててこれといって難しいことはしていないのですが、ポイントは「対象1人に着目したときに、メッセージ表示時に画面切り替えをする/しないのコントロールをする」というところです。オリジナルのメッセージを使用すると、メッセージの先頭に画面切り替え?のコントロール文字列[BD]が付加されているため、
○○は ねむってしまった!
画面切り替え
○○は まぼろしに つつまれた!
となってしまい、非常に見づらくなります。理想は
○○は ねむってしまった!
○○は まぼろしに つつまれた!
のように1人分は1画面に続けて表示したいところです。従って、面倒ですが「効果発生時に対象キャラクターの最初の効果発動の場合は[BD]付きのメッセージを表示し、すでに別の効果が発生している場合は[BD]なしのメッセージを表示する」という処理をすることで対応します。その切り替え処理をしているのがSR: $02DD9Cなどです(ラリホーは最初の効果なので必ず[BD]付きのメッセージを使用する)。同様にマヌーサ、メダパニにもメッセージ切り替えの処理をはさむことになります。
コメント