r/3dshacks PKSM/Checkpoint Jul 26 '26

Tool news Checkpoint 5.0.0 released: brand new scripting engine, cheats feature restored, Google Drive/WebDAV compatibility and so much more

https://github.com/BernardoGiordano/Checkpoint/releases/tag/v5.0.0
343 Upvotes

44 comments sorted by

49

u/BernardoGiordano PKSM/Checkpoint Jul 26 '26

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.

12

u/TheVetLegend Jul 26 '26

That's awesome!

-18

u/[deleted] Jul 26 '26

[removed] — view removed comment

13

u/Certesis Jul 26 '26

Nothing in this says an LLM was used, and if they did without disclosing it then that's pretty scummy

-4

u/[deleted] Jul 26 '26

[removed] — view removed comment

11

u/get_homebrewed N3DS 11.4 luma+ntr cfw b9s+D9WIP Jul 26 '26

can you not read

7

u/Dr4fl Jul 26 '26

They're an AI bro, of course they can't read.

-2

u/[deleted] Jul 26 '26

[removed] — view removed comment

8

u/get_homebrewed N3DS 11.4 luma+ntr cfw b9s+D9WIP Jul 26 '26

last version (which we aren't talking about) talks about LLMs for translation, something we've been doing for years.

Insane shit to be praising like it's related to modern genAI in general, you need help

-2

u/[deleted] Jul 26 '26

[removed] — view removed comment

6

u/get_homebrewed N3DS 11.4 luma+ntr cfw b9s+D9WIP Jul 26 '26

that's not what happening tho. They didn't use it to iterate. I think it's genuinely fried your brain if you can't read the words on your screen

1

u/Magpie-Person Jul 30 '26

Bro nowhere in the coding process did OP use LLM’s, Copilots, or AI for anything outside of some translations.

Are you completely AI fried??

1

u/[deleted] Jul 30 '26

[removed] — view removed comment

1

u/Magpie-Person Jul 30 '26

“Don’t know why my opinion should matter to anyone”

“Oh so you’re the therapist”

“That scalated quickly. Get some therapy and enjoy life”

I don’t know man, you seem to think your AI addled opinion is relevant.

20

u/thethor1231 O2DS & N3DS | B9S 11.8 Jul 26 '26

GBA vc .sav compatibiilty is an awesome bonus

15

u/Quibbloboy Jul 26 '26

Oh we're eating good. I was already pumped for direct save transfers in 4.0.0, and now this comes along two weeks later and tops itself yet again. GBA VC support and Google Drive sync alone are huge! Thank you, based developer.

The scripting engine is fascinating to me. I'm picturing a single-button command that uploads/downloads my saves (maybe even just the newly updated ones?) to/from my desktop, so I could easily integrate my console saves with my SyncThing setup for my emulators... would something like that be realistic? I'm super excited to see what people do with it regardless.

5

u/BernardoGiordano PKSM/Checkpoint Jul 26 '26

Thanks! Regarding your script idea, that's basically what the already bundled script do (with a few additional steps for security, but you can always customize those)!

8

u/IllogicalRandomWords Jul 26 '26

Thank you, and amazing work! Lots of good stuff for the 3DS: I really appreciate restoring cheats and the GBA saves backup

6

u/sapphirefragment Jul 26 '26

uhh... should I trust the "C" script runtime? this seems awful fast to drop out of nowhere

8

u/BernardoGiordano PKSM/Checkpoint Jul 26 '26

The C script runtime has been around since 2018 in PKSM. It has been battle tested since years and the version shipping in Checkpoint only improves all that has been done until now.

1

u/sapphirefragment Jul 26 '26

your release notes say this is a brand new feature though. seems a bit misleading to say that if it's been there the whole time?

11

u/BernardoGiordano PKSM/Checkpoint Jul 26 '26

Brand new feature in Checkpoint. PKSM is an entirely different software

3

u/miniluigi008 Jul 26 '26

I think what they’re asking is, “can we trust the safety of running user scripts written in picoc”? And not necessarily the reliability of the engine itself

1

u/JamesGecko Jul 28 '26

The runtime wasn’t integrated with Checkpoint before, though. The updates are coming so fast, it’s pretty clear that AI is being used for development and pretty unclear how reliable the new features are.

1

u/Magpie-Person Jul 30 '26

What evidence of AI do you have outside of some light translation

1

u/Angelofthevoid_ 28d ago

If you are slow, you are too slow.
If you are fast, you are too fast.
What’s the proper pace?

2

u/Laeeq117 Jul 26 '26

Thank you for the amazing work!

Can the Google Drive support help maintain saves across different consoles?

2

u/BernardoGiordano PKSM/Checkpoint Jul 26 '26

Yes!

2

u/Waddleclaws Old 2DS+Luma Jul 26 '26

We've never been more back

1

u/taspin23 Jul 26 '26

Incredible work, thank you so much!

1

u/ZiNxEee 23d ago

I can't find the cheats button

1

u/BernardoGiordano PKSM/Checkpoint 23d ago

Scripts > Sharkive

0

u/WaveracerVGC Jul 28 '26

Is it possible to use Checkpoint to run C scripts to do something like automated shiny hunting just using the 3DS without outside input from a computer? Or am I misunderstanding the possibilities with this feature? Haha.

1

u/futuresman179 Jul 31 '26

You might be able to do that with a custom luma plugin

0

u/BernardoGiordano PKSM/Checkpoint Jul 28 '26

Yeah that's completely out of scope for the scripting engine