MSU-1を使用したBGMファイル再生パッチですが、テストを重ねたところ色々と不具合が見つかってしまい作業が難航しています。最初に難航したのは安定したBGM再生ができないという不具合でしたが、これは主にMSU-1のコマンドパラメーターを書き込むRAMの選定箇所が問題だった(未使用領域だと思っていた場所が実際には使用領域だったためコマンドパラメーターが上書きされてしまう)事が判明し、コードの記述が長くなるのを覚悟で未使用と思われる普段のパッチ作成では使用しないRAM領域に一時データを収める事で解決しました。しかしこれだけではまだまだ問題が解決していません。現状では以下のような課題が残っています。 モノラル/ステレオフラグを使用する事でBGMのSPC/MSU切り替えが可能になったが、これによりBGMを強制ステレオ化(或いは強制モノラル化)する処理が必要。 MSUモードの状態でサウンドテストを使用し、選択したBGMをそのままの状態で再度選択するとそのBGMが頭から再生されない、または無音になる。原因は不明(但し、別のBGMを選択した後であれば問題なく再生は可能)。拘るのであれば強制的にBGMを再度再生するためのサブルーチン作成が必要か? MSUモードの状態でカラオケモードを選択すると正常に歌詞が流れない(戦闘アニメーションだけが流れ続け、何かボタンを押せばキャンセル扱いでカラオケモードが終了する)。拘るのであればカラオケ画面読み込み時に強制的にSPCモードにし、カラオケ画面から抜ける際に直前のモードフラグを復帰させる機能が必要。 MSUモードからSPCモードへの切り替え時に、画面切り替え等で次のBGMが再生されるまでの間は無音の状態になってしまう(逆の場合は次のBGMが再生されるまでMSUのBGMが流れ続ける)。モード切り替え時に2006(MSUボリューム)を強制的に0にする処理をしている事が原因であるため、SPCでのBGM再生時のサブルーチン内部に2006を0にするコマンドを組み込めば解決できるのではないか。 MSUモードでは従来のBGM継続パッチは使用不能。MSUモード専用のBGM継続パッチを作成し、SPCモードとMSUモード双方のBGM継続プログラムをROMデータ内に収録し、必要に応じて切り替える必要がある。 これだけの労力を割く必要があるのか...
スーパーロボット大戦D以降で急速に増えていった「他の機体を呼び出して戦わせる武器(=召喚攻撃)」ですが、一応は第4次でも表現可能です。端的に言うと上の写真の「スクランダーカッター」の攻撃アニメーションのように「機体とは別のグラフィック」を「ミサイルやビームが表示されるスプライト領域」に表示させればいいのです(これはスプライトが切り替わる瞬間の写真で、この後マジンガーZの機体グラフィックは画面上から消えて、ミサイルなどを表示するスプライトに書き込まれたスクランダーカット状態のマジンガーZのグラフィックが画面外に向かって移動していきます)。これにより、現在戦闘している機体とは別の機体のグラフィックを表示させる事ができるという寸法です。また、両方のグラフィックをそのまま表示させておく事も可能なので、ダブルマジンガーブレードのような簡単なアニメーションの合体攻撃であれば演出自体を再現する事はそんなに難しくはありません。 ただ、この手法の問題点は地面や水中で戦う場合に足元の影を表示できなかったり、移動の際にスモークやスラスターの噴射炎が表示できないという事です。これに関しては今のところミサイルのグラフィックのように「呼び出された機体のグラフィックに直接影なり噴射炎なりスモークなりを書き込んでアニメーションさせる」という方法しか見つけていません。実は私が以前作ったゲッタービジョンのアニメーションも直接ゲッター2の機体グラフィックを動かしているわけではなく、敵側の画面に切り替わると同時にミサイルのスプライトに書き込んだ「ゲッター2のグラフィックの武器」の攻撃アニメーションを動かして分身攻撃を行っているのです(そのためゲッター2の足元に影が表示されていない)。同じような方法でジェットストリームアタックやトリプラーのような連携攻撃も表現可能ですが、現状では影をどうする事もできないのが大きな課題です。しかし、この方法で別グラフィックを表示させているはずのサンアタックやグランダッシャーでは影が表示されている事を考えると、実際にはスモークや噴射炎はともかく、影だけはどうにかできる方法があるのだと思います。この辺りについてはもっと解析が必要ですね。