Changes
Jump to navigation
Jump to search
no edit summary
=== Section 4: Palette ([[User:Terrence Ferguson|Terrence Ferguson]]) ===
The following is an overview of the palette data.
==== Section 4 Format ====
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
! style="background:rgb(204,204,204)" align="center" | Offset
! style="background:rgb(204,204,204)" align="center" | Size
! style="background:rgb(204,204,204); width: 250px" align="center" | Description
|-
|style="background:rgb(255,255,255)" | 0x00
|style="background:rgb(255,255,255)" | 2 bytes
|style="background:rgb(255,255,255)" | Length (Repeat of previous length header)
|-
|style="background:rgb(255,255,204)" | 0x02
|style="background:rgb(255,255,204)" | 2 bytes
|style="background:rgb(255,255,204)" | Unknown
|-
|style="background:rgb(255,255,204)" | 0x04
|style="background:rgb(255,255,204)" | 1 byte
|style="background:rgb(255,255,204)" | Unknown (often blank)
|-
|style="background:rgb(255,255,255)" | 0x05
|style="background:rgb(255,255,255)" | 4 bytes
|style="background:rgb(255,255,255)" | Number of colors in palette
|-
|style="background:rgb(255,255,204)" | 0x09
|style="background:rgb(255,255,204)" | 1 byte
|style="background:rgb(255,255,204)" | Unknown (often blank)
|-
|style="background:rgb(255,255,255)" | 0x0A
|style="background:rgb(255,255,255)" | Varies
|style="background:rgb(255,255,255)" | 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 one byte; unknown (blank often).
Then a word; number of colors in the palette plus one. No idea why. You can work numcolors out from the section length, but FF7 stores it anyway; why add one? Dunno.
One more byte; unknown (blank often).
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 Red, 5-bit Green, 5-bit Blue, and 1 mask bit).
{| 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(255,255,255)" colspan="5" | Red
|style="background:rgb(255,255,255)" colspan="5" | Green
|style="background:rgb(255,255,255)" colspan="5" | Blue
|style="background:rgb(255,255,255)" colspan="1" | Mask
|-
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" align="center" | m
|}
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.
The following is an overview of the palette data.
==== Section 4 Format ====
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
! style="background:rgb(204,204,204)" align="center" | Offset
! style="background:rgb(204,204,204)" align="center" | Size
! style="background:rgb(204,204,204); width: 250px" align="center" | Description
|-
|style="background:rgb(255,255,255)" | 0x00
|style="background:rgb(255,255,255)" | 2 bytes
|style="background:rgb(255,255,255)" | Length (Repeat of previous length header)
|-
|style="background:rgb(255,255,204)" | 0x02
|style="background:rgb(255,255,204)" | 2 bytes
|style="background:rgb(255,255,204)" | Unknown
|-
|style="background:rgb(255,255,204)" | 0x04
|style="background:rgb(255,255,204)" | 1 byte
|style="background:rgb(255,255,204)" | Unknown (often blank)
|-
|style="background:rgb(255,255,255)" | 0x05
|style="background:rgb(255,255,255)" | 4 bytes
|style="background:rgb(255,255,255)" | Number of colors in palette
|-
|style="background:rgb(255,255,204)" | 0x09
|style="background:rgb(255,255,204)" | 1 byte
|style="background:rgb(255,255,204)" | Unknown (often blank)
|-
|style="background:rgb(255,255,255)" | 0x0A
|style="background:rgb(255,255,255)" | Varies
|style="background:rgb(255,255,255)" | 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 one byte; unknown (blank often).
Then a word; number of colors in the palette plus one. No idea why. You can work numcolors out from the section length, but FF7 stores it anyway; why add one? Dunno.
One more byte; unknown (blank often).
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 Red, 5-bit Green, 5-bit Blue, and 1 mask bit).
{| 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(255,255,255)" colspan="5" | Red
|style="background:rgb(255,255,255)" colspan="5" | Green
|style="background:rgb(255,255,255)" colspan="5" | Blue
|style="background:rgb(255,255,255)" colspan="1" | Mask
|-
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | r
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | g
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" | b
|style="background:rgb(255,255,255)" align="center" | m
|}
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.