89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# 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<T>, 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.
|