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

投稿

1月, 2022の投稿を表示しています

最新の投稿

ツール紹介 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/

第2次スーパーロボット大戦G グラフィックのオフセット読み込み処理変更に関して

 ここ数日あまり時間が取れず苦戦していますが、戦闘シーンでの機体と武器のグラフィックのオフセット切り替えに関しては部分的に成功しています。問題は先攻側のアニメでしか切り離せないという事で、後攻側の機体グラフィックやエフェクトは元のオフセットを参照してしまうという部分です。基本的な処理内容は、武器のデータを参照する際にフラグを立ててチェックするというものなのですが、なぜか後攻側になるとこのフラグが無効になってしまうのが困りものです。

第2次スーパーロボット大戦G グラフィック参照オフセット分離の進捗状況

 新たに作成したサブルーチンを導入してみたところ、システム関係のグラフィックに使われているオフセットテーブルの分離は成功しました。これで機体グラフィックに使えるオフセットの数が多少は増やせましたが、やはり機体と武器のオフセットテーブルも分離しておきたいところです。ROMイメージの拡張に伴いROMのマッピング形式を変更しており、これを利用して理論上はバンク03までのサブルーチンを呼び出せるはずなので、もう少し頑張っていきたいところです。

第2次スーパーロボット大戦G 続々・機体グラフィックと武器アニメグラフィックの切り離しについて

 機体のグラフィックを参照するオフセットテーブルと武器アニメのグラフィックを参照するオフセットテーブルでの切り離し作業ですが、何となく方法が分かってきました。  グラフィックの読み込みは7C000のオフセットテーブルを参照して「システム関連→機体→武器」の順番で読み込んだり描き込んでいる様子なので、これを「7C000を参照してシステム関連のデータを書き込み→拡張領域に書き込んだ機体グラフィック用オフセットテーブルを参照して機体グラフィックを書き込み→7C000を参照して武器グラフィックを書き込み」という内容に変更すればいいわけです。このための新たなコードを書き込む領域は何とか大丈夫だと思うのですが、うまくコードを記述できるかどうかというとあまり自信がありません。時間はかかるかもしれませんが、気長に取り組んでいこうと考えています。

第2次スーパーロボット大戦G ドーベンウルフの武器設定ミスを発見?

 普通にプレイしている分には何の問題もないのですが、ドーベンウルフ(没データのラカン専用機を含む)は武器を3つしか所持していないのですが、武器の割り当ての数値を見るとメガランチャーが1番目、大型ミサイルが2番目、そしてインコムが何故か4番目に設定されています。単純に考えると入力ミスだと思うのですが、もしかするとデータの容量の関係で3番目に設定していた武器(ビームサーベル?)を削除した痕跡なのかもしれませんね。

第2次スーパーロボット大戦G 続・機体グラフィックと武器アニメグラフィックの切り離しについて

 武器アニメの表示設定データの場所が判明したので解析を進めてみましたが、機体のグラフィックデータと武器のグラフィックデータのオフセットテーブルは兼用である事が判明しました。正直なところこのままでは機体と武器アニメのグラフィックオフセットテーブルをそれぞれ独立させるのは難しく、実現するにはプログラムを書き換えて対応するしかないのですが、実際にはプログラムの書き込みバンクにほぼ空き容量がないために実現はかなり難しそうです。  SFCであればROM拡張でできた空き領域に書き込んだプログラムにジャンプさせる事で対応可能なのですが、ゲームボーイは同一バンク内でしかジャンプができないのが痛いですね。何かいい対応策を思いつくまではしばらくシナリオデータの解析を優先する方向で進めていこうと考えています。

第2次スーパーロボット大戦G 機体グラフィックと武器アニメグラフィックの切り離しについて

 機体グラフィックのオフセットテーブルと武器アニメグラフィックのオフセットテーブルの位置が重複しているため双方のグラフィック書き込み領域が狭くなっているのはご承知かと思いますが、これをそれぞれ独立したオフセットテーブルにする作業ができないものかと色々試していますが、現状ではなかかなうまくいきません。グラフィックデータのオフセットテーブルを読み込むプログラムが一ケ所しかなく、これを変更すると機体と武器のグラフィック両方のオフセットを動かさなくてはならないからです。  武器アニメのデータを見る限り機体グラフィックデータのオフセットと連番になっているわけではない様子なので分離は可能だと思うのですが、仮に分離できないとなると機体のグラフィックを大量に増やすという事は難しくなりそうですね。

第2次スーパーロボット大戦G シナリオデモのイベントコード

ようやくシナリオデモ(マップ開始前・終了後の会話画面)のイベントコードがほぼ解明できました。シナリオ変更の一助になれば幸いです。 次はマップそのもので展開されるイベントコードの解明ですが、こちらはしばらく時間がかかりそうです。気長にお待ち下さい。 0x0003 ウェイト。 03 xx yy                     xx yyは待ち時間。 0x0004 指定アドレスにジャンプ。 04 xx yy                     xx yyはROM内のアドレス。 0x0049 BGMの変更。 49 xx                     xxはBGM番号。 0x0081 シナリオデモの終わり。 81 0x0084 パイロット 参入。 84 xx                     xxはパイロットID。 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 yy zz                     xxはパイロットID、yyはパイロットのレベル、zzは機体ID。 0x008A フラグONならば指定アドレスにジャンプ。                     F2 XX YY 8A xx yy                     xx yyはROM内のアドレス。「F2 XX YY」と組み合わせて使用。 0x008B フラグOFFならば指定アドレスにジャンプ。                     F2 XX YY 8B xx yy       9B 8B xx yy                     xx yyはROM内のアドレス。「F2 XX YY」と組み合わせて使用。   

第2次スーパーロボット大戦G 自軍登録数の限界点について

 シナリオの一部改変も視野に入れるとイベント関連の命令コードを解読するのは必須なのですが、まずはプレイしながらRAMデータをざっと眺めてみたところ、自軍に登録できるパイロットとユニットの数はそれぞれ64枠までとなっているようです。ゲーム全体のボリュームからするとやけに大きな枠を取っているのですが、これはSFC版の第4次でパイロットや機体の強制離脱イベントを大量に入れなければならなかった反省点が考慮されているのか、それとも第3次やEXの移植も視野に入れて基礎システムをしっかり作っていたのか判断に迷うところです。  それはともかく、これだけパイロットやユニットの登録枠に余裕があればシナリオの改変はおろか、周回プレイを組み込むのも比較的楽なのではないかと思います。ゲームボーイのオペコードにあまり明るいわけではないので周回プレイモードの組み込み実現は少々難しいと思いますが徐々にシナリオ関連の命令コードの解析は進んできましたので、ジュンやひかるといったマジンガー系ヒロイン、カイやハヤト、リュウにセイラといったホワイトベース隊の面々やシャッフル同盟の追加参戦や、条件次第でマスター生存などのイベントは組み込めそうな感じはします。

第2次スーパーロボット大戦G BNE2ファイル編集用パッチを公開しました

 お待たせしました。第2次Gの各種データを固定長化してBNE2でデータ編集ができるように改変するパッチを公開しました。以下のURLからダウンロード可能です。  https://ux.getuploader.com/retrogamelaboratory/download/1 6  各種ファイルやパッチそのものの転載や再配布は厳禁としますが、本パッチを使用した二次制作パッチの作成と配布については自己責任の範囲内で可能とします。  必要最低限の編集が可能なBNE2ファイルを作成iしましたがidnファイルを作るのが面倒なので、友人から許可をいただき以前某所で公開されていた第2次Gの解析資料集を同梱しています。各種データの編集にあたってはこちらを参考になさって下さい。同梱ファイルの解凍パスワードは「hcp53pnwoavn2iw6」です。  なお、資料の作者様の意向により同梱されている資料ファイル類の転載や二次配布は厳禁とします。ご理解とご協力をお願いします。

第2次スーパーロボット大戦G ROMマッピングの変更とデータの解析を始めました

 あまりユニットの種類が多くない、というか味方の約半分がガンイージとガンブラスター、そして敵はほとんどがガンダム系ばかりの本作ですが、その一因として機体やパイロットのデータが127種類分しか用意されていないというものが挙げられます。  512KBのROM容量を見事なまでにほぼ使い切っていますが機体やパイロットのオフセットテーブルを見ると255種類分が確保されているので、企画の段階では1MBのROMを使用するか、あるいは売り上げ次第では同じフォーマットで第3次やEXもリメイク移植するつもりだったのかもしれません。  そんなわけで1MBにROM容量を拡張してROMマッピングを変更する実験をしてみましたが、プログラムを書き換えないと機体やパイロットのグラフィック領域を増やす事ができないようです。  一応データの移設を駆使すればその分だけグラフィックを増やす事はできるのですが、バンク領域が異なるグラフィックを読み込む事ができないので大幅にグラフィックを増やせない、と言うべきでしょうか。  現状でもシャッフル同盟を揃える事くらいは可能ですが、まずはマジンガー系やゲッター系の敵を増やしてみたいものです。  1MBに拡張したROMはBNE2で編集しやすいように機体やパイロットのデータ長を均一(20h)に変更していますので、気が向いたらBNE2ファイルや解析内容と一緒に公開するかもしれません。

キャプテン翼4 レベル補正変更パッチを公開しました

   以前作成したまま放置していた、敵チームへのレベル補正を変更するパッチを公開しました。以下のURLからダウンロード可能です。 https://ux.getuploader.com/retrogamelaboratory/download/14  パッチを適用すると、上記の写真の状態から下記の写真のような状態にレベル補正が変更されます。基本的には「GKとエースのレベルは自軍の最高レベルの選手+3、一般選手のレベルは自軍の平均レベル+3」となり、これに試合ごとに設定されたレベル補正設定が加わるので、場合によっては自チームと敵チームとのレベル差が4~5程度になる事もあります。ついでと言っては何ですが「浮き球バグ」も修正しています。これで常に「正常に手強い戦い」ができるようになるかと思います。  また、フォントを4独特の読みにくい明朝体(?)から1~3の雰囲気に近いゴシック体に書き替えて視認性を向上、今までの記事で紹介した実況の「くん」表示削除や昇龍脚のアニメ演出変更、タイトル画面の翼の襟の色指定ミスなども変更しています。  4に関しては今後も色々と変更や修正したい部分があるので、暇を見つけて解析や変更を続けていきたいところですね。 今後の主な解析や変更予定は以下の通りです。 フーリア、ニスケンス、ピピンなどの一部キャラにファンベルグと同様の補正能力を追加。 シナリオメッセージの誤字・脱字の修正。 PKのシステムメッセージの「どこにとぶ?」と「どこにける?」の「くん」の修正など、一部システムメッセージの変更や見直し。 ガッツ消費バランスの変更。 カットイン適用枠の拡大。 必殺技使用キャラ枠の拡大。 サトルステギやリベリオやマッハーなど、1~3に登場したキャラの復活、及びクラブ未所属キャラを各地のクラブに振り分け。 オリベイラなど5のベテラン系キャラを一部輸入し、各クラブやナショナルチームに振り分け。 ダイビングヘッドのような汎用必殺技の追加と各キャラが使用できるように設定。 アニメ処理速度の変更。 シナリオ内の矛盾点を検証し一部改変(主にDルートになると思います)。

レナス〜古代機械の記憶〜(Paladin's Quest) 呪文の威力強化について

 意識的に呪文を使っていけば呪文の習熟度が上がっていく本作ですが、ダメージ的には最もよく使うモミソゴーンでも300台後半くらいで頭打ちになってしまうきらいがあるように感じます。  そこで呪文によるダメージを強化しようと考えているのですが、試しに精霊習熟度によるダメージへの影響力を2倍にしたところ、今のところ一部の呪文ではダメージが減少したり1ダメージになってしまうなどの不具合が確認できています。どうやら精霊習熟度をダメージに適用する際にオーバーフローを起こしているらしく、このあたりの不具合を解消しないと実用化はなかなか難しそうです。欲を言えば初歩呪文のズザンやケカンなどでも最大で4桁近いダメージを出せるような変更ができるとよいのですが、そうなると敵の強さも色々と変更しなければならないいでしょうね。

レナス〜古代機械の記憶〜(Paladin's Quest) 歩行速度変更パッチを公開しました

   お待たせしました、歩行時の移動速度を約2倍に変更するパッチが完成しました。以下のURLからダウンロード可能です。 https://ux.getuploader.com/retrogamelaboratory/download/13  致命的な欠陥…というほどでもないのですが、やむを得ない欠点として、通常歩行時本来のマップチップ読み込み速度を想定していない速度で歩行するため、描画が間に合わないというほどではありませんが画面がややカクつきながらスクロールするようになってしまいます。そのため長時間プレイすると結構目が疲れますのでご注意下さい。なお、沼や砂地で足が遅くなる処理はわざと残してあります。

レナス〜古代機械の記憶〜(Paladin's Quest) 歩行速度変更の検証

 私はあまり感じないのですが、どうやら巷ではこの作品の移動スピードは遅い部類に数えられているらしいのでそれをどうにかできないかと思って調べていますが、結論から言えば移動速度の変更は正直なところ難しそうです。  この作品では沼や砂地に足を踏み入れると移動速度が遅くなるので、その逆の処理をしてやれば移動速度が速くなると仮定したのですが、その処理を組み込んだところ一歩あたりで移動する距離が増えるだけでスピードが上がりませんでした。しかも徐々にマップのグラフィックがおかしくなっていくのです。  つまり、沼や砂地では移動速度が下がっているのではなく、移動時に書き換えられるマップのグラフィックの変更処理速度を遅くする事でさも足が遅くなったように見せているようなのです。どうやらその逆は不可能なもようで、別の方法で移動速度を速くする事ができないかどうか検討してみます。

第4次スーパーロボット大戦 グラフィックのインターレース化について

   実にどうでもいい話ですがSFCの映像表示形式にはインターレースとノンインターレースの二種類がありまして、基本的にはソフト側のプログラム制御でインターレース表示がされないようになっています。しかしこれを解除するとインターレースモードで表示ができるようになります。  ブラウン管ディスプレイでプレイするのであればこのモードにする事でドット絵特有のにじみを軽減してクリアなグラフィックで画面を見る事ができるのですが、液晶ディスプレイでは単なるギザギザのグラフィックになってしまうのが悲しいところです。ちなみにインターレースモードにしてスクリーンショットを撮るとこんな縦長画像に。一応横にも画像を広げる事ができるのですが、その場合補完表示処理プログラムが組み込まれていないソフトでは画面が暗く(厳密にはBGに使用されている黒い画面がスプライトの隙間から見えて半透明に)なってしまうので何の意味もありません。  インターレース化への切り替え機能自体はオプションの追加などで組み込む事が可能ですが、ブラウン管でプレイする方がまずいらっしゃらないと思いますので今のところ実装の予定はありません。

第4次スーパーロボット大戦 戦闘BGMの再生基準の変更に関する考察

 SFC版の第4次スーパーロボット大戦では戦闘時のBGM再生の基準は搭乗している機体に依存しますが、これを第4次S以降の標準規格であるパイロット依存に変更する事を検討中です。  具体的にはパイロット全員分のBGM設定テーブルを作成し、機体のBGM設定がボス属性であればボス属性の機体のBGM設定を優先し、そうでなければ自軍パイロットのBGM設定を適用するというものです。  これを応用すればスパロボAのように「特定のパイロットが特定の機体に乗っている場合だけ適用されるBGM設定」なんて事もできるのですが、結局ガンダム系のパイロットくらいしか恩恵にあずかる事ができないのが難点ですね。

レナス〜古代機械の記憶〜(Paladin's Quest) エネミー設定用BNE2ファイルを公開しました

 昨年の3月に作成したまま放置していた、レナスのエネミー設定用BNE2ファイルを公開しました。以下のURLからダウンロード可能です。 https://ux.getuploader.com/retrogamelaboratory/download/12  エネミーがドロップするアイテムと確率も設定できますので、パラメーターアップ系のアイテムを高確率でドロップさせるなどの措置も面白そうですね。余裕ができたらアイテムの内容そのものの設定や傭兵の設定に関しても変更できるように解析を進めたいところです。