OpenKh

This is a centralized place for the documentation and other discoveries about the internal working of Kingdom Hearts games.

View on GitHub

TXA Format

TXA stands for TeXture Animation.

This file contains the list of possible states a model’s textures can take. This is usually used to change the facial expression of a low poly version of a character.

Fields marked Reserved are used by the engine and should be 0 in the file.

Offset Type Description
0x0 char[4] File identifier, always TXA. Null terminated.
0x4 uint16 File version 1
0x6 uint16 Group Count
0x8 uint32[2] Padding

Anim Group

The Anim Groups immediatly follow the header.

Offset Type Description
0x0 char[16] Group Name
0x10 char[24] Destination Texture Name
0x28 uint32 Reserved
0x2C int16 Destination Height
0x2E int16 Destination Width
0x30 int16 Anim Count
0x32 int16 Default Anim
0x34 uint32 Offset of Anim Data

Anim

Offset Type Description Notes
0x0 char[16] Anim Name  
0x10 int16 Unkown Seems to always be -1 * frame count
0x12 int16 Frame Count  
0x14 uint32 Offset of Frame Data  

Frame

Offset Type Description Notes
0x0 uint32 Offset of Pixel Data If this is zero, this frame is the original texture
0x4 int16 Unknown These 2 seem to be related to how long the frame lasts
0x6 int16 Unknown  
0x8 int8 Reserved  
0x9 uint8 Reserved  
0xA int16 Padding  

Usage

A frame is applied by more or less pasting it’s pixel data over the destination texture. Note that the destination texture is needed to know the pixel format and thus the size of the data.

Either square textures or “LIP” animations (it is not currently certain which, although it’s assumed to be “square textures”) are ‘twiddled’ in a simmilar way that the mtx file from a Font Arc is.