github BernardoGiordano/Checkpoint v5.0.0
Checkpoint 5.0.0

6 hours ago

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:/<3ds|switch>/Checkpoint/scripts/universal to be offered for every title, or in scripts/<title id> 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 <checkpoint.h>, 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: the API reference, the interpreter's limits, recipes, and a checklist for both human and AI script authors.
    • 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 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.
  • 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; 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.

qr

If you wish to contribute, pull requests are highly appreciated.


Discord

Don't miss a new Checkpoint release

NewReleases is sending notifications on new releases.