不具合修正や各種動作チェックも完了し、ようやくカスタムサントラモードの実装が完了しました。オプション画面やマップ画面の BGM設定を「ノーマル」にすればデフォルトの楽曲が再生され、「カスタム」にすれば任意のBGMを自分で用意した楽曲と差し替える事が可能です(どちらのモードでも再生される楽曲は強制的にステレオ出力になります)。また、動画の通りBGM継続パッチにも対応し、カスタムモードで差し替えた楽曲は楽曲ごとにバイナリエディタやBNE2で音量の指定設定も可能です。カスタムサントラモードはMSU-1チップをサポートした一部のエミュレーターやフラッシュカートリッジ(Snes9xやbsnes、 FXPAK PROなど )でのみその機能を使用できますが、ノーマルモードであれば他の環境でも問題なくプレイ可能(カスタムモードにするとBGMが再生されないだけ)です。 現状で確認できる不具合…というか仕様として、カスタムモードでサウンドテストを選択して楽曲を再生させた後にメニューに戻すと、再度サウンドテストのウィンドウを開いた際に楽曲の項目が1番目(デフォルトであれば「時を越えて」)になってしまうというものがあります。特にプレイに支障が出るものでもないと思うのですが、一応修正するアイデアがないわけでもないので、できる事ならば修正しておきたいところです。 今回は事前の知識としてBGM継続パッチやサウンドドライバ、BGMにSE周りのシステム関連の解析を行っていたので割と容易に実装可能となりましたが、作業量やデバッグの手間を考えるとその時間を他のリソースに割く方が懸命に思え、MSU-1関連のパッチ作成は他のタイトルでは積極的にやりたくはないというのが本音ですね。
少々手間取りましたが、何とかゲッターチームの仕様変更に伴う不具合を修正できました。不具合の内容は「ゲッター2系やゲッター3系の状態でレベルアップした場合、WRAMのパイロットIDがSRAM側の内容に書き換えられて竜馬の状態に戻ってしまったり(変形を実行すると隼人や弁慶に戻る)、SRAMのデータ上ではレベルアップしているがWRAMにその内容が反映されずシナリオ終了まで上昇したパラメーターが反映されない事があるがシナリオが終了するとレベルアップ後のパラメーターになる」というものでした。これは一時データを保存する際に使用するRAM領域の選定がまずかったり、レベルアップ時にパラメーターを再計算する際に使用するサブルーチンの組み立て内容に起因するものでした。
今回は一時データの取得方法自体を見直し、「戦闘後に経験値を取得できた場合はその戦闘で戦ったパイロットのWRAM側のIDを保存し、レベルアップの際に読み込んだSRAM側のパイロットIDがWRAM側に書き込まれた直後にそのデータを参照、IDが竜馬であると判定された場合は直前の戦闘で経験値を取得したWRAM側のパイロットIDで再度上書きする」という方法に改めてみました。ゲッターチームの場合はSRAMのパイロットIDは竜馬で固定のため、レベルアップの都度WRAM側のパイロットIDを現在のゲッターロボの状態に合わせたパイロットIDに変更する必要があるのですが、よく考えてみればSRAMでのIDが竜馬で固定されているとなればそれ自体を判定基準にすればよいという事にようやく気が付いた次第です。これにより判定の精度が向上し不具合が発生しなくたった…と思いたいところです。
コメント
コメントを投稿