refactoring
Co-authored-by: n.fedorov <mail@nfedorov.dev> Co-committed-by: n.fedorov <mail@nfedorov.dev>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user