Microsoft DirectX 8.0 (C++)

コード マップ形式

次の表記法は、コード マップ ファイルの最上位レベルのチャンク、または形式の構成を示している。

RIFF( 'DMPR'
    <perh-ck>       // コード マップ ヘッダー チャンク
    [ <guid-ck> ]   // GUID チャンク
    [ <vers-ck> ]   // バージョン チャンク
    [ <UNFO-list> ] // UNFO リスト
    <chdt-ck>       // コード データ チャンク
    <chpl-list>     // コード パレット
    <cmap-list>     // コード グラフ
    <spsq-list>     // サインポスト リスト
)

<perh-ck>

これは、コード マップの基本的なヘッダー情報である。

<perh-ck> -> perh( <DMUS_IO_CHORDMAP> )

<guid-ck>、<vers-ck>、<UNFO-list>

これらの 3 つのチャンクについては、「共通のチャンク」を参照すること。

<chdt-ck>

<chdt-ck> -> chdt(
    <WORD>    // DMUS_IO_CHORDMAP_SUBCHORD のサイズ
    <DMUS_IO_CHORDMAP_SUBCHORD>... 
    )

<chdt-ck> チャンクには、サブコードあたりのバイト数を表す WORD 値と、固有のサブコードの配列が含まれる。このファイルのほかのパートで参照されているサブコード識別子はすべて、この配列のインデックスに直接対応する。

<chpl-list>

<chpl-list> -> LIST( 'chpl' 
    <chrd-list>... 
    )

このリストにはコード パレットが含まれる。このリストには 24 の項目が必要である。

<chrd-list> -> LIST( 'chrd'
    <UNAM-ck>    // コード名
    <sbcn-ck>    // サブコードのインデックス
    )

このリストには、基本的なコード情報が含まれる。この情報は、コードの名前と、準拠するサブコードの識別子のリストである。

<UNAM-ck> -> UNAM ( <WCHAR>... )

UNAM チャンクは、コードの名前を格納する。

<sbcn-ck> -> sbcn( <WORD>... )

"sbcn" チャンクには、1 つまたは複数のサブコード識別子が含まれる。これらは、<chdt-ck> にある配列のインデックスに直接対応する。最大で 4 つのコードがサポートされている。

<cmap-list>

このリストには、コード マップのコード接続グラフ全体が含まれる。コード マップの大部分のデータは、このチャンクに存在する。

<cmap-list>  ->  LIST( 'cmap' 
    <choe-list>... 
    )

各リストには、コード グラフの 1 つのエントリのデータと、次にコード グラフに現れるすべてのコードへのポインタが含まれる。

<choe-list> -> LIST( 'choe'
    <cheh-ck>      // コード エントリ データ
    <chrd-list>    // コード データ。上の説明を参照
    <ncsq-ck>      // 次のコード リスト
    )

<cheh-ck> -> cheh( <DMUS_IO_CHORDENTRY> )

これは、コード エントリ ヘッダーである。構造体の識別子は、コード接続グラフの識別子であり、サブコード識別子ではない。

<ncsq-ck> -> ncsq (
    <WORD>         // DMUS_IO_NEXTCHORD のサイズ
    <DMUS_IO_NEXTCHORD>... 
    )

"ncsq" チャンクには、接続グラフのコードを別のコードに接続するデータが含まれる。接続グラフの各コードは、16 ビットの識別子で表される。

<spsq-list>

このチャンクには、各サインポストのデータが含まれる。

<spsq-list> -> LIST( 'spsq' 
    <spst-list>... 
    )

<spst-list> リストには、1 つのサインポストのデータが含まれる。データは、ヘッダー、コード情報、およびオプションのカデンツァ コードで構成される。

<spst-list>  ->  LIST( 'spst'
    <spsh-ck>
    <chrd-list>     // コード データ
    [ <cade-list> ] // カデンツァ コード
    )

<spsh-ck> リストには、サインポスト データが含まれる。

<spsh-ck> -> spsh( <DMUS_IO_CHORDMAP_SIGNPOST> )

<chrd-list> については、前に説明した <chpl-list> を参照すること。

<cade-list> チャンクには、カデンツァ コードの情報が含まれる。このリストでは 2 つまでのカデンツァ コードがサポートされている。3 つ以上のコードは無視される。

<cade-list> -> LIST( 'cade' 
    <chrd-list>... 
    )