109
edits
Changes
From Final Fantasy Inside
→Sections 1 to N-2: 3D Geometry
|-
| style="vertical-align: top; text-align: center" | ...<br />
| style="vertical-align: top" | 8 N * 20 bytes<br />| style="vertical-align: top" | First quad vertex indices (4 × uint16) Textured Quads <nowiki>if quad count N = 0 these occupy no space</nowiki><br />
|-
| style="vertical-align: top; text-align: center" | ...<br />
| style="vertical-align: top" | N * 20 8 bytes<br />| style="vertical-align: top" | Textured Quad records <nowiki>if N = Unknown/padding (always 0 these occupy no space</nowiki>)<br />
|}
typedef struct
{
PolyIndices Vertices;
uint8 U0, V0;
uint16 CLUT;
uint8 U3, V3;
uint16 Flags;
'''Vertex Structure'''
|}
'''Textured Quad Record Structure (20 bytes)''' Quad data uses an interleaved layout where UV data and vertex indices are offset by one record.
{| style="text-align: left; width: 500px" border="1" cellpadding="2"
|-
| style="width: 76px; vertical-align: middle; text-align: center" | 000000<br />
| style="vertical-align: top" | 8 bytes<br />
| style="vertical-align: top" | 4× vertex byte offsets (uint16, divide by 8 for vertex index)<br />
|-
| style="width: 76px; vertical-align: middle; text-align: center" | 000008<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | U0 coordinate (for previous quad)<br />
|-
| style="width: 76px; vertical-align: middletop; text-align: center" | 000001000009<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | V0 coordinate (for previous quad)<br />
|-
| style="vertical-align: top; text-align: center" | 00000200000A<br />
| style="vertical-align: top" | 2 bytes (word)<br />
| style="vertical-align: top" | CLUT attribute (palette selector)<br />
|-
| style="vertical-align: top; text-align: center" | 00000400000C<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | U1 coordinate<br />
|-
| style="vertical-align: top; text-align: center" | 00000500000D<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | V1 coordinate<br />
|-
| style="vertical-align: top; text-align: center" | 00000600000E<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | U2 coordinate<br />
|-
| style="vertical-align: top; text-align: center" | 00000700000F<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | V2 coordinate<br />
|-
| style="vertical-align: top; text-align: center" | 000008000010<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | U3 coordinate<br />
|-
| style="vertical-align: top; text-align: center" | 000009000011<br />
| style="vertical-align: top" | 1 byte<br />
| style="vertical-align: top" | V3 coordinate<br />
|-
| style="vertical-align: top; text-align: center" | 00000A000012<br />
| style="vertical-align: top" | 2 bytes (word)<br />
| style="vertical-align: top" | Flags (typically 0x007F)<br />
|}
==== Common section contents ====