JKSV Switch

From GameBrew
JKSV
Jksvnx.png
General
AuthorJ-D-K
TypeSave Managers and Editors
Version02.23.2023
LicenseGPL-3.0
Last Updated2023/02/23
Links
Download
Website
Source

JK's Save Manager (JKSV) for the Nintendo Switch. Mostly to get familiar with libnx.

The project began as a port of a publicly released 3DS save manager in 2016 and is still a WIP.

Features

  • Dump and restore account save data.
  • Dump and restore device saves shared by all users (Games such as Animal Crossing).
  • Dump and restore BCAT Data.
  • Dump and restore cache Saves.
  • Dump system save data.
    • Dumping this data is always enabled, but writing back needs to be enabled from the options menu. Writing to this can be very dangerous.
    • Processes can be terminated from the Extras menu allowing you to open even more of these and explore more.
  • Export save data to folders like the orignal or compressed zip files to save space.
  • Upload and download save backups to Google Drive if it is configured.
  • Create save data so the user no longer needs to boot games to import saves.
    • Titles can be rescanned from the Extras menu. For example, if you insert a game card while JKSV is open, rescanning will load and add it to the save creation menu(s).
  • Export and use SVI files to create save data for titles not installed on your system. For games that detect other game saves to unlock content.
    • SVI files are simply the title ID, NACP, and icon packed into a file. Placing them in JKSV/svi will load them as if they are any other game on your switch. They will appear in the save creation menus with the rest.
  • Extend save data containers to any size the user wants or automatically if the save cannot fit into the current one.
  • Delete save data from the system.
  • Reset save data as if the game was never launched.
  • Display stats and information about the game/save: Play time, launch count, title ID (TID), save ID(SID)/name of save file on user nand partition, etc.
  • Open and explore bis storage partitions via the Extras menu
    • BIS Storage is opened inside a basic filebrowser. The partition's listing is on the left. Your SD is on the right.
    • Only copying to SD and file properties work on BIS partitions. Writing to and deleting are disabled unless enabled like system save data.
  • Misc Extras:
    • Ability to remove downloaded firmware updates from NAND. This is located under Extras.
    • Terminating processes by ID. Allowing you to dump normally unopenable system archives.
    • Mount by System Save ID. Normally used when the terminated process makes JKSV unable to rescan titles without the Switch crashing.
    • Mount and open RomFS of process the homebrew menu takes over (if launched as NRO).
      • Hold R while opening a game or applet with Atmosphere so the homebrew menu loads. Open JKSV and press minus and select Mount Process RomFS. The romfs of the app should appear in the browser along with your SD on the right.

Note: Some features may require building JKSV from source.

Installation

Place the .nro to the /switch/ folder on the SD card.

User guide

Main/User menu

  • A Selects the currently highlighted user and allows you to browse their titles.
  • Y Dumps the save data for all users.
  • X Opens the sub menu of options for the currently highlighted user:
    • Dump All for [X] - Dumps all of the saves for the highlighted user.
    • Create save data - Opens a list of games found on your switch and will allow to create save data for them without needing to start the games.
      • SVI files located in JKSV/svi will also be loaded and added to this list. These are to create save data for games not currently on the system. This is for games that search for other saves to unlock extra content.
      • Cache saves require a cache index number to be created. This information can be found under information for a cache save when being exported.
    • Create All Save Data - Creates save data for every title on your system for the selected user.
    • Delete All Save Data - Deletes all save data for the selected user. This is permanant.
  • Settings and Extras below.

Title/Game select

  • A Selects and opens the backup menu.
    • Adding .zip to the end of your file name will force zip regardless of whether it's enabled or not.
  • Y Favorites a title and pushes it to the top of your games.
  • L and R Jump forward down your games.
  • X Opens the title options menu:
    • Information - Displays stats about the game for the current user.
    • Blacklist - Adds the title to a list that is not displayed.
    • Change Output Folder - Changes the folder to which the game's saves are written.
    • Open in File Mode - Opens the save in a basic file browser.
    • Delete All Save Backups - Deletes all of the backups for the current title.
    • Reset Save Data - Wipes the save clean as if it was never run.
    • Delete Save Data - Deletes the save data for the title from the system. This is the same as doing it from the Switch's data management setting.
    • Extend Save Data - Extends the container for the current title. This is also done automatically if the save being imported is too large for the container.
      • Different games have different limits. Most games do not need this at all. A few will take advantage of a larger container, others extend theirs at times and will need larger containers than created by default.
    • Export SVI - Exports the data needed to create save data for the current title to JKSV/ncap/[TID].svi. This is just the title ID, NACP, and icon of the title. These can be used to create save data for games not installed on your system.

File mode

  • A Opens directories.
  • B Goes back up a folder if possible.
  • X Opens a small menu of options for files and directories:
    • Copy to [X] - Copies the currently selected item to the location opened on the other panel. Selecting the first . will use the directory opened as root to copy.
    • Delete - Deletes the currently selected item.
    • Rename - Renames the currently selected item.
    • Make Dir - Creates a folder.
    • Properties - Gets file size and directory size.
    • ZL or ZR Change the controlled menu.

Settings

  • Empty Trash Bin - Deletes all backups inside the _TRASH_ folder. The trash bin feature can be disabled further down.
  • Check For Updates - Checks github for updates to JKSV. This currently only updates the NRO release. Maybe NSP later.
  • Set JKSV Save Output Folder - Allows you to set where JKSV's working directory is. Files and folders should be relocated for you.
  • Edit Blacklisted Titles - Allows you to removed titles blacklisted from being shown.
  • Delete All Save Backups - Wipes JKSV's folder of all save backups.

Extras

  • SD To SD Browser - Opens the filebrowser with your SD open in both panels.
  • BIS: [X] - Opens partition [X] in the filebrowser.
  • Remove Update - Deletes system updates downloaded from Nintendo and asks to reboot the system to get rid of the update nag.
  • Terminate Process - Asks for a title ID to terminate.
  • Mount System Save - Asks for the save ID to mount. This is for when JKSV is unable to rescan with a process terminated.
  • Rescan Titles - Reloads save data information. This can be used to reload after a process is terminated or when options are changed.
  • Mount Process RomFS - Opens the title's romfs that is taken over to launch the homebrew menu. This only works as an NRO. The NSP will only open JKSV's own RomFS.
  • Backup JKSV folder - Writes the entire JKSV folder to a ZIP archive and places it in your JKSV folder.

Note: Press Plus to Exit JKSV. JKSV saves all config, favorites, and the blacklist when exited. Pressing the home button and closing that way will not allow this to take place.

Screenshots

jksvnx3.pngjksvnx4.png

jksvnx5.pngjksvnx6.png

Media

TRANSFERRING SAVE DATA TO ANOTHER CONSOLE WITH JKSV (sthetix)

How to Install JKSV - Full Complete Guide! (KlutchxGaming)

Changelog

2023/02/23

  • This release contains a fix for the system font issues caused by the recent Switch update thanks to @SciresM.
  • It also forces me to post a release containing my in progress Google Drive code. Please note that while it works, I never had time to add and complete automatic upload/patching code. Uploading needs to be manually done for now. I promise I'll be back someday to finish it. You can read the instructions to set it up here.
  • There may be other changes I made in the past two years. If there are issues, report them and I'll do my best to figure them out when I can.

2021/09/01

  • Adds Traditional Chinese support back thanks to @qazrfv1234.
  • Fixes output paths/title definitions not being read after initial import of old configurations.
  • Separates trash bin into sub folders so trashed backups aren't impossible to find.

2021/08/31

  • UI has been reworked heavily.

User Changes:

  • All users on the system are now loaded regardless of whether they have save data or not.
  • Pressing X while user select is active will open the user options menu. The highlighted user is the target.
    • Dump All For X dumps all saves for that user
    • Create Save data opens a sub menu and creates save data for the target user.
      • Cache saves need an index number and to be expanded before import. I'll be working on automatically doing this later.
    • Create All Save Data creates all save for every title found on the system
    • Delete All User Saves Deletes all save data for the target user

Title Select Changes:

  • All titles should be loaded now. Even ones that haven't been run yet.
  • Some options and features have been moved to a sub menu:
    • Information is the same information that was previously displayed when selecting a folder.
    • Blacklist adds the highlighted title to your blacklist
    • Change Output Folder changes the folder save data for the targeted writes too. This is the same as using title definitions is previous versions. The folder is renamed for you.
    • Open in file mode is the same as using file mode in previous versions. Minus exits file mode for now.
    • Delete All Save Backups will clear all backups for the target game.
    • Reset Save Data will reset you save as if the game was never run before.
    • Delete Save Data will delete the save data just as in Data Management
    • Extend Save Data will increase the storage size of the target game.

Folder Select Changes:

  • Folder selection is no longer a separate screen, instead just a slide out menu.

Settings changes:

  • Empty Trash Bin empties the trash folder. Trash Bin feature can be enabled and disabled further down this menu.
  • Check for Updates checks for the extremely rare JKSV update.
  • Set JKSV Save Output Folder sets the folder JKSV writes saves to.
  • Edit Blacklisted Titles allows you to finally remove titles from your blacklist without editing text files.
  • Delete All Save Backups clears all save backups for all games. Basically a reset without losing configuration or folders.
  • Animation Scale changes how fast the new UI animates. 1 is instant, 8 is extremely slow.
  • Other settings remain the same. Legacy config and files should be loaded and removed by JKSV without any intervention needed from the user.

Under the hood stuff:

  • Even if Export to ZIP is disabled, adding .zip to the end of a file name will force compression to be used. .zip has been added to the dictionary suggestions. For people who only want to use it for certain titles.
  • A trash bin folder has been added. If trash is enabled, deleted backups will be sent to the _TRASH_ folder instead of being permanently deleted. This is likely to change in the future to separate different titles.
  • Various functions are threaded now to allow the UI to update the screen.
  • JKSV will no longer export or import empty zips, folders, or saves. This fixes a crash when trying to import empty zip files, doesn't allow saves to be accidentally wiped anymore, and cuts down heavily on empty mass backup files and folders.
  • Headers for zip files have been fixed.
  • Log file is no longer kept open allowing FTP to access JKSV's work directory while it's still running.
  • Backup JKSV Folder in extras now trims the paths in the ZIP and ignores anything that isn't a save folder.
  • Dictionary suggestions and predictions have been fixed thanks to @zand who caught a buffer overflow issue I missed.
  • Journal space is used when deciding when to commit save data.

Notes and future plans/improvements:

  • Actual icons instead of generated ones for system users.
  • Possibly cloud backup.
  • Master lists of title definitions to replace title ID folders which will be downloaded and customized for the user.
  • This release is nro and English only. I need to find where I put the stuff to build the nsp and old translations are completely incompatible with this release.

2021/08/01

This release has:

  • New Japanese translation provided by @yyoossk
  • New Brazilian Portuguese translation provided by @ortega1cba
  • Fixes line breaking issues when Traditional Chinese is used.
  • Has an option to override the system language so English is used regardless.
  • Uses an earlier version of the SDL2 graphics file and font glyph cache written for the new UI

Known Issues:

  • The Brazilian Portuguese translation has strings that are longer than the settings menu should hold, but this doesn't cause any serious issues.

2021/05/18

The main reason for this update is to fix issues restoring New Pokemon Snap saves. Any new issues caused by the updated code to handle this can be reported. Other things since last time:

  • Updated Traditional and Simplified Chinese translation files.
  • New sort options: Games can be sorted alphabetically, by play time, or by last played.
  • Paths to directories and files can be filtered from being backed up and deleted on restoring saves.
  • Create a file named pathFilters.txt in the folder of the game you wish to filter files from. Add a file or folder for each line. For example, sv:/file.ext or sv:/directory for folders.
  • Various other tweaks.

2020/06/08

  • Traditional and Simplified Chinese translations are included thanks to Leo and JamePeng
    • Any English strings leftover are my entirely my fault, but most of the UI is translated thanks to these two.
  • Output folders used by games can be set by the user by creating a text file named titleDefs.txt and adding lines such as 01006C300E9F0000 = "Dragon Quest XI S". This is to help with folders that default to title ID because of unicode characters.
  • Data loading has been reworked.
    • All save data types should be supported now. The last three (System BCAT, Cache, and Temporary Storage) will only show if any data is found for them.
    • Blacklisted and unmountable titles are skipped sooner in loading, preventing JKSV from loading or creating icons for them.
    • Fixed a memory leak where user icons weren't freed if titles were reloaded.
  • JKSV now has the option to backup and restore to and from ZIP archives.
  • JKSV can now write its own working directory to a ZIP archive that can be easily backed up and stored somewhere. (This is in the extra's menu).
  • NSP build is back for people who want it.

2020/05/20

  • Hold time for confirmation is shortened. Options are added to completely disable it depending on what you want.
  • Minus and ZR are swapped for Options and Extras on the user selection screen.
  • Exploring the romfs of the title taken over by the homebrew menu is back in the extras menu.
  • Save Data can be erased from your system in the title selection screen like in the switch's settings menu. Holding A is required to confirm this.
  • A custom path for JKSV can be used by creating a file named jksv_dir.txt in your switch folder and typing the path you want to use. This must end with a /. For example, sdmc:/switch/.JKSV/ will make JKSV use a folder in the switch folder that is hidden from the hbmenu.
  • Dump All can now be exited early by holding B until the current file is finished.
  • The User selection screen has been changed to only show the maximum number of users instead of the title select's max of 32.
  • Certain strings can be translated with en-US.txt in JKSV's romfs. Naming this file trans.txt and placing it in JKSV's working directory will make JKSV load it instead of the default US text by myself. This is not 100% complete yet. Please wait if you're interested in making a translation to be included with JKSV in the future.
  • Various new options.
  • Touch controls have been removed. Sorry.

2020/04/12

I wasn't planning this, but I've seen way too many people overwrite their ACNH saves with BCAT data and losing their progress.

  • Added Options Menu to User Select.
    • Option one adds Device Saves to accounts when on. This is disabled by default.
    • Option two automatically creates a backup before restoring any save. These are automatically named starting with AUTO. This is enabled by default.
    • Option three is a small CPU overclock. This is to keep the text based UI mode running a bit smoother for people. This is disabled by default.
  • Deleting and Restoring saves now requires the user to hold A to 100% confirm they are sure they want to continue.
  • Users can now be changed in the title selection menu by pressing L or R.
  • Titles can now be favorited and pushed to the top of the title selection by pressing minus.
  • stdio is now used instead of C++ fstream and cuts down size about 200KB.
  • Various changes and fixes.

2020/03/21

  • Dev. Sv has been renamed Device and is moved higher up in the user select.
  • Just a quick update for convenience since I'm going to be ripping apart Freebird's GUI and adapting it to JKSV as much as possible. I don't know how long this might take.

2020/01/06

Sort of emergency release because of HID changes. Bug reports are appreciated. Changes since last year:

  • Everything is enabled. You no longer need to hold a combo to enable:
    • System Saves.
    • BCAT.
    • Device Saves.
  • Generic icons are generated for things without icons instead of using a big '?'.
  • Updated for latest libnx.
    • ROMFS opening code has been removed until I have more time to remake it.
  • Hopefully text mode loading is fixed.
  • Updated - Applet account loading fix.

2019/01/08

  • New Icon thanks to @igniscitrinus.
  • NSP Build.
  • Extras menu is now accessible by pressing minus instead of button combo.
    • Extra option added to delete downloaded update data and reboot console.
    • Terminate Processes by titleID - For advanced users to explore normally unopenable system save data archives.
  • Layout has been updated to resemble official Switch menus better.
  • Graphics file updated for new libnx.
  • Added function to count directory sub dirs, files, and total size. Usable by selecting properties in Adv Mode on a directory.
  • Switch Software Keyboard and dictionary support.

2018/08/17

This release adds:

  • Bis storage exploration via Adv. Mode. Pressing ZL, ZR, and Y will activate this and take you to a different menu. All of the standard Adv. Mode options work here, but copying back to bis storage is disabled.
  • NAND Backup. I added this to experiment with FsStorage and stress test some things with larger files a week or two ago. I wouldn't use it as your only way to backup you NAND, but it is there.

2018/08/26

This is probably going to be the last Pre-release/beta release. This includes:

  • Rewritten, more stable text-wrapping.
  • Every system font is now loaded.
  • Adds title blacklisting. Pressing X in the title select will add the selected title to a list that prevents it from being shown. This is located at 'sd:/JKSV/blacklist.txt'.
  • File size is now displayed inside the progress bar.
  • Other small tweaks.

2018/08/05

This pre-release update:

  • Should fix games with non-ASCII titles. They will now default to their title ID.
  • Tweaks some things related to strings.
  • Adds back the 3DS shortcut of holding L or R while selecting new to just auto name the backup.
  • Titles are now sorted a bit better by using UTF8.
  • The input guide in the bottom right corner can now be used as button presses for touch controls. I still don't consider touch controls 100% complete.
  • Various UI tweaks and changes.

2018/07/21

  • Touch controls are still incomplete, but this is completely usable with standard controls. This prerelease uses the newer UI style and can be switched to the older one on the user select screen by pressing X.

2018/06/25

JKSV still needs some work, but I've decided to add another pre-release since there has been a lot of progress and bug fixes:

  • Text wrapping has been more-or-less fixed. Though, some minor bugs may remain.
  • The keyboard still needs to be improved a bit. It can be controlled using the touchscreen or controller.
    • Left Stick caps letters.
    • Y is backspace.
    • X is space.
    • Plus is confirm.
  • I have added "Adv. Mode", or a more advanced option to the folder menu. Pressing Minus will open a mini file explorer with the selected game's data on the left and your SD on the right.
    • A selects a folder an opens it.
    • B goes back up a directory.
    • X opens a small menu of options to move files between devices. The device currently selected is written at the top of this menu.
    • ZL and ZR change which menu is currently being controlled.
  • I have moved the 'JKSV' folder from root to the switch folder and named it '.JKSV'. This is to prevent clutter and hide it from the hbmenu.

2018/06/16

Early release. Usable, but:

  • Text wrapping is broken.
  • No cache currently - Still planning how this will work.
  • Keyboard still needs work.

Credits

Credits and Thanks:

  • shared-font example by yellows8 for loading system font with Freetype. All other font handling code (converting to SDL2, resizing on the fly, checking for glyphs, cache, etc) is my own.
  • Iguniisu for the icon.
  • Leo For the Traditional Chinese translation.
  • JamePeng For the Simplified Chinese translation..

External links

Advertising: