Difference between revisions of "Savegames"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 322: Line 322:
 
| 4
 
| 4
 
| Magic Number (0x10000)
 
| Magic Number (0x10000)
 +
|-
 +
|}
 +
 +
=== Files ===
 +
 +
* The root file/folder index is generally 2
 +
 +
==== File/Folder Table Entry ====
 +
 +
{| class="wikitable"
 +
|-
 +
! 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
 
|-
 
|-
 
|}
 
|}

Revision as of 21:07, 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

  • The root file/folder index is generally 2

File/Folder Table Entry

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