-
Notifications
You must be signed in to change notification settings - Fork 16
FST
Ian Burgwin edited this page Jan 5, 2018
·
15 revisions
FST, "Filesystem Table", is the format that Wii U title contents are stored in. Used for digital and disc contents.
Some information from the WiiUBrew FST page, some from cdecrypt with assistance from MarcusD. Numbers are big-endian.
Python parser and extractor can be found at wiiu_extract.py. Decryptor can be found at wiiu_decrypt.py.
| Offset | Size | Description |
|---|---|---|
0x0
|
0x4
|
'FST\0' magic
|
0x4
|
0x4
|
Unknown, usually 0x20 (size of entries in secondary header). Seen as 0x1 for things like OSv10.
|
0x8
|
0x4
|
Amount of entries in secondary header |
0xC
|
0x14
|
Unused |
Lists contents. Index corresponds with an entry in the TMD content chunk records.
| Offset | Size | Description |
|---|---|---|
0x0
|
0x4
|
Offset in 0x8000(32768) sectors (e.g. 0x2 = 0x10000). Probably only useful for disc contents. Some titles like OSv10 don't seem to use this.
|
0x4
|
0x4
|
Related to size - TODO: put more details here |
0x8
|
0x8
|
Title ID; only seems to be used for contents containing files in /content.
|
0x10
|
0x4
|
Group ID; not always used. Values can be 0x400, part of the Title ID(tid >> 8 & 0xFFFF), or something else.
|
0x14
|
0x2
|
Flags
|
0x16
|
0xA
|
Unused(all zero) |
Group ID was seen to be 0x10000 in Nintendo Land disc FST, despite tid being 0005000010102000. System titles seem to be limited to nothing/0x400.
| Offset | Size | Description |
|---|---|---|
0x0
|
0x8
|
Unknown, probably unused |
0x8
|
0x4
|
Total file entries |
0xC
|
0x4
|
Unknown, probably unused |
| Offset | Size | Description |
|---|---|---|
0x0
|
0x1
|
Type with bitmasks:
|
0x1
|
0x3
|
Name offset, relative to start of name entry table offset |
0x4
|
0x4
|
File offset, in sectors of 0x20 (e.g. 0x2 = 0x40), or bytes if (flags & 4). Non-inclusive of content hash tree.
|
0x8
|
0x4
|
File size, in bytes |
0xC
|
0x2
|
File flags with bitmasks:
|
0xE
|
0x2
|
Content index; corresponds with an entry in the TMD content chunk records |
Null-terminated item names. Offsets are found in file entries in the above header.
WIP. it sucks.