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

投稿

ラベル(メモリマップ)が付いた投稿を表示しています

最新の投稿

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

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

ツール紹介 Advanced SNES ROM Utility

 今回は「Advanced SNES ROM Utility」というスーパーファミコン用のROMイメージ編集ツールをご紹介致します。内容的にはROM CheckerとLunar Expandを統合したようなツールで、ROMのタイプ(HiROM/LoROM)のチェックとROMイメージのサイズを変更できるのですが、その他にも色々と面白い機能が実装されています。以下がその一例です。 チェックサムの修正 ヘッダの追加と削除 ROMサイズの変更 ROM情報(タイトル、リージョン、バージョン、特殊チップの有無など)の編集 パッチの適用 ROMイメージのHiROM/LoROM相互変換  特に嬉しいのは「ROMイメージのHiROM/LoROM相互変換」の機能です。キャプテン翼4や5のROMイメージのHiROM化( https://www.retrogamelaboratory.com/2024/06/loromhirom.html )の際に触れたように、私は今までLoROMのROMイメージをHiROMに変換する場合は各バンクの間にいちいち8000h分の空データ(00)を追加していたのですが、このツールを使用すれば自動的に各バンクの間に8000h分の空データ(FF)を追加してくれます。こんな便利なツールがあるのであればもっと早く知りたかったですね…。ともあれ、これによりLoROMのバンクサイズの関係でデータを追加しにくかった作品も大幅に手を加えやすくなるのではないでしょうか。ツールに関する詳細は以下のURLをご参照下さい。 https://www.romhacking.net/utilities/1638/

スーパーファミコンのLoROMイメージのHiROMイメージ化について

 キャプテン翼4や紋章の謎などの各種データ拡張のためにROMイメージの大型化を検討していましたが、LoROM特有の面倒な仕様=8000h単位でバンクが切り替えられてしまうため、大きなデータを移設するには色々と不自由していました。そこで、ふとした思い付きからROMイメージの仕様そのものを変更できないかと試みてみました。簡単に言えばLoROM仕様のROMイメージをHiROM化する事によりバンク切り替えの仕様を8000h単位から倍の10000h単位にしてしまおうという訳ですが、各種プログラムを移動させるとアドレスアクセスのためのデータを全て変更しなければならず、さすがにそれは面倒なので試しに元のLoROMの各バンク8000h毎に8000h分の空データ(=全て「00」や「FF」で埋めたダミー)を挿入し、これにより各アクセスアドレスを変更する事なくデータ位置を変更し、なおかつROMヘッダの15h(00FFD5)に+01してHiROM化してみました。これで理論上はアクセスデータのアドレスを変更する必要はない事になります。  これによりROM容量は元の倍の容量になってしまいましたが、1.5MBのキャプテン翼4(変更後は3.0MB=24メガバイト)や2.0MBのキャプテン翼5(変更後は32メガイト)はLoROMではなくHiROMとして認識され、かつ本来はメモリマップ上の領域が変更されるはずのSRAMも正常に読み書きがされました。なお、変更前に3.0MBだった紋章の謎は6.0MB(=48メガバイト)に拡張したところ残念ながら正常に起動しませんでした。エミュレーターによるのかもしれませんが、どうやら拡大後のROMイメージが4MB=32メガバイトに収まり、そしてSRAMの容量が8KBのように小さければLoROMの状態でもHiROMの状態でも問題は起こらないようで、正常にROMの中身が所定の位置にメモリマッピングされています。そしてこれを実行した後でメモリの状態を調べてみると、どうやら400000~7DFFFFはROMの中身の常にLoROMの状態=つまり下位アドレス状態で408000から10000h単位で展開されており、上位アドレス(4000000や500000)には何も書き込まれていません(=「00」の状態)でした。ROMの上位アドレスに書き込んだデータはC00000以...

スーパーファミコン HiROMのSRAMメモリマップについて

 スーパーファミコンのSRAMを外付けRAMとして使用する場合のメモリマップの割り当てに関する詳細な資料が見当たらなかったので独自に調査してみました。今回はHiROMでのメモリマップで、対応するメモリの位置は以下のような内容(左:SFC本体側のメモリマップ上の位置、右:SRAM側のメモリマップ上の位置)になります。これを使う事はほとんどないと思われますが、何かの参考になれば幸いです。 ・8KB…306000~307FFF(0000~1FFF)のみ使用。 ・16KB…8KBまでの領域+      316000~317FFF(2000~3FFF)を使用。 ・32KB…16KBまでの領域+      326000~327FFF(4000~5FFF)      336000~337FFF(6000~7FFF)を使用。 ・64KB…32KBまでの領域+      346000~347FFF(8000~9FFF)      356000~357FFF(A000~BFFF)      366000~367FFF(C000~DFFF)      376000~377FFF(E000~FFFF)を使用。 ・128KB…64KBまでの領域+      386000~387FFF(10000~11FFF)      396000~397FFF(12000~13FFF)      3A6000~3A7FFF(14000~15FFF)      3B6000~3B7FFF(16000~17FFF)      3C6000~3C7FFF(18000~19FFF)      3D6000~3D7FFF(1A000~1BFFF)      3E6000~3E7FFF(1C000~1DFFF)      3F6000~3F7FFF(1E000~1FFFF)を使用。