Coder Social home page Coder Social logo

bernardogiordano / checkpoint Goto Github PK

View Code? Open in Web Editor NEW
2.5K 136.0 150.0 1.94 MB

Fast and simple homebrew save manager for 3DS and Switch.

License: GNU General Public License v3.0

Makefile 4.07% C++ 78.56% C 15.27% CSS 0.02% HTML 0.74% JavaScript 1.34%
checkpoint homebrew-launcher switch backup restore

checkpoint's Introduction

Checkpoint

A fast and simple homebrew save manager for 3DS and Switch written in C++.

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 3DS natively supports 3DS and DS cartridges, digital standard titles and demo titles. It also automatically checks and filters homebrew titles which may not have a save archive to backup or restore, which is done without an external title list and filters. For this reason, Checkpoint doesn't need constant user maintenance to retain full functionality.

Checkpoint for Switch natively supports NAND saves for the titles you have played. Title information are loaded automatically.

Usage

You can use Checkpoint for 3DS with both cfw and Rosalina-based Homebrew Launchers. *hax-based Homebrew Launchers are not supported by Checkpoint.

Checkpoint for Switch runs on homebrew launcher. Make sure you're running up-to-date payloads.

The first launch of the 3DS version 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.

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).

3DS

  • sdmc:/3ds/Checkpoint: root path
  • sdmc:/3ds/Checkpoint/config.json: custom configuration file
  • sdmc:/3ds/Checkpoint/saves/<unique id> <game title>: root path for all the save backups for a generic game
  • sdmc:/3ds/Checkpoint/extdata/<unique id> <game title>: root path for all the extdata backups for a generic game

Switch

  • sdmc:/switch/Checkpoint: root path
  • sdmc:/switch/Checkpoint/config.json: custom configuration file
  • sdmc:/switch/Checkpoint/saves/<title id> <game title>: root path for all the save backups for a generic game

Configuration file

You can add and toggle features to Checkpoint for 3DS by editing the config.json configuration file.

Sample configuration file:

{
  "filter": [
    "0x000400000011C400",
    "0x000400000014F100"
  ],
  "favorites": [
    "0x000400000011C400"
  ],
  "additional_save_folders": {
    "0x00040000001B5000": {
      "folders": [
        "/3ds/mySaves/1B50",
        "/moreSaves"
      ]
    },
    "0x00040000001B5100": {
      "folders": [
        "/3ds/PKSM/backups"
      ]
    }
  },
  "additional_extdata_folders": {

  },
  "nand_saves": true,
  "version": 2
}

Troubleshooting

Checkpoint displays error codes when something weird happens or operations fail. If you have any issues, please ensure they haven't already been addressed, and report the error code and a summary of your operations to reproduce it.

Additionally, you can receive real-time support by joining FlagBrew's Discord server (link below).

Building

devkitARM and devkitA64 are required to compile Checkpoint for 3DS and Switch, respectively. Learn more at devkitpro.org. Install or update dependencies as follows.

3DS version

dkp-pacman -S libctru citro3d citro2d tex3ds 3ds-bzip2

Switch version

dkp-pacman -S libnx switch-pkg-config switch-freetype switch-libpng switch-libjpeg-turbo switch-sdl2 switch-sdl2_image switch-sdl2_ttf

License

This project is licensed under the GNU GPLv3. Additional Terms 7.b and 7.c of GPLv3 apply to this. See LICENSE.md for details.

Credits

  • Bernardo for creating Checkpoint.
  • J-D-K for the original JKSM version.
  • TuxSH for TWLSaveTool, from which SPI code has been taken.
  • WinterMute, fincs and devkitPro contributors for devkitARM, devkitA64 and dkp-pacman.
  • Yellows8 and all the mantainers for switch-examples.
  • rakujira for the awesome Checkpoint logo.
  • Fellow testers and troubleshooters for their help.
  • The huge amount of supporters that this project has gained over the years.

Without you, this project wouldn't have existed. Thank you.


If you like the work FlagBrew puts into this project and more others, support FlagBrew on Patreon!

Discord

checkpoint's People

Contributors

admiral-fish avatar bernardogiordano avatar designgears avatar diwo avatar fennectech avatar fm1337 avatar gudf avatar ibnobody avatar ioistired avatar liquidfenrir avatar lmlb avatar mrhappyasthma avatar nicoelayda avatar pcbeard avatar piepie62 avatar porterbytes avatar slattz avatar thedax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

checkpoint's Issues

Crash after recognizing about 100 games.

Using the 3DSX build under Rosalina.
I have a lot of games on my 3DS and I've got a lot of save file, after about 100 titles are recognized, I get a crash.
ErrDisp:
Processor: ARM11 (core 1)
Exception type: prefetch abort (kernel panic)
Current process: pxi (0000000000000000)

dump is attached here.
Downloads.zip

Use unused buttons (are L/R unused?) to backup/restore the save

Pretty much the title, I use JKSM and to navigate you use the buttons, it would be awesome if you can trigger the Backup/Restore touch-buttons with some phyisical unused ones (like L/R if they are not being used by the app)

But I guess the first entry (naming the save folder) would be without this option

This is just an enhancement suggestion, thanks again Bernardo for your hard work!

[Feature Request] Search SD for saves

The ability to point Checkpoint to a save stored elsewhere on the SD would be much appreciated. It would make restoring save backups made by other apps much simpler.

Use case: restoring a PKSM backup
Currently in order to restore a PKSM backup with Checkpoint the user has 2 options, both requiring a separate app:

  1. use a save manager that is capable of looking elsewhere (such as JKSM)
  2. some kind of general file manager (like 3DShell) to move/copy the desired save to where Checkpoint looks

Allow User To Change Directory of Saves

Is it possible in the future for the user to change the locations of the saves of the Checkpoint folder from like the 3ds folder to the root of the SD card?

[Feature Request] Ability to change working directory?

I just thought it'd be cool to allow the directory of the saves to be able to be set manually. I don't know C++ very well, so I don't really know how hard it could be. Just a thought, and something I'd enjoy seeing. Thanks!

Exit button

At the bottom of the screen it says press home to exit, but that just suspends the app, pressing start actually exits you from the app

also, would it be possible to add the option to rename a backup?

crashing when flashcart inserted

I pretty much leave my R4i SDHC 3DS RTS flashcart inserted all the time. When using the CIA version of Checkpoint, after I exit the app the cartridge icon on the home screen will disappear/reappear constantly until I eject it. Then the app will finally allow me to close it down. This doesn't happen when using the 3DSX version.

Repeatable Crash when exporting Badge Arcade extdata

Checkpoint 2.0.2 crashes consistently when exporting extdata for Badge Arcade (USA). It fails on the first file allbadge.sarc, which is a 70.74 MiB file. Could it be because of the filesize? JKSM exports the file successfully.

I'm using the 3dsx build on 11.6, b9s 1.3 + luma 8.1.1

Request: Move files to 3ds/checkpoint please

i don't really understand why every other homebrew sees the need to clutter the root directory with more folders, but while this is still fresh, please move the files into the 3ds folder. or at least give the option to do so.

[Feature Request] Graphic toggle option

Could we get an option to toggle between a list view like JKSM, list view with little icon like DS flashcart, and current icon view? I'm good with any option for a speedy list view. Icons certainly looks nice, but it's very slow. Every time I start the app, I spend way longer waiting for the icons to load than to actually backup/restore game saves.

GBA game save support.

It should be possible to support GBA save files properly in Checkpoint... probably.

I've been discussing and helping test stuff with d0k3 on the cakey IRC chat- the conclusion we came to is that fully supporting GBA save dumping/injection for the SD card copies of GBA saves falls a bit out of the scope of GodMode9 in general.

The idea to bring it up here came up on an IRC chat with @d0k3, who might want to chime in and provide some technical information on this but- The way I understand it is that checkpoint currently uses system internal functions to handle save data stuff which doesn't really work for GBA saves because dumping/restoring of GBA savedata was never intended.

So for GBA Saves something a bit more robust might need to be done. @d0k3 said he had some ideas on IRC so maybe he'd care to elaborate on that here.

I figure opening an issue thread might be a good way to get a discussion going about the possibility, and also discuss how implementation should work.

Unable to restore ExtData after editing

The game in question is monster hunter Generations, I'm not sure if this is a title specific issue or not though as this is the only title I have tried it with. The issue is as the title states, I click "restore" and it "finishes" instantly, accomplishing nothing. Exporting the data is working as intended, but restoring it after being edited doesn't seem to work. This occurred for me in both a previous version as well as this current release build.

Thank you for your work though, it's an amazing tool.

Save editor crashes after "recognizing" about 40 games

As it scans for games and presents icons during intial startup, the app unceremoniously crashes when it gets to around 40 titles. Only twice did a Luma3DS crash dump (https://my.mixtape.moe/dgpgbp.dmp) occur out of the 8 times I tried to use this app, the other times just returned me to the System Menu.

imag0248

Manually exiting the app using the Home button caused it to stop adding icons to the screen for at least three minutes, and required a hard reset of the 3DS.

My system version is 11.2.0-35U, I am on a New 3DS. I'm running B9S and Luma v8.1.1.

[Feature] Built in FTP

Is it possible for the app to have a built in ftp. So saves can be easily transferred to PC and back without having to use multiple apps.

[Feature Request] Please add serial to information displayed

Please add the serial to the information displayed. If you have multiple games with the same icon, there's no way to tell which on is which without remembering the Title ID. JKSM displays the serial so it's very easy to tell which one is which.

"Fantasy Life" game not appearing

I can't back up my save for this certain title. It's not appearing on my list of games. I purchased the dlc expansion so probably that's the reason, though I haven't checked if I could back up my save before that.
If there's any chance to fix that it would be really nice, I invested a good amount of hours already and I don't trust my sd card that much.
Thanls in advance!

[Request] Backup savedatas and exdata

That at the time of making a general backup is done both sides, both savedata and exdata at the same time as JKSM (and that they share the same time), makes it easier to locate and restore.

Or make a general backup option for those selected to backup both.

[Feature Request] Hide Titles

Hey! Just wondering if it would be possible to add a method to mark certain titles not in use as hidden so that they do not load up when check point launches?
Thank you for taking the time to read this!

Invalid folder names

Unlike JKSM, Checkpoint does not replace bad characters with good ones. Specifically, it created a folder called "Super Smash Bros." that INCLUDES the period, which is an invalid folder name and causes issues in other apps and with PCs.

[Feature Request] Delete backups

Loving the program so far, much easier and intuitive than SaveDataFiler. I'm really missing the option to delete your backups though. I'm obsessive like that, I like to remove all backups I no longer need immediately. Right now I have to pop my SD card into my computer to do that, it would be nice to have that function build into the program itself.

Problem with some games folder

Reviewing the program I'm stuck with for example Smash Bros (USA) or Professor Layton and the Azran Legacy (EUR), the directory is created but when you want to access it it is invalid, nor does it let it be eliminated. All this from Godmode9 but from the pc let me enter the Professor Layton but the Smash Bros no.

handling multiple save's in same folder

I was messing around with my pokemon x save, and renamed the main to bak, I had the newly edited main in the same folder (because I assumed checkpoint would read the main first), but upon doing a restore, it restored the data from the bak file and not the main.

I'm just going to assume its not proper practice to have multiple sav files in the same folder, but I figure this could lead to similar problems down the road.

Ability to refresh or recognize a cartridge insert/eject

More of a feature for convenience, but could you make it possible to either detect when the cartridge is ejected and inserted, or at least make a button (perhaps Y?) that refreshes and checks for a cartridge? It'd be quite convenient instead of restarting so it can see it. Along with this, trying to do multiple dumps of cartridges can get a bit tedious without this.

change the name of the game folder in sd card

Hi. This is kind of a continuation of one of my other suggestions but I wanted to know if there is a way for you to make the folders for the games on the sd card have their ID after the name of the game. Every time I am looking for a game after I export it, I have to look through all of the games to figure out where my game is listing instead of just knowing that pokemon sun comes after pokemon moon alphabetically. I know it may be nitpicking but it makes the whole experience much more time consuming compared to JKSM, and I really want to be able to use this since it seems much more efficient in the ways jksm isn't. Thanks

[Feature request] Options menu

Since many of the feature requests are about changing or toggling something, an options menu would be useful.

Some option suggestions:

  • Toggle automatic backup
  • Title list layout (grid or list)
  • Title filtering (e.g hide system apps)

Suggestions

To be on par with JKSM, or better, the app could use:

  1. Batch backup/restore.
  2. Play coin setter.
  3. Save data browser, like what FBI has (click on browse, see/interact with contents of save).
  4. Option to load icon cache or not, in order to decrease load time further.
  5. Theming.
  6. "Paper Mario Sticker Star" save export issue (present in JKSM, too). It just errors out when trying to dump the 3rd save slot if that slot is empty.

The app has potential. Would really like to see where this goes.

[Feature Request] Backup/Restore Confirmation

Is it possible for Checkpoint to ask for a confirmation when overwriting an existing backup or when restoring a backup? This would help minimize the chance of accidentally deleting an important save file.

App Freezes

App freezes when pressing start to exit.
When force power off happens it gives me luma crash dump saying "(Kernal Panic)". (Don't know if the second one is a luma thing or not) Included crash dump just in case.

crash_dump_00000001.dmp.zip

Crashes system on Luma3ds 9.0 when exiting from HBL

Titles says it all. Almost every time I exit the app(3dsx version) from HBL it hangs on the closing software screen until I manually turn off the console. Pretty sure that didn't happen before the Luma update.

Suggestion date and time and general backup or by selection

I would like to suggest adding that the day, month, year and hour they had a more intuitive format in sight, something like: DD-MM-YYYY_XX-XX-XX, too backup a group of games by selecting them or making a backup of all games to save time.

Not an issue! AK2i part of save incompatibility.

Just here to report that regarding:

Notice: You mustn't have a flashcard inserted when launching Checkpoint, due to possible incompatibilities that could cause some threads to not end, possibly causing crashes.

Acekard 2i is one of these flashcarts that will cause freezing and even requires a cold reboot of the 3DS.
I am using a legitimate AK2i and an O3DS on B9S with Luma 9.0 on firm 11.6.0-39U.

I just wanted to clarify to users here that this is one of possibly many incompatible flashcards, and removal of such will prevent a crash.

Slow home button, infinite closing program window.

It seems like pressing the home button on 2.0.0 causes a slight hang, but it does put me on the home menu. Trying to close the app though, causes my 3ds to become stuck trying to close the app. After trying to manually power off via holding down the power button (there was no other option, can't do anything else if it's stuck trying to close checkpoint) I received an arm11 error, prefect abort (kernel panic).

sort games alphabetically

Hey love the program. I think it would be great if you could sort the games alphabetically, and I guess any other way you think could be handy. Thanks

Crash on load

After loading about 40 titles or so (of 220 total), Checkpoint crashes. It does so consistently and at the same point every time. I systematically moved title data around so that it only had to load about 20 titles at a time: the crash never occurred, so this problem can't be narrowed down easily. When loading titles like this, ones that did not contain save data or contained unformatted save data did not show up, as expected; ones with saves did show up, and those saves could be backed up and restored just fine.

Ran another test where: I took out half the titles, ran Checkpoint, got no error, started putting titles back in, got error when I put back in "3D Classics Kid Icarus", took some other titles back out, error went away. So this isn't necessarily tied to any one game.

Not loading all games/apps

Well, I have around 60/70 games installed and it only loads 32 of them?
Why is that happening?
This occurs with both the .cia and .3dsx

Not all games showing up

Hi. Every time I open the program, it refreshes the games and takes forever to load instead of being cached. Im pretty sure its being caused because all of my games are not being loaded. I have tons of games on my 3ds (100+) and it is only seeming to load around 50 of them. I took my flash cart out and it is still doing the same thing. Thanks

Cant backup mii plaza

As the title says. There's no option to backup/restore Streetpass Mii Plaza, or any stock apps.

[Feature Request] Put TitleID at end of Title instead of beginning

It's gotten faster than before loading icons. Still slower than JKSM to get to a usable state. It does look a lot prettier.

Backing up the save to computer and organizing on the computer is a nightmare since the saves are sorted by TitleID. It makes finding the right game save a pain without doing a search. Please move the TitleID to the end so the games can be sorted by their title and easier to organize and work with the saves.

[request] VC sav conversion

What I am referring too is the VC sav file size difference and EMU

the VC gives you 32,784, the EMU gives you 32,812

Silver EMU.zip
Silver VC.zip

the current solution for me, is having to add or remove a extra lines of code using HxD in order to restore the file to the VC after playing it on a emulator, luckily PKHeX does not modify the file size of the VC copy, so there's nothing to fix after editing it

Ability to Change Paths of Files

I don't know if this can be done, but the ability for the options to change paths for the root, save, and extdata to whatever we want. For instance, if I wanted to move it to another folder/directory, or move the save data to the root of the SD card instead of going to 3Ds/Checkpoint/...

Overall, this recent update has fixed alot of stuff and it is amazing. I hope you have a safe and glorious new year!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.