Difference between revisions of "Savegames"
Jump to navigation
Jump to search
Line 326: | Line 326: | ||
=== Files === | === Files === | ||
+ | |||
+ | ==== File Offset Table ==== | ||
+ | |||
+ | * Indexes 0 and 1 are reserved to point towards the folder and file tables. | ||
===== File Offset Table Entry ===== | ===== File Offset Table Entry ===== | ||
Line 337: | Line 341: | ||
| 0x00 | | 0x00 | ||
| 3 | | 3 | ||
− | | | + | | Data offset, in blocks |
|- | |- | ||
| 0x03 | | 0x03 |
Revision as of 21:21, 4 July 2017
This page describes the format of savegames contained in NAND. NAND savegames do not use an container with the entire file encrypted. A lot of the saveimage appears to have uninitialized data, resulting in a lot of encrypted data in the saveimage.
AES CMAC header
Image offset | Length | Description |
---|---|---|
0x00 | 0x10 | AES-CMAC |
0x10 | 0xF0 | Zero padding |
DISF
- This is located @ 0x100 in the image, following the CMAC header.
Start | Length | Description |
---|---|---|
0x000 | 4 | Magic ("DISF") |
0x004 | 4 | Magic Number (0x40000) |
0x008 | 32 | Hash |
0x028 | 8 | Primary Partition Table Offset |
0x030 | 8 | Primary Partition Table Size |
0x038 | 8 | Secondary Partition Table Offset |
0x040 | 8 | Secondary Partition Table Size |
0x048 | 8 | Save Partition Offset |
0x050 | 8 | Save Partition Size |
0x258 | End |
DPFS
- This is located @ 0x200 in the image, following DISF.
- Block sizes are log2
Start | Length | Description |
---|---|---|
0x00 | 4 | Magic ("DPFS") |
0x04 | 4 | Magic Number (0x10000) |
0x08 | 8 | Offset 0 |
0x10 | 8 | Size 0 |
0x18 | 8 | Block Size 0 |
0x20 | 8 | Offset 1 |
0x28 | 8 | Size 1 |
0x30 | 8 | Block Size 1 |
0x38 | 8 | Offset 2 |
0x40 | 8 | Size 2 |
0x48 | 8 | Block Size 2 |
IVFC
- Generally follows DPFS, similar to 3DS.
Start | Length | Description |
---|---|---|
0x00 | 4 | Magic ("IVFC") |
0x04 | 4 | Magic Number (0x20000) |
0x08 | 8 | Master hash size? |
0x10 | 8 | Level 1 offset |
0x18 | 8 | Level 1 size |
0x20 | 4 | Level 1 block size, in log2 |
0x24 | 4 | Reserved |
0x28 | 8 | Level 2 offset |
0x30 | 8 | Level 2 size |
0x38 | 4 | Level 2 block size, in log2. |
0x3C | 4 | Reserved |
0x40 | 8 | Level 3 offset |
0x48 | 8 | Level 3 size |
0x50 | 4 | Level 3 block size, in log2. |
0x54 | 4 | Reserved |
0x58 | 8 | Level 4 offset |
0x60 | 8 | Level 4 size |
0x68 | 4 | Level 4 block size, in log2. |
0x6C | 4 | Reserved |
0x70 | 48 | Unknown, reserved? |
0xA0 | 32 | Hash |
JNGL
- Generally follows IVFC
Start | Length | Description |
---|---|---|
0x00 | 4 | Magic ("JNGL") |
0x04 | 4 | Magic Number (0x10000) |
0x08 | 8 | Savedata Size |
0x10 | 8 | Unknown, Size |
0x18 | 8 | Savedata Blocksize? |
0x20 | 4 | Unknown |
0x24 | 4 | Unknown |
0x28 | 8 | Unknown |
0x30 | 464 | Padding? |
SAVE
- Generally follows JNGL, structure is different from 3DS.
Start | Length | Description |
---|---|---|
0x00 | 4 | Magic ("SAVE") |
0x04 | 4 | Magic Number (0x60000) |
0x08 | 8 | Unknown, number |
0x10 | 8 | Unknown, block size |
0x18 | 8 | Unknown, block size |
0x20 | 8 | Unknown |
RMAP
- There are generally two RMAP blocks in sequence.
Start | Length | Description |
---|---|---|
0x00 | 4 | Magic ("RMAP") |
0x04 | 4 | Magic Number (0x10000) |
Files
File Offset Table
- Indexes 0 and 1 are reserved to point towards the folder and file tables.
File Offset Table Entry
Start | Length | Description |
---|---|---|
0x00 | 3 | Data offset, in blocks |
0x03 | 1 | Unknown, 80 |
0x04 | 4 | Unknown, 0 |
File/Folder Table Entry
- The root file/folder index is generally 2
Start | Length | Description |
---|---|---|
0x00 | 4 | Parent Folder Index |
0x04 | 64 | Filename |
0x44 | 4 | File/Folder Index? |
0x48 | 4 | File offset index in offset table, 0 for folders |
0x4c | 8 | File size, or number of files for folders |
0x54 | 8 | Unknown |
0x5c | 4 | Next File Index, same as folder index for folders |