Tutorial  Updated

How to extract savegames from NAND dump (for Checkpoint)

Update 2021

FYI gbatemp user @GarnetSunset made a python script that does the job for you:
https://gist.github.com/GarnetSunset/20caed068b9ce40708f1ff41d895a7cf
Just place it where your save folder is that contains all the saves and run it. You'll end up with a "ready to import" EdiZon pack.

What you need

  • NAND dump
  • Windows
  • HacDiskMount
  • hactoolnet
  • prod.keys renamed to keys.txt (get them with Lockpick RCM)
  • Microsoft Excel (other tools might work as well but the commands may differ so I won't cover them here)
  • Notepad++
Step 1 - Extract save folder from USER partition

  1. In order to utilize HacDiskMount you need to have one rawnand.bin so if you created your dump on a FAT32 card you need the joiner script to join rawnand.bin.00, rawnand.bin.01 and so on into one single file
  2. Open HacDiskMount and go to File -> Open file and select your rawnand.bin
  3. Double click on USER
  4. Your BIS Keys should be there already, test them with the Test button and make sure it says "OK!"
  5. Under Virtual drive make sure the driver is installed and install it otherwise
  6. Pick a letter at Drive letter (I picked S: for Switch :))
  7. Hit the mount button
  8. Open your file browser and go to S:\
  9. Copy over the whole save folder to C:\ so you end up with C:\save\
  10. Close the file browser, unmount the drive (wait a few seconds) and close HacDiskMount
Step 2 - Retrieving newest Title IDs from nswdb

  1. Go to http://nswdb.com/ and hit the Download XML button at the top left to get the most recent Title ID list
  2. Open the file with Notepad++ and copy everything (CTRL + A, CTRL + C) to the clipboard
  3. Go to https://onlinexmltools.com/convert-xml-to-csv (or any other XML to CSV converter that allows individual input for the column seperating character)
  4. Replace the , with a ; at "Column separating character" (this is very important as some games include a "," in their name)
  5. Now paste your clipboard (CTRL + V) into the top left window under XML -> the right windows should automatically be filled up with the CSV content after a moment
  6. Copy that whole CSV content into a new (empty) Notepad++ window
  7. In Notepad++ hit STRG + F, go to the Replace tab and make sure Extended (\n, \r, \t, \0, \x...) is selected at Search mode
  8. Put in ; in the upper input field and \t in the lower one
  9. Hit Replace all to change all semicolons into tabs
  10. Copy the whole content from Notepad++ into the clipboard (CTRL + A, CTRL + C)
  11. Create a new Excel file, name it nswdb.xlsx and open it up
  12. Mark all cells by pressing CTRL + A twice (!)
  13. Change formatting from Standard/Default to Text (you might have to google how to do this for your specific Excel version)
  14. Now click on the very first cell and hit CTRL + V to paste the Title IDs
  15. Now delete all columns except name and Title ID by right clicking the column letter and choosing delete column
  16. You should end up with two columns, the first being the names, the second being the Title IDs
  17. Save the file and keep it open
Step 3 - Retrieving the Title IDs from the saves of your USER partition

Now this sucks a bit as it was the only thing I wasn't able to find a quick and smart solution for. Instead you would have execute a command for each single file in your saves folder but this can be done within a few minutes nevertheless once you're "in it". ;)
  1. Place the keys.txt in the same folder as hactoolnet (not to be confused with HacDiskMount which we don't need any longer by the way)
  2. Open up CMD (hit the Windows key on your keyboard, type in CMD and hit ENTER)
  3. Change to your saves folder:
    Code:
    cd C:\save
  4. Enter the following command:
    Code:
    dir /s/b/o:n > temp.txt
  5. Open the file C:\save\temp.txt with Notepad++ and remove this line from it:
    Code:
    C:\save\temp.txt
  6. Gather all the rest (CTRL + A) and copy it to the clipboard (CTRL + C)
  7. Create a new Excel file, name it save.xlsx and open it up
  8. Put this into the very first cell:
    Code:
    "
  9. Then click on the second cell of the first row (B2)
  10. Paste the content from the temp.txt here (CTRL + V)
  11. Now copy the first cell (A1) with the " and paste it over every empty cell in column A so you'll end up with a table containing the " character in the first column and the path to a file in the save folder in second column in every row
  12. Double click into the third cell of the first row (C1) and paste the following formular (and hitting ENTER afterwards):
    Code:
    =CONCATENATE("hactoolnet.exe --listtitles -t save ";A1;B1;A1)
    (what this does is combining the CMD command that we want to use with the path to the file and some " characters which we can't use in the formular directly as they would tell Excel we're writing plain text, instead we put that character into a column that we're using in the formular now by including A1 before and after the path and filename)
  13. Autofill this formular to the bottom of column C by temporarily clicking into any other cell, then click on C3 again (only once as we don't want to edit it) and now double click the very tiny stairs icon at the bottom right of that cell
  14. Head back to your CMD window
  15. Change the directory to the place where hactoolnet is located, for example by doing this:
    Code:
    cd C:\Tools\Switch\hactoolnet
  16. Now comes the ugly part: Copy C3 from Excel into CMD and execute the command, then double click on the Title ID and copy it back to the Excel into the cell D4
    You have to repeat this for every single line in your Excel sheet so you end up with a Title ID right next to each file path from your save folder
    An example row in your Excel should now look like this:
    First column (A1): "
    Second column (B1): C:\save\0000000000000004
    Third column (C1): hactoolnet.exe --listtitles -t save "C:\save\0000000000000004"
    Fourth column (D1): 01007ef00011e000
Congratulations! You've managed to finish up the worst part of this guide!

Step 4 - mapping the game names to the Title IDs

  1. Still in your save.xlsx double click into the next free cell in the first row (should be E1)
  2. Put in this formular, hit ENTER and autofill it to the bottom:
    Code:
    =UPPER(D1)
    This makes sure all small letters in the Title IDs are capital letters now
  3. Select the whole column E (where we just worked in) and copy it to the clipboard (CTRL + C)
  4. Right click on the first cell of column E and select VALUES at paste options (should be a tiny clipboard symbol with the numbers "123")
    By this we overwrite a formular calculated value by the actual plain text that the formular just brought up
    From now on I call this textify so whenever I say, textify a column, just copy it and paste it over itself as VALUES only
    Now we have our Title IDs with capital letters in column E as plain text
  5. Remember the other Excel file (nswdb.xlsx) which I told you to keep it opened? Good!
    Still in your save.xlsx double click the first free cell in the first row (should be F1) and start typing the following formular (without hitting ENTER):
    Code:
    =VLOOKUP(E1;
    (that last semicolon is very important)
    Now without doing anything else head over to the nswdb.xlsx and select both columns there by clicking on column A and while holding it, moving over to column B. Excel should automatically add those two columns of nswdb.xlsx to your formular. Don't do anything else (don't press ENTER)!
    Just continue typing the formular like this:
    Code:
    ;2;false
    and finally now you can hit ENTER!
  6. Autofill F1 to the bottom and you should end up with the game's name for each Title ID
  7. Textify column F (look at step 4 on how to do this) so you don't need nswdb.xlsx any longer
  8. Replace any special characters like : or ® or . and so on with nothing by selecting the whole column F, hitting CTRL + F, go to Replace, filling in the desired special character in the first input field and leaving the second input field completely empty. Hit Replace all and repeat those steps for any other special characters that appear in your list. The less, the better. The names are most likely there so you know to which game the savefiles belong so it doesn't matter that much how they read like after you're finished
Note: It could be the case that some Title IDs appear twice (so you seem to have duplicated rows in your Excel). In that case the first one is the one you need and you can delete the "clone" row.
However, keep a backup of your save.xlsx before you do this, just in case it wasn't the first row. At least for me it was always the first one.
Step 5 - Creating the batch file for hactoolnet

We're almost finished and the rest is pretty easy! :D
  1. Double click on the next empty cell in the first row of save.xlsx (should be G1)
  2. Paste in the following formular and hit ENTER:
    Code:
    =CONCATENATE("hactoolnet.exe -t save ";A1;B1;A1;" --outdir ";A1;"saves/0x";E1;" ";F1;A1;"/NAND dump")
    You should end up with a line that reads like my example here:
  3. Code:
    hactoolnet.exe -t save "C:\save\0000000000000004" --outdir "saves/0x01007EF00011E000 The Legend of Zelda Breath of the Wild/NAND dump"
  4. Autofill G1 to the bottom
  5. Select the whole column G and copy it to the clipboard (CTRL + C)
  6. Create an empty text file in the same directory as hactoolnet and name it batch.txt
  7. Open it, paste the command column into it (CTRL + V), save it and close it
  8. Rename it to batch.bat and run it
  9. That's it! In your hactoolnet directory there should be a saves folder now which you can directly copy to SD:\switch\checkpoint\ :grog:
Additional info

This guide might work with other savegame homebrews like EdiZon as well. I just didn't test it.

You need to create a savegame for each game in order for it to show up in Checkpoint. In most cases it is enough to just launch them and they'll create it right away so you can keep yourself from long unskippable intro videos by hitting home and closing the game. However if it does not appear in checkpoint, you have to get further into the game until it really creates a save.

I wasn't able to test all this as I've written this guide at work from my memories so if something doesn't work or is spelled wrong, please let me know so I can fix it. Also I'm only aware of the german Excel formular commands. I googled the english commands but don't know if they are really the right ones.

Troubleshooting

For every game that appears in Checkpoint and for which you copied over a save from your NAND dump with this guide, there should be an entry named "NAND dump" now which you can restore and you're done.
However, sometimes Checkpoint names the folders differently to what you might have ended up, especially by replacing the special characters in Excel.

If a game appears in Checkpoint without having the "NAND dump" entry for which you are sure it has to be there, do this:
  1. Select the game in Checkpoint and create a new backup
  2. Hit + to let it create it with the recommended name (your user + creation date) and wait for it to finish
  3. Close Checkpoint
  4. Open a file browser like Apollo or NX-Shell
  5. Navigate to SD:\switch\Checkpoint\saves\
  6. You should find two folders with the same title ID but slightly differently spelled game names there, something like
    Code:
    The Legend of Zelda Breath of the Wild
    The Legend of Zelda   Breath of the Wild
  7. Find the one with the "NAND dump" folder and copy/cut it
  8. Now find the one with the backup that Cheackpoint just created (your user + creation date) and paste the folder right next to it so you end up with something like
    Code:
    Arnold 2019-01-04
    NAND dump
  9. Head back to Checkpoint and it should be there now
 
Last edited by lordelan,

lordelan

Well-Known Member
OP
Member
Joined
Jan 4, 2015
Messages
5,840
Trophies
1
Age
44
XP
6,633
Country
Germany
Hi
is this tutorial is for when you want to bring over savegames to another switch
I this also meant for if i want to save and restore the save games from and for the same switch and the same user, just on 2 differents SD cards that will be use for the this same switch ?
No, for such things just use "Checkpoint".
This is for you, if a NAND dump is all you've got OR if you want the save games from a clean sysNAND where you don't wanna use CFW + Checkpoint for any reason.
 

Luiaves

New Member
Newbie
Joined
May 16, 2023
Messages
1
Trophies
0
Age
22
XP
22
Country
United Kingdom
Can this be done on a Patched (Unhackable) Switch? Have a few Games I want to take the Saves from and move them to my Hacked Switch.
you can but you have to take it appart and acually move the emmc chip inbetween them, make a full backup then move it to pc and folllow it, you can use hekate but booting into sys nand wont work
Post automatically merged:

Can this be done on a Patched (Unhackable) Switch? Have a few Games I want to take the Saves from and move them to my Hacked Switch.
you can but you have to take it appart and acually move the emmc chip inbetween them, make a full backup then move it to pc and folllow it, you can use hekate but booting into sys nand wont work
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Veho @ Veho: https://i.imgur.com/Os7f9Se.mp4