Difference between revisions of "RomFS"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
{{Stub}} | {{Stub}} | ||
=== Overview === | === Overview === | ||
− | RomFS or Read-Only Filesystem is part of the [[NCCH]] format, and is used as external file storage. | + | RomFS (or Read-Only Filesystem) is part of the [[NCCH]] format, and is used as external file storage. |
RomFS can be used: | RomFS can be used: | ||
Line 18: | Line 18: | ||
=== Format === | === Format === | ||
− | + | The RomFS is wrapped inside a IVFC hash-tree container, and the actual data is structured like a node-based tree, starting at the root level directory node, moving down to other directory and file nodes. Each directory node has pointers to child directory nodes and siblings, together with a pointer to the first file node for that directory. Each file node has pointers to their next file node, together with information about the actual file data. | |
− | The RomFS header is | + | The RomFS IVFC hash-tree header is 0x5C bytes long and is structured as follows: |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 96: | Line 96: | ||
| Optional info size. | | Optional info size. | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 04:15, 2 September 2012
Overview
RomFS (or Read-Only Filesystem) is part of the NCCH format, and is used as external file storage.
RomFS can be used:
- in conjunction with the ExeFS of a NCCH
- to contain the game manual accessible from the Home Menu
- to contain the DLP Child CIA
- or to contain game cartridge update data
(There may be more implementations in the future)
Format
The RomFS is wrapped inside a IVFC hash-tree container, and the actual data is structured like a node-based tree, starting at the root level directory node, moving down to other directory and file nodes. Each directory node has pointers to child directory nodes and siblings, together with a pointer to the first file node for that directory. Each file node has pointers to their next file node, together with information about the actual file data.
The RomFS IVFC hash-tree header is 0x5C bytes long and is structured as follows:
START | SIZE | DESCRIPTION |
---|---|---|
0x00 | 0x4 | Magic "IVFC" |
0x04 | 0x4 | Magic number 0x10000 |
0x08 | 0x4 | Master hash size |
0x0C | 0x8 | Level 1 logical offset |
0x14 | 0x8 | Level 1 hashdata size |
0x1C | 0x4 | Level 1 block size, in log2 |
0x20 | 0x4 | Reserved |
0x24 | 0x8 | Level 2 logical offset |
0x2C | 0x8 | Level 2 hashdata size |
0x34 | 0x4 | Level 2 block size, in log2. |
0x38 | 0x4 | Reserved |
0x3C | 0x8 | Level 3 logical offset |
0x44 | 0x8 | Level 3 hashdata size |
0x4C | 0x4 | Level 3 block size, in log2. |
0x50 | 0x4 | Reserved |
0x54 | 0x4 | Reserved |
0x58 | 0x4 | Optional info size. |