Skip to content

Latest commit

 

History

History
79 lines (54 loc) · 3.07 KB

palette.md

File metadata and controls

79 lines (54 loc) · 3.07 KB

パレットコマンド

このページのコマンドで設定したパレットをどう使うかはこちらを参照してください。

SGBコマンド $00 - PAL01

パレット0の色03, パレット1の色13へと色データを送信するコマンドです。送られるパケットは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)で送られます。

  000-FFF  仮想パレットのデータ (512パレット = 4096バイト)

Each Palette consists of four 16-bit color definitions (8 bytes).

転送されたデータは、SNESのメモリの0x3000..3FFFに保存されます。