u32 color_palette_list_tag ColorPaletteListを示すタグを記述します。下記のタグを設定してください。 TAG_COLOR_PALETTE_LIST 0x00210000u32 color_palette_list_header_size ColorPaletteListのバイト数を記述します。 u32 color_palette_list_size ColorPaletteListのバイト数を記述します。 u32 color_palette_num ColorPalette数を記述します。 u32 color_palette_num_byte ColorPaletteのバイト数を記述します。 ColorPalette ColorPaletteエリアです。
u32 color_palette_tag カラーパレットを示すタグを記述します。下記のタグを指定してください。 TAG_COLOR_PALETTE 0x00210100u32 this_color_palette_index このColorPaletteのインデックス番号を記述します。 u32 color_palette_size ColorPaletteのバイト数を記述します。 u32 color_palette_name_index ColorPalette名をNameListのインデックス番号で指定します。 u32 color_num ColorPaletteのカラー数を記述します。下記のフラグが定義されています。 NIFF2_PALETTE_COLOR_16 0x00000010 NIFF2_PALETTE_COLOR_256 0x00000100u32 color_type パレット内のカラーはそれぞれ16bitですが、それをIA16あるいはRGBA16のどちらかに指定できます。IAはIntensity Alphaデータで、輝度8bit、アルファ8bitで使用されます。RGBAは赤5bit、緑5bit、青5bit、アルファ1bitで使用されます。下記のフラグが定義されています。 NIFF2_PALETTE_RGBA16 0x00000000 NIFF2_PALETTE_IA16 0x00000001u32 reserved デフォルトで0x0を記述してください。 u32 color_array 実際のパレット内のデータです。 パレット番号0から順に実際のカラー値を格納していきます。
カラー値はそれぞれ16bit値なので、それぞれのcolor_arrayに2個ずつビッグエンディアンで格納します。
color_num = NIFF2_PALETTE_COLOR_NUM_16の場合、パレット内のカラーの総数は16個になるので、color_arrayは0〜7までの8個のデータです。つまり、color_array_num = 8です。
color_num = NIFF2_PALETTE_COLOR_NUM_256の場合、パレット内のカラーの総数は256個になるので、color_arrayは0〜127までの128個のデータです。つまり、color_array_num = 128です。