# パレットコマンド このページのコマンドで設定したパレットをどう使うかは[こちら](./color_attr.md)を参照してください。 ## SGBコマンド $00 - PAL01 パレット0の色0~3, パレット1の色1~3へと色データを送信するコマンドです。送られるパケットは1つだけです。 ``` Byte 0 0x1 (PAL01) or 0x9 (PAL23) or 0x11 (PAL03) or 0x19 (PAL12); ヘッダ 1-2 パレット0とパレット1の背景色 (RGB555) 3-4 パレット0の色1 (RGB555) 5-6 パレット0の色2 (RGB555) 7-8 パレット0の色3 (RGB555) 9-10 パレット1の色1 (RGB555) 11-12 パレット1の色2 (RGB555) 13-14 パレット1の色3 (RGB555) 15 不使用 (00h) ``` ## SGBコマンド $01 - PAL23 `PAL01`と内容は同じですが、対象がパレット2,3になりました。またヘッダは `0x09(= (1 << 3) | 1)` です。 ## SGBコマンド $02 - PAL03 `PAL01`と内容は同じですが、対象がパレット0,3になりました。 またヘッダは `0x11(= (2 << 3) | 1)` です。 ## SGBコマンド $03 - PAL12 `PAL01`と内容は同じですが、対象がパレット1,2になりました。 またヘッダは `0x19(= (3 << 3) | 1)` です。 ## SGBコマンド $0A - PAL_SET 仮想パレットのデータを、実パレットにコピーするために使用します。送られるパケットは1つだけです。 ``` Byte Content 0 0x51; ヘッダ 1-2 実パレット0にセットする仮想パレットの番号(0-511) 3-4 実パレット1にセットする仮想パレットの番号(0-511) 5-6 実パレット2にセットする仮想パレットの番号(0-511) 7-8 実パレット3にセットする仮想パレットの番号(0-511) 9 ATF Bit 0-5 - ATF番号 (00h-2Ch) (Used only if Bit7=1) Bit 6 - Cancel Mask (0=No change, 1=Yes) Bit 7 - Use Attribute File (0=No, 1=Apply above ATF Number) 10-15 不使用 (0) ``` パレット番号はリトルエンディアンで表します。 このコマンドを使う前に、`PAL_TRN`コマンドで仮想パレットのデータを初期化し、`ATTR_TRN`コマンドでATFのデータを初期化しておく必要があります。 ## SGBコマンド $0B - PAL_TRN 仮想パレットの初期化に使用されます。送られるパケットは1つだけです。 PAL_SETコマンドを使えば、この仮想パレットのうち4個を実パレットに転送することができます。 また、`OBJ_TRN`コマンドでは、4つの仮想パレット(4x4色)のグループを、SNESのOBJパレット(16色)に使用します。 ``` Byte Content 0 0x59; ヘッダ 1-15 不使用 (0) ``` パレットデータは[VRAM転送(4KB)](../vram_transfer.md)で送られます。 ``` 000-FFF 仮想パレットのデータ (512パレット = 4096バイト) ``` Each Palette consists of four 16-bit color definitions (8 bytes). 転送されたデータは、SNESのメモリの`0x3000..3FFF`に保存されます。