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

投稿

最新の投稿

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

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

第2次スーパーロボット大戦G イベントコード調査続報その1

 今回は久々に第2次Gのイベントコードを解析してみました。前回は不明だったマップ上イベントのコードがいくつか追加されています。調査中のコードに関しては詳細が判明次第内容を公開する予定です。 0x0003 ウェイト。 03 xx yy      指定時間だけ操作受付禁止。xx yyは待ち時間。 0x0004 指定アドレスにジャンプ。 04 xx yy      xx yyはROM(RAM)内のアドレス。      経過ターンによるイベント制御の際はEDと組み合わせて「ED zz 04 xx yy」となる。 0x0020     ???     20     xx     調査中。 0x0049 BGMの開始。 49 xx      xxはBGM番号。F6との違いは不明。      基本的にはF6が使われている事が多い。 0x0080 コントローラー操作を受け付け開始。 80      コントローラーによるボタン操作や十字キー操作などを受け付けるようにする。 0x0081 イベントページの終わり。 81      イベントページの実行を全て終了して次のフェイズに移行。 0x0084 パイロット参入。 84 xx yy      xxはパイロットID。yyはレベル。 0x0085 機体入手。 85 xx      xxは機体ID。 0x0086 パイロット離脱。 86 xx      xxはパイロットID。 0x0087 機体離脱。 87 xx      xxは機体ID。 0x0088 強制乗り換え 88 xx yy      xxはパイロットID、yyは機体ID。 0x0089 自軍にユニット(パイロット搭乗済みの機体)が参入。 89 xx...

第4次スーパーロボット大戦 移動タイプ「ホバー」用背景のお手軽作成方法

 色々と「ホバー」で表示される水上の背景の作成方法について論じてきましたが、雑ではありますがお手軽かつ簡単な解決案を思いつき実行してみましたので、一応掲載しておきます。それが上の写真のような内容です。…少しでも勘のいい方は写真を一目見ただけで何をしたのか察する事が可能かと存じます。  答えを簡単に言ってしまうと「砂漠の背景用のパレットを青系のものに変更して川や海といった水系パネルの陸上領域設定に紐付けし、代わりに砂漠パネルの陸上領域設定には荒れ地の背景を紐付けする」というものです。非常に雑ですが、こうする事によって実に簡単に水上っぽい背景を作る事が可能です。上の写真では実験的に雲用の青色パレットをそのまま使用しているのでまるで雪原のようになってしまっていますが、下の写真のようにきちんとパレットを自作してやや緑がかった青に調整すればそれなりに海や川っぽい雰囲気が出るのではないでしょうか。また、砂漠自体が作中であまり出てこないので荒れ地と紐付けてしまってもそれほど気にならないと思います。注意すべき点は「昼の分だけでなく夕方や夜の分のパレットも変更しなければならない」という事だけです。  もしも私自身がホバーを実装するとすれば砂漠の使い回しではなくきちんと水上をイメージした背景を作るつもりですが、「労力をかけずに解決しようとするのであればこういう方法もありますよ」という事でご参考まで。

第4次スーパーロボット大戦 続・移動タイプ「ホバー」の課題

 前回は「ホバー」の仕組みと戦闘時の背景呼び出しについて幾つか推論を述べていきましたが、その後実際に解析して判明した事がありますので、今回はそれについて少し記述していきます。  まず背景のグラフィックですが、これはそのユニットのいる地形パネルを参照して先攻側、後攻側にそれぞれ対応するものを読み込んでいます。そしてそれぞれのユニットの存在している領域(「空中」であるとか「地上」であるとか「地中」であるとか)をチェックして対応する背景グラフィックのセットを書き込むという仕組みになっています。例えばこれが川の地形パネルの場合は「水中であれば川の中の背景のグラフィックに、そうでない場合はそれぞれの存在領域に対応したグラフィック(この場合は全て「空」の背景グラフィック)に、更に夕方や夜の場合は昼間の空から夕方の空や夜空に変更して書き込む」という仕組みです。そして「ホバー」は水の地形パネル上にいても「陸上」の領域に存在する事になっているのです。  つまりホバーを導入する場合はこれを「水中であればそれぞれの水中グラフィックに、陸上(=ホバー)の場合は代わりにそれぞれ(昼・夕・夜)の水上グラフィックに、それ以外の場合は空のグラフィックに設定し、更に夕方や夜の場合は昼間の空から夕方の空や夜空に変更して書き込む」という仕組みにすればよいのです。しかし水系の地形には「深海」というものが存在し、水中のグラフィックが昼・夕・夜で共通した1つのIDしかないため、これもホバーに対応するには更に「深海かつ水中であれば水中グラフィックに、陸上(=ホバー)の場合は代わりにそれぞれ(昼・夕・夜)の水上グラフィックに、それ以外の場合は空のグラフィックに、更に夕方や夜の場合は昼間の空から夕方の空や夜空に変更して書き込む」という専用の処理を組み込む必要がありそうです。実際に深海が存在するマップは「日輪は我にあり」と「ノイエDC」の2マップだけで、かつこのマップはいずれも昼間の設定なので昼間の分だけ処理すればいいという考え方もありますが、後々になって自作シナリオなどを追加する際に深海の地形がある夕方や夜のマップを作るとなると不具合で頭を抱えることになりますので、やはりここはきちんと対応しておかないといけないのでしょうね。まあ開き直って水中の背景グラフィックで間に合わせるという手もあり...

第4次スーパーロボット大戦 移動タイプ「ホバー」の課題

 スパロボ系総合バイナリスレのとある匿名解析者の方 によって考案され、その後ペシェ氏の「第4次ティターンズ大戦+」というハックロムでも採用された移動タイプに「ホバー」というものがあります。内容としては砂地の移動コストを少なくしたり海や川などの水上を陸上と同じように移動できるというもので、空を飛ばずに移動の幅が広げられるというなかなか面白い試みです。しかし元々の仕様として水上での戦闘が想定されていないため水上では戦闘の際に表示される背景が空になってしまうという欠点があり、残念ながら完全なものとは言えません。そこで今回はこの欠点の解決策を考えてみようと思います。  さて、そうは言ったものの地形データの参照方法や背景グラフィックの呼び出し、及び読み込み方法について詳しく解析をしているわけではないので、これから述べる内容はかなりの推論を含んでいます。その点に関してはご了承願います。  まず戦闘背景の呼び出し方法ですが、戦闘開始時に先攻側と後攻側の地形パネルIDを参照し、そのうえで「地中、水中、陸上、上空のどの場所にいるのか?」という「存在の要素」をチェックした後に背景データをRAMに書き込んでいます。これがホバーの場合は水系地形IDのパネルの上でも常に存在場所が陸上扱いになってるのですが、水中以外では強制的に背景データを「00=空中」に設定しているのだと思われます。色々と試してみたところ地中や空中は強制的に戦闘背景を空中にしてしまうようなので、これと同じ要領で水上も空のグラフィックになるのでしょう。夕焼けや夜はパレットによる差分方式の別IDになっており、これに関してはRAM上に昼間や夕方や夜、月や火星などの設定をしている箇所があり、これをスイッチとして各背景のIDを変更しているようです。  次に戦闘背景ですが、デバッグモードで戦闘背景のグラフィックを確認すると結構使われていないIDが目立ちます。ここに写真(スーパーロボット大戦EXの水上の画像)のような専用のグラフィックを設定してやれば、割と背景自体を増やす事は可能なように思えます。簡単に言えば、草原の背景の空と雲を残し、その代わりに草原そのものの部分に水上の画像を書き込めば手軽に水上の背景が作成できるのではないでしょうか。もっとも、この方法では草原の背景がなくなってしまうので、草原のタ...