Savegames: Difference between revisions

No edit summary
Line 147: Line 147:
=== Partitions ===
=== Partitions ===


There can be multiple partitions on the chip.  
There can be multiple partitions in the image.
The partitions are represented by tables of DIFI blobs inside a DISA/DIFF structure.
The partitions are represented by tables of DIFI blobs inside a DISA/DIFF structure.
The order of the DIFI blobs is the order of the partitions in the chip.
The order of the DIFI blobs is the order of the partitions in the image.


'''DISA'''
'''DISA'''


* This is located @ 0x100 in the image, following the MAC header.
* This is located @ 0x100 in the image, following the MAC header.
* If the uint32 @ 0x168 in the image in the DISA(the low 8-bits) is non-zero, then first table is is hashed, otherwise the second DIFI table is hashed.  
* If the uint32 @ 0x68 in the DISA(the low 8-bits) is non-zero, then the first table is is hashed, otherwise the second DIFI table is hashed.  
* If the table has more then 1 DIFI then the uint32 @ 0x168 is the offset from the DATA partition to the file base (masked with 0xFFFFFFFE).
* If the table has more then 1 DIFI then the uint32 @ 0x168 is the offset from the DATA partition to the file base (masked with 0xFFFFFFFE).


Line 177: Line 177:
| 0x10
| 0x10
| 8
| 8
| Offset to primary partition table in DISA
| Offset to primary partition table
|-
|-
| 0x18
| 0x18
| 8
| 8
| Offset to secondary partition table in DISA
| Offset to secondary partition table
|-
|-
| 0x20
| 0x20
Line 291: Line 291:
'''DIFI'''
'''DIFI'''


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.
These 0x12C-byte blobs describe the partitions. Following each partition is an unused 0xFFFFFFFF cleartext word in the raw image. 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.


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.
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.
Line 299: Line 297:
* 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 (and can't be because of the DISA known structure).
* The DISA/DIFF headers support a maximum of 2 partitions.


{| class="wikitable"
{| class="wikitable"
Line 484: Line 482:
The hashtable entries' size is 2^x where x is the 'Hashed block size' from the IVFC block.
The hashtable entries' size is 2^x where x is the 'Hashed block size' from the IVFC block.


'''Hash'''
'''DIFI Hash'''


After the DIFI,IVFC & DPFS comes a 0x20 long hash, it is unknown what it's hashing.
The last 0x20-bytes of the partition following the DIFI, IVFC and DPFS is a 0x20-byte hash, it is unknown what it's hashing. The offset to this hash is stored in the DIFI.


'''Summary Drawing'''
'''Summary Drawing'''