スキップしてメイン コンテンツに移動

最新の投稿

第4次スーパーロボット大戦 爆発エフェクト設定変更パッチを公開しました

 第4次スーパーロボット大戦では、各機体の撃墜時の爆発エフェクトは機体データのBGM設定と一緒の部分(機体データの6番目)に格納されたサイズ設定とBGM設定に依存しているのですが、これをサイズやBGM依存ではなくそれぞれの機体毎にオフセットテーブルで管理・設定できるパッチを作成してみましたので、よろしければお使い下さい。各機体の撃墜エフェクト設定は3FE780以下のオフセットテーブルで変更可能です。オフセット設定は下位1バイトでマップ上での撃墜エフェクト(00=爆散、01=キノコ雲、02=黒い光+キノコ雲、03=黒い光+爆散、04=光の柱)、上位1バイトで戦闘アニメでの撃墜エフェクト(00=爆発しないまま戦闘終了、10=爆発、20=フラッシュ、40=光の玉)を設定可能です。  これにより、従来はBOSS属性BGMの機体でのみ使用可能だった光の玉による爆縮や、LLサイズ専用だった画面が真っ白になってフラッシュするエフェクトをサイズやBGM設定に関係なく設定できるほか、新スーパーロボット大戦以降の一部の生身ユニットに見られる「爆発しないまま戦闘が終了する」というエフェクト(第2次や第2次Gをイメージした方がよろしいかもしれません)が選択できるようになりますので、ドモンやマスター・アジアのような人間が直接戦闘する機体の再現もある程度違和感なく再現可能です(但し、マップ上ではどうしてもアイコンが消えるだけの「撤退」エフェクトが選択できず、第2次Gのマスター・アジアのように何かしらの爆発エフェクトを選択する必要があります)。ダウンロードは以下のURLから。ファイル解凍に必要なパスワードは「-c.r5m*9ncdj.Kwa」です。 https://ux.getuploader.com/retrogamelaboratory/download/101  次回は機体のBGMを機体依存から「パイロット依存パッチ」のようにオフセットテーブルで設定、かつ3F(64曲)まで設定できるようにするパッチを作成する予定ですが、これを作成すると従来のBGM継続パッチが全て使用不能になりますので、その点も含めると作業はそれなりに大掛かりになりそうです。欲を言えば「カスタムサントラパッチ」のようにディップスイッチでBGM設定をパイロットと機体で切り替え可能にするか、あるいは...

第4次スーパーロボット大戦 メカ戦士ギメリアの「超弾性金属」のしくみについて

 ご無沙汰しております。さて、メカ戦士ギメリアの特殊能力「超弾性金属」はダイモスがイベントで取得する「必殺烈風正拳突き改」でのみダメージを与えられるのですが、その仕組みはダメージ計算中のサブルーチンからユニットID、及び武器IDを取得してダメージを0にするか否かの処理(先攻側…3EF48:20 FD F1=03F1FDのサブルーチンを呼び出し、後攻側…3F117:20 FD F1=03F1FDのサブルーチンを呼び出し)にて行っています。なお、アドレスはいずれも初期ROMの場合です。

(サブルーチン読み込み直前に武器ID取得のコマンドが実行されている)          03F1FD 29 FF 03 AND #$03FF (武器IDの)上限を03FFに絞り込み                    03F200 85 00       STA $00        (取得した武器IDを)7E0000に書き込み                    03F202 A2 00 00 LDX #$000     Xに即値0000を読み込み 
03F205  B9 65 18 LDA $1865,Y $7E1865 ユニットID(2バイト)を取得03F208 29 FF 01 AND #$01FF  (ユニットIDの)上限を01FFに絞り込み    03F20B DF 26 F2 83 CMP $83F1AD,X $03F226    X.Aから03F226の指定値を減算
03F20F F0 0B BEQ $0B $03F21C 指定値ならば03F21Cにジャンプ      03F211 E8 INX                                            Xに1を加算                             
03F212 E8 INX                                            Xに1を加算                          
03F213 E8 INX                                            Xに1を加算
03F214 E8 INX                                            Xに1を加算                                 
03F215 E0 04 00 CPX #$0004                              Xから即値0004を減算                03F218 D0 F1 BNE $F1 $03F20B 結果が0以外ならば03F20Bにジャンプ      03F21A 18 CLC                                    Cフラグをクリア                           03F21B 60 RTS                                    サブルーチン終了
03F21C BF 28 F2 83 LDA $83F228,X $03F228  X.Aに03F228の指定値を読み込み
03F220 C5 00 CMP $00                     Aから7E0000の値を減算                          03F222 F0 F6 BEQ $F6 $03F21A 指定値ならば03F21Aにジャンプ         03F224 38 SEC                                     Cフラグをセット                              03F225 60 RTS                                     サブルーチン終了

03F226 C4 00       ユニットID:00C4(=ギメリア)
03F228 FB 01       武器ID:01FB(=烈風正拳突き改)




後期ROMの場合はこちらです。先攻側…3EECF:20 84 F1=03F184のサブルーチンを呼び出し、後攻側…3F09E:20 84 F1=03F184のサブルーチンを呼び出し)にて行っています。

(サブルーチン読み込み直前に武器ID取得のコマンドが実行されている)               03F184 29 FF 03 AND #$03FF (武器IDの)上限を03FFに絞り込み                    03F187 85 00       STA $00        (取得した武器IDを)7E0000に書き込み                    03F189 A2 00 00 LDX #$000     Xに即値0000を読み込み                                   03F18C  B9 65 18 LDA $1865,Y $7E1865 ユニットID(2バイト)を取得03F18F 29 FF 01 AND #$01FF  (ユニットIDの)上限を01FFに絞り込み    03F192 DF AD F1 83 CMP $83F1AD,X $03F1AD    X.Aから03F1ADの指定値を減算
03F196 F0 0B BEQ $0B $03F1A3 指定値ならば03F1A3にジャンプ      03F198 E8 INX                                            Xに1を加算                             
03F199 E8 INX                                            Xに1を加算                          
03F19A E8 INX                                            Xに1を加算
03F19B E8 INX                                            Xに1を加算                                 
03F19C E0 04 00 CPX #$0004                              Xから即値0004を減算                03F19F D0 F1 BNE $F1 $03F192 結果が0以外ならば03F192にジャンプ      03F1A1 18 CLC                                    Cフラグをクリア                           03F1A2 60 RTS                                    サブルーチン終了
03F1A3 BF AF F1 83 LDA $83F1AF,X $03F1AF  X.Aに03F1AFの指定値を読み込み
03F1A7 C5 00 CMP $00                     Aから7E0000の値を減算                          03F1A9 F0 F6 BEQ $F6 $03F1A1 指定値ならば03F1A3にジャンプ         03F1AB 38 SEC                                     Cフラグをセット                              03F1AC 60 RTS                                     サブルーチン終了

03F1AD C4 00       ユニットID:00C4(=ギメリア)
03F1AF FB 01       武器ID:01FB(=烈風正拳突き改)


 この値を変更したり、サブルーチンを拡張すれば様々な武器耐性を持つユニットを作る事が可能です。また、ユニットIDではなく武器属性を取得(ビームや近接攻撃武器など)してダメージ無効処理をしてみるのも面白いかもしれませんね。

コメント

人気の投稿

第4次スーパーロボット大戦 初期型ROMと後期型ROMの物理的な見分け方と入手方法

第4次スーパーロボット大戦 未使用BGM「通常ボス」(VIOLENT BATTLE)

ファイアーエムブレム紋章の謎 ソルジャー導入実験と下馬時のクラス分岐考察