Releases: J-D-K/JKSV
JKSV 09/13/2025
JKSV 09/13/2025
This release addresses the following issues:
- A bug in string sanitation logic has been corrected that would result in the final character being replaced with a null terminator.
- Non-safe path characters are now ignored instead of replaced with spaces. This prevents duplicate spaces in safe titles and nicknames.
- As a result, some titles may not match their previous output directories. I understand this might be inconvenient, but the change helps keep paths cleaner and more consistent, and it may also improve compatibility with certain WebDAV implementations.
What's new:
- Korean language text has been updated thanks to @DDinghoya!
- State transition logic has been consolidated into a single class.
I know this may be inconvenient, and I truly appreciate everyone’s patience. I’m doing my best, but I’m only human. If you notice anything wrong or off at all, don't hesitate to report it.
JKSV 09/08/2025
JKSV 09/08/2025:
This release addresses the following issues with the previous release:
- Empty directories in ZIP backups are now preserved correctly.
- Directory entries in ZIP backups are now handled properly.
- This resolves a bug where ZIPs created by other programs could fail to restore.
- Available journaling space is now fetched directly from save data before falling back to default NACP values.
- Path sanitation logic has been corrected so Pokémon titles now use the same output path as in the original JKSV.
- Addresses a small oversight where icons would fail to shrink back to their original size.
What's new:
- File Mode has been implemented:
- Access it by highlighting a game, pressing X, and choosing Open in File Mode.
- Extra features such as browsing various filesystems on the Switch have been implemented now.
- NOTE: File Mode in the rewrite functions differently from the original JKSV in a few ways. It may take some adjusting.
- FsLib has been updated to be fully RAII-compliant.
- Various small tweaks and improvements across JKSV and its libraries.
Thanks to:
@qazrfv1234 for updating the Traditional Chinese translation!
Feedback:
If you encounter bugs, issues, or have feature requests, feel free to report them here.
Support
If you appreciate my work with JKSV and would like to show support, you can. It's never required, but I do appreciate it! Thank you so much Nick and Impeeza! I really appreciate it!
JKSV Rewrite First Release
JKSV 08/25/2025
This version of JKSV has been rewritten from the ground up. It shares none of original version's code. The goal of this was to make JKSV more stable, navigable, and maintainable.
-
As mentioned, JKSV has been completely overhauled and rewritten.
- C++ features: JKSV now makes proper use of polymorphism, RAII, STL containers, and smart pointers throughout.
- State system: Replaces the old mess of global variables to track state. This alone makes the code far easier to follow and maintain.
- Resource management: No more manual memory management. No more memory leaks.
- C APIs: All C library APIs are wrapped in classes and smart pointers. This ensures proper cleanup and makes the code easier to work with.
- Error logging: Errors are logged with file, function, and line number, making issues far easier to track down.
- Code structure and quality: Overall readability and maintainability have been drastically improved.
-
Cached boot.
- Faster startup: JKSV now caches title data to improve boot times. On recent firmwares, Nintendo’s changes have slowed down
NsGetApplicationControlData. Caching title information resolves this issue. - Automatic invalidation: JKSV detects and rebuilds the cache itself whenever new titles are detected. Unlike JKSM on 3DS, there’s no need to manually refresh this yourself.
- Faster startup: JKSV now caches title data to improve boot times. On recent firmwares, Nintendo’s changes have slowed down
-
Remote storage heavily reworked.
- System overhaul: The entire remote storage system has been reworked from the ground up.
- Expansion: The new design makes it simpler to add support for additional services in the future.
- Important note: Adding support depends on the information a service requires. I’m not handing over all of my personal info just so JKSV can support it.
-
Overhauled WebDav code.
- Completely reworked: The WebDav code has been rewritten from the ground up.
- Namespace agnostic: Instead of slicing and splicing namespaces to find XML tags, the new code ignores them entirely. This eliminates unnecessary string allocations and improves compatibility.
- Recursive fetching: Your entire WebDav listing is now fetched and processed recursively on boot, rather than on-demand. This eliminates UI pauses when servers respond slowly.
- Consistency: Changing the output path for a title on your Switch now also updates the folder on your WebDav server automatically. This should have been like this in the first place...
- Instructions for setting up WebDav can be found here.
-
Reworked Google Drive code.
- Major cleanup: The Google Drive integration has been heavily reworked, fixing various issues and inconsistencies.
- Full title support: Folder names once again use full UTF-8 titles. This was changed with the previous WebDav implementation and has been reverted.
- New login method: Instead of relying on the Switch’s built-in web browser, JKSV now uses the Limited Input method. You can now log in with your phone or another device instead.
- Instructions for setting up Google Drive can be found here.
-
Reworked file handling logic.
- Complete overhaul: All file handling logic has been rewritten from the ground up.
- Bug fix: This addresses a rare issue where JKSV could get stuck at the end of a file transfer.
-
Reworked UI Code.
- Complete overhaul: All UI code and elements have been rewritten and fine-tuned.
- Familiar Layout: The interface remains familiar, but everything underneath is completely different.
- Better translation support: The UI was designed from the ground up with translations in mind. In the original, this was just tacked on later.
- Text Menu (JKSM 2016) Mode Returns: For fans of the original JKSM on 3DS, JKSV now supports JKSM Mode where titles are listed using text menus instead of an icon grid array.
-
Additions.
- Auto-Upload: JKSV can now automatically upload backups to your selected service and remove them from the SD card.
- Controllable compression level: You can set the compression level used when creating zipped backups.
- Text Menu (JKSM) mode: Toggle between icon grids and text menus for displaying titles.
- Toggleable System Saves: You can now toggle whether scanning, loading, and display Device, BCAT, Cache, and System is desired. Disabling all of them also improves boot times.
- JKSV now includes a metadata file in backups containing information about the save. This improves accuracy and reliability when restoring saves.
-
Notes concerning missing features.
Include Device Saves with Usershasn't been implemented yet. It requires some careful consideration and planning.- File Mode is not available yet.
- Filtering paths from backup and deletion is not yet implemented.
-
Additional Notes.
- Most backups from the original JKSV are compatible. Exceptions include titles that extend save data, which are now handled correctly in the rewrite.
- The SVI format has been revised. SVI files from the original JKSV are not compatible with this rewrite.
- The translations provided are all completed by AI. If you have revisions or would like to fix them, feel free to do so!
- Some work may still be needed regarding cache type saves and handling them.
- JKSV's rewrite does not use the same configuration file as the original. You will need to reconfigure it.
Extra, extra notes:
-
Uses FsLib, a C++ wrapper library I wrote around 3DS and Switch FS calls.
- More control: FsLib allows me finer control over file operations.
- For example, if the final size of a file is known ahead of time, FsLib can skip redundant calls to extend the file during writes. This speeds up file transfers.
- Paths are standardized upon construction to ensure compatibility with the Switch's FS.
- Improved error handling and logging: Every operation returns whether it succeeded. If not, FsLib records an internal error string with the location and error code for easier debugging.
- Because of this, the option Use FS Commands Directly has been removed as it serves no purpose anymore.
- More control: FsLib allows me finer control over file operations.
-
Uses SDLLib, a C++ wrapper library I wrote containing reusable functions all of my projects share.
- Central Texture Manager: All textures are now loaded, tracked, and freed by a single manager, eliminating duplicate handling.
- Surfaces & Textures wrapped: SDL Surfaces and Textures are wrapped in smart pointers or classes, ensuring proper cleanup.
- Improved text handling: Text handling has been reworked and improved compared to the original JKSV implementation.
TL;DR
This is effectively a completely different program. It looks like JKSV, runs like JKSV, but it's a completely different beast.
Support
I don’t expect it, and it’s absolutely not required, but rewriting JKSV to be the best it can be has, and still is, taking a lot of time and hard work. If you’d like to show your appreciation, you can now, and I truly do appreciate it.
11/05/2024
NOTE: This build of JKSV is extremely outdated and obsolete. If you have been linked directly to it, the latest releases can found here instead.
JKSV 11/05/2024:
- JKSV's default configuration settings have been updated to use ZIP as the default backup option instead of JKSM's original unpacked folder format.
- This can be changed by scrolling down to the end of the user selection menu and opening the settings menu if you wish to use folders instead. Note that ZIP offers higher compatibility with games that use UTF-8 file paths and other oddities that the save containers allow that the SD card does not. Folders allow easier access to the files themselves.
- If you've been using JKSV for a while, chances are your current configuration file will override this change. If you would like the best compatibility possible, I recommend toggling the "Export Saves to ZIP" option to on from here on out.
- With this release, I've included a ZIP with my preferred configuration when I use JKSV. Simply unzip it to your SD card and you're good to go.
- JKSV's configuration file is now written upon toggling or changing an option instead of at exit or cleanup. Too many people aren't aware you should be exiting JKSV with plus instead of the home button to allow it to save your configuration and cleanup.
- Updated translations for:
- Traditional Chinese by @qazrfv1234.
- Italian by @Pf-16
- Korean by @DDinghoya
- Latin American Spanish (ES419) by @impeeza
- Updated WebDav instructions thanks to @impeeza
- I have written a guide to JKSV's settings menu and what the options do here.
With that, I would like to focus on FsLib and rewriting JKSV. I've learned a lot over the past few years and am aware of a lot of things I could have and should have done differently.
Thanks everyone. Take care of yourselves.
JK
08/06/2024
Oops, I lied: Extra release edition.
This release contains the following fixes and tweaks for Webdav:
- Fixes empty file names on certain Webdav servers.
- Uses path safe titles for Webdav servers.
NOTE: This will cause an issue where this release of JKSV will target a different parent folder than the previous one for Webdav.
As with the previous, everyone should thank @rado0x54 for the Webdav support and fixes.
Have a nice day everyone!
07/18/2024
JKSV version 07/18/2024:
- (Experimental?) WebDav support thanks to @rado0x54. Instructions for using and setting it up can be found in Remote Instructions.
I'd also like to take this time to actually sincerely thank and apologize to @rado0x54. I didn't mean to ignore you or ignore your work and I really do think it's cool and appreciate it.
This will be the final release of JKSV until my work cleaning up and rewriting the code is finished. I wish I could freeze time and have it done overnight, but I can't. Thanks for being patient everyone.
02.23.2023
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.
-JK
09.01.2021
- 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.
08.31.2021 - UI Revamp + Partial Rewrite
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 ZIPis disabled, adding.zipto the end of a file name will force compression to be used..ziphas 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.
As usual, report issues on git. Updates will be issued for major bugs and translations. There may be other changes I missed and the readme will be updated soon.
08.01.2021
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.
This will be the final release using the old master branch code. So, it will also the last to have the text UI toggle.