<おしらせ1>
またまた、いつの間にか掲示板がダウンしていたようですね。ログを見ると、およそ2年半ぶりの改修です。
この間、何度かメールでご要望があったようですが、この度ようやく重い腰を上げて掲示板を修復いたしました。
管理不行き届きで申し訳ありません。

<おしらせ2>
サイト管理を楽にするために体裁を変更しています。
本サイトのメインコンテンツであったSPWAWの解説記事は以下からアクセス可能です。
SPWAW解説記事一覧


<5分で調べたSPWAW界の近況>

びっくりしたことーその1「Depot リニューアル」
SPWAW界を長年牽引してきた世界最大のファンサイトSPWAW DEPOTが、昨年の4月に閉鎖、13年の歴史に幕を下ろしたようです。
と同時にDepotメンバーの一人 Falconさんが新たなサイトSPWAW DEPOTを立ち上げたようですね(笑)。
まあ、中心メンバーが入れ替わって、こじんまりした感はありますが、実質的にはリニューアルって感じですかね。
旧DEPOTの遺産は相続されているようで、今後ともがんばって欲しいところです。
https://www.tapatalk.com/groups/spwawdepot/

びっくりしたことーその2「砲撃要請画面ラグ解消」
マルチコアCPUが普及した頃でしょうか、ある程度以上のスペックのPCでは、砲撃要請画面で挙動がおかしくなる不具合がありましたね。
それが原因でSPWAWを離れた・・という方もおられたような記憶がありますが、どうやらこの不具合、ついに修正されたようです。
これもDEPOTメンバーのおかげみたいですね。Matrix Games 公認(というか黙認ですね)のもと 、本体ファイル MECH.EXE をいじることに成功したようです。
https://www.tapatalk.com/groups/spwawde ... -t277.html


というわけで、この機会にもう一度SPWAWをやってみようかな、と思われた方は次のリンクからダウンロードをどうぞ。
DEPOTで全てのファイルのホスティングも始めたようです。
https://www.tapatalk.com/groups/spwawde ... es-t6.html

セーブデータエディター

SPWaWに関する質問に誰かが答えるはず
User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

Re: セクション8、わずか1列分

Post by Nor » 2007.Jun.20(Wed) 01:30

島風 wrote:僕は今日やっと気づいたのですが、WAW Ed の Tools の Dump File から、任意のセクションの非圧縮(展開された)データを書き出しできるのですね。
まず何よりもコレに驚きましたよ!! :shock:
そういえば、そんなことさえお伝えしてませんでした。申し訳ありません・・・。しかし・・これまでそんな悪条件でよく解析できましたね。いやいや、ホントに脱帽です。
ちなみに言いますと、個別セクションの読込や全セクションの一括出・入力も可能です。あ、もう気づいてますよね。 :evil:

お詫びのしるしといっては何ですが、『WAWED勝手に日本語版』をメールにて送っておきます。
これは私が私の解析の利便さを確保するためだけに日本語化したもので、Fred Chlanda氏のツールに特有の、「デフォルトで画面の一部が表示されない」「省略しすぎて意味わかんない」などの問題を一部解消しています。特に、HEXエディタウィンドウを横に広げて表示範囲が拡大されるので、少しは使いやすいかと思います。


さて、本題ですが、セクション8の構造をよく自力で発見されましたね!! :shock:
いや、これも早く言えばよかったのですが、WAWEDの作者がWAWMAPというマップ編集ツールを作っており、そちらの関連でセクション8の持つ20バイトのヘックス情報の意味はある程度明らかになっております。以下、手持ち資料からの引用です。

Code: Select all

Byte	Meaning
----------------------------------
0	Describe terrain
1	Describe terrain
2	Describe terrain
3	Describe terrain
4	signed integer altitude (0-255)
5	signed integer altitude (0-255)
6	armor/infantry spotting or defensive (?)
7	? ( maybe negative modifier for DefenseValue or LineOfSight ) ?
8	armor/infantry spotting or (defensive (?) HARDCODED)
9	Smoke Values (0-100%) 101 means fire in Hex!
10	hex damage level 0-200%, used for shellholes and rubbled buildings (graphics)
11	(Map Text container number)
12	secondary road connections
13	primary road connections
14	RR connections
15	? (not used?)
16	???? Hex fire Spread/Smoke Spread???
17	? (not used?)
18	? (not used?)
19	? (not used?)

で、今回島風さんが発見したのは、この表で言うと17バイト目のことですよね?
表では不明ってことになってますが、これが味方のLOSの有無を表すということですね。
つーことは、同様に、18バイト目は敵軍のLOSの有無を表すのかもしれませんね(いえいえ、決してネタを振っているわけではありません)。 :cool:

いやいや、ホントにスゴイ発見です。 :salut
Image

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

無事アクセスできました

Post by 島風 » 2007.Jun.20(Wed) 23:55

島風です。
 Google Docs & Spreadsheets に無事アクセスできました。ありがとうございました。 :cheers
 さすがに、セクション1は書き加えることはほとんどありませんね。
追加したのは、不確定情報の

Code: Select all

B9 潜入開始(マップから消える)フラグ? (消えている=1、消えていない=0)
です。なぜか表示がおかしくなってD1以降の編集ができませんでしたので、こちらに書きますが、

Code: Select all

F8 敵味方識別フラグ。0=味方、1=敵。
F9 放棄フラグ。0=通常、1=放棄。
FA Armored Skirt
FC 攻撃目標 X 座標
FE 攻撃目標 Y 座標
ぐらいでしょうか。
 セクション1の謎の一つに、装甲値がありますよね。車体と砲塔、前・横・横・後・天井で分けてありますが、それぞれおそらく4バイトずつになっていて、通常は最初の3バイトが同じ数字、4バイト目が異なる数字になっています。なぜ3+1バイトも必要なのでしょうかね。4個の武器スロットに対応しているわけでもなさそうだし。ちなみに、タイガーの砲塔装甲データですが、

Code: Select all

Tiger IE チェコ製
  176 176 176 56 80 80 80 46 80 80 80 46 80 80 80 46 25 25 25 25
Tiger IE(early) ドイツ製
  148 148 148 15 82 82 82 13 82 82 82 13 82 82 82 82 25 25 25 25
となっています。正面装甲が厚いのと、価格が安いので、チェコ製を愛用しているのですが、例えば4バイト目の数字が「脆弱性」とか「運の悪さ」とかを表していたらいやだなぁ。
お詫びのしるしといっては何ですが、『WAWED勝手に日本語版』をメールにて送っておきます。
 いえいえ、謝って頂く必要は全くありません。こういうツールはいろいろと機能がついているのでとりあえず一通りいじってみないといけませんね。
 それより、『WAWED勝手に日本語版』、ありがとうございます!!! これはいいですね。
特に「HEXエディタウィンドウを横に広げて表示範囲が拡大される」のは、最高です。 :cheers
これでずいぶんと便利になます。

 ところでセクション8ですが、セクション17の向きを変えて変化したところがたまたまこのセクションだったので、ちょっと調べてみたのですが、すでに公表されていたんですね。いゃ、実は、既に知られている情報をよく確かめもせず無駄に時間を費やしてしまうことは、日常的によくあって、僕の欠点の一つです。 :porc
 えーと、10(H)列は16列なので、「???? Hex fire Spread/Smoke Spread??? 」のところですね。そのうえで、Norさんの「18バイト目は敵軍のLOSの有無を表すのかもしれません」という仮説はおもしろいですね。被発見マークが付いた味方ユニットがいるヘックスの情報を見てみれば何かわかりそうですので、今度調べてみます。

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

Re: 無事アクセスできました

Post by Nor » 2007.Jun.21(Thu) 01:49

島風 wrote:なぜか表示がおかしくなってD1以降の編集ができませんでしたので、こちらに書きますが、

Code: Select all

F8 敵味方識別フラグ。0=味方、1=敵。
F9 放棄フラグ。0=通常、1=放棄。
FA Armored Skirt
FC 攻撃目標 X 座標
FE 攻撃目標 Y 座標
ぐらいでしょうか。
了解です。上記の項目は全て追加しておきました。
自分で設定しておきながら言うのもなんですが、ちょっとこのスプレッドシートは使いにくいですよね。 :?

セクション1の謎の一つに、装甲値がありますよね。車体と砲塔、前・横・横・後・天井で分けてありますが、それぞれおそらく4バイトずつになっていて、通常は最初の3バイトが同じ数字、4バイト目が異なる数字になっています。なぜ3+1バイトも必要なのでしょうかね。4個の武器スロットに対応しているわけでもなさそうだし。
WAWEDのreadmeファイルに以下のような記述があります。
Fixed 0.050a
Armor for each AFV area is stored as 3 separate values. Previously, WAWEd changed only one of these. This may or may not have had the desired effect in SPWAW. Now, all three values are changed when the retain button is clicked.
この記述から、同一装甲値が3バイト分存在し、値を変更する際には全部まとめて変更しないと不具合がおきる可能性があることがわかります。どうやらChlanda氏も、当初はこのことに気づいていなかったようなので、SPWAWの装甲値データの扱いは、SP2やSP3とは異なっているのでしょう。

しかし、肝心の4バイト目の意味には触れられておらず、謎のままです。それにしても、チェコ製とドイツ製Tigerの4バイト目の差異は興味深いですね。同一なのは頂部だけなので、もしかして傾斜(頂部装甲のみ傾斜データを持たない)と関係あるのかと思いましたが、OOBを見てもよく分かりませんなあ。
例えば4バイト目の数字が「脆弱性」とか「運の悪さ」とかを表していたらいやだなぁ。
あ、それいいなあ! :cool:
でも現実的に考えると、OOBで規定されている値から何らかの修正値なり参照値を算出してるとみるべきでしょうか。あるいは、ゲーム中にこの値が変化するなら、ダメージなんかの要素を表現してるとか?まあ、おいおい判明するでしょう。
Image

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

Docs & Spreadsheets

Post by 島風 » 2007.Jun.25(Mon) 23:29

島風です。

 Docs & Spreadsheetsに、sec08とsec17を追加し、「概要」に記述を追加しました。体裁はこんな感じでいいのでしょうか、Nor司令官殿。

 さて、カタツムリより遅い解析状況ですが、今回は短く2点、

1. セクション1の装甲値の4バイト目はゲーム中に変化しない。
2. セクション8の10(H)列は、アクティブなユニットのLOSを示していると思われる。10(H)列目以降、18バイト目等が敵軍のLOSの有無を表すかどうかは、セーブデータでは解析できない。

 1.ですが、キャンペーンの各シナリオの第0ターンと最終ターンのデータをいくつか比較しましたが、ダメージを受けたり破壊さたユニットについても、ダメージを受けなかったユニットについても、敵・味方どちらのユニットについても変化していませんでした。内部コードでしょうか(と、言って、逃げると楽ですね)。
 2.ですが、味方の被発見ユニットが存在し敵のLOSが通っていると思われるヘックス、及び、敵のLOSが通ってないと確実に思われるヘックスについて、10(H)列以降の値を調べてみましたが、基本的にいずれも「00」でした。また、10(H)列以降で「01」の値が現れたのは10(H)列だけで、味方ユニットをアクティブにして視界を確認した直後にセーブしたときのみでした。同様のことが敵ユニットについても当てはまるなら、もし18バイト目等が敵軍のLOSの有無を表すとしても、敵ターンではセーブできないので、セーブデータでは解析不可能ということになります。うーん、メモリデータをリアルタイムにモニターするしか方法が浮かびませんが、そこまでの技術力が不肖島風にはありません。残念  :cry:

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

Re: Docs & Spreadsheets

Post by Nor » 2007.Jun.26(Tue) 01:48

島風 wrote:Docs & Spreadsheetsに、sec08とsec17を追加し、「概要」に記述を追加しました。体裁はこんな感じでいいのでしょうか、Nor司令官殿。
更新&解析ありがとうございます。 :salut
スプレッドシートの書き方は、理解できればなんでもOKです。ここ数日ちょい多忙でサボってましたが、私もこれから頑張ります。はい。
1. セクション1の装甲値の4バイト目はゲーム中に変化しない。
2. セクション8の10(H)列は、アクティブなユニットのLOSを示していると思われる。10(H)列目以降、18バイト目等が敵軍のLOSの有無を表すかどうかは、セーブデータでは解析できない。
なるほどなるほど。1については、これ以上の解析は無理っぽいですね。何か偶然のきっかけでわかることがあるかもしれませんし・・ね。 :cool:
2については、確度の高い解析結果になりましたね。アクティブユニットのLOSのみ記されるってのは盲点でした。画面表示の際にそういう情報が必要ですもんね。つーか、それしかいらないんだ。納得です。
そして、リアルタイムでメモリを追いかけるのは不可能じゃなさそうですが、やめときましょう。うんうん。 :cool:

それと、ちょっとお願いなんですが、ダス・ライヒのセーブデータくれませんか?というのも、私全然ゲームやってない&やる気でない(!)ので、まともなキャンペーンのセーブデータが無いのです。適当にエディットしたシナリオやキャンペーンの最初だけというデータでも分かることはあるのですが、当然記録されていないものも多いと思うので。

できれば、
・シナリオの配置(or 1)ターンのデータ
・同シナリオの最終ターン(or スコア画面)のデータ
・次のシナリオの配置(or 1)ターンのデータ
・同シナリオの最終ターン(or スコア画面)のデータ

という感じで、連続する2面分くらいいただければ充分です。お手数ですが spwaw.nor@gmail.com
まで送ってくださいませ。よろしくお願いします。 :salut
Image

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

今度はちゃんとファイルを送付できたようです。

Post by 島風 » 2007.Jun.27(Wed) 00:17

島風です。
 Nor様、今度はちゃんと、DRキャンペーンシナリオ0と1の、シナリオの配置ターンと同シナリオの最終ターンのファイル、を送付できたようです。
 これで、いいですか?

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

Re: 今度はちゃんとファイルを送付できたようです。

Post by Nor » 2007.Jun.27(Wed) 07:32

島風 wrote:これで、いいですか?
:salut
Image

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

本日の成果

Post by Nor » 2007.Jun.27(Wed) 23:45

マップ関連セクションを除く、これまで未調査のセクションをちょちょいっと調べてみました。
明らかに「こりゃ絶対解読できまへん」というものもあれば、「ヒラメキがあればわかりそうな気がする」ものもありました。その結果はスプレッドシートの概要に書いております。

一つ新たに内容が判明したセクションがありました。わずか1バイトのセクション21で、これはおそらく「キャンペーン番号」を指しております。たぶん間違いないと思いますが、シナリオの場合はどうなのかはまだ調べてません。1バイトじゃ番号が足りない気がするし・・・ :roll:

また、セクション37の調査をすすめ、スコアや損害データなどの場所が新たにわかりました。しかし、手元のセーブデータだけでは次の点がわかりません。

・自軍(Side0)のArt、SV、APC、Glider、Air 損害
・敵軍(Side1)のGlider、Air 損害

これらの情報を特定する方法は非常に簡単で、
1.上記損害が発生した任意の面のスコア画面をメモっておく
2.セクション37のアドレス140〜172の間に、特定の損害値が出現する場所を探す
だけです。

なお、スコア画面ではその面の損害と、その時点までの損害合計が「30:120」のような形式で表示されます。その面の損害はアドレス140〜172の間、損害合計は100〜132になっており、対応関係にあるようです(例えば、107〜108は「Side0 のAFV損害合計」であり、40バイト後の147〜148は「Side0 のAFV損害(その面)」になります)。

また、どうやら兵員(Men)損害だけは、3バイト分確保されているようで、その他は2バイトで表されるようです。

というわけで、お暇な時にでも上記項目の特定にご協力ください。 :salut
Image

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

すこし、長いです。

Post by 島風 » 2007.Jun.28(Thu) 03:56

島風です。

 わおっ、着々と進んでいますね、Nor司令官殿。 :cool:
 スプレッドシートもいつの間にか、いろいろと情報が増えています(僕の今日の書き込み分もスプレッドシートにも反映させました)。何よりうれしいのは、「なんとかなるかも」!!!!! という項目が目白押しではないですかっ!!!! :cheers
 お互い、がんばりましょう。 :wink:

 さて、順番に。
わずか1バイトのセクション21で、これはおそらく「キャンペーン番号」を指しております。1バイトじゃ番号が足りない気がするし・・・
 なるほど「キャンペーン番号」ですか! 確かにDRは39ですね。でもNorさんが書かれているように、シナリオもキャンペーンも0〜999の1000個までOKの様ですので、1バイトですと最大FF(H)=255で256個で足りないですね。うーん、これはでもひょっとしたら、256番以降のキャンペーンではセクション21が2バイトになるか、1バイトのセクション20か2バイトのセクション22かが残りの数字を表しているのかもしれません。合計で2バイトあれば、65536個までOKになります。
 適当にキャンペーンを作って256番目以降にセーブすれば分かるかと思いましたが、SPWAWのキャンペーンエディターで新たに作ってセーブすると、あいているスロットのうち一番小さい番号に勝手にセーブするので調べることができませんでした。技量不足です、すみません :oops:
セクション37の調査をすすめ、スコアや損害データなどの場所が新たにわかりました。項目の特定にご協力ください。
 スコアや損害データはセクション37ですか。さすが司令官殿です。やりましたね。 :wink:
 早速調べてみました。自軍(Side0)のArt、SV、APC、Air 損害は、それぞれ、アドレス10C, 112, 10A, 116でした。残念ながら、敵・味方のグライダー(すみません、まだ使ったことがありませんでした)と敵の AirCraft は分かりませんでした。各項目は、恐らくMenまで含めて2バイトではないかと思います。手元のセーブデータでは、アドレス100と101は「0」で、アドレス102と103がside0のMenの損害合計、アドレス103と104がside1のMenの損害合計でした。65535人(!)を超える死傷者は想定していないのかもしれません。また、偶数アドレス+奇数アドレスで1組になっていると思われます。アドレス122は「01」となっていますが、何を意味するのかは分かりませんでした。

 さて、しつこく、セクション17です。

Code: Select all

00〜03列 「FF」になるのはマップから消える時
04,05列 飛行ユニットで使用 それ以外のユニットは「00」
06,07列 ユニット本体のグラフィックデータ(内部コード)? マップから消えたユニットは「00」
08,09列 旋回砲塔のグラフィックデータ(内部コード)? それ以外のユニットは「FF」
10列   敵(=1)・味方(=0)フラグ
 まず、ユニットの座標を表す00〜03列ですが、ここが「FF」になるのは破壊されたときではなくて、マップから消えたとき、が正しいようです。例えば、放棄されたり破壊された戦車などはマップ上にグラフィックが残るので、ここの値は「FF」にはなっていませんでした。歩兵ユニットでは、壊滅すると、まず、00〜03列が「FF」になりますが、06,07列の値は残ります。次のターンで、06,07列が「00」になりました。また、番外砲は、X座標(00,01列)は「FF」ですが、Y座標は「FF」ではありませんでした。さらに、飛行機は、00〜03列は「FF」ですが、04,05列に何らかの値を持っていました(04,05列は通常ユニットは「00」です)。
 それから、06,07列ですが、これは、グラフィックデータ(たぶん内部コード)だと思います。例えば、 SS Rifle Sqd で06列が「241(D)」「244」「247」「250」の場合、それぞれグラフィックでは10人,9人,7人,7人のように見え(「247」と「250」は見える人数は同じでもグラフィックが微妙に違う)、部隊の実際の人数は10人, 9人, 8人, 7人となっていました。07列はどれも「3」で同じでした。同様のことは GE Light Cav でも見られ、06列が「27(D)」の時は3匹のお馬さん、「30」の時は2匹のお馬さんのグラフィックで、07列はどれも「4」で同じでした。それから、08,09列は基本的に「FF」ですが、旋回砲塔を持つユニットのみ、それ以外の値が入ります。これも、グラフィックデータ(たぶん内部コード)だと思います。さらに、10列は敵(=1)・味方(=0)フラグのようです。
 0F列は「FF」、11列は「00」で、どちらも未使用なのでしょうか。もしそうだとすると、これでセクション17は、終わりです!!! :cheers
 (喜ぶのはまだ早いですかね)

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

負けずに長文!

Post by Nor » 2007.Jun.28(Thu) 23:30

セクション21について
マニュアルにもそんな記述があるので、私もキャンペーンは1000個まで保持できると思っていましたが・・・・実際は100個(番号0〜99)しか保持できなさそうです。 :shock:

まず、シナリオでは、関連ファイル(cmt、dat、txt)のファイル名"Scenxxx"のxxxの値を変更すれば、自由にシナリオ番号を変更できます。キャンペーンでは関連ファイルの数が増えますが、同じ要領でキャンペーン番号が変更できる・・・と思いきや、そうではありませんでした。

関連ファイルの番号を全て256に変更すると、キャンペーン選択画面では確かに256番目に表示されますが、実際にはプレイできません。どうもファイルの読込がうまくできないようです。ただし、変更先の番号が99番までならこの方法でもきちんと動作します。

で、内蔵のキャンペーンエディタですが、キャンペーンの新規作成(New Campaign)を選ぶと、ご指摘の通り、勝手に一番若い利用可能なスロット番号が割り振られてしまいます。しかし、空のスロットをクリックすると、編集画面に移行できるので、任意のスロット番号のキャンペーンが作成できる・・・・わけではありませんでした。

キャンペーンエディタで空スロットを選択した場合、編集画面に移行するのは、スロット番号0〜99までに限定されているようです。100番以降のスロットを選択した場合には、編集画面に移行してくれません。

以上のことから、キャンペーンで利用できるスロット番号は0〜99までと結論した次第です。これはこれでビックリな結論ですが、キャンペーン番号が99までしかないなら、セクション21の1バイトだけでキャンペーン番号は規定できると。

また、シナリオのセーブファイルをみると、セクション21はやはり0でした。さらに、キャンペーンの生データ(Campaignフォルダにあるデータ)の場合も0です。つまり、セクション21は、キャンペーンのセーブデータのみ値が入るということになります。


セクション37について
全て了解です。 :salut


セクション17について
詳細な分析ありがとうございます。06~07列の分析過程は面白いですね。よくぞここまで見つけてくれました!! :P

まず04〜05列ですが、飛行ユニットのみ値が立つという点は確認しました。より厳密に言えば、「一回飛行後の飛行ユニットのみ」ですよね?単に飛行(爆撃)命令を出した時点では、ここの値は00のままで、実際に飛行したら値が立ち、それ以降のターンでは値は変更されず、次に飛行したら再び値が変わるということでOKでしょうか?

飛行ユニットしか持たない値って?・・・と考え、真っ先に思いついたのは、進入・退出経路でしたが、どうやら違うようですね。2機の飛行機を同一ターンに、同一照準に、同一経路で飛ばしても異なる値が立ちました。そういえば、飛行経路データってきっとセクション1にあるはずですね。探さなきゃ。

ということで、04〜05列の意味は謎のままです。このセクションは画面表示に関するデータばかりなのですが・・飛行機を表示する際にいるデータって何よ???


06、07列について。島風さんがここまで突き止めてくれたので、何とか完全解明したいと思い、頑張ってみました。結論から言うと、島風さんの予想はほぼ的中です。06〜07、08〜09は共に2バイトデータで、ユニットグラフィック番号の内部コードを指しています。

以下、長い長い予備知識の説明になりますが・・・

まず、歩兵系を除くユニットは固有のアイコンを持っています。このアイコン番号はOOBに載っているもので、セクション1の12〜13列に格納されています。一方、歩兵系ユニットは、アイコン番号が全て0になっています。SPWAWの歩兵アイコンは、枢軸国・連合国・ソ連・日本という4種類にまとめられていることが原因だと思われます。

ところで、実際のアイコン画像はSHPフォルダの"Iconxxxx.shp"というファイルにあります。一つのSHPファイルには、複数個(30個とか108個とか)のアイコン画像が格納されており、xxxxの番号は0000から3401まであります(ただし飛び番号も沢山ある)。

で、ややこしいのは、どの番号のアイコンがどのファイルに格納されているのかが、まるで予測できないということです。しかしこれは、SHPフォルダにある"SPWAW V8 Icon list KED.xlr"というファイルにちゃ〜んと書いてあります。これをみれば、どのファイルの何番目に何のユニットの画像があるかと、OOBで規定されているアイコン番号との関連がわかります。

しかし、このファイル番号やそのうちの何番目かという値も、セクション17の06、07列で規定される番号とはまるで異なります。どうやら、ゲーム内部にはOOBのアイコン番号と実際の画像との対応テーブルがあるのでしょう。やっぱ内部コードか・・・と諦めかけた時!! :cool:

そのテーブルが何と!ちゃんとファイルとして存在するではないですか!!SHPフォルダにある"Icon Data List-February 15.txt"がそれです。全ての答えはここにありました。唯一の問題は、このファイルの作成日が古く、現バージョン8.403のデータとは微妙に異なる点があることですが、まあだいだい同じような感じです。

例えばドイツ軍の88mm ATは、アイコン番号が「667」で、06〜07列の値は「1726(D)」です。"Icon Data List-February 15.txt"を探してみると、次のような行が見つかります。

Code: Select all

 {1726,P_ERROR},  //667.88mm AA-Gun		
	{1728,P_ERROR},  //668.88mm AT-Gun

あれ?本来なら06〜07列の値は「1728」になって欲しいところですが、どうやらアイコン番号も異なっているので、このファイルの作成日以降にOOBの変更があったと解釈すべきでしょう。とにかく、ここに「1726」という値が出てきただけで充分です。これぞ内部コードだ!

で、08〜09列の意味もこのファイルで明らかになりました。88ATの08〜09列の値は「2800」です。この値で検索してみると、

Code: Select all

	 //GE GUN CREW  2800
!!完璧!! :pirat

では08〜09列はCrewmanのグラフィックなのか?いえいえ、砲塔を持つユニットはここに砲塔グラフィックの番号が入るようです。例えば、独軍のPz35(t)は、06〜07列の値は「20124(D)」で、08〜09列は「20127(D)」です。で、

Code: Select all

	{20124,20127},   //406.Pz-35t           (gray)
という列があります。ビンゴ! :cheers

これで06〜09列の意味は完全にわかったと。しかし、"Icon Data List-February 15.txt"なんてファイルをよく公開してくれたもんで。ほんとユーザーフレンドリーなゲームだなと改めて感心しました。 :cool:
Image

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

最強1号戦車計画

Post by 島風 » 2007.Jun.30(Sat) 15:32

島風です。

 すごいっ!!! ついに内部コードの謎に切り込みましたね!!!   :cheers
うーん、いつかのお返しですが、「鳥肌」ものの快挙です。分からない部分は「内部コード」でお茶を濁そうと密かに画策していたのですが、ここまでつっこんで調査しはるなんて!!! 
 セーブデータ以外のファイルをのぞこうなんて、これっぽっちも考えたこと無かったです。「SPWAW V8 Icon list KED.xlr」と「Icon Data List-February 15.txt」ですか。確かに、いっぱい情報が詰まっています。
しかし、"Icon Data List-February 15.txt"なんてファイルをよく公開してくれたもんで。ほんとユーザーフレンドリーなゲームだなと改めて感心しました。
 そうですね。もちろんゲーム自体がとてもおもしろいからなのですが、その他にもいろいろな便利・加工ツールも付いてくるし情報もいろいろ分かるようになっているし、こういうことがあるからこそ、有志で集まってOOBやグラフィックを改良したり、シナリオを作ったりの機運が生まれるのでしょうね。

 そのうえで、Norさんがセクション17の内部コードの謎を解いてくれまして、本体と砲塔のグラフィック番号を特定できるようになったので、

最強1号戦車計画

を考えてみました。まずは、

  ドイツ軍1号戦車にキングタイガーの砲塔を乗せてみよう
  グラフィックがキングタイガーだけと中身は1号戦車をつくってみよう

と思い、センション17の砲塔グラフィック部分を変更してみました。結果は、失敗。グラフィックは変更されませんでした。また、本体も砲塔も両方キングタイガーと同じ値にしたのですが、ゲームには反映されませんでした。どうやらセクション17の本体・砲塔のグラフィック部分は、ゲームの立ち上がりの時には参照されないようです。つぎに、


  キングタイガーだけと見た目は1号戦車

を目指して、 また、センション1の装甲値をいじくってキングタイガーと同じ値にしたのですが、ゲームには反映さず、失敗。その後、いろいろと試行錯誤を重ねて、ついにこんなものができました。

  見た目と装甲はキングタイガーだけと武器は1号戦車
  見た目と装甲は1号戦車だけと武器はキングタイガー

「試行錯誤」の部分をまとめると、

Code: Select all

セクション17の06〜09列を変えてもアイコンは変わらない。
セクション1のユニットのクラス(10列)、アイコン(12・13列)、装甲値(3E〜70)のみを変えてもゲームに反映されない。
セクション1のA8列、ユニット番号、を変えるとアイコンや装甲値が変わる。ただし、武器や残弾数は変わらない(空きスロットがあれば武器が追加される)。
 です。どうやら、アイコンや装甲関係ではセクション1のA8列、ユニット番号(と、おそらくA7列の国番号)が最優先されるらしく、ここだけキングタイガーに変えれば、アイコンや装甲がキングタイガーのものになりました。もちろんこの時点ではセクション1とセクション17のその他の部分は1号戦車のままなのですが、いったんセーブすると、それらの値もキングタイガーのものに変更されました。
 武器の種類と残弾数は、セクション1にすでに何かあればそれがゲームにも反映されました。ただし、空きスロット(1号戦車だとスロット2〜4)があれば、A8列に書かれたユニットの武器が入るようですが、残弾数は変更されないので「0」のままです。こうして、「1号王虎」のできあがりです。
 逆に、A8列のユニット番号を変えても、武器の種類と残弾数には影響がないようなので、8.8cm L71 を載せて、「1号8.8cm」ができました。あはははははは。
 このような仕様になっているのは、ユニットが決まれば装甲値はゲーム中変わることはありませんが、武器は使用不能になったり、残弾数も変化するためなんでしょうね。
Last edited by 島風 on 2007.Jul.24(Tue) 00:38, edited 2 times in total.

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

宿題の答え

Post by 島風 » 2007.Jun.30(Sat) 15:57

島風です。

 最強1号戦車計画に夢中になって、Norさんの質問に答えるのを忘れていました。 :porc

飛行ユニットのセクション17の04〜05列については、Norさんの書かれている通りであることを確認しました。 :wink:

Code: Select all

飛ぶ前 04・05は「00」。08〜0Dは「FF」、0Eは「01」。
飛行後 04・05は値が入る。08〜09は「FF」。0A〜0Bは向きに応じて値が入る。0C〜0Dは基本的に0A〜0Bと同じだが砲撃を受けるとその方向によって値が変わる?。0Eは「00」。
撃墜されると、08〜09に「1480」(FW-190の場合)
実験していて、幸か不幸か、1機撃墜されました。すると、08〜09に値が入りました! で、例の「Icon Data List-February 15.txt」で入った値 1480 を探しましたが、見つかりませんでした。火が噴いたグラフィックなのでしょうかね。

 それと、1号計画の途中で、セクション1の EF列 が、ユニットの登場ターン数であることを見つけましたです。
 それとそれと、6/28の投稿で「セクション17は終わり」とか書いてしまいましたが、それは0〜399行のみの話で、まだまだ、い〜ぱい、残ってますね。地道にがんばりましょう。

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

本日の成果

Post by Nor » 2007.Jul.01(Sun) 01:13

え〜、最強1号戦車計画に笑わせていただきました。 :lol:
セクション17の06〜09列を変えてもアイコンは変わらない。
セクション1のユニットのクラス(10列)、アイコン(12・13列)、装甲値(3E〜70)のみを変えてもゲームに反映されない。
セクション1のA8列、ユニット番号、を変えるとアイコンや装甲値が変わる。ただし、武器や残弾数は変わらない(空きスロットがあれば武器が追加される)。
この結果は面白いですね。『このような仕様になっているのは、ユニットが決まれば装甲値はゲーム中変わることはありませんが、武器は使用不能になったり、残弾数も変化するためなんでしょうね。』という解釈にも納得です。

しかし・・・・ふとあることに思いつきました。Wawedのユニットエディタを使えば、装甲値を独立して変更できるはずですよね。で、早速実験。試しに、手持ちの「1号対戦車自走砲」の車体前面装甲だけを13mmから200mmに変更してみます。名づけて「1号対戦車自走砲なんちゃってフェルディナンド化計画」!

で、やっぱり(!)出来ました。改造前と改造後のセクション17は完全に同一。グラフィックはいじってないから、まあそりゃそうですね。そしてセクション1の相違箇所は・・・車体前面装甲値3箇所はもちろんですが、もう一箇所ありました!!それは未解読の「A6列」です。改造前の値は0で、改造後は1になりました。何コレ?

ほかのデータをざっとみると、A6列に1が立っているユニットは結構あります。しかしその共通性は全然わかりません。なんとなくの予想としては、ユニットの基本スペックがデフォルト値から変更された場合に1が立つ「改造フラグ」みたいなもの?なんて思いましたが、全く根拠はありません。 :porc

このA6列の謎は今後の課題ですが、とりあえず、セクション1の装甲値を変更してA6列に1を入れれば、装甲値のみの変更は可能っぽいですね。


では、本日の成果を。

航空機飛行経路
・航空機飛行経路はセクション1のE0・E1
・E0は航空機進入方向 (1=NE, 2=E, 3=SE, 5=SW, 6=W, 7=NW)
・E1は航空機退出方向 (1=NE, 2=E, 3=SE, 5=SW, 6=W, 7=NW)

風向き
・風向きはセクション37の67列
・風向 (0=W, 1=NW, 2=NE, 3=E, 4=SE, 5=SW)

え〜、なんで風向きなんて地味な要素が特定できたかですが、また話が長くなるので簡単に説明します。 :pirat

SPWAWの外部ツールとして、SDQ(ectizen's SP:WaW Scenario Designer's Quickies)というツールが存在します。これはマップ作成補助ツールで、荒地や沼地を作ったり、高度を上げたりといった内蔵マップエディタではちょっと面倒な(あるいは不可能な)作業が可能になるのですが、かなりマニアックな仕様なため海外でもごく一部のマップ作成ベテランしか使用してないようです。

で、このツールの機能に「Smoke Machine」というのがあって、まあこれはマップ上にランダムに煙幕を配置して霧や硝煙なんかを表現するものですが、ここに風向き(どの方角から吹くか)を決める項目があります。選択できる方角は、「西・北西・北東・東・南東・南西」の6方向です。わずかな説明によると、「風向きはマップではなく、シナリオにのみ影響する」ということでした。この一文から、「ははあ、ということは、天候とか地形情報を持っているセクション37に関係ありそうだ」と踏んだわけです。

で、この機能を利用して、風向きを変えては変更箇所を探し出したというわけです。ほかにもこのツールの機能で解析に役立ちそうなものを探してみましたが、やはりマップエディタなので特に興味あるものは見つからず。ただし、マップ関連セクションの解析には役立ちそうです。でもねえ、そこまでやるとねえ・・ :pale

一応、SDQのダウンロード先を紹介しておきます。
http://spwaw.com/phpBB2/viewtopic.php?t=721
Image

島風
暗号解読部長
Posts: 58
Joined: 2007.Mar.12(Mon) 21:51

張り子の虎

Post by 島風 » 2007.Jul.03(Tue) 01:41

島風です。

 
予想としては、ユニットの基本スペックがデフォルト値から変更された場合に1が立つ「改造フラグ」みたいなもの?なんて思いました
 Norさんの予想は正しいようです。 :D
いくつかのシナリオを見てみると、A6列 が「1」になっているのは、経験値やモラルが高い、人数が多い、弾数が非常に多い、など、シナリオの都合でデフォルトの値を意図的に変えられたユニットのようです。
 Wawedの HEX エディターで、0ターンのコアユニットのA8列を変えて、A6列を「0」のまま、「1」を入れた場合の違いを見てみました。手順は、例によって1号bのA8列にキングタイガーのユニット番号「36」を入れてみます。そのデータをSPWAWで読み込んだ後にセーブして、もとのデータとセクション1を比較しました。結果は、

Code: Select all

どちらとも変わった
10列(クラス) 12列(アイコン) 1C〜21列(未解明) 96列(LBM,TXT) AA列(?) C1(Lift) C3(Weight) CE列(Survivavility) D8〜DA,DC〜DE列(空きスロットの武器関係) 

Code: Select all

A6列が「0」のユニットのみ変わった
3E〜61,6B〜70(装甲関係)
です。また、シナリオの最終ターンのセーブデータで、コアユニットのA6列を「1」に変え、次のシナリオへ進んでみたところ、A6列は「1」のままで、ちゃんと昇進もするし、弾もフルチャージされるし、経験値やモラル値も変化していました。これらのことから考えると、コアユニットでは、A6列が「0」か「1」かは装甲関係のみに影響を与えるようです。ちなみに、A6列が「1」のユニットを違うユニットに買い換えると、次のシナリオでは、A6列が「0」になります。
 1C〜21列と AA列(?) が気になるところですが、とりあえず、

グラフィックがキングタイガーだけと中身(装甲値、スロット1の武器、スピード、乗員数など)は1号戦車

ができました。絵は....、もういいですね。そのうち、1号対戦車自走砲なんちゃってフェルディナンドと対戦しましょう。あっ、見た目は勝てるけど、一撃でやられちゃうか。 :D
航空機飛行経路
・航空機飛行経路はセクション1のE0・E1
・E0は航空機進入方向 (1=NE, 2=E, 3=SE, 5=SW, 6=W, 7=NW)
・E1は航空機退出方向 (1=NE, 2=E, 3=SE, 5=SW, 6=W, 7=NW)

風向き
・風向きはセクション37の67列
・風向 (0=W, 1=NW, 2=NE, 3=E, 4=SE, 5=SW)
 着々と進んでいますね(スプレッドシートも情報が増えていますね)。そういえば、「風向き」って、気にしたことありませんでした。解析過程がおもしろいですね。それなりに情報が増えてきたので、これ関係ならどのセクション、というのが予想しやすくなりました。ただ、マップ関連は膨大なので、とりあえず、ねぇ、です、僕も。 :porc

 E0,E1列は飛行機経路なんですね。うーん、飛行機用のデータの場所がある、ということは、船用や空挺部隊用の場所があったりするのかなぁ。

 それから、シナリオの変わり目では、昇進したり経験値やモラル値などが変化しますが、すべてのユニットが平均的に変化するのではなく、ちゃんと活躍したユニットの値が上昇しやすくなっているので、セクション1のどこかにそのデータがあるような気がします。これは、地道に調べれば何とかなるような気がするので、やってみますね。

User avatar
Nor
大佐
大佐
Posts: 783
Joined: 2004.Feb.08(Sun) 05:09
Location: 日本

本日までの成果

Post by Nor » 2007.Jul.03(Tue) 02:27

お疲れ様です。A6列の謎はなんとなく判明ということですね。 :P

え〜と、セクション1・34・35について、未使用の疑いがある列を調べていました。値が常に00とかFFの列ですね。その際に、やはり島風さんからもらったチタデルシナリオのデータが役に立ちました。私のデータでは値が00でも、チタデルデータではひょっこり1とか立っていたりしました。ぜんぜん意味はわかりませんが。

で、そろそろ闇雲なデータ解析に疲れてきたので、ここらで本来の目的を思い出してみました。 :cool:

これまでに解析したデータを使って、何か役に立つツールを作ってみようと思います(例によってエクセルのマクロ利用です)。どんなツールにするかいろいろ考えていたのですが、いきなり多機能なものを作ろうとすると挫折しそうなので、最初はショボイものから始めてみようと思います。

で、具体的には、「シナリオかキャンペーンのセーブデータをひとつだけ読み込んで、現在の状況を表示する」ツールにしようと思います。「現在の状況」としてどんな形式で何のデータを表示するかが問題ですが、適当にフォーマットを作ってみました(添付図参照)。

まず1ページ目では、以下の基本情報を表示します。
<Summery>
・A0ユニットの指揮官階級と名前
・日時/ターン
・場所/地形/天候/風向/視界
・対戦国籍および任務
・平均経験/平均士気値
・キルスコア合計

<Force>
・総兵員数/現兵員数/死傷者数/充足率
・総ユニット数/現ユニット数/破壊されたユニット数/充足率

<Composition>
・ユニット種の数と割合(歩兵/軽装甲車両/重装甲車両/対戦車砲・対空砲/砲兵/偵察/輸送/その他)

2ページ目では、ユニットの詳細一覧を表示します。
・ID/ユニット名/経験/士気/キルスコア/現兵員/死傷者/抑圧
・指揮官階級/指揮官名/ラリー技能/歩兵・装甲・砲技能

さらに、3ページ目には戦闘結果を表示します。終了時のセーブデータでなければここは表示できません。
・日時/ターン
・場所
・対戦国籍と任務
・損害一覧表
・スコアおよび勝敗判定
・VHの確保数と確保率(VHの種類がEOB・PPT・STRで価値があるもののみ対象)
・Depotの判定基準に従った勝利判定


という感じです。で、ご相談したいのは、上記の項目は必要か?ほかにあった方がよい項目は何か?ということです。

ちなみに、今バージョンではデータの修正機能はとりあえず無しにしようと思います。また、読み込むセーブデータも一つだけとし、複数のデータを読み込んで変動を見ることもやめておきます。

つまり、あくまで状況を出力してニヤニヤするだけのツールです。このツールに積極的な意味があるとすれば・・・AARが書きやすくなることくらいかな。 :cool:
Last edited by Nor on 2007.Jul.08(Sun) 01:02, edited 1 time in total.
Image

Post Reply