まずは構造解析から。画像用意するの面倒なんでテキストでごー。t0001.binのファイル先頭から順に。以下のような入れ子?構造になっている。
ヘッダ部分
50 54 00 00
①最初の4バイト。このファイル自身のファイルサイズを明示。t0001.binは0x5450=21584バイト。
02 00 00 00 10 00 00 00
②次の8バイト、固定。
1C 43 00 00
③次の4バイト、データ部分(その2)の開始アドレス。後述。
0C 43 00 00
④更に次の4バイト、データ部分(その2)の開始アドレス-0x0010。ここまでで計20バイト(0x14)。
データ部分(その1)
65 00 00 00
固定。データ部分開始位置の目印。
9C 01 00 00 A0 01 00 00 CC 0F 00 00 5C 15 00 00 60 15 00 00 ...
4バイトずつでアドレスを指定している。×101個で全404バイト(0x194)。何のアドレス指定かっていうと「Chapterヘッダ(04 00 00 00 14 00 00 00)の開始位置」もしくは「dmf」(後述)。実際のアドレスはそれぞれのアドレスに+0x10する。つまり最初の「9C 01 00 00」がアドレス0x1AC指定(下記の最初のdmf=本体部分(その1)の開始アドレス)、次の「A0 01 00 00」がアドレス0x1B0指定(下記の最初のChapterヘッダ)、以下同様。
本体部分(その1)
開始アドレスはどのファイルでも0x1ACになる。
64 6D 66 00
ASCII表示で「dmf.」になるので勝手にdmfと呼んでる。本来Chapterイベントの入る所で、相当するイベントが無ければこのバイト文字列を入れているらしい。ダミーファイルとかダミーfなんちゃらの略字じゃないかと思ってるけど。
04 00 00 00 14 00 00 00 ...
Chapterヘッダ。ここでの例の場合はマップが表示されてから戦術開始までの会話イベント。以下、次のdmfかChapterヘッダまでChapterコマンドが続く。dmfもしくはChapterイベント、あわせて全部で101個。
データ部分(その2)
開始アドレスは0x431C=ヘッダ③で指定したアドレス。ファイルごとに異なる。
34 11 00 00
ここからファイル終了位置までのバイト数を明示。
65 00 00 00
固定。データ部分開始位置の目印。
9C 01 00 00 A0 01 00 00 FC 0B 00 00 14 0F 00 00 B0 0F 00 00 ...
4バイトずつでアドレスを指定。×101で計404バイト(0x194)。実際のアドレスはそれぞれのアドレス+ヘッダ③で指定したアドレス。
本体部分(その2)
開始アドレスはヘッダ③で指定したアドレス+0x19C。
64 6D 66 00
dmf。
04 00 00 00 14 00 00 00 ...
Chapterヘッダ。以下、dmfもしくはChapterイベントであわせて101個、その1とあわせて202個。正直そんな要らんような気がするけど。
- 戦術パート独自の特殊コマンド
コマンドの基本はChapterファイルの解析が利用可。戦術パートのみの特殊コマンドを挙げておきます。
75 00 08 00 xx 00 00 20 | マップ(背景)を半分フェードアウトする。所要時間はxx×20ms。 |
76 00 08 00 xx 00 00 20 | マップ(背景)を半分フェードアウト状態からフェードインする。所要時間はxx×20ms。 |
78 00 10 00 xx xx 00 20 yy yy 00 20 00 00 00 20 | マップ(背景)の表示を横xx xx、縦yy yyに移動する。t0001などを参照のこと。 |
以下はかなり怪しい。
88 00 20 00 xx 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 | マップ(背景)を移動する。xxのスイッチは以下の感じ? 15…何かしら注目してるもの(塔とか壁とか救出対象のユニットとか) 16…元の位置へ戻る |
A7 00 08 00 00 00 00 00 | 謎。戦術開始前のお約束(その1) |
A6 00 08 00 01 00 00 20 | 謎。戦術開始前のお約束(その2) |
8B 00 14 00 00 00 00 20 15 04 00 20 00 00 00 20 0A 00 00 20 | フォーカス(味方、敵キャラ)に目印マーク(光る円)を表示する。多分。 |
8A 00 18 00 00 00 00 20 xx 00 00 20 yy 00 00 20 15 04 00 20 0A 00 00 20 | 横xx、縦yyに目印マークを表示する。 |
89 00 20 00 05 00 00 20 xx xx 00 20 yy yy 00 20 15 04 00 20 0A 00 00 20 01 00 00 20 00 00 00 20 | マップ以外の場所(スキルアイコンとか)に目印マークを表示する。横xx xx、縦yy yy。 |
8C 00 08 00 00 00 00 20 | 目印マークを消去。多分。 |
8E 00 0C 00 00 00 00 20 00 00 00 20 | フォーカスが中心に来るようにマップを移動する |
82 00 14 00 gg 00 00 20 xx 00 00 20 yy 00 00 20 0A 00 00 20 | 敵グループをマップ上の横xx、縦yyに出現させる。ggは敵グループ番号(多分他のファイルで定義されてる) |
92 00 1C 00 00 00 00 00 xx 00 00 20 yy 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 | フォーカスを移す。xxは00が味方、01が敵。yyは番号(01~)。 |
88 00 20 00 22 00 00 20 xx 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 | xx番のイベントスイッチをONにする。解析中。 |
31 00 04 00 | ▼表示(2) |