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

投稿

ラベル(MSU-1)が付いた投稿を表示しています

最新の投稿

第3次スーパーロボット大戦 反撃命令による武器や行動選択の解析結果

 反撃命令による武器選択の基準がよく分からないと言われているSFC版第3次スーパーロボット大戦ですが、反撃命令の設定箇所をざっと解析してみたところ、それぞれの命令で使用武器の選択基準が違っている事が分かりました。大まかな内容ですが、基本的には以下のような基準で反撃武器や行動を選択しています(なお、原則として敵軍やNPCのパイロットは「必ず反撃せよ!」に設定されています)。  「必ず反撃せよ!」は、残弾や残りENにかかわらず命中率が1%以上ある最強の武器を選択。その武器の命中率がゼロになる場合は、次に威力が高く命中率が1%以上ある武器を選択するという思考を繰り返す。どうしようもない場合は命中率がゼロでもとにかく現状で使用可能な最強の武器を選択する。これに合致する武器がない場合は反撃不能扱いになる。弾切れや射程外からの攻撃には何もしない。先攻側の攻撃でHPがゼロになると判断しても反撃を試み、それができない場合は反撃不能扱いとなる。原則として武器選択の際に相手の残りHPは考慮しないため、反撃相手のHPが仮に残り1であろうとも最強の武器で反撃する。前述の通り、敵軍やNPCは原則としてこの命令が設定されているため、回避力(=パイロットの反応と操縦と直感の総和に機体のサイズ補正を適用した数値)が低いユニットは威力重視の武器で反撃される事が多い。残弾やEN消費も気になるところだが、分身持ちであるゲッター2系やF91であればこの命令を活用できるかもしれない。  「積極的にいけ!」は、相手が一撃で倒せる場合は命中率が1%以上ある最強の武器を選択。但し、その武器の残弾が残り1だったり、その武器を使用してもう一度使用できるだけの残りENがなくなる場合は使わず、次に威力が高く命中率が1%以上あり、かつ残弾が残り2以上か現在のENで二回以上使用できるEN消費武器を選択するという思考を繰り返す(EN消費武器に関してはたまに例外あり)。どうしようもない場合は弾切れ、またはEN枯渇にならない命中率がゼロの現在選択できる最強の武器を選択する。これに合致する武器がない場合は反撃不能扱いになる(そのため、条件を成立させれば弾切れでなくともパイロットが弾切れの台詞を吐く姿を拝める)弾切れや射程外からの攻撃には何もしない。相手を一撃で倒せない場合の思考も同様。やはり原則として武器選択の際に反撃相手の...

第4次スーパーロボット大戦 カスタムサントラモード完成

 不具合修正や各種動作チェックも完了し、ようやくカスタムサントラモードの実装が完了しました。オプション画面やマップ画面のBGM設定を「ノーマル」にすればデフォルトのSPC音源の楽曲が再生され、「カスタム」にすれば任意のBGMを自分で用意したPCMファイルの楽曲と差し替える事が可能です(どちらのモードでも再生される楽曲は強制的にステレオ出力になります)。また、動画の通りBGM継続パッチにも対応し、カスタムモードで差し替えた楽曲はバイナリエディタやBNE2で楽曲ごとに音量とループの有無の設定が可能です。カスタムサントラモードはMSU-1チップをサポートした一部のエミュレーターやフラッシュカートリッジ(Snes9xやbsnes、FXPAK PROなど)でのみその機能を使用できますが、ノーマルモードであれば他の環境でも問題なくプレイ可能(カスタムモードにするとBGMが再生されないだけ)です。  今回は事前の知識としてBGM継続パッチやサウンドドライバ、BGMにSE周りのシステム関連の解析を行っていたので割と容易に実装可能となりましたが、作業量やデバッグの手間を考えるとその時間を他のリソースに割く方が賢明に思えます。また、PCMファイルの配布も様々なリスクが付きまとう事を考えると、何か余程の事がない限りMSU-1関連のパッチ作成は他のタイトルでは積極的にやりたくはないというのが本音ですね。

第4次スーパーロボット大戦 続・PCMファイル再生パッチ作成の進捗状況と課題

 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モードでサウンドテストを選択して一度サウンドテストから抜け、SPCモードに切り替えてそのまま再度サウンドテストを選択すると楽曲の選択タイトルが強制的に一番目のもの(時を越えて)になってしまう。逆の場合はこのような現象は発生しない。  これ...

第4次スーパーロボット大戦 PCMファイル再生パッチ作成の進捗状況と課題

 MSU-1チップ導入によるPCM音源再生パッチの進捗状況ですが、やはり当初に思っていたよりも難解な技術というものではなく、割と簡単にMSU-1チップを介してPCMファイルを読み込み・再生する事には成功しました。しかし問題がない訳ではなく、特定のエミュレーターでしかMSU-1チップを組み込んだROMイメージが正常に動かず(具体的には現状で対応しているのはbsnes-PlusとSnes9xの2種類のみ)、それ以外のエミュレーターや実機でROMイメージを起動させるとゲーム自体はプレイできるもののBGMが再生されなくなってしまいます。これはMSU-1チップがあくまで発案者による架空の存在であるため、このチップに対応するプログラムが組み込まれたエミュレーターでないとPCM音源が再生されない(というかハードウェアレジスタンスが無効となりMSU-1チップを認識しない)ために起こる不具合です。つまりMSU-1チップを組み込んだROMイメージは嫌でも指定のエミュレーターでしかまともにプレイできなくなるという問題が生じる事になり、SNESGTをメインに使用する私としては少々モチベーションが下がってしまう思いです。  さて、PCM音源再生パッチを作成したはいいのですがもう一つの問題があります。それは「カラオケモードで字幕が一切先に進まなくなる」というものです。カラオケモードはSPCデータの内容とリンクして文字が切り替わる仕組みになってるので、PCMファイルでBGMを再生させた場合はこれが成立しなくなってしまうために起こる不具合です(不具合といっても字幕が更新されないだけでフリーズしたりする訳ではなく、キャンセルしたり本来のBGMの長さと同じだけの時間が経過すればカラオケ画面から曲目選択メニューに戻る事は可能です)。解決方法としては二つあり、一つはプランA「諦めて放置するかカラオケモードに入れないようにロックを掛ける」、もう一つはプランB「カラオケモードのカラオケ画面に入る際にカラオケモードフラグをONにし、このフラグが立っている間だけ本来のサウンドドライバによるSPCモードのBGMが再生されるように処理を切り替え、カラオケ画面終了と同時にフラグをOFFにする」というものです。作業としてはどう考えてもプランAの方が楽なのですが、折角なのでプランBが実際に実現可能なのか試...

第4次スーパーロボット大戦 BGMのMSU-1再生化パッチ作成計画

 海外のSNESエミュレーター制作者の方が発案した技術として「MSU-1ハック」というものがあります。SA-1チップに代表されるようなスーパーファミコンの特殊チップの一種として「もしもSFCの外付けCD-ROMユニットが製品化されていたら?」という仮定のもとにBGMやムービー等のファイルを外付けCD-ROMユニットに見立てたフォルダに格納し、これを架空の拡張チップ「MSU-1」を介して再生させるという手法です。存在自体はかなり以前から知っていたのですが、技術的にどんなものかよく分からなかったので今までノータッチという状態でしたが、発案者の方が作成された資料( https://helmet.kafuka.org/msu1.htm )に目を通して検証してみるとさほど難しい内容ではなく、簡単に言えば「これから再生するBGMを参照する際にSPCを指定する代わりに、音源ファイル用意してMSU-1チップで再生する形式に変換したPCMファイルのIDを指定し、ハードウェアレジスタンスによる命令でこれを再生させる」だけのようです。  BGM再生やSPCの参照に関しては「BGM継続パッチ」を作成する際に大部分を解析していますので、それを活用すれば意外と簡単にMSU-1を介したBGMのローディングや再生の環境が構築できそうですが、BGM用のPCMファイルを作成するにあたってCDや他のゲームから録音したBGMをソースとする事が非常に大きな問題になりそうです。しかし個人でこれを楽しむ分にはまあいいとして、配布するのは非常に危険な行為なのではないかという不安が付きまといます(自分で作成したMIDI音源ファイルなどをベースにしてPCMファイルを作成していれば特に問題はないと思うのですが…)。  なお、既に海外では第4次スーパーロボット大戦のMSU-1導入パッチが作成済み( https://www.zeldix.net/t2585-super-robot-wars-4 )のようですが、どうやらコミュニティの会員でなければ入手が不可能な仕様になっている模様なのでダウンロードする事ができず、具体的な内容に関しては全く分かりません。しかしMSU-1ハック発案者様の作成された資料をベースに、MSU-1によるBGMの再生環境を作成する事自体は可能であると思われますので、この環境の...