# NXST Transfer save data between two Nintendo Switch consoles over local Wi-Fi. Pick a game, pick a user. One Switch sends; the other receives. The sender backs up its own save first, so you can never lose data in transit. --- ## Install 1. Download `NXST.nro` from [Releases](../../releases). 2. Copy it to `/switch/NXST/NXST.nro` on your SD card. 3. Launch via hbmenu (hold R while starting any game, or Album). Both Switches must be on the same Wi-Fi network. No router configuration needed — discovery uses UDP multicast. --- ## Usage **Sender** (the Switch whose save you want to copy): 1. Open NXST → select a title → press **A** → **Transfer**. 2. Wait for "Waiting for receiver…" to change to "Transferring…". **Receiver** (the Switch that will receive the save): 1. Open NXST → select the same title → press **A** → **Receive**. 2. Wait. The save is restored automatically when the transfer finishes. Press **B** on either side to cancel mid-transfer. Logs are written to `/switch/NXST/log.log`. --- ## Build **Prerequisites:** [devkitPro](https://devkitpro.org/wiki/Getting_Started) with `switch-dev` and `switch-portlibs` packages, plus `cmake ≥ 3.20`. ```bash # Clone (Plutonium UI fetched automatically by CMake) git clone https://github.com/your-username/NXST.git cd NXST # Configure (once) cmake --preset switch # Build cmake --build build # Send to Switch via nxlink (Switch must be on same network, nxlink running) cmake --build build --target send ``` Output: `build/NXST.nro` --- ## Architecture See [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for the layer diagram, threading model, and key types. See [`docs/PROTOCOL.md`](docs/PROTOCOL.md) for the wire protocol (UDP multicast discovery + TCP file stream). ``` ui/ — TitlesLayout, UsersLayout, TransferOverlay, HeaderBar service/ — TransferService (all network threads and state) infra/net/ — Socket RAII, sendAll/recvAll infra/fs/ — io::backup, io::restore, directory iterator, RAII handles infra/sys/ — nxst::log (printf-checked, timestamped) domain/ — Title, Account, Result, TransferState, protocol constants ``` --- ## Credits - **[Plutonium](https://github.com/XorTroll/Plutonium)** — Switch UI framework by XorTroll - **[Checkpoint](https://github.com/BernardoGiordano/Checkpoint)** — save management library by Bernardo Giordano / FlagBrew; several files in `src/infra/fs/` and `src/domain/` are derived from Checkpoint --- ## License GPLv3 — see [`LICENSE`](LICENSE). NXST includes code derived from Checkpoint (GPLv3). All original NXST code is released under the same license to satisfy the GPL inheritance requirement.