Difference between revisions of "Palette"

From Sega Retro

old>GerbilSoft
(→‎Mega Drive Palette: Highlight adds 0111, not 1000. (Confirmed by TmEE.))
m (23 revisions)
(No difference)

Revision as of 21:24, 17 February 2010

A palette is selection of colours which is used in an image. Rather than defining a colour for each individual pixel (such as in 24-bit colour images), palettes are used to link pixels to colour data by way of an index reference. Graphics in Mega Drive, Master System, Game Gear and GameBoy Advance games all use palettes.

According to the Oxford English Dictionary, "palette" didn't appear until the 19th century. "Pallet" is the original, correct spelling. However, both are correct today, and "palette" is more commonly used.

Mega Drive Palette

The Mega Drive VDP supports four palettes of 16 colors each, with each color being selected from a total of 512 colors; using the Shadow/Highlight capabilities of the VDP, the total raises to 1536. Each palette is 32 bytes, with each color occupying two bytes. These two bytes are in the format 0B GR, where B = blue; G = green; and R = red. The B, G and R can be any of the following values:

Mega Drive Palette.png
  • 0 (0000)
  • 2 (0010)
  • 4 (0100)
  • 6 (0110)
  • 8 (1000)
  • A (1010)
  • C (1100)
  • E (1110)

To obtain equivalent values out of 256, the procedure is as follows:

- when in normal mode, use the values above in each nybble (e.g. 2 -> 0010 0010 -> $22 -> 34)
- when in shadow mode, divide the values above by two, and use them in each nybble (e.g. 2 -> 0001 0001 -> $11 -> 17)
- when in highlight mode, divide the values above by two, add 0111, and use them in each nybble (e.g. 2 -> 1000 1000 -> $88 -> 136)

The MD tile format stores two pixels in each byte. For example, if a tile byte is 0x4F, then the first pixel is color 4, and the second pixel is color 15. Note that color 0 in each palette is usually transparent, though color 0 of palette 0 is typically used for the border color.

Master System Palette

Consists of 16 colours, each represented by eight bits (a single byte) in the format 00BBGGRR, where BB = blue; GG = green; and RR = red. The BB, GG and RR can be any of the following values:

Master System Palette.png
  • 00 = 0
  • 01 = 85
  • 10 = 170
  • 11 = 255

As such, the highest palette value is 00111111, which is 3F when converted to a byte.

Game Gear Palette

Consists of 16 colours, each represented by two bytes (four nybbles) in the format GR 0B, where G = green; R = red and B = blue. The G, R and B can be any of the following values:

Game Gear Palette.png
  • 0/1 = 0
  • 2/3 = 36
  • 4/5 = 72
  • 6/7 = 109
  • 8/9 = 145
  • A/B = 182
  • C/D = 218
  • E/F = 255

Gameboy Advance Palette

With 256 colour indices for 4 backgrounds and 256 colour indices for sprites, the Gameboy Advance uses the BGR555 format (15 bit colors). One colour index contains two bytes (5 bits per component): 0BBBBBGGGGGRRRRR. The Gameboy Advance also has support for RGB mode where one pixel on the screen is represented by the RGB value and not by an index, so you can use images with up to 32768 colours.