Difference between revisions of "FF7/Field/Palette"
my_wiki>Synergy Blades m |
my_wiki>Myst6re (Many corrections) |
||
Line 1: | Line 1: | ||
− | === Section 4: Palette ([[User:Terence Fergusson|Terence Fergusson]]) === | + | === Section 4: Palette ([[User:Terence Fergusson|Terence Fergusson]] & [[User:Myst6re|myst6re]]) === |
The following is an overview of the palette data. | The following is an overview of the palette data. | ||
Line 11: | Line 11: | ||
|- | |- | ||
|style="background:rgb(255,255,255)" | 0x00 | |style="background:rgb(255,255,255)" | 0x00 | ||
− | |style="background:rgb(255,255,255)" | | + | |style="background:rgb(255,255,255)" | 4 bytes |
|style="background:rgb(255,255,255)" | Length (Repeat of previous length header) | |style="background:rgb(255,255,255)" | Length (Repeat of previous length header) | ||
|- | |- | ||
− | |style="background:rgb(255,255,204)" | | + | |style="background:rgb(255,255,204)" | 0x04 |
|style="background:rgb(255,255,204)" | 2 bytes | |style="background:rgb(255,255,204)" | 2 bytes | ||
− | |||
− | |||
− | |||
− | |||
|style="background:rgb(255,255,204)" | Unknown (often blank) | |style="background:rgb(255,255,204)" | Unknown (often blank) | ||
|- | |- | ||
− | |style="background:rgb(255,255, | + | |style="background:rgb(255,255,204)" | 0x06 |
− | |style="background:rgb(255,255, | + | |style="background:rgb(255,255,204)" | 2 bytes |
− | |style="background:rgb(255,255, | + | |style="background:rgb(255,255,204)" | Unknown |
|- | |- | ||
− | |style="background:rgb(255,255, | + | |style="background:rgb(255,255,255)" | 0x08 |
− | |style="background:rgb(255,255, | + | |style="background:rgb(255,255,255)" | 2 bytes |
− | |style="background:rgb(255,255, | + | |style="background:rgb(255,255,255)" | Number of colors in palette |
|- | |- | ||
|style="background:rgb(255,255,255)" | 0x0A | |style="background:rgb(255,255,255)" | 0x0A | ||
− | |style="background:rgb(255,255,255)" | | + | |style="background:rgb(255,255,255)" | 2 bytes |
+ | |style="background:rgb(255,255,255)" | Number of palettes | ||
+ | |- | ||
+ | |style="background:rgb(255,255,255)" | 0x0C | ||
+ | |style="background:rgb(255,255,255)" | (Number of palettes) * (Number of colors in palette) * 2 | ||
|style="background:rgb(255,255,255)" | Palette data | |style="background:rgb(255,255,255)" | Palette data | ||
|} | |} | ||
After the first length indicator comes another integer, also indicating length. Useless, but it's there. | After the first length indicator comes another integer, also indicating length. Useless, but it's there. | ||
− | Then there's one more integer; unknown purpose. | + | Then there's one more integer; unknown purpose. |
− | Then | + | Then two bytes; unknown (blank often). |
− | Then | + | Then two bytes again; unknown (always 480). |
− | + | Then two bytes; number of colors in the palette (always 256). | |
+ | Then two bytes; number of palettes. | ||
Then the actual palette data. | Then the actual palette data. | ||
− | Each palette entry is a 16-bit color. This is unusual - normally palettes store as high quality data as possible, usually 24/32 bit. However since FF7 only ever runs in 16 bit I guess there isn't much point storing any other kind of data. Actually, the data is 15-bit (5-bit | + | Each palette entry is a 16-bit color. This is unusual - normally palettes store as high quality data as possible, usually 24/32 bit. However since FF7 only ever runs in 16 bit I guess there isn't much point storing any other kind of data. Actually, the data is 15-bit (1 mask bit, 5-bit Blue, 5-bit Green and 5-bit Red). |
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center" | {| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center" | ||
! style="background:rgb(204,204,204)" align="center" colspan="16" | Palette Data | ! style="background:rgb(204,204,204)" align="center" colspan="16" | Palette Data | ||
|- | |- | ||
− | |style="background:rgb(255,255,255)" colspan="5" | | + | |style="background:rgb(255,255,255)" colspan="1" | Mask |
+ | |style="background:rgb(255,255,255)" colspan="5" | Blue | ||
|style="background:rgb(255,255,255)" colspan="5" | Green | |style="background:rgb(255,255,255)" colspan="5" | Green | ||
− | |style="background:rgb(255,255,255)" colspan="5" | | + | |style="background:rgb(255,255,255)" colspan="5" | Red (LSB) |
− | |||
|- | |- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|style="background:rgb(255,255,255)" align="center" | m | |style="background:rgb(255,255,255)" align="center" | m | ||
+ | |style="background:rgb(255,255,255);color:blue" | b | ||
+ | |style="background:rgb(255,255,255);color:blue" | b | ||
+ | |style="background:rgb(255,255,255);color:blue" | b | ||
+ | |style="background:rgb(255,255,255);color:blue" | b | ||
+ | |style="background:rgb(255,255,255);color:blue" | b | ||
+ | |style="background:rgb(255,255,255);color:green" | g | ||
+ | |style="background:rgb(255,255,255);color:green" | g | ||
+ | |style="background:rgb(255,255,255);color:green" | g | ||
+ | |style="background:rgb(255,255,255);color:green" | g | ||
+ | |style="background:rgb(255,255,255);color:green" | g | ||
+ | |style="background:rgb(255,255,255);color:red" | r | ||
+ | |style="background:rgb(255,255,255);color:red" | r | ||
+ | |style="background:rgb(255,255,255);color:red" | r | ||
+ | |style="background:rgb(255,255,255);color:red" | r | ||
+ | |style="background:rgb(255,255,255);color:red" | r | ||
|} | |} | ||
Palettes generally contain a number of colors that's a multiple of 256. This is because the palette is split up into 256-color 'pages' internally. So the first color is page 0/color 0. Color 256 is page 1/color 0. Color 628 is page 2/color 116. You'll see why in the [[FF7/Field/Background|background]] section. | Palettes generally contain a number of colors that's a multiple of 256. This is because the palette is split up into 256-color 'pages' internally. So the first color is page 0/color 0. Color 256 is page 1/color 0. Color 628 is page 2/color 116. You'll see why in the [[FF7/Field/Background|background]] section. |
Revision as of 14:16, 27 May 2010
Section 4: Palette (Terence Fergusson & myst6re)
The following is an overview of the palette data.
Section 4 Format
Offset | Size | Description |
---|---|---|
0x00 | 4 bytes | Length (Repeat of previous length header) |
0x04 | 2 bytes | Unknown (often blank) |
0x06 | 2 bytes | Unknown |
0x08 | 2 bytes | Number of colors in palette |
0x0A | 2 bytes | Number of palettes |
0x0C | (Number of palettes) * (Number of colors in palette) * 2 | Palette data |
After the first length indicator comes another integer, also indicating length. Useless, but it's there. Then there's one more integer; unknown purpose. Then two bytes; unknown (blank often). Then two bytes again; unknown (always 480). Then two bytes; number of colors in the palette (always 256). Then two bytes; number of palettes. Then the actual palette data.
Each palette entry is a 16-bit color. This is unusual - normally palettes store as high quality data as possible, usually 24/32 bit. However since FF7 only ever runs in 16 bit I guess there isn't much point storing any other kind of data. Actually, the data is 15-bit (1 mask bit, 5-bit Blue, 5-bit Green and 5-bit Red).
Palette Data | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mask | Blue | Green | Red (LSB) | ||||||||||||
m | b | b | b | b | b | g | g | g | g | g | r | r | r | r | r |
Palettes generally contain a number of colors that's a multiple of 256. This is because the palette is split up into 256-color 'pages' internally. So the first color is page 0/color 0. Color 256 is page 1/color 0. Color 628 is page 2/color 116. You'll see why in the background section.