FF8/Menu sp2
by MaKi
updated by Sebanisu
This file is a mapping file for atlas textures like icons.tex
Contents
Layout of icon.sp1:
Header
(4 x (PointerCount + 1)) bytes
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | UInt32 | PointerCount | Number of entries |
4 | Struct Pointer[PointerCount] | Pointers | Seek locations for entry groups |
Pointer
4 bytes
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | UInt16 | Pointer | Seek location for entry group |
2 | UInt16 | Count | Number of entries in group |
Entry Group
(8 x Count) bytes
At pointer's location there will be Struct Entry[Count]. Example of an entry group is the direction pad is in eight pieces. Four of them are unpressed and four are pressed versions. It has four entries for the direction pad depending on the directions it is highlighting.
Entry
8 bytes
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | Byte | xPos | Pixel X coordinate in image atlas |
1 | Byte | yPos | Pixel Y coordinate in image atlas |
2 | Byte[2] | UNK | Unknown data |
4 | Byte | Width | Width of entry in pixels |
5 | Byte | Offset X | Offset of X coordinate for when drawing |
6 | Byte | Height | Height of entry in pixels |
7 | Byte | Offset Y | Offset of Y coordinate for when drawing |
Invalid Entries will have X and Y of zero. The top 16x16 pixel area is blank. Everything in icon.tex is aligned to a 8x8 grid. Some entry groups leave out connecting pieces I think you are expected to fill in the blank. Some things like the menu border and menu background don't appear to be listed in this file.
End of file
Everything at and beyond file pointer 4272 {0x10C0} appears to be garbage.
Layout of face.sp2:
Header
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | UInt32 | Count | Number of entries
Count can be more than the actual images in the texture. |
4 | UInt32[Count] | Locations | Seek location for each entry |
Entry
16 bytes
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | UInt32 | Count | Number of entries at this location
Always 1 |
4 | byte | xPos | Pixel X coordinate in image atlas |
5 | byte | yPos | Pixel Y coordinate in image atlas
Invalid entries seem to have yPos>=Texture.Height. |
6 | byte[2] | UNK | Unknown
{0x20,0x36} on the valid entries. {0x60,0x36} on invalid entries. |
8 | UInt16 | Width | Width of entry in pixels
Possible this is really a byte with a 0 x offset. |
10 | UInt16 | Height | Height of entry in pixels
Possible this is really a byte with a 0 y offset. |
12 | byte[4] | UNK | Unknown
{0x00,0x00,0x8E,0x00} on most. Last one has all {0x00} |
End of file
File ends with byte[16] of {0x00}
Content of face1.tex and face2.tex
Name | File | X | Y | Width | Height |
---|---|---|---|---|---|
Squall Leonhart | face1.tex | 0 | 0 | 32 | 48 |
Zell Dincht | face1.tex | 32 | 0 | 32 | 48 |
Irvine Kinneas | face1.tex | 64 | 0 | 32 | 48 |
Quistis Trepe | face1.tex | 96 | 0 | 32 | 48 |
Rinoa Heartilly | face1.tex | 128 | 0 | 32 | 48 |
Selphie Tilmitt | face1.tex | 160 | 0 | 32 | 48 |
Seifer Almasy | face1.tex | 192 | 0 | 32 | 48 |
Edea Kramer | face1.tex | 224 | 0 | 32 | 48 |
Laguna Loire | face1.tex | 0 | 48 | 32 | 48 |
Kiros Seagill | face1.tex | 32 | 48 | 32 | 48 |
Ward Zabac | face1.tex | 64 | 48 | 32 | 48 |
Lion | face1.tex | 128 | 48 | 32 | 48 |
MiniMog | face1.tex | 160 | 48 | 32 | 48 |
Boko | face1.tex | 192 | 48 | 32 | 48 |
Angelo | face1.tex | 224 | 48 | 32 | 48 |
Quezacotl | face2.tex | 0 | 0 | 32 | 48 |
Shiva | face2.tex | 32 | 0 | 32 | 48 |
Ifrit | face2.tex | 64 | 0 | 32 | 48 |
Siren | face2.tex | 96 | 0 | 32 | 48 |
Brothers | face2.tex | 128 | 0 | 32 | 48 |
Diablos | face2.tex | 160 | 0 | 32 | 48 |
Carbuncle | face2.tex | 192 | 0 | 32 | 48 |
Leviathan | face2.tex | 224 | 0 | 32 | 48 |
Pandemona | face2.tex | 0 | 48 | 32 | 48 |
Cerberus | face2.tex | 32 | 48 | 32 | 48 |
Alexander | face2.tex | 64 | 48 | 32 | 48 |
Doomtrain | face2.tex | 96 | 48 | 32 | 48 |
Bahamut | face2.tex | 128 | 48 | 32 | 48 |
Cactuar | face2.tex | 160 | 48 | 32 | 48 |
Tonberry | face2.tex | 192 | 48 | 32 | 48 |
Eden | face2.tex | 224 | 48 | 32 | 48 |
There is one blank space in face1.tex, I skipped that entry.