大戦略シリーズの改造部屋
・「大戦略Win II 」の改造
「志気値が減らない」
志気値ってうっとおしいですよね。ゲームを楽しむ上では、まったくもって余計なパラメータだと思うのですが、ルールでこれを無くす、という設定もできないので、デバッガで追いかけて潰してみました。
DSW2.EXE
00079986: 2A 4D F0 → 90 90 90
実行ファイルを直接バイナリエディタでいじる、という力技です(笑)。
当然、バージョンアップなどで実行ファイルサイズが変わった場合は、改造地点も変わってきますが、きっとVer1.0のままでしょう。
ここを改造しても、なぜかたまに志気が減ることもありますが、実用上問題ないでしょう。なお、上の部分の意味が判らない人は、これまた、いじらない方が無難です。
「歩兵の扱いをなんとかしよう」(現在、検討中。やや諦め気味)
大戦略WinIIにおける致命的な欠点の一つが、歩兵の扱いです。
従来の「輸送」「降下」「占領」といった手順は、初心者には複雑すぎるとでも思ったのでしょうか? 機動歩兵という名前で、ユニットそのものが変形するという形になっています。
個人的には、ユニットの変形、という概念は嫌いではありません。ただ、変形した時点で占領判定がなされるので、非常に防御がやりづらくなっています。特に、輸送ヘリなどは、移動力も高く、さらに航空機扱いであるためZOCが効きづらく、守る術がほとんどありません。
これは完全にルール設定のミスです。
で、従来の大戦略的ルールを導入しようと、デバッガで散々追いかけてみたのですが、どういじっても、バイナリエディタレベルでは改造できそうにありません。無理無理コードを挿入してみたら、PageFaultで飛びました。(当たり前) ああ、ソースコードさえあれば。
何が悪いって、ルールがほとんどコードにハードバイディングされてしまっていることです。例えば、歩兵状態に移動力をつけたとします。ところが、地形効果表を見ても、歩兵は歩けないことになっています。でも、実際には歩けます。さらに悪いことには、歩兵が歩いて占領可能なヘックスに移動しても、占領判定はなされないのです。
占領判定がなされるのは、変形をした後、変形後のユニットが占領能力を持っている時だけなのです。これには頭を抱えてしまいました。これじゃどう工夫しても、従来の大戦略と似たようなルールにする術がないですから。
とりあえず、比較的簡単に出来た、地形効果表の表示を直すコードだけを載せて、お茶を濁しておきます。
DSW2.EXE
00024463: 83 F8 03 → 83 F8 05
はあ〜。本当に駄目駄目だわ。大戦略WinIIって。デザイナーもプログラマーも、ど素人だとしか思えません。新人研修なのかしらん?
本当はさっさと見切りをつけてしまいたいところなのですが、非リアルタイムのターン式大戦略で、マップエディタがついているのって、Windows用ではこれくらいですからね。
昔は良い大戦略がいっぱいあったというのに。少なくとも大戦略に関しては、年を追うごとにプログラムの質が落ちてますね。
「メガヘックス攻撃バグ修正」
デフォルトの兵器設定では問題ないのですが、ユニットエディタなどと使って、自分の好きなユニットにメガヘックス攻撃をさせようとすると、奇妙な現象に出くわします。
それは、「自分と同じ高度にいるユニットにしかメガヘックス攻撃の効力が及ばない」といったものです。カツコフさんから掲示板にてこの報告を受け、あらためてデバッガで追跡してみたところ、確かにそういうコードになっています。
はっきり言ってこれはバグでしょう。本来は、「攻撃対象と同じ高度にいるユニットにしか効かない」とするところを、プログラマーがタイプミスしてしまったものと思われます。メガヘックス攻撃の出来る兵器が、たまたま自分と同じ高度にしか攻撃をしない対地ロケットしかなかったので、いままで露呈しなかっただけですね。
理想的なパッチは、本来あるべきルールに戻すものでしょうが、残念ながら、その判定を行っている関数内から、攻撃対象の高度を知ることが出来そうにありません。というのも、間接攻撃には「外れ」があるので、爆発の中心が必ずしもユニットではないからです。そんな場合分けまでも含んだコードともなると、さすがにパッチレベルで挿入は出来ませんから。
そんなわけで、単にそのチェックを外す形でのパッチを提供しておきます。このパッチを当てると、爆発中心の周囲6ヘックスにあるユニットは、どの高度にあっても、無条件で攻撃の対象となってしまいます。(このあたり、きちんと「武器」という概念があればもう少しマシだったのですが)
DSW2.EXE
000793a0: 51 10 3b c2 → 51 10 3b c0
これまた実行ファイルを直接バイナリエディタでいじります。注意点などは上の「志気値が減らない」コードと同様です。
いや、しかしこれってかなり恥ずかしいバグですよ。こんなバグを内包したまま出荷してしまうとは。しかも、使用コンパイラが悪いのかどうか判りませんが、アセンブリコードの質の悪いこと。最適化が一つもなされてない気がします。それこそ、X68000初期にハドソンが発売したX-Cレベルです。
システムソフトって本当にもう駄目なんでしょうか……。 |