A cross-emulator save synchronizer for Nintendo Switch save data, currently attempting to support Ryujinx and Citron (Yuzu-based) save formats.
- Bidirectional syncing: Copy the newest save data between Ryujinx and Citron.
- Automatic backups: Before overwriting, saves are zipped and stored (10-save history).
- Clone the repo:
git clone - Launch the program:
python gui.py
- Reads Ryujinx folders
portable/bis/user/save/<hex>and extracts titleID fromExtraData0 - Reads Citron per-titleID folders
user/nand/user/save/<userID>/<titleID>
- Single-game sync via double‑click.
- Bulk sync with Sync All button.
- Ryujinx → Citron
- Citron → Ryujinx
- Zipped backups stored under
backupHistory/<TITLEID>-<GameName>/ - Keeps up to 10 of the last backups by default (configurable in code).
- Persists mapping of Ryujinx hex folders ↔ Title IDs in
folder_mapping.json(note: this is unique per installation) - Automatically resolves Citron user folder once per session.
- Right-click context menu for opening save or backup folders.
- Sortable columns with visual ↑/↓ indicators.
- Color‑coded rows by sync status.
- Filter to show only unsynced entries.
- Persists last-used paths, window size, sort/filter settings in .gui_config.json.
- Launch gui.py.
- Browse to your Ryujinx and Citron base directories.
- The tool will scan, identify, and display all saves.
- Double‑click a row to sync that save. (or use Sync All to batch‑sync everything)
- Right‑click to open save or backup folders.
- not yet implemented
- Ensure you’ve run the game at least once in Ryujinx to allow it to generate the folders and metadata
- Check that
ExtraData0and subfolder0exist and contain files.
- Remove unwanted backups manually under backupHistory/.
- Delete .gui_config.json or folder_mapping.json to reset.
- Delete the
.jsonfiles and let the application redownload the latest versions
- Open a console alongside the GUI to see DEBUG or error prints.
- Confirm you chose the correct Citron user folder when prompted.
- Support for restoring from a specific backup
- Add support for more emulators
- Better UI?
- CLI stuff
Feel free to add support for additional emulator save formats, improve the backup retention policy (maybe a configurable UI slider), enhance error reporting and logging, or whatever else!
Pull requests and issues are welcome!