By entering this site you need to consent to the use of cookies and their functional use according to this privacy policy. Cookies help us to provide the functional services of the website. Kindly read the below message of use and consent to the use.
The following cookies are stored and shared when accessing this website:
- Internal cookies for the MediaWiki site. This is used for user authentication and article modifications.
- Third-party cookies from Google providing services for Google AdSense and Google Analytics
We will never use data collected outside of the above scope.
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 ===
−
All of the content (including the header) in RomFS appears to be aligned to 0x1000 byte blocks, the first block starts at 0x1000. Starting with the second block, every block begins with a SHA-256 hash. This hashes the whole 0x1000-byte block following this block. For the last block, this hash hashes the first block at 0x1000. The total RomFS filesize is always at least 0x4000.
+
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 0x80 bytes long and following is known about the structure:
+
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.
|}
|}
−
−
−
−
−
The block hash from the header hashes the second block at 0x2000.