Difference between revisions of "FF7/Field/Palette"

From Final Fantasy Inside
< FF7‎ | Field
Jump to navigation Jump to search
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)" | 2 bytes
+
|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)" | 0x02
+
|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
 
|-
 
|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,204)" | Unknown (often blank)  
 
|-
 
|-
|style="background:rgb(255,255,255)" | 0x05
+
|style="background:rgb(255,255,204)" | 0x06
|style="background:rgb(255,255,255)" | 4 bytes
+
|style="background:rgb(255,255,204)" | 2 bytes
|style="background:rgb(255,255,255)" | Number of colors in palette
+
|style="background:rgb(255,255,204)" | Unknown
 
|-
 
|-
|style="background:rgb(255,255,204)" | 0x09
+
|style="background:rgb(255,255,255)" | 0x08
|style="background:rgb(255,255,204)" | 1 byte
+
|style="background:rgb(255,255,255)" | 2 bytes
|style="background:rgb(255,255,204)" | Unknown (often blank)
+
|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)" | Varies
+
|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 one byte; unknown (blank often).
+
Then two bytes; 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.
+
Then two bytes again; unknown (always 480).
One more byte; unknown (blank often).
+
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 Red, 5-bit Green, 5-bit Blue, and 1 mask 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" | Red
+
|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" | Blue
+
|style="background:rgb(255,255,255)" colspan="5" | Red (LSB)
|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
 
|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.