TXD: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
m (typo)
(restructure and use sections)
Line 1: Line 1:
Renderware TeXture Dictionary. Used by the Renderware Game Engine, which is used by games like ''Grand Theft Auto: San Andreas'', ''Sonic The Hedgehog'' and ''NRL Rugby League''. The format has undergone some changes over the years. The one described here is that in use by ''Grand Theft Auto: San Andreas''. Other versions might be slightly different.
Renderware TeXture Dictionary. Used by the Renderware Game Engine, which is used by games like ''Grand Theft Auto: San Andreas'', ''Sonic The Hedgehog'' and ''NRL Rugby League''. The format has undergone some changes over the years. The one described here is that in use by ''Grand Theft Auto: San Andreas''. Other versions might be slightly different.
==Generic chunk lay-out==


TXD files consist of chunks and sub-chunks, which are really just chunks encapsulated in the data field of other chunks. All chunks have the following basic structure:
TXD files consist of chunks and sub-chunks, which are really just chunks encapsulated in the data field of other chunks. All chunks have the following basic structure:
Line 10: Line 12:
  } txd_chunk_t
  } txd_chunk_t


The following chunks are known:
==Known chunks==


  typedef struct txd_file_s {
  typedef struct txd_file_s {
Line 65: Line 67:
  } txd_extra_info_t;
  } txd_extra_info_t;


The basic file structure is (indentation means the chunks are sub-chunks):
==Basic file structure==
 
Indentation means the chunks are sub-chunks (see above):


* txd_file_t
* txd_file_t
Line 78: Line 82:
** txd_extra_info_t
** txd_extra_info_t


Notes:
==Notes==


* Chunk id's are scope-dependent. For example, within the ''txd_file_t'' chunk, a chunk with id 0x01 is a ''txd_info_t'' chunk, but within a ''txd_texture_t'' chunk, id 0x01 is used by ''txd_texture_data_t'' chunks.
* Chunk id's are scope-dependent. For example, within the ''txd_file_t'' chunk, a chunk with id 0x01 is a ''txd_info_t'' chunk, but within a ''txd_texture_t'' chunk, id 0x01 is used by ''txd_texture_data_t'' chunks.
[[Category: Container Formats]]
[[Category: Game Formats]]

Revision as of 06:25, 30 April 2007

Renderware TeXture Dictionary. Used by the Renderware Game Engine, which is used by games like Grand Theft Auto: San Andreas, Sonic The Hedgehog and NRL Rugby League. The format has undergone some changes over the years. The one described here is that in use by Grand Theft Auto: San Andreas. Other versions might be slightly different.

Generic chunk lay-out

TXD files consist of chunks and sub-chunks, which are really just chunks encapsulated in the data field of other chunks. All chunks have the following basic structure:

typedef struct txd_chunk_s {
 uint32_t id;
 uint32_t chunk_size;       // does not include id, chunk_size and marker
 uint32_t marker;           // 0x1803ffff
 uint8_t  data[chunk_size];
} txd_chunk_t

Known chunks

typedef struct txd_file_s {
 uint32_t id;               // 0x16 (22)
 uint32_t chunk_size        // file_size - 12
 uint32_t marker;
 uint8_t  data[chunk_size];
}
typedef struct txd_info_s {
 uint32_t id;               // 0x01 (1)
 uint32_t chunk_size;       // 0x04 (4)
 uint32_t marker;
 uint16_t count;            // number of textures in the dictionary
 uint16_t unknown;
} txd_info_t;
typedef struct txd_texture_s {
 uint32_t id;               // 0x15 (21)
 uint32_t chunk_size;
 uint32_t marker;
 uint8_t  data[chunk_size];
} txd_texture_t;
typedef struct txd_texture_data_s {
 uint32_t id;                         // 0x01 (1)
 uint32_t chunk_size;
 uint32_t marker;
 uint32_t filter_flags;
 char     texture_name[32];
 char     alpha_name[32];
 uint32_t alpha_flags;
 uint32_t direct3d_texture_format;    // "DXT1", "DXT3"
 uint16_t width;
 uint16_t height;
 uint8_t  depth;
 uint8_t  mipmap_count;
 uint8_t  texcode_type;
 uint8_t  flags;
 uint8_t  palette[depth==8 ? 256 * 4 : 0];
 uint32_t data_size;
 uint8_t  data[data_size];
 struct mipmaps_s {
  uint32_t data_size;
  uint8_t  data[data_size];
 } mipmaps[mipmap_count - 1];
} txd_texture_data_t;
typedef struct txd_extra_info_s {
 uint32_t id;               // 0x03 (3)
 uint32_t chunk_size;
 uint32_t marker;
 uint8_t  data[chunk_size];
} txd_extra_info_t;

Basic file structure

Indentation means the chunks are sub-chunks (see above):

  • txd_file_t
    • txd_info_t
    • txd_texture_t
      • txd_texture_data_t
      • txd_extra_info_t
    • txd_texture_t
      • txd_texture_data_t
      • txd_extra_info_t
    • ...
    • txd_extra_info_t

Notes

  • Chunk id's are scope-dependent. For example, within the txd_file_t chunk, a chunk with id 0x01 is a txd_info_t chunk, but within a txd_texture_t chunk, id 0x01 is used by txd_texture_data_t chunks.