: root path for all the save backups for a generic game
Usage
Checkpoint for Switch only runs on homebrew launcher. Make sure you're running up-to-date payloads.
The first launch will take considerably longer than usual (usually 1-2 minutes depending on how many titles you have installed), due to the working directories being created - Checkpoint will be significatively faster upon launch from then on.
You can scroll between the title list with the DPAD/LR and target a title with A when the selector is on it. Now, you can use the DPAD or the touchscreen to select a target backup to restore/overwrite.
Screenshots
Changelog
v5.3.0
3DS: What's new
- Added: WarioWare: D.I.Y. save backup and restore. Its 16 MB save lives in NAND inside the cartridge instead of on a save chip, where no 3DS save interface can reach it. Checkpoint now talks to the cartridge directly, so you back it up and restore it from the title list like any other DS cart: no GodMode9i, no rebooting into DS mode.
- This is particularly exciting because the strategy used to allow this functionality without rebooting in DS mode is brand new and this was thought to be impossible to achieve in the past.
- A backup takes about a minute. A restore only rewrites the pages that differ from what is already on the cartridge, and reads every page it writes back to verify it. Restoring the backup you just made writes nothing at all; the worst case, where every page differs, takes about 6.5 minutes.
- Checkpoint's dumps were checked byte for byte against GodMode9i's dumps of the same cartridge.
- The CIA build is required.- The 3DSX build can't reach the cartridge controller, so it refuses instead of reading.
- So far this has been tested on one European cartridge. Other regions, and the other carts that save the same way, are recognised but not verified yet: please- report back.
- Don't remove the cartridge or turn off the console during a restore. Pages that were already written stay written, so an interrupted restore leaves the save half old and half new until you run it again.
- Fixed: DS cart backups no longer fail at random while writing to the SD card.
- Fixed: backing up the extdata of the theme entries no longer fails.
- General system stability improvements to enhance the user's experience.
Switch: What's new
- Fixed: restoring a save no longer inflates it to over 64 MB. Since 5.1.0, every restore extended the save data area by its safety margin even when the backup already fit, so a 2 MB save came back at 65 MB. The area is now extended only when the backup actually needs more room than it has.
- Fixed: Checkpoint now opens on the profile it was launched under, instead of always starting on the first user. A title override uses the profile you picked at launch; applet mode uses the profile that last opened a game.
- Fixed: the account picker can now be reached with the controller. The avatar at the bottom of the sidebar is part of the sidebar cursor now: press Down past the settings gear. ZL still opens it too.
- General system stability improvements to enhance the user's experience.
Wireless transfer: What's new
- Added: a configurable server port, in Settings > Network (3DS) / Connectivity (Switch), under Server port.
- 8000 is still the default. Change it when another program already holds that port.
- The port is shared by the wireless receiver and the log server, and takes effect the next time Checkpoint starts. Anything from 1024 to 65535 is accepted.
- The Receive screen shows the port, as before. chlink takes it with --port, or as --to :.
Scripting: What's new
- Fixed: webdav now works with Synology's WebDAV Server. Synology accepted the login and then answered the folder check with a 403, because the request named the folder without its trailing /. Folders are now always requested with the slash, which is the form the WebDAV spec tells clients to use.
If you wish to contribute, pull requests are highly appreciated.
v5.2.0
Updates: What's new
- Added: autoupdater- (106).
- The check runs in the background, so the title list still loads while it happens. Nothing is ever installed without you agreeing to it first.
- Automatic updates are on by default and can be turned off in Settings.
- Fun fact: this was the oldest open feature request on the repository. It was filed in June 2018. Eight years is a long time to wait, but here it is.
Switch: What's new
- Added: MTP USB transfers. Plug the console into your PC with the charging cable and Checkpoint shows up as a portable device, exactly like a phone or a camera does.
- Turn it on in Settings > Connectivity, under USB (MTP). It's off by default, and the line underneath tells you its status: waiting for a PC, connected, or USB unavailable.
- USB unavailable usually means the console is docked or something else has already claimed the port. Checkpoint keeps trying in the background, so undocking is enough: no restart needed.
- General system stability improvements to enhance the user's experience.
3DS: What's new
- Added: the Internet Browser is back in the title list- (579), so its save data can be backed up and restored like any other title's. It used to be hidden away with the manuals and the update titles.
- Added: an empty title list now says so, and tells you how to load it again, instead of showing you a blank screen with no explanation (580).
- Fixed: Backup and Restore now fill the row properly when wireless transfer is turned off. The Send button's slot used to stay behind as an empty gap. The two buttons now split the space between them, which also leaves room for the full "Backup" and "Restore" wording instead of the shortened labels.
- Added: notifications, a script that backs up and restores everything behind the Notifications applet (3DS, 579).
- The SpotPass content and the notification list don't belong to a title, so nothing in Checkpoint could reach it before.
- Added: citrahold, a script that syncs your save and extdata backups with a 3rd party service called Citrahold: https://www.citrahold.com (3DS, 585, thanks @solitonmedic), which we are not affiliated with.
- Setup is in scripts/citrahold.md: https://github.com/FlagBrew/Checkpoint/blob/master/scripts/citrahold.md.
- Added: sav_open_system, a new API call that lets a script reach the console's own system save data (3DS).
- Removed: holding B to reload the title list. Refresh title list- is a normal entry in the SELECT menu now.
- General system stability improvements to enhance the user's experience.
If you wish to contribute, pull requests are highly appreciated.
v5.1.0
FTP: What's new
- Fixed: the FTP server is a new implementation. The old core is gone, replaced with the latest source code from mtheall: https://github.com/mtheall's ftpd: https://github.com/mtheall/ftpd, which has been adapted to properly fit in Checkpoint.
- Fixed: 3DS transfers are roughly 4x faster on upload and 2x on download. The bottleneck was synchronous socket calls stalling the transfer thread, so the console now overlaps disk and network work instead of alternating between them.
- You'll notice the UI being a bit less responsive on the 3DS when FTP transfers are running: this is completely normal.
- Fixed: the Switch server no longer exhausts the system's socket buffers during a folder upload, which left it unable to accept new data connections until it timed out.
- Fixed: turning FTP off in Settings now closes the listening socket and drops the sessions, instead of leaving the port open.
Scripting: What's new
- Added: browser, a file browser for the SD card and- for a title's live save archive.
- It supports copy, move, rename, delete, make folders, read properties, zip and unzip, one item or a batch at a time.
- It is the practical way to reach into a save without a PC: pull one file out of an archive onto the card, drop an edited one back in, or move a folder between two titles.
- Added: extdata- (3DS), to create the extdata archive a title never made (576).
- This script solves an issue where game mods use extdata for a title that never creates them. The script allows to artificially create a new extdata archive for that title.
- It also inspects any extdata id, including one a mod wrote under an id Checkpoint does not derive from the title id, and deletes an archive when you mean to.
- Added: new API calls, all documented in scripts/README.md: https://github.com/FlagBrew/Checkpoint/blob/master/scripts/README.md.
- sav_mkdir, sav_rmdir and sav_rename: scripts can now shape the folder structure inside a save archive, not just read and write files in it.
- sav_open_extdata, to open a per-title extdata archive by its raw id.
- extdata_default_id, extdata_create and extdata_delete (3DS; they return -1 on Switch). extdata_create refuses to touch an archive that already exists, so a mistyped id cannot erase a save.
- Fixed: the 3DS title catalog handed to scripts now also holds the titles that appear in the Extdata list alone.
- Fixed: strdup allocates on the same run-scoped heap as malloc, so free() releases it and an aborted run reclaims it.
Wireless transfer: What's new
- Added: a fixed Receive PIN, in Settings > Network (3DS) / Connectivity (Switch).
- The PIN is still random per receive by default. Pin one and a chlink send --pin 1234 baked into a script keeps working run after run, which is what makes unattended batch transfers from the PC possible.
- Fixed: chlink send failing with "receiver rejected the PIN (403): Invalid token"- (561). Go canonicalises header names before writing them, so the console's case-sensitive lookup never found the token header and rejected every upload.
- Fixed: a backup received from a sender that identifies no installed title no longer lands in an "Unknown title" folder (572). It goes to the title whose backup list you opened Receive from, which is the one you pointed at.
- Fixed: the receiver no longer logs a connection in progress as an error, and no longer floods the log during a transfer.
3DS: What's new
- Fixed: a restore that cannot fit the console's path limit is refused before anything is deleted. It used to wipe the save archive first and die afterwards, on a backup folder the filesystem was never going to accept. Both the copy roots and every entry under them are checked up front, and the message names the offending path.
- Fixed: files a desktop OS left next to your backup no longer break a restore- (577). macOS stores a file's extended attributes in a ._ sidecar next to it on FAT/exFAT, and drops .DS_Store in every folder Finder opens; a restore hit one after- it had already cleared the console-side save. Those, and the equivalents Windows leaves behind, are now filtered out of the copy.
- Fixed: carts whose save lives in on-cart NAND are now identified- (553, WarioWare: D.I.Y. and friends). They have no SPI save chip, so the probe used to report a bogus capacity and back up whatever the bus returned. Checkpoint now says what the cart is and points at GodMode9i in DS mode, rather than failing with a save archive error.
- Fixed: the progress modal no longer looks frozen while a restore clears the destination- (559). Clearing an extdata archive of thousands of files is now its own progress stage, and the stage labels (Backup, Restore, Clearing, Sending...) are translated.
- Fixed: buttons no longer do anything while the title list is still loading (565). You could back up or restore a title you could not see yet, against a selection that was about to move.
- Added: Simplified Chinese is selectable in Settings- (566, thanks @dragonflylee). The translation shipped in 5.0.0 but the 3DS language list never offered it.
- Added: New 3DS consoles also run their application cores at 804 MHz now. This is a no-op on Old 3DS and 2DS.
- General system stability improvements to enhance the user's experience.
Switch: What's new
- Fixed: restoring a save of tens of thousands of small files no longer stalls near the end.
- The save data area is extended when the backup needs more room than it has.
- Files are preallocated instead of being grown block by block, and the free space is checked against the cluster-rounded requirement after the wipe, so the restore refuses up front instead of dying at 95%.
- The copy is counted against the pre-flight scan: a restore that reports success but moved fewer files than the backup holds is now reported as the failure it is.
- Save partition space is logged at every step, so a restore that still fails can be diagnosed from the log.
- Fixed: restore verification is about twice as fast. The CRC of each file is taken from the bytes already in the copy buffer, so the verify pass re-reads only the committed save instead of both sides.
- Fixed: the console no longer goes to sleep in the middle of a backup, restore or transfer- (574). Sleeping suspended the process mid-copy, on the save filesystem, with a journal half committed. Only auto-sleep is held off: the screen still dims on its usual idle delay.
- Added: the selection ring and the grid now animate between tiles instead of jumping, and snap when what is underneath changes (a different save type filter, a different account).
- Fixed: the same progress and stage-label work as the 3DS side (559).
- General system stability improvements to enhance the user's experience.
Translations
- Added: Russian- translation (thanks @Waleri228)
- Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese, Simplified Chinese and Russian.
- If you're a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.
If you wish to contribute, pull requests are highly appreciated.
v5.0.0
Checkpoint 4.0.0 was the largest update the app ever had. Version 5.0.0 redefines what the app is.
Checkpoint is now a save management framework: everything it can do to a save is also reachable from scripts you write yourself and drop on the SD card, so your console can do things no release of Checkpoint ever shipped with. The cheat manager is back as one of those scripts, and so is cloud save sync, to Google Drive, or to any WebDAV server you already run.
Enjoy!
Scripting: What's new
- Added: a scripting engine. Checkpoint runs C scripts, interpreted on the console. A script is a single .c file on the SD card: no compiler, no rebuild, no reflash.
- Scripts live in sdmc://Checkpoint/scripts/universal to be offered for every title, or in scripts/ to be offered for that title only.
- Added: a new Scripts menu, reachable with SELECT- on 3DS and Minus- on Switch.
- Scripts get a native API through include , reaching the same functions the app itself uses: the title catalog, save archives (3DS extdata and shared extdata included) to read, write, delete, list and commit files into, SD card I/O, zip pack and unpack, HTTP requests and streamed file uploads, JSON parsing, and UI dialogs rendered by Checkpoint itself.
- Added: a console UI for scripts. A running script owns the screen: its output streams into a scrollable log pane, while its messages, confirmations, pickers, keyboards and nested progress bars take the other screen on 3DS, or a card over the transcript on Switch.
- Added: script cancellation. Holding B- aborts any script, even one stuck in an infinite loop, without rebooting the console.
- Added: a sealing API, to let scripts store secrets like tokens and passwords on the SD card encrypted with a console-bound key, and optionally with a passphrase of your choice.
- Scripts also get picoc's C standard library: stdio, stdlib, string, unistd, ctype, math and time.
- Added: full scripting documentation, in scripts/README.md: https://github.com/FlagBrew/Checkpoint/blob/master/scripts/README.md: the API reference, the interpreter's limits, recipes, and a checklist for both human and AI script authors.
- scripts/examples/example.c: https://github.com/FlagBrew/Checkpoint/blob/master/scripts/examples/example.c is a runnable guided tour of the API, one menu entry per area.
- tools/scriptlint.sh parse-checks your scripts on your PC, before you copy them onto the SD card.
- Fixed: exceptions thrown while a script runs are caught and reported to you, instead of terminating the app non-deterministically.
Bundled scripts
- Added: sharkive, and with it the cheat manager is back.
- It downloads the latest Sharkive: https://github.com/FlagBrew/Sharkive database, lets you pick cheats per title, and writes the cheat files Luma3DS (3DS) and Atmosphere (Switch) expect.
- Because it is a script now, the cheat database follows Sharkive instead of waiting for a Checkpoint release. This solves one of the maintenance problems that made the feature go away in 4.0.0.
- Note: if you're not satisfied with the cheats distributed in Sharkive, you can submit issues and patches to the repo itself, or contribute by writing a script that downloads cheats from another provider. Checkpoint is really open to contributions.
- Added: googledrive, to sync your save backups to your own Google Drive.
- Sign-in happens through Google's device flow: the console shows a code, you type it on your phone or PC.
- Sync everything, a single title, or a single backup. Each backup is uploaded as a zip, and already uploaded backups are skipped.
- Your credentials are sealed with the new encryption API, so they never sit on the SD card in the clear. Setup instructions are in scripts/googledrive.md: https://github.com/FlagBrew/Checkpoint/blob/master/scripts/googledrive.md.
- Added: webdav, to sync those same backups to any WebDAV server you already run: Nextcloud, ownCloud, Synology, Apache mod_dav, rclone serve webdav, most NAS "personal cloud" apps.
- Upload every title, one title, or a single backup, skipping what is already on the server. It can also pull a backup back down onto the console, where Checkpoint's usual Restore takes over.
- Credentials are sealed with the encryption API, like Drive's. Setup, with the right base URL for each common server, is in scripts/webdav.md: https://github.com/FlagBrew/Checkpoint/blob/master/scripts/webdav.md; tools/webdav-testserver.py gives you a throwaway server on your PC to try the whole round trip against first.
- Added: playcoins, to set the console's Play Coins (3DS).
- Note: the play coins management feature is now available via scripts only.
3DS: What's new
- Added: a menu overlay to reach Settings and Scripts.
- Fixed: GBA Virtual Console saves now move between consoles- (557). A backup used to be the whole console-side container, signed for the console that made it, so restoring it anywhere else failed, or reported success and left the game's own save untouched.
- A backup is now the bare save file, the same 512 B to 128 KB .sav an emulator or GodMode9 reads, and restoring writes it back into the container and re-signs it for the console doing the restoring.
- Backups taken by older versions of Checkpoint still restore.
- Fixed: Checkpoint now runs on emulators. The Rosalina hb:ldr check is skipped when an emulator is detected, instead of refusing to boot.
- Fixed: modal dialogs now measure and lay out their text properly, so larger text and translated strings are not clipped anymore.
- Fixed: a memory corruption in the choice overlay's callback.
- General system stability improvements to enhance the user's experience.
Switch: What's new
- Added: a Scripts entry in the sidebar, and a menu overlay to reach Settings and Scripts.
- Fixed: the app doesn't hang anymore when the account selector is opened while backup sizes are still being computed. The size worker now pauses while the applet is up.
- Fixed: truncated backup names in the backup list.
- Fixed: modal dialogs now measure and lay out their text properly, so larger text and translated strings are not clipped anymore.
- Fixed: threads are torn down properly when the app is forced to exit.
- Fixed: unhandled exceptions are logged with far more detail, so crashes can actually be diagnosed from the log.
- General system stability improvements to enhance the user's experience.
chlink: What's new
- Fixed: a backup that travels as a single file instead of a zip -- a DS cart save, a GBA VC save -- arrived with the dot stripped out of its name (00000001 sav), and nothing could restore it afterwards. The receiving side keeps the extension now, on both consoles and in chlink.
- Backups already received with a mangled name are not lost: a raw backup folder holding a single file is restored whatever that file is called.
- Added: the receiver logs each stored file with its size and destination, and says how far it got when a transfer fails.
Translations
- Added: Simplified Chinese- translation (thanks @JeanPhoenixWong)
- Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Simplified Chinese.
- If you're a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.
If you wish to contribute, pull requests are highly appreciated.
v4.0.0
This is genuinely the largest Checkpoint update since its original release 9 years ago.
Working on it was fun and rewarding. Enjoy!
3DS: What's new
- Added: GBA Virtual Console save backup and restore- (thanks @LiquidFenrir)
- Added: DSiWare save backup and restore- (thanks @SNBeast for the feature PoC)
- Added: complete UI/UX redesign
- Added: background FTP server. Access your save backups from the PC directly through Checkpoint
- Added: a brand new Settings section: it is now possible to edit Checkpoint's config.json file directly from the console with a nice settings interface.
- Added: light and dark mode- theming
- Added: a folder browser to navigate the SD card and choose additional save folders on device
- Added: quick backup toggle to use the default backup name without any prompt
- Added: confirm restore toggle to avoid being asked for confirmation for save restore operations
- Added: it is now possible to configure additional save folders for DS titles.
- Added: internazionalization support.
- Translations have been done through the use of LLMs. If you're a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.
- Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Chinese
- Added: backup cancellation by holding B during backup
- Fixed: backup list navigation is now massively more intuitive
- Fixed: async IO makes file operations faster and more efficient by running them in a worker thread, separated from the main UI thread
- Fixed: greatly improved cached and uncached title loading times
- Fixed: cached text storage now allows faster rendering for all the text in the interface
- Fixed: the project's code architecture has been greatly improved.
- The codebase is now 9 years old and has never seen an architecture overhaul like this before.
- Dozens of performance, security and safety bugfixes have been pushed to the project, making the app more secure and efficient.
- Fixed: an issue where swapping DS carts would crash Checkpoint because of a stack-smashing bug
- Removed: cheats feature.
- The cheat database required constant updates to stay in sync with game updates, and its maintenance wasn't sustainable.
- General system stability improvements to enhance the user's experience.
Switch: What's new
- Added: complete UI/UX redesign
- Added: internazionalization support.
- Translations have been done through the use of LLMs. If you're a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.
- Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Chinese
- Added: a brand new Settings section: it is now possible to edit Checkpoint's config.json file directly from the console with a nice settings interface.
- Added: light and dark mode- theming
- Added: a folder browser to navigate the SD card and choose additional save folders on device
- Added: quick backup toggle to use the default backup name without any prompt
- Added: confirm restore toggle to avoid being asked for confirmation for save restore operations
- Added: file-by-file verification after restore
- Added: complete graphics backend migration from SDL2 to deko3d
- Among all the benefits that the rewrite brought to the software, the application size is now 70% smaller
- Added: HTTP log server on port 8000- — view logs in real-time from any browser on your network.
- Logs can now be accessed from the application directly via Settings > Connectivity > Logs.
- Added: 1080p docked mode support (alongside 720p handheld).
- Fixed: async IO makes file operations faster and more efficient by running them in a worker thread, separated from the main UI thread
- Fixed: backup list navigation is now massively more intuitive
- Added: large save restore with journal pre-extend and mid-file commits,
preventing out-of-space failures (fixes 541).
- Fixed: avoid restoring files after a corruption error occurred during copy.
- Fixed: the project's code architecture has been greatly improved.
- The codebase is now 9 years old and has never seen an architecture overhaul like this before.
- Dozens of performance, security and safety bugfixes have been pushed to the project, making the app more secure and efficient.
- Removed: pksmbridge save transfer feature
- Removed: cheats feature.
- The cheat database required constant updates to stay in sync with game updates, and its maintenance wasn't sustainable.
- Removed: the HTML settings page accessible through local network, and all its dependencies
- Removed: unneeded dependencies like the SDL2 suite and libpng.
- General system stability improvements to enhance the user's experience.
chlink: a new companion app
- Added: chlink, a companion command line app for your PC that works together with Checkpoint's wireless save transfer feature.
- Send save backups from your PC to the console, or receive them from the console to your PC, over your local network.
- Transfers are protected by a 4-digit PIN displayed on the console.
- chlink automatically recognizes backups stored in a Checkpoint SD card layout, so title and backup information are inferred for you.
- It ships as a single, dependency-free executable for Windows, macOS and Linux, attached to this release.
If you wish to contribute, pull requests are highly appreciated.
v3.13.0
What's new
- Added: support for 8MB DS cartridges.
- Added: wireless save transfer between 3DS consoles (thanks! @edu1010)
- The feature needs to be enabled via a flag in Checkpoint's configuration file.
- Added: show progress bars for DS cartridge backup and restore operations.
- The previous behaviour made Checkpoint look like it froze. The UX is more interactive now.
- Added: show an additional progress bar for multi-backup operations.
- Added: cheat database updated to latest Sharkive: https://github.com/FlagBrew/Sharkive release.
- Fixed: support for latest toolchains and libraries versions.
- General system stability improvements to enhance the user's experience.
If you wish to contribute, pull requests are highly appreciated.
v3.12.0
This release adds support for previously unsupported save types on the Switch. I didn't have any need to support them at the time because I didn't play any of these kind of games. After all these years, I still don't play them, but I felt it was time to properly support them into Checkpoint.
Important notice:- I wasn't able to test backup and/or restore these new save types first-hand. Use the new features carefully and please- report back! That's why this new version is currently in pre-release.
2026-04-26 update: I haven't heard about any regression or issue feedbacks, so I'm changing the status of this version from pre-release to release.
What's new
- Added: support BCAT saves- on the Switch version of the app.
- Added: support device saves- on the Switch version of the app.
- Added: support system saves- on the Switch version of the app.
- The UI of the app has been slightly upgraded to account for these new save types.
- Added: per-file progress bar.
- The UI will now display two progress bars, one for the overall save progress and one for each file in the save archive.
- Fixed: occasional crash when loading NAND saves on the 3DS version of the app.
- Fixed: Checkpoint should not freeze anymore when performing backup or restore operations.
- Fixed: support asian system fonts in the Switch version of the app.
- This solves an issue where special characters were not rendered in the UI.
- Fixed: add not-empty validation for backup names.
- Fixed: file paths could contain multiple / characters one after the other, causing folder deletion issues.
- Fixed: undefined behaviour when trying to close directories that were not opened.
- Fixed: undefined behaviour could occur when reading a file's size.
- Fixed: log directory read errors.
- General system stability improvements to enhance the user's experience.
If you wish to contribute, pull requests are highly appreciated.
v3.11.0
What's new
- Added: backup and restore modal UI has been greatly improved with a proper progress bar.
- Fixed: an issue with title cache persistence preventing new title installations from being recognized from Checkpoint.
- Fixed: occasional crashes when moving the buttons too fast on the 3DS version of the app.
- Fixed: an issue with the app freezing when holding B to refresh the title cache.
- Fixed: crash when no titles available on the Switch version of the app.
- Fixed: occasional crash when quitting the Switch version of the app.
- Fixed: name and icon of the selected account not updating on certain conditions.
- Fixed: various memory leaks here and there when disposing the application on quit.
- Fixed: properly print strings with percent characters in the logfile.
- Fixed: compiled with latest version of the needed dependencies.
- Added: cheat database updated to latest Sharkive: https://github.com/FlagBrew/Sharkive release.
- General system stability improvements to enhance the user's experience.
If you wish to contribute, pull requests are highly appreciated.
v3.10.2
I intended to add more value to this release by trying to enhance few things here and there, but I didn't manage to do it in the short time I had to get this build ready. I hope to bring something new and fresh to Checkpoint soon to keep the spark of this project alive.
Sometimes I wish I could write this software from scratch again to incorporate into it all the cool things and concepts I learned in the last 10 years of being a Software Engineer. But focus switches from one thing to another, interests change and, most importantly, time and energy are very limited in this moment in time.
But there will be another moment again, in which the spark will burn at full power.
What's new
- Fixed: breaking compatibility issue with latest Switch OS version.
- Fixed: compiled with latest version of the needed dependencies.
- Added: cheat database updated to latest Sharkive: https://github.com/FlagBrew/Sharkive release.
- General system stability improvements to enhance the user's experience.
If you wish to contribute, pull requests are highly appreciated.

v3.10.1
What's new
- Fixed: add support for archived, hidden and readonly 3ds save backup folders.
- This bug has been in the codebase from the very beginning. Eventually, we fixed it.
- Fixed: a bug where some text could not be rendered on screen properly.
- Added: cheat database updated to latest Sharkive: https://github.com/FlagBrew/Sharkive release.
- General system stability improvements to enhance the user's experience.
If you wish to contribute, pull requests are highly appreciated.
3.10.0
Fixed: startup time has been drastically improved: ~50% speedup on uncached boot, ~90% speedup on cached boot.
This has been achieved by profiling the application boot process, and realizing that title cache persistence on the SD card took majority of the loading time. Now this operation is lazily done in a separate thread. It's funny to realize that a badly implemented optimization can become a bottleneck of its own, so take my mistake as a lesson.
Here's the improvements I had on my console (improvements may vary since they depend on how many games you have on your console):
Uncached startup went down from 9.8s to 5.7s
Cached startup went down from 5.7s to 0.6s
Added: due to requests from multiple users, Checkpoint can now be updated from Universal Updater.
Fixed: cartridge loading now runs immediately rather than waiting for the title cache to be persisted on the SD card.
Fixed: properly quit the application gracefully when an handled exception occurs.
Fixed: initial code refactoring.
Removed: some redundant logs in the title loader.
General system stability improvements to enhance the user's experience.
3.9.0
This release mostly contains changes and patches related to the infamous 3.8.x startup crash issue affecting the 3DS version of the software. General improvements have been added to the Switch version as well.
Fixed: the startup crash issue affecting all version since 3.8.0 has been identified and patched.
Huge shoutout to achinech on Discord who volunteered to debug the issue on their console.
If you still encounter startup crash issues, please notify the team immediately on Discord and on GitHub issues.
Fixed: cartridge scanning has been refactored to be way more efficient.
Previously, the software used to poll the cartridge synchronously for every frame of the UI thread. Cartridge scanning is now happening on a separate thread which only runs twice per second.
Added: a more advanced threading framework ported from PKSM.
Added: networking support and an integrated HTTP server. This is currently used to provide real-time online access to the application logs, but this code will be useful for future features like self-updating.
Added: compiler optimizations are back. This includes link-time optimization and an upgrade from O2 to O3 compared to v.3.7.4.
Fixed: better configuration file handling ported from PKSM.
Fixed: better thread synchronization between UI thread and title loading thread.
Fixed: wrap the entire program into try-catch blocks to prevent crashes caused by other unhandled exceptions in the future.
Fixed: few graphics improvements.
Fixed: readme has been updated with latest screenshots.
General system stability improvements to enhance the user's experience.
3.8.2
Added: Initial upgrade from C++17 to C++20
Added: Built with latest Sharkive's cheats repository
Fixed: UI has been improved and rendering has been simplified in order to make the screen render faster
Fixed: the color scheme has been improved (to my liking)
Fixed: a crash when playing certain games and then going directly into checkpoint afterwards
Fixed: logs on the Switch version are now split by day. This avoids keeping a huge checkpoint.log file after years of use.
You can safely remove /switch/Checkpoint/checkpoint.log.
You can find the new logs under /switch/Checkpoint/logs folder.
Logs for the 3DS version will be added in the next releases.
Fixed: dependencies have been updated to their latest version
Fixed: displayed play time is now rendered correctly
Fixed: L/R buttons double binding (thanks @Noxor11)
Fixed: source compilation (thanks @mrhappyasthma and @l-austenfeld)
Removed: link time optimizations have been disabled.
These were originally introduced to strip down some weight off the compiled executable, but the difference is too small to consider this feature useful. LTO has caused some trouble in v3.8.0 on the 3DS version.