共通のバイナリフォーマットについて
概要
このページでは、Message Studioが出力する バイナリリソース(ゲームに組み込んで利用するファイル)の全体的な仕様を解説します。 メッセージバイナリファイル(*.msbt)、プロジェクトバイナリファイル(*.msbp)、フローチャートバイナリファイル(*.msbf)がこの形式に該当します。
バイナリヘッダ
各バイナリファイルは、先頭に必ずバイナリヘッダ情報が付加されます。 この情報は以下のようなフォーマットになっています。
| SIGNATURE | シグネチャです。バイナリリソースが正しいかどうかを判定するために用います。 利用するファイルフォーマットによってこの情報は異なります。8バイト。 |
| ENDIAN | エンディアン判定用の情報です。 ここにはZERO WIDTH NO BREAK SPACE(U+FEFF)の文字が記述されます。 値が0xFEFFとなっていればビッグエンディアン、0xFFFEとなっていればリトルエンディアンです。 2バイト。 |
| OBSOLETE | この情報は廃止されました。常に0x0000が入ります。 2バイト。 |
| ENC | テキストエンコーディング(文字コード)情報が入ります。 値が0のときUTF-8、1のときUTF-16、2のときUTF-32であることを示します。 1バイト。 |
| VER | 全体的なバイナリフォーマットのバージョン番号を示します。現在は常に2が入ります。 1バイト。 |
| BLOCK NUM | ファイルに存在するブロック数が入ります。ブロックについては後述します。 2バイト。 |
| FLAGS | フラグ情報です。現在未定義なので常に0が入ります。 2バイト。 |
| FILE SIZE | ファイル全体の容量がバイト単位で入ります。 4バイト。 |
| RESERVED | 将来の拡張のための予約領域です。現在は未定義につき利用されません。 10バイト。 |
ブロックについて
Message Studioは拡張性の高いバイナリフォーマットを共通的に利用できるように、 「ブロック」と呼ばれる単位でデータを格納していきます。 どのブロックが含まれるかは、ファイルの種類によって異なります。 たとえば、メッセージバイナリファイル(*.msbt)ならテキスト情報が保存されたブロックが含まれます。
ブロック情報の開始位置は必ず16バイトアライメントされます。 もしも直前のブロックが16の倍数で終わらなかった場合は、16の倍数になるまで0で情報が埋められます。
ブロックヘッダは以下のような内容になっています。
| BLOCK NAME | ブロックの名前が4バイトで入ります。ブロックの識別子として利用します。 特に制限はありませんが、Message Studioでは多くの場合、ASCIIコードによる大文字アルファベット3文字と数字1文字による4バイトの情報を利用します。 |
| BLOCK SIZE | データサイズを示します。ブロックの長さを示します。 直後のブロックを16バイト境界に合わせるためにブロックの後が0で埋められている場合でも、この値には加えられません。 4バイト。 |
| FLAGS | ブロックのフラグ情報を示します。フラグの意味については後述します。 2バイト。 |
| RESERVED | 将来の拡張のための予約領域です。現在利用されていません。 6バイト。 |
ブロックヘッダに含まれるフラグ情報について
ブロックヘッダに含まれるフラグ情報は、ビット単位でアクセスしてデータを取得することが出来ます。
| 0x00000001 | ユーザーブロックのときに、このビットが立ちます。 MessageStudioが標準で定義する内容の場合は0になります。 |
はじめに
言語設定
メッセージ編集
共通のバイナリフォーマット