ワールドアドバンスド大戦略 その10 [無断転載禁止]©2ch.net (533レス)
1-

291: 2018/08/08(水)20:03 ID:sur4rDWx(4/4) AAS
マップ改造にあたって目ぼしいコード
・最初の8バイト(36F90〜7)
 未解明のアドレスも含まれていますが、超重要です。
 下手に触るとゲームがクラッシュするほどバグりますが、適切なコードを入力すれば兵器書き換えが実現します。

・燃料(36F9B)
 兵器を任意の場所に配置した後、燃料を初期値にリセットするために必要です。
 
・座標指定(36F9D〜E)
 移動力などの兵器定義コードに手を出さずに、司令部トーチカ艦艇等を任意の場所に移動できます。
 ただし移動前のヘックスに部隊の情報が残るため、適宜セーブ&ロードが必要。
省9
292: 2018/08/09(木)22:33 ID:OJgAtVv5(1/4) AAS
陣営ステータス

軍資金コードでお馴染みの陣営ステータスは1陣営あたり24(18h)個のアドレスで管理され、以下第5陣営まで続きます。
なお国家収入、初期訓練値に相当するアドレスも発見しましたが、弄っても何も変わりませんでした。
おそらくマップデータ側で管理されているものと思われます。
以下第1陣営のコードアドレスです。

3003BCB0 00WW 資金
3003BCB1 00XX 資金
3003BCB2 00YY 資金
3003BCB3 00ZZ 資金
3003BCB4 00WW 国家収入?<変化なし>
省25
293
(1): 2018/08/09(木)23:03 ID:OJgAtVv5(2/4) AAS
オプションその他

正規オプションでも弄れる些末なものもありますが、
天候・日付・ターン数など、マップエディットの仕上げのために地味に重要なものが含まれています。

3003BC58 000X ヘックス 有無
3003BC59 000X BGM 有無
3003BC5A 000X 索敵 有無
3003BC5B 000X SE 有無
3003BC5C 000X 天候 有無
3003BC5D 000X 戦闘アニメ 有無F
3003BC5E 00XX 
省38
294: 2018/08/09(木)23:57 ID:OJgAtVv5(3/4) AAS
ターン数(3BC68)はシナリオのクリアに直接影響します。
一方日付(3BD4C〜54)はシナリオのクリアと直接は関係ありません。
ターン数を弄った状態では、例え終了日を過ぎたとしてもそのままゲームが継続します。

また日付は生産可能兵器や進化可能兵器にも影響を与えません。
'40年のシナリオで'45年に無理やり日付変更したとしても超兵器を作れたりはしません。
そのマップで扱える兵器については、別の観点で管理されています。
295: 2018/08/09(木)23:59 ID:OJgAtVv5(4/4) AAS
>>293続き
  :
3003BD4C 00XX 開始 年
3003BD4D 00XX 開始 月
3003BD4E 00XX 開始 日
3003BD4F 00XX 現在 年
3003BD50 00XX 現在 月
3003BD51 00XX 現在 日
3003BD52 00XX 終了 年
3003BD53 00XX 終了 月
省29
296: 2018/08/10(金)22:08 ID:YT+8u1Ph(1/2) AAS
これまでに述べた、部隊、陣営、オプション等のコードは、いずれもセーブデータに記録される値です。

というより、部隊コードからオプションコードまでのメモリ値が、
そっくりそのままセーブデータに移し替えられると見て間違いないようです。

CEPではメモリの値を眺めることができる機能があります。
(「検索」タブで「消去」ボタンを押し「編集」タブに移動)
またStirling等を使えば同様にセーブデータを256進数の羅列で眺めることができます。

これらを目視で比較してみると、最初の部隊コードのアドレス36F90は、
SSFのセーブデータだとアドレス14(h)と、かなり先頭に位置します。
(最初のアドレス0〜13hまではSSF側が付けたヘッダの可能性もあります)
一方セーブデータの最後のアドレスは4E0B、ゲーム中のアドレスでは
省12
297: 2018/08/10(金)22:50 ID:YT+8u1Ph(2/2) AAS
作戦ファイル用のコードについて

これまで扱ってきたコードの範疇であれば、実は簡単な話です。
鋼鉄と比べてアドレスが一定量ずれているだけです。
具体的には鋼鉄のアドレスから-1EC0h差し引いたアドレスが、
作戦ファイルのコードアドレスになります。

(例)
第1軍陸第1部隊経験値 350D8(鋼鉄36F98)
第5軍海第1部隊経験値 386D8(鋼鉄3A598)
第1軍資金 36DF0〜3(鋼鉄3BCB0〜3)
第2軍操作切替 39E7D(鋼鉄3BD3D)
省9
298: 2018/08/11(土)20:49 ID:sC+M7rW3(1/4) AAS
兵器定義コード

兵器の定義と登録に関するセクションです。
部隊コードと異なる点として、ユニットごとではなく兵器ごとに作用する点があります。
例えば近衛兵を弄ると手持ちの近衛兵全員が影響を受けます。

これまでに言われてきたように、同じ兵器でもマップ毎に登録アドレスが異なるため、
解析のプロセスを経ずして特定の兵器をピンポイントに弄ることはできません。
でなければ繰り返しコードの暴力に頼るかどうかです。

超兵器などを自由自在に作ろうとすれば避けて通れない部分であり、
特にアドレスや正規値の解析手法が重要です。
コード弄りに関しては、セーブデータに反映されないため不要な物も多いですが、
省1
299: 2018/08/11(土)20:50 ID:sC+M7rW3(2/4) AAS
兵器定義のアドレスは鋼鉄・作戦ともに8000hから始まり、
1兵器ごとに88(58h)バイトのアドレス領域で管理・登録されています。
メモリを眺める限り、1マップあたり最大320個の兵器が登録されているように見えます。
おそらくは1陣営あたり64個の兵器が割り当てられていると思われます。

しかしこのゲームに登場する兵器の総数は320では到底足りないはずです。
つまりマップによって出せる兵器が選別されていることになります。
実際は同じ兵器であっても自軍と友軍で違うアドレスを使っていたり、
出す意味のないダミーデータも含まれていたりするので、
登録兵器の範囲はなおさら狭くなっています。

これが、序盤のマップで例えば秋水を出せない最大の原因と思われます。
省5
300: 2018/08/11(土)20:52 ID:sC+M7rW3(3/4) AAS
1つ目の登録兵器コード
※純粋にアドレスのみ記載です。CEPでコードを打ち込む際は、
これまで通りアドレス先頭に3000や8000を足して使います。

8000〜1 兵器コード
8002〜B 名前(ステータス)※1バイト/1文字、全9+1文字
800C〜1D 名前(マップ)※2バイト/1文字、全9文字
801E〜F 名前(マップ)10文字目?下手に弄るとバグる。通常FFFF。
8020〜23 ?
8024〜B 進化1〜4(各2バイト)
802C〜D 価格(10円単位、2バイト)
省24
301: 2018/08/11(土)20:58 ID:sC+M7rW3(4/4) AAS
兵器コード(8000〜1)は、部隊ステータス中の兵器コード(36F90〜1等)と共通のデータが使われます。
なお朗報なことに、兵器コード自体はどのマップでも 共通 です。
マップによって変わるのはアドレスの方です。

進化コード(8024〜B)は、目的の兵器コードを直接打ち込んで使用します。
制約としては、そのマップに登録されているかどうかはもちろん、
自陣営に登録されていない兵器は不可(例え友軍が所有していても)だったり、
「ここでは、進化・改良不可能」となるユニットは不可だったりなど、
何でもかんでも縦横無尽に進化可能とはならないようです。
ただし陸空海を跨いだ進化は可能。
このコードは例えばオストウィンドなど、初期配置されたマップもなく
省11
302: 2018/08/12(日)22:23 ID:Ei1IqrOS(1/2) AAS
これまで挙げた通り、部隊数が計400、登録兵器数が計320と、
これだけの数の兵器や部隊がゲーム中で一気に運用されていて、
コードアドレスの数はさらにその数十倍。正直膨大過ぎます。
その中から特定の部隊・兵器の特定の状態・性能を、
といちいちアドレスを手動で計算していては日が暮れます。

なので自分の場合は、Excelなどでコードを自動生成するシステムを組んでいます。
dec2hex、hex2decなどの10進16進変換関数や、文字列結合などを駆使すれば可能です。
今書いているものも基本それに頼っています。
303
(1): 2018/08/12(日)22:24 ID:Ei1IqrOS(2/2) AAS
解析・兵器書き換え
材料が揃ったので、超兵器を無尽蔵に生成するセクションに入ります。
実現のために最低限入手しなければならないのは、以下のコードデータです。

・目的の兵器コード(2バイト)
・そのコードが登録されているアドレス(2バイト)
・その兵器が本来使う武器コード(2バイト×4=計8バイト)

以下、生産不可を前提として、取得難易度が低い順から解説します。

A.マップ上にその兵器がある(例:日インドのハウニブ)

(1)目的の兵器が第何陣営の何番目の部隊かを調べる
 →第3陣営(ドイツ)空第20部隊
省32
304: 2018/08/13(月)20:48 ID:qjDxZ0La(1/4) AAS
B そのマップ上には無いが他のマップにはある

進化で得られるのであれば素直に進化させれば良いので、
主にスタンダードマップ改造の話にはなりますが、
キャンペーンでも相手兵器を弄ったり、他国に鹵獲させたりといった場合に使えます。

当然出したいマップに登録されている事が条件ですが、
一部兵器に関しては、マップ上に置かれていなくても出せる場合があります。
特に恒常的に同じ進化をする兵器(日歩兵類や駆逐艦〜重巡など)は可能性が高いです。
スタンダードマップであっても、その多くはキャンペーンの流用なので、
登録兵器もどうやらそのままにされているみたいです。
上手く嵌れば自国兵器も相手国兵器も超強化できます。
305: 2018/08/13(月)20:57 ID:qjDxZ0La(2/4) AAS
例 スタンダードのコロネットで88mm対空砲(日)を作る

(1)まずはデータを取ってくる
 鋼鉄のスタンダードには日88mmが置いてあるマップはないため、ひとまずキャンペーンから取得。
 日CPで地道に進化させても良いですが、米CPの1マップ目にありますのでこれを取ってきます。
 取得すべきデータは基本>>303と同じです。

 第2陣営(日本)陸第12部隊→アドレス37C5C〜
 →先頭8バイト:00 36 00 00 06 00 A7 88
 →武器8バイト:00 3E 00 34 00 00 00 00

 ただし先頭データのうち今回必要なのは0036(兵器コード)だけです。
 A788(登録アドレス)はマップ毎に変動するので、別マップでは使えません。
省35
306: 2018/08/13(月)21:09 ID:qjDxZ0La(3/4) AAS
C 進化でも手に入らない場合(進化表には載っている)

A、Bに当てはまらないケースとしては、独のPSW234/3〜4、オストウィンドぐらいしか知りませんが、
特にオストウィンドは欲しい方が一定数いると思いますので、その出し方です。

(作戦ファイルではPSW234/3〜4もオストウィンドも普通にマップ上に置いてあるのですが、
 鋼鉄と作戦で兵器・武器のコードが違っている可能性も0とは言い切れないので、
 できれば鋼鉄は鋼鉄、作戦は作戦で取得したい、と考えています。)

例:独CPアルデンヌでメーベルワーゲン→オストウィンドへの進化を実現

(1)「移動力コード」を使って総当たり調査を実施
 兵器定義コードのうち、登録第1兵器(8000h〜)の移動力コードのアドレスは8031hでした。
 第2兵器以降はこれに+58hずつ、つまり8089、80E1、8139・・・となります。
省34
307
(1): 2018/08/13(月)23:04 ID:qjDxZ0La(4/4) AAS
マップエディットに関して補足

兵器の配置が終了し燃料を初期値に戻しても、そのままでは航空機が燃料を消費してしまいます。
フェーズ終了の際に、以下で全部隊行動終了(E)にしておくと、航空機が燃料を消費しません。
なお搭載・変形は一切していない状態が前提で、適応したらすぐコードをオフにします。

50005024 0000
30036FB0 0061 ※第1陣営の場合

ただし上記コードは自陣営のみ有効にするのがお勧めです。
このフラグがリセットされるのはその陣営のフェイズ終了時のみなので、
全陣営に一括で掛けてしまうと、次陣営フェイズ開始時に何もできなくなります。
もしそうしてしまった場合は、一旦行動フラグの値を全軍「00」にして、
省6
308
(1): 2018/08/15(水)11:03 ID:I/Dg2nYu(1) AAS
お疲れ様
凄いけど面倒だな
309: 2018/08/15(水)11:47 ID:PlQKJDPi(1) AAS
エディターみたいのあればいいのにね
310: 2018/08/16(木)14:49 ID:kKqyDDjR(1) AAS
Nスペのノモンハン再放送は土曜深夜
1-
あと 223 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.502s*