Jump to navigation Jump to search
3,424 bytes removed ,  23:52, 3 May 2019
→‎VSXE File System Metadata: Migrate to Inner FAT
The number 126 is probably from some kind of other capacity of 128 with <code>&quot;.&quot;</code> and <code>&quot;..&quot;</code> entries reserved. It is theorized that this is to keep a FAT directory table, with 0x20 bytes for each entry, in one 0x1000 cluster. The motivation is unclear.
== VSXE File System Metadata Filesystem ==
The inner data of <code>00000000/00000001</code> consists This is one variant of the following components * VSXE header* Directory Hash Table* File Hash Table* File Allocation Table* Data region** Directory Entry Table** File Entry Table === VSXE Header === {| class="wikitable" border="1"! Offset! Length! Description|-| 0x00| 4| Magic &quot;VSXE&quot;|-| 0x04| 4| Magic 0x30000|-| 0x08| 8| File system Information offset (0x138)|-| 0x10| 8| Image size in blocks|-| 0x18| 4| Image block size|-| 0x1C| 4| Padding|-| 0x20| 8| Unknown|-| 0x28| 4| 'Action' made on most recently mounted Extdata image|-| 0x2C| 4| Unknown|-| 0x30| 4| D of most recently mounted Extdata image|-| 0x34| 4| Unknown|-| 0x38| 0x100| Mount path, from most recently mounted Extdata image|-| | | Below is File system Information, which is assumed following the same layout as [[Savegames#SAVE_HeaderInner FAT|FAT filesystem]]|-| 0x138| 4| Unknown|-| 0x13C| 4| Data region block size|-| 0x140| 8| Directory hash table offset|-| 0x148| 4| Directory hash table bucket count|-| 0x14C| 4| Padding|-| 0x150| 8| File hash table offset|-| 0x158| 4| File hash table bucket count|-| 0x15C| 4| Padding|-| 0x160| 8| File allocation table offset|-| 0x168| 4| File allocation table entry count|-| 0x16C| 4| Padding|-| 0x170| 8| Data region offset|-| 0x178| 4| Data region block count (= File allocation table entry count)|-| 0x17C| 4| Padding|-| 0x180| 4| Directory entry table starting block|-| 0x184| 4| Directory entry table block count|-| 0x188| 4| Maximum directory count|-| 0x18C| 4| Padding|-| 0x190| 4| File entry table starting block|-| 0x194| 4| File entry table block count|-| 0x198| 4| Maximum file count|-| 0x19C| 4| Padding|} * All &quot;offsets&quot; are relative to the beginning of VSXE image. All &quot;starting block index&quot; are relative Please refer to its page for the beginning description of data region. === File Allocation Table &amp; Data Region === These function in the same way as [[Savegames#File Allocation Table|the file allocation in savegames]]filesystem. HoweverIn general, the only two &quot;files&quot; allocated in the data region are the directory entry table and device file entry table, so the data region is usually pretty small, and the file allocation table is unchanged once created and has no free blocks. Thus, the offset and size of directory / file entry table can be found directly by <code>offset = entry_table_starting block * data_region_block_size + data_region_offset<00000000/code> and <code>size = entry_table_block_count * data_region_block_size00000001</code> === Directory Hash Table &amp; File Hash Table === These function in contains the same way as [[Savegames#Directory Hash Table &amp; File Hash Table|those in savegames]] === Directory Entry Table === This functions in metadata of the same way as [[Savegames#Directory Entry Table|the one in savegames]]. It lists all virtual directories in this extdata. === File Entry Table === This functions in a similar way as [[Savegames#File Entry Table|the one in savegames]]. It lists all virtual filesystem, while other device files in this extdata. However, (except for the format of a (non-dummyQuota file) file entry is a little bit modified: {| class="wikitable" border="1"! Offset! Length! Description|contains normal sub-| 0x00| 4| Parent directory index in directory entry table|-| 0x04| 16| ASCII file name|-| 0x14| 4| Next sibling file index. 0 if this is the last one|-| 0x18| 4| Padding|-| 0x1C| 4| <s>First block index in data region</s> '''Always 0x80000000 because unused'''|-| 0x20| 8| <s>File size</s> '''Unique identifier'''|-| 0x28| 4| Padding?|-| 0x2C| 4| Index of the next file in the same hash table bucket. 0 if this is the last one|}files
Each non-dummy file entry corresponds to a device file. The path to the device file is generated by the following computation:


Navigation menu