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

投稿

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

最新の投稿

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

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

キャプテン翼4 アニメーションの高速処理化と現状での課題

 アニメーション処理のスピードが遅いと言われるキャプテン翼4ですが、どうにか処理のスピードを上げられないものかと色々試しています。その甲斐あって(?)、一応描画の処理スピードを管理していると思われる部分を見つけることはできたのですが、選手の各動作やボールの速度を2~3倍程度に引き上げられる代わりに、写真のように選手のグラフィックの頭だけがあらぬ場所にワープしたり消えてしまうといった現象が起きてしまいます。変更している部分が間違っているのかもしれませんが、うまくいけば2や3のようにスピーディーなアニメーション表現ができる可能性もありますのでもう少し研究していきたいと考えています。

第4次スーパーロボット大戦 ケーラとハサウェイ

 最終的にはどちらも使わないという方が多いと思うのですが、第4次スーパーロボット大戦では第一話のクリアターン数で分岐が発生し、7ターン以内ですとハサウェイが、8ターン以上ですとケーラ(とクリスとバーニィ)が仲間になります。  現在作成中のパッチではクリスとバーニィが最初からロンド・ベルに参加している状態で第一話がスタートするようにしていますが、これを踏まえて分岐でハサウェイとケーラのどちらかが仲間になるのではなく、どちらも仲間になるように変更しようかと考えています。また、これに伴い7ターン以内クリアだとミチル&キング兄妹が、8ターン以上クリアだとバニング&モンシアが仲間になるルートにしていた分岐条件を変更し、主人公がリアル系かスーパー系かで分岐するようにしてみるのも面白いのではないかと考えています。これはターン制限で分岐となると、ゆっくりアイテムを回収したりお気に入りのパイロット育成するために敵を残しておく事が困難になってしまうための対策ですね。そうなると話の流れ、というか仲間になるキャラクター的にスーパー系の場合は7ターンルートに、リアル系は8ターンルートに分岐するような形をとる事になると思います。まあ、最初に述べたようにハサウェイとケーラの両方が仲間になったところで使う方はほとんどいらっしゃらないと思うのですが…。あとはパイロットとして設定されているにもかかわらず実際には仲間にならないキャオの扱いですが、バスターランチャーを持たないエルガイム系の機体は大して使えない可能性が高い(原作のキャオは不意討ちとはいえ赤いディザードで13人衆の一人を倒す活躍を見せていましたが)ので、この辺りの判断はなかなか難しいところです。  さて、色々と仲間になるパイロットや機体を追加していくとSFC版の仕様として有名な「64体の壁」にぶつかってしまいますので、その対策も考えなければなりません。ある程度シナリオが進んだ時点(武器追加イベントのあたり?)で適宜ザンボット3、コン・バトラーV、ダンクーガをそれぞれ分離不能な機体と入れ替え、メインパイロットを除いた分離状態用のパイロットと機体も離脱させればザンボットで2、コンバトラーで4、ダンクーガで3と合計9体分の空き枠を稼ぐ事が可能となりますので、これは必須の変更事項となりますね。精神コマンド管理は「メインパイロットが指定

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

 以前から気になっていたファンベルグの「光る通常シュート」とオルミーガの「吹っ飛ばし系行動」に関する処理や発動条件ですが、おおよその解析が完了したので記載しておきます。  まずはファンベルグですが、通常シュートが光るシュートに変更される条件は「プレイヤーがマニュアル操作でファンベルグの行動ウィンドウを開く事」でした。つまり、プレイヤーが操作可能な状態で行動ウィンドウを開いた際に選手ID判定が行われ、選手IDがファンベルグであった場合のみ「シュート」「ヘディング」「ボレーシュート」がそれぞれ「光るシュート」「光るヘディング」「光るボレーシュート」という高威力・高消費ガッツの専用技選択ウィンドウに差し替えられるという仕組みです。この仕様上、 AIは光るシュートを選択できない( AIのファンベルグの思考ルーチンには光るシュートを選択する項目が存在しない)ので必然的にオールスターモードでのみ使用可能な技という事になり、処理の仕様上ストーリーモードではこれらの技は発動しません。従って「レベル条件等を満たすとストーリーモードでファンベルグが打ったシュートが光る事がある」という証言は何かの勘違いと思われます。ただしチートなどで自軍選手として使用できるようにしてコマンドを選択すれば、ファンベルグの画像がきちんと表示されるかどうかはともかく上記の条件を満たした事になるので、オールスター戦と同じように「光るシュート」が発動します。また、オールスター戦でも「キャプテンモード」や「かんとくモード」選択によるオート操作での行動や、1Pプレイ時に敵軍メンバーとしてファンベルグが登場した場合もオート操作となるため、当然オーバーヘッド以外の光るシュート技は発動しません。オールスター戦でファンベルグを使う際は、必ずマニュアルで操作できるようにしておかないと真の持ち味が生かせなくなってしまうので注意が必要です。  次にオルミーガの吹っ飛ばし行動ですが、結論から言うとこちらは選手IDではなくAIによる行動ルーチンで設定されています。つまりファンベルグのように「通常技を専用技に差し替える」のではなく、「AIの行動選択肢に通常技IDが一切なく、吹っ飛ばし技(通常技と威力・消費ガッツは同じだが吹っ飛ばし補正値が255に設定された別ID扱いの行動)だけしか使えない行動パターン」がオルミーガに割り振られているので

キャプテン翼4 レベル補正変更パッチ改の公開と必殺技の追加について

 全体コマンドの「みんなあがれ」や「ファストブレイク」などのガッツ消費コマンドの仕組みが判明しましたので、これを踏まえてパッチを更新しました。以下のURLからダウンロード可能です。 https://ux.getuploader.com/retrogamelaboratory/download/44  内容としては相変わらず浮き球バグ修正やレベル補正の変更がメインで、「簡単すぎる」とのご指摘により今回は「敵エースと選手IDが00FF(255)以下の敵キーパーは自軍レギュラーの最もレベルが高いキャラ+2レベル」、「選手IDが00FF(255)以下の敵選手は自軍レギュラー選手の平均レベル+2」、「選手IDが0100以降の全ての敵選手は自軍レギュラー選手の平均レベル+1」に補正を変更しています。ついでに写真のように翼やストラットのアップ画像の鼻の位置などを原作の作画に近い位置に修正しています(何だか変に上の方に鼻が書かれていたのでなるべく下の方に変更)。このアップ画像は他にも岬くんや片桐さん、早苗ちゃんにも専用のものが用意されていた筈ですので、それらも違和感を覚えた時点で修正する予定です。  また、ガッツの最大値を一律で150(レベルが上がっても増えません)とし、これを基準として各コマンドによるガッツ消費量を変更しています。但し通常移動時のガッツ消費量や回復量はそのままですので、各コマンドによる時間経過量が大きい4の仕様により割と簡単に必殺シュートを連発できるようになっていますが、その分キーパーの行動負担がかなりキツめになっていると思います。この辺りはテストプレイを重ねて徐々に消費バランスを見直すつもりですので、ご意見があればお気軽にお申し付け下さい。  さて、必殺技の追加ですが、アニメーションを作るのはともかく必殺技を新規に追加しようとすると各選手の必殺技設定テーブルにうまく組み込めず(恐らく必殺技のIDでシュートやパス、ブロックなど属性を振り分けている事が原因と思われます)、現状ではあまり必要がなさそうな技を潰していくしか方法がなさそうです。ストーリーにほとんど関わらないカマーチョやサルバトーレ、KAZUなどの固有必殺技を上書きしてしまうのが手っ取り早いのですが、彼らのファンの方に申し訳ない気もするのでなかなか難しいところですね。とりあえず当面の変更予定はサンパウロの名

キャプテン翼4 BGM関連データ解析とサンプリングデータ差し替えについて

 BGMの貧弱さに定評があるキャプテン翼4ですが、これを補うべくサンプリングデータを差し替えられないか調査を始めてみました。サンプリングデータは050300から始まるオフセットテーブルで定義付けられており、最初の2バイトがデータ長、次に続く2バイトがサンプリングデータの展開先というパターン(これはSPC共通の仕様ですね)になっています。  さて、オフセットテーブルが判明している以上、ROM拡張をしてそこに音質の良いデータを書き込んでアドレス指定すればサンプリングデータの入れ替え自体は可能なのですが、問題はそれをサウンドドライバに組み込んだ場合に他のサンプリングデータと干渉しないようにできるかどうか、という事です。サンプリングデータは予め書き込み先が指定されていますので、このデータ長が他のサンプリングデータと干渉しないようにうまく調整するか、あるいはサウンドドライバ自体を書き換えてサンプリングデータの展開先アドレス領域を変更する必要が出てきます。干渉すれば当然オーバーフローを起こしてフリーズしますので、そういう意味でもなかなか面倒な作業になりそうです。

キャプテン翼4 レベル補正変更パッチ(イージーモード)を公開しました

 以前公開したレベル補正変更パッチですが、「敵チームのレベル補正がきつくて楽しくプレイできない」とのお声が多く寄せられたので修正版をアップロードしました。以下のURLからダウンロード可能です。内容としては前回同様に浮き球バグの修正に加え、敵チームのレベルが「エースとキーパーは自軍選手の最高レベル+1」、「一般選手は自軍選手の平均レベル+1」になります(前回は各+3レベルの補正でした)。極端にレベルが突出した選手がいない限り、恐らくオリジナル版の4よりも簡単にクリアできるようになっていると思います。 https://ux.getuploader.com/retrogamelaboratory/download/43

スーパーロボット大戦F完結編 BNE2設定ファイルを再公開しました

 特に追加データや更新内容はありませんが、以前公開していたスーパーロボット大戦F完結編のBNE2用ファイルを再公開します。中身はSS版とPS版がセットになっている他、システム周りの数値変更のものばかりで直接パイロットやユニットの数値を変更できません。パイロットやユニットのデータ格納位置は判明しているのですが、固定長ではないのでファイル作成が面倒なため放置中です。気が向いたら着手するかもしれません…。以下のURLからダウンロード可能です。解凍パスワードや使い方に関しては過去の記事をご参照下さい。 https://ux.getuploader.com/retrogamelaboratory/download/42

キャプテン翼4 タイトル画面のグラフィック書き換え実施と各選手の必殺技設定オフセット設定変更案

 以前少しだけ触れた「タイトル画面に表示される翼くんの一枚絵に手を加えてみたい」という話ですが、時間が取れたので下の写真のようにしてみました。あまり変わっていないと思いますが、顔を若干書き直したり、なぜか隠れている右腕を書き加えたり、ボールを少し小さくしたり、左肩を狭くしてみたりしています。ついでに「プロのライバルたち」というサブタイトルもアンチエイリアスをなくして視認性をアップさせています。  また、久々に解析も再開してみましたが、各キャラクターの使用必殺技に関してはオフセットリストを103人に縮小するためにオルミーガ以降のIDを参照しないような分岐条件を作っている事が判明しましたので、これを変更して新たに全選手分のオフセットを作成すれば全員に必殺技を設定する事もが可能と思われます。しかし、256人目から下の一般モブ選手に必殺技を覚えさせる必要はないような気もしますね。とりあえず今後はダイビングヘッドのような「ちょっと強力な汎用必殺技」の作成に着手しようと考えています。

第4次スーパーロボット大戦 メカ戦士ギメリアの「超弾性金属」のしくみについて

 ご無沙汰しております。さて、メカ戦士ギメリアの特殊能力「超弾性金属」はダイモスがイベントで取得する「必殺烈風正拳突き改」でのみダメージを与えられるのですが、その仕組みはダメージ計算中のサブルーチンからユニットID、及び武器IDを取得してダメージを0にするか否かの処理(先攻側…3EF48:20 FD F1=03F1FDのサブルーチンを呼び出し、後攻側…3F117:20 FD F1=03F1FDのサブルーチンを呼び出し)にて行っています。なお、アドレスはいずれも初期ROMの場合です。 (サブルーチン読み込み直前に武器ID取得のコマンドが実行されている)             03F1FD 29 FF 03 AND #$03FF (武器IDの)上限を03FFに絞り込み                    03F200 85 00       STA $00        (取得した武器IDを)7E0000に書き込み                    03F202 A2 00 00 LDX #$000     Xに即値0000を読み込み   03F205  B9 65 18 LDA $1865,Y $7E1865 ユニットID(2バイト)を取得03F208 29 FF 01 AND #$01FF  (ユニットIDの)上限を01FFに絞り込み    03F20B DF 26 F2 83 CMP $83F1AD,X $03F226    X.Aから03F226の指定値を減算 03F20F F0 0B BEQ $0B $03F21C 指定値ならば03F21Cにジャンプ      03F211 E8 INX                                            Xに1を加算                                 03F212 E8 INX                                            Xに1を加算                           03F213 E8 INX                                            Xに1を加算 03F214 E8