In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Changes

Jump to navigation Jump to search
8,591 bytes removed ,  23:33, 22 October 2008
m
no edit summary
Line 3: Line 3:  
== Nintendo Wii Title-Metadata (tmd) file structure ==
 
== Nintendo Wii Title-Metadata (tmd) file structure ==
   −
A "title" is a standalone entity -- a game, a channel, etc.  Titles can be made up of multiple "contents". (Don't ask me. I just work here.)
+
A "title" is a standalone entity -- a game, a channel, etc.  Titles can be made up of multiple "contents".
 
   
 
   
 
Many operations are done in terms of 64-byte blocks, which means you will often see padding out to the nearest 64-byte boundary at the end of a field.
 
Many operations are done in terms of 64-byte blocks, which means you will often see padding out to the nearest 64-byte boundary at the end of a field.
Line 9: Line 9:  
=== TMD file structure ===
 
=== TMD file structure ===
 
==== Header ====
 
==== Header ====
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
+
! Length
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
+
| 0x000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Signature type
+
| Signature type
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x004
+
| 0x004
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 256
+
| 256
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Signature
+
| Signature
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x104
+
| 0x104
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 60
+
| 60
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Padding modulo 64
+
| Padding modulo 64
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x140
+
| 0x140
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64
+
| 64
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Issuer
+
| Issuer
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x180
+
| 0x180
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Version
+
| Version
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x181
+
| 0x181
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ca_crl_version
+
| ca_crl_version
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x182
+
| 0x182
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | signer_crl_version
+
| signer_crl_version
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x183
+
| 0x183
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Padding modulo 64
+
| Padding modulo 64
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x184
+
| 0x184
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
+
| 8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | System Version
+
| System Version
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x18C
+
| 0x18C
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
+
| 8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Title ID
+
| Title ID
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x194
+
| 0x194
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Title type
+
| Title type
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x198
+
| 0x198
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Group ID
+
| Group ID
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x19A
+
| 0x19A
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 62
+
| 62
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | reserved
+
| reserved
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1D8
+
| 0x1D8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Access rights
+
| Access rights
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1DC
+
| 0x1DC
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Title version
+
| Title version
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1DE
+
| 0x1DE
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Number of contents (nbr_cont)
+
| Number of contents (nbr_cont)
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1E0
+
| 0x1E0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | boot index
+
| boot index
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1E2
+
| 0x1E2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Padding modulo 64
+
| Padding modulo 64
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1E4
+
| 0x1E4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 36*nbr_cont
+
| 36*nbr_cont
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Contents
+
| Contents
 
|}
 
|}
 
==== Content ====
 
==== Content ====
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
+
! Length
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x00
+
| 0x00
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Content ID
+
| Content ID
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x04
+
| 0x04
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Index
+
| Index
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x06
+
| 0x06
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 2
+
| 2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Type
+
| Type
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x08
+
| 0x08
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 8
+
| 8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Size
+
| Size
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x10
+
| 0x10
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 20
+
| 20
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | SHA1 hash
+
| SHA1 hash
 
|}
 
|}
 +
 
==== Certificates ====
 
==== Certificates ====
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
{| class="wikitable"
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Start'''
+
! Start
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccc;" | '''Length'''
+
! Length
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''Description'''
+
! Description
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x000
+
| 0x000
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Signature type
+
| Signature type
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x004
+
| 0x004
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 256
+
| 256
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Signature
+
| Signature
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x104
+
| 0x104
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 32
+
| 32
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Issuer
+
| Issuer
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x124
+
| 0x124
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 4
+
| 4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Tag
+
| Tag
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x128
+
| 0x128
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64
+
| 64
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Name
+
| Name
|- style="background-color: #ddd;"
+
|-
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x168
+
| 0x168
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" |  
+
|  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Key
+
| Key
 
|}
 
|}
  
2,375

edits

Navigation menu