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

最新の投稿

ファミコン版天地を喰らう 軍師キャラの隊列変更阻止について

 天地を喰らうシリーズは策略を使うにあたって「軍師」に任命された武将がいないと使用不能になるのですが、軍師に任命された武将は戦闘が開始されると隊列の一番後ろに配置され、隊列が6人以上になると直接戦闘に参加できなくなるというシステムになっています。これがいわゆる文官タイプ(武力や兵士数が低く知力が高い傾向の武将)であればまだいいのですが、劉備や馬謖や姜維のように文武両道の武将を軍師に任命する必要がある場合は事情が変わってきます。そこで、軍師に任命した武将がどのような処理で隊列の一番後ろに回されてしまうのか調べてみました。その結果、大まかに言うと「戦闘開始時にまず隊列の人数をチェックし、6人未満である場合は各武将の状態をチェックし、正常であれば隊列の位置そのまま、それ以外の状態の武将は隊列の最後尾に変更する。6人以上の場合は軍師を隊列の最後尾に移動させるが、負傷中の武将がいる場合は更に軍師の後ろに配置する」という処理内容でした。ここで言う武将の状態は「00=負傷中(戦闘不能)、40=軍師、80=正常、C0=正常かつ軍師」の4種類で、この処理内容を変更すれば軍師に任命した武将も隊列の変更がないまま戦闘に参加できそうです。つまり「隊列が6人以上でも6人未満でも武将が正常な状態であれば隊列の位置そのままを維持し、負傷中の武将のみ隊列の最後尾に変更する」とすればよいのではないでしょうか。この仮説を基に改変を行い、成功すればパッチとして公開する予定です。

ドラゴンクエストⅠ・Ⅱ FastLoROM仕様化パッチを公開しました

 今回は、バイナリエディタを開いて何となくROMの中身を眺めていたところ気が付いた事について記述します。

 ドラゴンクエストⅠ・ⅡのROM仕様ははSlowLoROMという最もありふれた仕様(低速スキップ)なのですが、どういう事かプログラム中にはFastLoROM(高速スキップ)への切り替え命令が含まれています。これはSLGなど通常よりも高速の思考ルーチンを必要とする作品でよく見られる仕様(「紋章の謎」も高速スキップROMです)ですが、カートリッジを分解して中身を確認したところ当然ながら使用されているROMや基盤はSiowLoROM仕様のものが使われていましたので、残念ながらプログラムが高速処理されている訳ではありませんでした。更に一応007FC0から始まるソフトの仕様の記述を確認しましたが、やはり007FD5に設定されているROM仕様の指定が「20」になっています。高速スキップならばこの部分が「30」でないと切り替え命令が無効化されてしまいますので、開発中は処理速度を考慮して高速仕様でプログラムを組んでいたものの、実際に実機でプログラムを起動させてみたところ低速仕様でも十分な速度が得られたのか、または当時のROMの価格などの関係で利益を優先すべく低速仕様に変更したのかもしれません。

 検証としてこの部分を30に置き換えたところ、気のせいかもしれませんが歩行時のグラフィック描画のカクつきや戦闘時の敵の行動(敵の行動に関してはⅡ)などが僅かながら速くなったように感じます。パッチにするまでもないのですが、バイナリエディタを使用できない環境でどんな感じなのか試してみたい方は以下のURLからダウンロードして下さい。


https://ux.getuploader.com/retrogamelaboratory/download/59

コメント

人気の投稿

キャプテン翼4 ファンベルグの「光るシュート」とオルミーガの「吹っ飛ばし補正」について

第4次スーパーロボット大戦 初期型ROMと後期型ROMの物理的な見分け方と入手方法

第4次スーパーロボット大戦 改造コスト&改造数値分岐パッチを公開しました