Difference between revisions of "GTX\GSH (File Format)"

From MK8
Jump to navigation Jump to search
Line 169: Line 169:
 
| 0x24
 
| 0x24
 
| 4
 
| 4
| '''Data Pointer'''.
+
| '''Data Pointer?'''.
 
|-
 
|-
 
| 0x28
 
| 0x28
Line 177: Line 177:
 
| 0x2C
 
| 0x2C
 
| 4
 
| 4
| '''Mipmaps Pointer'''.
+
| '''Mipmaps Pointer?'''.
 
|-
 
|-
 
| 0x30
 
| 0x30

Revision as of 11:31, 1 October 2016

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 BLK{ header followed by data specified by the block type.

Block Header

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.

Block types

Type Description
0x01 Follows this block header the End of the file.
0x02 Follows this block header padding for texture align?
0x03 (Unknown)
0x05 (Unknown)
0x06 (Unknown)
0x07 (Unknown)
0x0B Follows this block header the Image info.
0x0C Follows this block header the Image data.
0x0D Follows this block header the Mipmaps data.

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.

Formats

TODO.

Tools

The following tool can extract and generate GTX files: