Difference between revisions of "FF7/Field/Palette"

From Final Fantasy Inside
< FF7‎ | Field
Jump to navigation Jump to search
my_wiki>Myst6re
(Many corrections)
my_wiki>Myst6re
Line 14: Line 14:
 
|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)" | 0x04
+
|style="background:rgb(255,255,255)" | 0x04
|style="background:rgb(255,255,204)" | 2 bytes
+
|style="background:rgb(255,255,255)" | 2 bytes
|style="background:rgb(255,255,204)" | Unknown (often blank)
+
|style="background:rgb(255,255,255)" | PalX
 
|-
 
|-
|style="background:rgb(255,255,204)" | 0x06
+
|style="background:rgb(255,255,255)" | 0x06
|style="background:rgb(255,255,204)" | 2 bytes
+
|style="background:rgb(255,255,255)" | 2 bytes
|style="background:rgb(255,255,204)" | Unknown
+
|style="background:rgb(255,255,255)" | PalY
 
|-
 
|-
 
|style="background:rgb(255,255,255)" | 0x08
 
|style="background:rgb(255,255,255)" | 0x08
Line 35: Line 35:
 
|}
 
|}
  
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.<br />
Then there's one more integer; unknown purpose.
+
Then two bytes; palX, useful for the PS version only (always 0).<br />
Then two bytes; unknown (blank often).
+
Then two bytes again; palY, useful for the PS version only (always 480).<br />
Then two bytes again; unknown (always 480).
+
Then two bytes; number of colors in the palette (always 256).<br />
Then two bytes; number of colors in the palette (always 256).
+
Then two bytes; number of palettes.<br />
Then two bytes; number of palettes.
 
 
Then the actual palette data.
 
Then the actual palette data.
  

Revision as of 00:05, 2 June 2013

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 PalX
0x06 2 bytes PalY
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 two bytes; palX, useful for the PS version only (always 0).
Then two bytes again; palY, useful for the PS version only (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.