Changes

Jump to navigation Jump to search
291 bytes added ,  00:16, 15 November 2017
Line 556: Line 556:  
| 0x08
 
| 0x08
 
| 8
 
| 8
| Offset to first table
+
| Level 1 offset
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 8
 
| 8
| First table length
+
| Level 1 size
 
|-
 
|-
 
| 0x18
 
| 0x18
 
| 8
 
| 8
| First table block size (1<<value)
+
| Level 1 block size, in log2 (unused?)
 
|-
 
|-
 
| 0x20
 
| 0x20
 
| 8
 
| 8
| Offset to second table
+
| Level 2 offset
 
|-
 
|-
 
| 0x28
 
| 0x28
 
| 8
 
| 8
| Second table length
+
| Level 2 size
 
|-
 
|-
 
| 0x30
 
| 0x30
 
| 8
 
| 8
| Second table block size (1<<value)
+
| Level 2 block size, in log2
 
|-
 
|-
 
| 0x38
 
| 0x38
 
| 8
 
| 8
| IVFC partition offset
+
| Level 3 (IVFC partition) offset offset
 
|-
 
|-
 
| 0x40
 
| 0x40
 
| 8
 
| 8
| IVFC partition size
+
| Level 3 (IVFC partition) offset size
 
|-
 
|-
 
| 0x48
 
| 0x48
 
| 8
 
| 8
| IVFC partition block size (1<<value)
+
| Level 3 (IVFC partition) block size, in log2
 
|-
 
|-
 
|}
 
|}
   −
* 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).
+
* Every level comes in pairs (concatenated), so the actual size of each level is twice as large as recorded in the "size" field. Level n (n = 1 or 2) is a bit-array (encoded in u32 array, with MSB as the first bit of each 32 bits), in which each bit corresponds to a block in level (n+1), indicating in which of the pair the block is the active one (0 means the first one, 1 means the second one). In this way, the actual valid data is scattered between the two IVFC partition images.
* The offsets contained in the DPFS and IVFC are relative to the partition offset in the DISA/DIFF. The offsets from the IVFC are additionally added with the IVFC partition offset from the DPFS.
+
* The valid one in level 1 pair is probably chosen by the same bit of "Active  partition table". However in this case, 0 means the second one and 1 means the first one (in the same order as the partition tables).
 +
* The offsets contained in the DPFS are relative to the partition offset in the DISA/DIFF. The offsets from the IVFC are related to the IVFC partition (DPFS Level 3), after assembling the valid data.
   −
The first partition's data usually starts at 0x2000. First comes the hashtable (usually start @ 0x40 into the partition) and then the filesystem.
  −
  −
The hashtable entries' size is 2^x where x is the 'Filesystem block size' from the IVFC block.
      
'''DIFI Hash'''
 
'''DIFI Hash'''
242

edits

Navigation menu