Changes

Jump to navigation Jump to search
2,553 bytes added ,  22:58, 3 May 2019
Merge header info for savegame/extdata/database here
Line 71: Line 71:  
** file entry table as well
 
** file entry table as well
 
** title entries (title info or ticket) are allocated as normal files in the data region as well.
 
** title entries (title info or ticket) are allocated as normal files in the data region as well.
 +
 +
== Filesystem Header ==
 +
Offsets listed in the table below are all related to the beginning of the header. This is especially important for title database, as the offsets doesn't count the pre header there.
 +
{| class="wikitable" border="1"
 +
! Offset
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 +
| 4
 +
| Magic ("SAVE" for savegame; "BDRI" for title database; "VSXE" for extdata)
 +
|-
 +
| 0x04
 +
| 4
 +
| Version (0x40000 for savegame; 0x30000 for title database and extdata)
 +
|-
 +
| 0x08
 +
| 8
 +
| Filesystem Information offset (Y, =0x20 for savegame and title database, =0x138 for extdata)
 +
|-
 +
| 0x10
 +
| 8
 +
| Filesystem image size in blocks
 +
|-
 +
| 0x18
 +
| 4
 +
| Filesystem Image block size
 +
|-
 +
| 0x1C
 +
| 4
 +
| Padding
 +
|-
 +
| 0x20
 +
| 0x118 in total
 +
| Below is additional data for extdata. Not present in savegame or title database
 +
|-
 +
| 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
 +
|-
 +
| Y
 +
| 0x68 in total
 +
| Below is Filesystem Information
 +
|-
 +
| Y + 0x00
 +
| 4
 +
| Unknown
 +
|-
 +
| Y + 0x04
 +
| 4
 +
| Data region block size
 +
|-
 +
| Y + 0x08
 +
| 8
 +
| Directory hash table offset
 +
|-
 +
| Y + 0x10
 +
| 4
 +
| Directory hash table bucket count (=1 for title database)
 +
|-
 +
| Y + 0x14
 +
| 4
 +
| Padding
 +
|-
 +
| Y + 0x18
 +
| 8
 +
| File hash table offset
 +
|-
 +
| Y + 0x20
 +
| 4
 +
| File hash table bucket count
 +
|-
 +
| Y + 0x24
 +
| 4
 +
| Padding
 +
|-
 +
| Y + 0x28
 +
| 8
 +
| File allocation table offset
 +
|-
 +
| Y + 0x30
 +
| 4
 +
| File allocation table entry count
 +
|-
 +
| Y + 0x34
 +
| 4
 +
| Padding
 +
|-
 +
| Y + 0x38
 +
| 8
 +
| Data region offset
 +
(0 for savegame <code>duplicate data = false</code> layout, as the data region is in partition B for that layout)
 +
|-
 +
| Y + 0x40
 +
| 4
 +
| Data region block count
 +
(= number of file allocation table entries excluding the leading 0th entry. See below)
 +
|-
 +
| Y + 0x44
 +
| 4
 +
| Padding
 +
|-
 +
| Y + 0x48
 +
| 8
 +
| for savegame <code>duplicate data = false</code> layout: directory entry table offset;
 +
otherwise: u32 directory entry table starting block index + u32 directory entry table block count
 +
|-
 +
| Y + 0x50
 +
| 4
 +
| Maximum directory count, excluding the mandatory "root" directory
 +
(=1 for title database, but that 1 free directory slot is never used)
 +
|-
 +
| Y + 0x54
 +
| 4
 +
| Padding
 +
|-
 +
| Y + 0x58
 +
| 8
 +
| for savegame <code>duplicate data = false</code> layout: file entry table offset;
 +
otherwise: u32 file entry table starting block index + u32 file entry table block count
 +
|-
 +
| Y + 0x60
 +
| 4
 +
| Maximum file count
 +
|-
 +
| Y + 0x64
 +
| 4
 +
| Padding
 +
|}
    
== File Allocation Table ==
 
== File Allocation Table ==
242

edits

Navigation menu