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

Title

From WiiBrew
Jump to navigation Jump to search

A title is an executable installed on the Wii, installed to /title. Titles include the System Menu, IOS, and channels. Each title has a TMD and a ticket that are used for installation and launching. Titles have their contents stored as separate files in a common directory.

While boot2 is stored in WAD format, it is not installed to /title, instead being installed to the first few blocks of the NAND.

Discs are also treated as titles, as they have their own title ID used for save data, as well as an installable channel if they have one.

Title IDs

A Title-ID is a 64-bit number that uniquely identifies a title. The high 32 bits are used to indicate the type of title, and the low 32 bits are used to identify the particular title. The title is installed to /title/HIGHBITS/LOWBITS/.

By convention, a Title-ID may either be written as 16 hex digits (e.g. 0000000100000002 or 00010000525a4445) or in two hexadecimal or ASCII parts (e.g. 1-2 or 10000-RZDE). The ASCII part is often written alone, due to there being no ambiguity with the other high 32 bits.

Types of titles

The upper half of each title ID identifies the type of the title.

An upper half of 1 indicates that this is a system title. This is given to boot2, the System Menu, every IOS, BC, MIOS, BC-NAND, and BC-WFS.

Channels come in multiple types; built in ones use 00010002, while ones from the Wii Shop Channel use 00010001. However, this only applies to channels; DLC uses 00010005. Most discs use 00010000, although discs that install channels, as well as the channels installed by those discs, use 00010004.

Finally, titles used internally but are not as essential as system titles, such as rgnsel, use 00010008. These titles behave much like channels, but they are not visible on the System Menu.

Launching

Titles are handled by the ES module of IOS. Titles can be launched with the ES_LaunchTitle call, which requires a title ID and a ticket. Signatures are not checked in this case, as it is assumed they are valid if the title got installed to the NAND.

Filesystem

Files related to title A-B are stored under /title/A/B/, where A and B are in hex, padded to 16 characters with leading zeros. The following locations exist:

/content/title.tmd - the TMD for this title

/content/C.app - the content with content ID C, where C is padded like the title ID.

/data/ - save data filesystem. Exact structure depends on the title itself.

Contents

Titles are subdivided into contents, which can be referred to both by their content ID and index; while index is used for all purposes surrounding the IOS interface, the ID is used internally in the filesystem and on NUS.

In general, titles start with content indices matching the IDs, but because content IDs are independent of version, when a content requires updating, its ID is replaced with the next available ID. The newer TMD is then changed to use this new content ID for the given index.

Indices themselves are used for both the "boot index" field in the TMD, as well as the ES_OpenContent ioctl.

Types of contents

Each content has a "type" field that can have one of several values:

  • Type 0x0001 is a "normal" content.
  • Type 0x0003 is a disc hash tree. Discs do not follow normal content structure; the hash tree is their only content.
  • Type 0x4001 is used by DLC. Specific usage is unknown.
  • Type 0x8001 is shared between titles. Using this type will cause it to be installed into /shared2 instead of TITLE/content.