不具合修正や各種動作チェックも完了し、ようやくカスタムサントラモードの実装が完了しました。オプション画面やマップ画面のBGM設定を「ノーマル」にすればデフォルトの楽曲が再生され、「カスタム」にすれば任意のBGMを自分で用意した楽曲と差し替える事が可能です(どちらのモードでも再生される楽曲は強制的にステレオ出力になります)。また、動画の通りBGM継続パッチにも対応し、カスタムモードで差し替えた楽曲は楽曲ごとにバイナリエディタやBNE2で音量の指定設定も可能です。カスタムサントラモードはMSU-1チップをサポートした一部のエミュレーターやフラッシュカートリッジ(Snes9xやbsnes、FXPAK PROなど)でのみその機能を使用できますが、ノーマルモードであれば他の環境でも問題なくプレイ可能(カスタムモードにするとBGMが再生されないだけ)です。 現状で確認できる不具合…というか仕様として、カスタムモードでサウンドテストを選択して楽曲を再生させた後にメニューに戻すと、再度サウンドテストのウィンドウを開いた際に楽曲の項目が1番目(デフォルトであれば「時を越えて」)になってしまうというものがあります。特にプレイに支障が出るものでもないと思うのですが、一応修正するアイデアがないわけでもないので、できる事ならば修正しておきたいところです。 今回は事前の知識としてBGM継続パッチやサウンドドライバ、BGMにSE周りのシステム関連の解析を行っていたので割と容易に実装可能となりましたが、作業量やデバッグの手間を考えるとその時間を他のリソースに割く方が懸命に思え、MSU-1関連のパッチ作成は他のタイトルでは積極的にやりたくはないというのが本音ですね。
BGMの貧弱さに定評があるキャプテン翼4ですが、これを補うべくサンプリングデータを差し替えられないか調査を始めてみました。サンプリングデータは050300から始まるオフセットテーブルで定義付けられており、最初の2バイトがデータ長、次に続く2バイトがサンプリングデータの展開先というパターン(これはSPC共通の仕様ですね)になっています。
さて、オフセットテーブルが判明している以上、ROM拡張をしてそこに音質の良いデータを書き込んでアドレス指定すればサンプリングデータの入れ替え自体は可能なのですが、問題はそれをサウンドドライバに組み込んだ場合に他のサンプリングデータと干渉しないようにできるかどうか、という事です。サンプリングデータは予め書き込み先が指定されていますので、このデータ長が他のサンプリングデータと干渉しないようにうまく調整するか、あるいはサウンドドライバ自体を書き換えてサンプリングデータの展開先アドレス領域を変更する必要が出てきます。干渉すれば当然オーバーフローを起こしてフリーズしますので、そういう意味でもなかなか面倒な作業になりそうです。
コメント
コメントを投稿