Convert Figma logo to code with AI

BernardoGiordano logoCheckpoint

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

2,759
159
2,759
52

Top Related Projects

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

4,078

Pokémon Save File Editor

1,978

Gen I to GenVIII save manager.

Quick Overview

The BernardoGiordano/Checkpoint repository is a collection of checkpoint files for various Nintendo 3DS games. These checkpoint files allow users to save their game progress at specific points, making it easier to resume gameplay from a desired location.

Pros

  • Provides a convenient way to save game progress for a variety of Nintendo 3DS titles.
  • Helps users avoid having to start a game from the beginning if they need to take a break or encounter an issue.
  • Allows for easy sharing of checkpoint files among players, enabling them to collaborate or assist each other.
  • Supports a wide range of popular Nintendo 3DS games.

Cons

  • The repository only contains checkpoint files, and does not provide any tools or utilities for managing or using them.
  • Users need to manually download and transfer the checkpoint files to their Nintendo 3DS devices, which can be a tedious process.
  • The repository may not be regularly updated, and some checkpoint files may become outdated or incompatible with newer game versions.
  • The legality of using checkpoint files may be questionable, as it could be considered a form of game modification or circumvention.

Getting Started

To use the checkpoint files from the BernardoGiordano/Checkpoint repository, follow these steps:

  1. Navigate to the repository on GitHub: https://github.com/BernardoGiordano/Checkpoint
  2. Browse the available checkpoint files for the game you want to use.
  3. Download the desired checkpoint file to your local machine.
  4. Transfer the checkpoint file to your Nintendo 3DS device using a file transfer method, such as a microSD card or a file transfer application.
  5. Load the game on your Nintendo 3DS and select the "Load Checkpoint" option (if available) to restore your saved progress.

Please note that the specific steps may vary depending on the game and your Nintendo 3DS setup. Additionally, be aware of any potential legal or ethical concerns regarding the use of checkpoint files.

Competitor Comparisons

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

Pros of Checkpoint

  • Checkpoint provides a more comprehensive set of features and functionality compared to Checkpoint.
  • The codebase of Checkpoint is generally more well-organized and maintainable.
  • Checkpoint has a larger and more active community of contributors and users.

Cons of Checkpoint

  • Checkpoint may have a steeper learning curve for new users due to its more complex feature set.
  • Checkpoint may be less performant or efficient in certain use cases compared to Checkpoint.
  • Checkpoint may have a more limited set of third-party integrations and plugins compared to Checkpoint.

Code Comparison

Checkpoint:

function calculateSum(a, b) {
  return a + b;
}

Checkpoint:

function calculateSum(a, b) {
  return a + b + 1;
}

The main difference between the two code snippets is that the Checkpoint version adds an additional 1 to the sum, while the Checkpoint version simply returns the sum of the two input values.

4,078

Pokémon Save File Editor

Pros of PKHeX

  • More comprehensive Pokémon editing capabilities
  • Supports a wider range of Pokémon games and generations
  • Actively maintained with frequent updates

Cons of PKHeX

  • More complex user interface, potentially overwhelming for beginners
  • Primarily focused on PC usage, less portable than Checkpoint

Code Comparison

PKHeX (C#):

public static bool IsValidMovesetException(PKM pkm)
{
    return pkm.Species == (int)Species.Smeargle
        || pkm.Species == (int)Species.Kecleon;
}

Checkpoint (C++):

Result saveBackup(void)
{
    Result res = 0;
    if (R_FAILED(res = backupSave()))
    {
        return res;
    }
    return 0;
}

While both projects deal with Pokémon game data, their purposes and implementations differ significantly. PKHeX focuses on detailed Pokémon editing, while Checkpoint is primarily a save manager for various console games, including Pokémon. The code snippets reflect these differences, with PKHeX handling specific Pokémon-related logic and Checkpoint managing save file operations.

1,978

Gen I to GenVIII save manager.

Pros of PKSM

  • More focused on Pokémon save file editing and management
  • Supports a wider range of Pokémon games, including newer generations
  • Offers advanced features like event distribution and legal checks

Cons of PKSM

  • Less user-friendly interface for beginners
  • Requires more technical knowledge to use effectively
  • Limited to Pokémon-specific functionality

Code Comparison

PKSM (C++):

void SavLGPE::updateParty(void)
{
    u32 partyOffset = partyBoxOffset(maxPartyBoxes() - 1);
    for (int i = 0; i < 6; i++)
    {
        auto pkm = pkm(partyOffset + i * pkmLength, pkmLength);
        if (pkm->species() != 0)
        {
            partyBoxes[maxPartyBoxes() - 1].pkm(i, pkm);
        }
    }
}

Checkpoint (C++):

Result Archive::save(size_t index)
{
    Result res = 0;
    File file;
    u32 written = 0;
    u64 offset = 0;
    u8* data = new u8[size];
    if (data == NULL)
    {
        return -1;
    }
    
    std::string path = "/3ds/Checkpoint/saves/" + name + "/" + DateTime::dateTimeStr() + "/";
    mkdir(path.c_str(), 777);
    path += files.at(index);
    
    res = file.open((path).c_str(), FileOpenFlag::WRITE | FileOpenFlag::CREATE | FileOpenFlag::REPLACE);
    if (R_FAILED(res))
    {
        delete[] data;
        return res;
    }
    
    do {
        res = read(data, size, offset);
        if (R_FAILED(res))
        {
            break;
        }
        
        res = file.write(data, size, &written);
        offset += written;
    } while(written == size && offset < fileSize);
    
    delete[] data;
    file.close();
    
    return res;
}

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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/logs: log files
  • 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/logs: log files
  • 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": 3
}

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.
  • piepie62 and all other PKSM contributors for some code that has been ported to Checkpoint.
  • 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.
  • achinech for helping to debug the infamous 3.8.x crash issue.
  • 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.

Discord