Savegames: Difference between revisions
→Partitions: disa hash fully understood |
→Partitions: more on dpfs and ivfc |
||
Line 150: | Line 150: | ||
'''DIFI''' | '''DIFI''' | ||
These 0x130 large blobs describe the partitions. Every DIFI blob describes a partition | These 0x130 large blobs describe the partitions. Every DIFI blob describes a partition. Partitions are catted together, so after the end of one partition is the beginning of the next. | ||
Actually DIFI blobs are 0x12C large because the last 4 are not used and appear 0xFFFFFFFF at the encrypted image. | Actually DIFI blobs are 0x12C large because the last 4 are not used and appear 0xFFFFFFFF at the encrypted image. | ||
For most games there's only 1 partition (The SAVE partition) and some (like Asphalt 3D | For most games there's only 1 partition (The SAVE partition) and some (like Asphalt 3D, Steel Diver & Lego Star Wars III) has 2 partitions. | ||
* 2 Partitions means that the files inside the SAVE partition is on the other partition (we would call it DATA partition). | * 2 Partitions means that the files inside the SAVE partition is on the other partition (we would call it DATA partition). | ||
* No more than 2 partitions have been seen yet. | * No more than 2 partitions have been seen yet (and can't be becuase of the DISA known structure). | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 172: | Line 172: | ||
| 0x04 | | 0x04 | ||
| 4 | | 4 | ||
| | | Magic Number (0x10000) | ||
|- | |- | ||
| 0x08 | | 0x08 | ||
Line 192: | Line 192: | ||
| 0x28 | | 0x28 | ||
| 8 | | 8 | ||
| Offset to the | | Offset to the hash in DIFI (usually 0x010C) | ||
|- | |- | ||
| 0x30 | | 0x30 | ||
| 8 | | 8 | ||
| Size of this | | Size of this hash | ||
|- | |- | ||
| 0x38 | | 0x38 | ||
| 4 | | 4 | ||
| Flags | | Flags (1 means DATA partition) | ||
|- | |- | ||
| 0x3C | | 0x3C | ||
Line 220: | Line 220: | ||
|- | |- | ||
| 0x04 | | 0x04 | ||
| | | 4 | ||
| Unknown | | Magic Number (0x20000) | ||
|- | |||
| 0x08 | |||
| 8 | |||
| Unknown (0x20?) | |||
|- | |||
| 0x10 | |||
| 8 | |||
| First Hash Offset | |||
|- | |||
| 0x18 | |||
| 8 | |||
| First Hash Length | |||
|- | |||
| 0x20 | |||
| 8 | |||
| First Hash Block Size (1<<value) | |||
|- | |||
| 0x28 | |||
| 8 | |||
| Second Hash Offset | |||
|- | |||
| 0x30 | |||
| 8 | |||
| Second Hash Length | |||
|- | |||
| 0x38 | |||
| 8 | |||
| Second Hash Block Size (1<<value) | |||
|- | |- | ||
| 0x40 | | 0x40 | ||
| 8 | | 8 | ||
| | | HashTable Offset | ||
|- | |- | ||
| 0x48 | | 0x48 | ||
| 8 | | 8 | ||
| | | HashTable Length | ||
|- | |- | ||
| 0x50 | | 0x50 | ||
| 8 | | 8 | ||
| | | HashTable Block Size (1<<value) | ||
|- | |- | ||
| 0x58 | | 0x58 | ||
Line 245: | Line 273: | ||
| 0x68 | | 0x68 | ||
| 8 | | 8 | ||
| | | FileSystem Block Size (1<<value) | ||
|- | |- | ||
| 0x70 | | 0x70 | ||
Line 252: | Line 280: | ||
|- | |- | ||
|} | |} | ||
* First & Second hash are not understood yet. | |||
'''DPFS''' | '''DPFS''' | ||
Line 266: | Line 296: | ||
|- | |- | ||
| 0x04 | | 0x04 | ||
| | | 4 | ||
| | | Magic Number (0x10000) | ||
|- | |||
| 0x08 | |||
| 8 | |||
| Offset To First table | |||
|- | |||
| 0x10 | |||
| 8 | |||
| First table length | |||
|- | |||
| 0x18 | |||
| 8 | |||
| First table block size (1<<value) | |||
|- | |||
| 0x20 | |||
| 8 | |||
| Offset To Second table | |||
|- | |||
| 0x28 | |||
| 8 | |||
| Second table length | |||
|- | |||
| 0x30 | |||
| 8 | |||
| Second table block size (1<<value) | |||
|- | |||
| 0x38 | |||
| 8 | |||
| Offset to Data | |||
|- | |- | ||
| 0x40 | | 0x40 | ||
| 8 | | 8 | ||
| | | Data Length | ||
|- | |- | ||
| 0x48 | | 0x48 | ||
| 8 | | 8 | ||
| | | Data block size (1<<value) | ||
|- | |- | ||
|} | |} | ||
* | * Every block this table point to is written twice (concatenated). You can see that the offset to the next block is twice the length (except the data which always begin after 0x1000). | ||
The first partition's data starts at 0x2000. First comes the hashtable (usually start @ 0x40 into the partition) and then the filesystem. | |||
The | The hashtable entries' size is 2^x where x is the 'Hashed block size' from the IVFC block. | ||
'''Hash''' | |||
After the DIFI,IVFC & DPFS comes a 0x20 long hash, it is unknown what it's hashing. | |||
==== The SAVE file system ==== | ==== The SAVE file system ==== |