// Texture Format (2xtc / ctx2) - THQ Australia Engine // Contains texture/image data // Big-endian (Xbox 360, Wii) type thqa_ctx2 [display="THQA Texture"] byteorder BE { criteria { require ascii(bytesat(0, 4)) == "2xtc"; } // Header magic = ascii(read(4)); ui("magic", "Magic"); u32 version; ui("version", "Version"); u32 width; ui("width", "Width"); u32 height; ui("height", "Height"); // Format info u32 texture_format; ui("texture_format", "Format"); u32 mipmap_count; ui("mipmap_count", "Mipmap Count"); u32 flags; ui("flags", "Flags"); // Data info u32 data_offset; ui("data_offset", "Data Offset"); u32 data_size; ui("data_size", "Data Size"); // Decode format type format_name = "Unknown"; if (texture_format == 0x00) { format_name = "RGBA8888"; } if (texture_format == 0x01) { format_name = "RGB888"; } if (texture_format == 0x02) { format_name = "DXT1"; } if (texture_format == 0x03) { format_name = "DXT3"; } if (texture_format == 0x04) { format_name = "DXT5"; } if (texture_format == 0x52) { format_name = "Xbox360 DXT1"; } if (texture_format == 0x53) { format_name = "Xbox360 DXT3"; } if (texture_format == 0x54) { format_name = "Xbox360 DXT5"; } format_name = format_name; ui("format_name", "Format Name"); // Read texture data if (data_offset > 0 && data_size > 0) { seek(data_offset); texture_data = read(data_size); ui("texture_data", "Texture Data"); } }