Nintendo MessageStudio ヘルプ

プロジェクトバイナリ - スタイル情報

スタイルに設定されている表示領域幅、表示可能行数、設定されているフォントのインデックス番号を取得することが可能な情報です。レンダリング方式に固有の情報についてはサポートしていません。

スタイル名ブロック(SLB1)

メッセージバイナリのLBLブロックと同じ構造となっています。

スタイル名ブロック(SLB1)は、スタイル名と、それに対応したインデックス番号の関連付けが可能なブロックです。 インデックス番号とは、後述するスタイル情報ブロック(SYL1)における、スタイル情報の格納順序を表す連続した番号のことです。 インデックス番号は0から開始されます。

スタイル名は、ASCIIコード範囲において255文字以内でつけることが可能で、Message Studio上で設定することが可能です。 詳しくはスタイル設定をご覧ください。 このブロックは、スタイル名文字列のハッシュ値によってルックアップするため、スタイルの数が増えても検索効率がそんなに変わりません。

スタイル名ブロックは、ブロックヘッダの後に以下のようなデータ構造を持ちます。

※このイメージ内の値は基本的にでたらめです。

HASH TABLE SIZEハッシュテーブルのサイズを記述します。 ハッシュテーブルのサイズはMessage Studio上で設定可能で、サイズによって速度とメモリ使用量の調整が可能です。 デフォルト値は29ですが、なるべく素数を設定してください。4バイトの情報です。

ハッシュテーブルの数値で設定した数だけ、以下の8バイトの情報が繰り返されます。 ハッシュテーブルサイズが29の場合、この部分が合計232バイトになります。
STYLE NUM IN HASH nハッシュ値nに何個のスタイル名が含まれているかという情報を記述します。4バイトになります。
OFFSET OF HASH nハッシュ値nのスタイル名情報へのオフセット値が4バイトで記述されます。 オフセットは、ブロックの先頭から数えられます。 上述した、ハッシュ値nに含まれるスタイルの数が0である場合、このオフセット値は不定です。

上述の部分が終わった直後から、スタイル名とインデックス番号の対応表のリストが記述されます。 プログラムは、ハッシュ値からブロック上のオフセットを求めた上で、この領域へアクセスします。

LENスタイル名の長さを1バイトで記述します。
STYLE NAMEスタイル名が記述されます。 スタイル名は、出力設定によらず必ずASCII文字列になり、前述のラベル長さの量だけ続きます。
STYLE INDEXスタイルのインデックス番号(SYL2ブロックにおける出現位置)が4バイトで記述されます。

上記のスタイル名スタイルインデックスの組み合わせは、順番にスタイルの数だけ出現します。 求めたオフセット位置の直下に違うスタイル名情報が存在している場合があります。 これは、特定のハッシュ値に対して複数のスタイル名が登録されているからです。 その場合は読み飛ばして次のスタイル名と一致するかを確認します。

スタイル情報ブロック(SYL2)

スタイル情報ブロックには、スタイルに設定した「表示領域幅」、「表示可能桁数」、「フォントのインデックス番号」の3つの情報が格納されます。

スタイルにはこれらのパラメータの他に、レンダリング方式によって追加のパラメータが設定されますが、このレンダリング方式による追加パラメータについてはバイナリには含まれないので注意して下さい。これらのデータを出力したい場合は独自のビルダープラグインの開発する必要があります。

スタイル情報ブロックは、ブロックヘッダの後に以下のようなデータ構造を持ちます。

※このイメージ内の値は基本的にでたらめです。

STYLE NUMスタイルの数が4バイトで入ります。

この数値の数だけ、以下の12バイトの情報が繰り返されます。
REGION WIDTH n表示領域幅を4バイトで記述します。
ENABLE LINE NUM n表示可能行数を4バイトで記述します。
FONT INDEX nフォントのインデックス番号を4バイトで記述します。スタイルにフォントが設定されっていない場合は、0xFFFFFFFFが設定されます(これはフォントを0xFFFFFFFF個も登録することはないという前提に基づいて決められた仕様です)。