Inner FAT: Difference between revisions
Embed diagrams |
Meleemeister (talk | contribs) Added Tools section |
||
| (One intermediate revision by one other user not shown) | |||
| Line 484: | Line 484: | ||
<pre>uint32_t GetBucket( | <pre>uint32_t GetBucket( | ||
uint8_t name[16 or 8], // For savegame/extdata, this takes all 16 bytes including trailing zeros; For title database, this is the 8-byte title ID | |||
uint32_t parent_dir_index, | uint32_t parent_dir_index, | ||
uint32_t bucket_count | uint32_t bucket_count | ||
| Line 499: | Line 499: | ||
} | } | ||
</pre> | </pre> | ||
== File Allocation Table == | == File Allocation Table == | ||
| Line 554: | Line 553: | ||
For extdata, because only two "files" (directory and file entry tables) are allocated in the data region, and their size never changes once the extdata is created, they are guaranteed continuous in the data region, and the FAT degenerates to two big nodes. Therefore, instead of going through FAT, the offset and size of directory / file entry table can be found directly by offset = entry_table_starting block * data_region_block_size + data_region_offset and size = entry_table_block_count * data_region_block_size. | For extdata, because only two "files" (directory and file entry tables) are allocated in the data region, and their size never changes once the extdata is created, they are guaranteed continuous in the data region, and the FAT degenerates to two big nodes. Therefore, instead of going through FAT, the offset and size of directory / file entry table can be found directly by offset = entry_table_starting block * data_region_block_size + data_region_offset and size = entry_table_block_count * data_region_block_size. | ||
==Tools== | |||
https://github.com/wwylele/3ds-save-tool | |||