Back
Checkpoint
by FlagBrew
|
Version | 3.10.0 |
Zip size | 4,349 KiB |
License | GPLv3 |
Updated | 19/04/2025 |
Downloads | 251,318 |
MD5 | 377703c680f5b6648e9c0c3405f6aa28 |
App Details
Why use Checkpoint?
Checkpoint is created following ideas of simplicity and efficiency. The UI has been designed to condense as many options as possible, while keeping it simple to work with.
Moreover, Checkpoint is extremely lightweight - while being packaged with a nice graphic user interface - and is built using the most recent libraries available.
Checkpoint for Switch natively supports NAND saves for the titles you have played. Title information are loaded automatically.
Working path
Checkpoint relies on the following folders to store the files it generates. Note that all the working directories are automatically generated on first launch (or when Checkpoint finds a new title that doesn't have a working directory yet).
- sdmc:/switch/Checkpoint: root path
- sdmc:/switch/Checkpoint/config.json: custom configuration file
- sdmc:/switch/Checkpoint/saves/
: 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
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.