From WiiBrew
< /title‎ | 00000001‎ | 00000002‎ | data
Jump to navigation Jump to search

Each channel/save/vc-game you have on your Wii has its own entry in this file. For more information about the TMD-format, and documentation on some offsets found here (I kept the same names), see TMD File Structure. Each entry has the following syntax: (in C-structs, because they're easy to handle)

 typedef struct {
      u32 unknown; // Always 0x0100
      u32 title_id; // Content ID, output as: char [4]
      u32 unknown2; // Unknown, seen values: 0x0208 (index?)
      u32 padding [32];
      u32 sig_type; // Unknown, seen values: 0x010001 (sig_type maybe)
      u8 sig [256]; // Signature
      u32 padding2 [15];
      u8 issuer[26]; // Syntax: Root-CA%08x-CP%08x
      u32 padding3 [10];
      u32 unknown3; // Always 0x04000100
      u32 title_id2; // Content ID, again
      u32 title_type; // 0x01 when cid2[0] == 'R' or when cid[0] == '.\0'. It's 0x00 if cid[0] == '1'.
      u16 group_id; // 0x200 or 0x300 if cid2[0] == '.\0', 0x400 when cid2[0] == '1'.
          //If cid[0] == 'R', this is usally a number (in ASCII), but it can contain letters, I have seen one 'D'.
      u32 unknown [6]; // Really wierd, includes "Egg" quite often.
      u32 final_padding [6];
 } tmds-entry;

The issuer is always Root-CA1-CP4 here.

Please feel free to improve the contents of this page. I could use your thoughts.