FF8/Menu sp2
by MaKi
This file is a mapping file for atlas textures like icons.tex
Contents
STRUCTURE
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | uint | pointerCount | count of entry pointers |
4 | uint | entryPointer | absolute pointer to entry |
8 + pointerCount | 16 bytes | Entry | Entry Data |
ENTRY
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | uint | UNK3 | UNKNOWN |
4 | byte | xPos | Pixel X coordinate in image atlas |
5 | byte | yPos | Pixel Y coordinate in image atlas |
6 | ushort (??) | UNK | Unknown- is that a bottom right pixel? |
8 | uint (??) | UNK | Unknown- maybe a width/height? |
12 | uint | UNK | Unknown- no idea. Maybe CLUT indexer somewhere? |
WIP- there's a lot of trash here... 80 20 a0 c0 28 (f8) (10) 00 00 00 a0 c0 (08) 00 (08) 00
look- f8 and 10 are x and y and 08 and 08 are width x height- this one is fine with what is represented in the image, but it's totally different for face.sp2
Layout of icon.sp1:
Header
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | UInt32 | PointerCount | Number of entries |
4 | Struct Pointer[PointerCount] | Pointers | Seek locations for entry groups |
Pointer
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | UInt16 | Pointer | Seek location for entry group |
2 | UInt16 | Count | Number of entries in group |
EntryGroup
At pointer's location there will be Struct Entry[Count]
Entry
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.
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
Offset | SizeOf | Name | Description |
---|---|---|---|
0 | byte[4] | UNK | Unknown
{0x01,0x00,0x00,0x00} |
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 zero x offset. |
10 | UInt16 | Height | Height of entry in pixels
Possible this is really a byte with a zero 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.