GTX\GSH (File Format)

From MK8
Revision as of 18:34, 2 September 2016 by Aboood40091 (Talk | contribs)

Jump to: navigation, search

The GTX texture format is a type of the GFD texture format which is used in various Wii U games, including MK8.

Header (GTX)

Every GTX file begins with an 0x20 byte Gfx2 header.

Offset Size Description
0x00 4 "Gfx2" File identifier, ASCII string.
0x04 4 Size of header in bytes. Must match exactly, or header (and hence file) is unreadable.
0x08 4 Major version number. Must match exactly or header is unreadable.
0x0C 4 Minor version number. Will warn if lower.
0x10 4 GPU version for which this file is designed for.
0x14 4 Align mode.
0x18 4 Padding?. Always 0x00.
0x1C 4 Padding?. Always 0x00.
0x20 End of Gfx2 header.

Blocks

After the header comes some blocks, blocks contain a 0x20 byte Block header followed by some data.

Offset Size Description
0x00 4 "BLK{" Header of the block, ASCII string.
0x04 4 Size of block header in bytes.
0x08 4 Major version number. Must match exactly or header is unreadable.
0x0C 4 Minor version number. Will warn if lower.
0x10 4 Block type, it determines the type of the following data.
0x14 4 Size of the following data. In bytes, always 0x9C if the block type is 0x0B.
0x18 4 A unique identifier for this block, allowing it to be referenced by other blocks
0x1C 4 An incrementing index for each instance of a given type.

Image info

The image info directly follows the block header that has a block type 0x0B:

Offset Size Description
0x00 4 Dimension. Indicates the "shape" of a given surface or texture (see line 849 here).
0x04 4 Texture Width. Width of the texture in pixels.
0x08 4 Texture Height. Height of the texture in pixels.
0x0C 4 Depth
0x10 4 Number of Mipmaps
0x14 4 Texture Format. Go to line 589 on this page for explanation and format values.
0x18 4 AA Mode. Indicates the AA mode (number of samples) for the surface (see line 865 here).
0x1C 4 Usage. Indicates how the given surface may be used (see line 823 here).
0x20 4 Data Length. Length of texture data in bytes.
0x24 4 Data Pointer.
0x28 4 Mipmaps Data Length. Length of mipmaps data in bytes.
0x2C 4 Mipmaps Pointer.
0x30 4 Tile Mode. Indicates the desired tiling mode for the surface (see line 795 here).
0x34 4 Swizzle Value
0x38 4 Alignment
0x3C 4 Pitch
0x44 0x5C unknown

Image data

The image data directly follows the block header that has a block type 0x0C.

Mipmaps data

The mipmaps data directly follows the block header that has a block type 0x0D.

Formats

TODO.

Tools

The following tool can extract and generate GTX files: