Difference between revisions of "FTEX (File Format)"
m (→Header (FTEX))
|Line 104:||Line 104:|
Revision as of 08:45, 8 April 2017
The FTEX texture format is a format for textures which appears as a subfile of a BFRES file.
Every FTEX file begins with an 0xC0 byte FTEX header that starts with the file identifier, followed by info about the image.
|0x00||4||"FTEX" File identifier, ASCII string.|
|0x04||4||Dimension. Indicates the "shape" of a given surface or texture (see line 849 here).|
|0x08||4||Texture Width. Width of the texture in pixels.|
|0x0C||4||Texture Height. Height of the texture in pixels.|
|0x14||4||Number of Mipmaps.|
|0x18||4||Texture Format. Go to line 589 on this page for explanation and format values.|
|0x1C||4||AA Mode. Indicates the AA mode (number of samples) for the surface (see line 865 here).|
|0x20||4||Usage. Indicates how the given surface may be used (see line 823 here).|
|0x24||4||Data Length. Length of texture data in bytes.|
|0x2C||4||Mipmaps Data Length. Length of mipmaps data in bytes.|
|0x34||4||Tile Mode. Indicates the desired tiling mode for the surface (see line 795 here).|
|0x3C||4||Alignment. Always 512 * bytes per pixel.|
|0x44||0x0D||Mip Offset. Offset for each mipmap?|
|0x51||0x2B||Unknown. Mipmaps related. (Always 0 in textures with no mipmaps)|
|0x7C||4||Number of Mipmaps. Again...|
|0x80||4||Unknown. Always 0.|
|0x84||4||Unknown. Always 1.|
|0x88||4||Unknown. Always 0x00010203. (Is this some kind of a pattern? 00->01->02->03)|
|0xB0||4||Data Offset. Offset to the texture data. Relative to this field.|
|0xB4||4||Mipmap Offset. Offset to the mipmap texture data. Relative to this field. 0 if not present.|
|0xC0||End of FTEX header|
Incomplete header documentation. Last 8 words (32 bytes) seem to change per file. Offset 160 (dec) from FTEX header always seems to be zero, followed by a single byte (value of 1), 3 padding bytes, then a relative offset to the string table, then a relative offset to UnknownDataA, a relative offset to UnknownDataB, a relative offset to unknown DataC, and then two more unknowns (usually zero).