Skip to content

Desktop app that uses nscb_rust to compress/decompress/merge/split/create all switch game files

Notifications You must be signed in to change notification settings

cxfcxf/nscb-desktop

Repository files navigation

NSCB Desktop

Modern desktop GUI for Nintendo Switch game file operations: compress, decompress, merge, convert, split, and repack (NSP, XCI, NSZ, XCZ, NCZ).

Built with Tauri v2 + React + Vite. Powered by nscb_rust.

Features

  • Compress NSP/XCI to NSZ/XCZ (zstd level 1-22)
  • Decompress NSZ/XCZ/NCZ back to NSP/XCI
  • Merge base + update + DLC into one NSP/XCI
  • Convert between NSP and XCI
  • Split multi-title files into per-title folders
  • Create/Repack NSP from split folders
  • Drag & drop file input
  • Live output console + progress tracking
  • Batch support for compress/decompress/convert/split
  • Dark theme UI with SVG iconography and file type badges
  • Auto-download nscb_rust.exe from GitHub releases, or import manually
  • First-launch setup wizard for encryption keys

Prerequisites

  • Windows 10/11
  • WebView2 runtime
  • Switch keys file (prod.keys or keys.txt)
  • nscb_rust.exe backend binary (auto-downloaded or imported via Settings)

Usage

  1. Run nscb-desktop.exe directly (standalone, no install needed), or use the NSIS/MSI installer.
  2. On first launch, the setup wizard prompts you to import encryption keys (prod.keys or keys.txt).
  3. If nscb_rust.exe is missing, a banner directs you to Settings > Tools where you can download it from GitHub or import manually.
  4. Files are copied to a temporary tools directory (%TEMP%\nscb-desktop-tools).
  5. Pick an operation from the sidebar and drop your files.

Development

Requires Rust + Node.js (v18+).

npm install
npm run dev        # Tauri dev mode (hot reload)
npm run dev:vite   # Vite dev server only (no Tauri)

Build

# NSIS installer
npm run build

# Portable folder at release/NSCB Desktop/
npm run dist:portable

Project Layout

nscb-desktop/
|- ui/                     # Frontend (React + TypeScript)
|  |- App.tsx              # All components + pages (config-driven)
|  |- App.css              # Dark theme design system
|  |- main.tsx             # Entry point
|  `- lib/
|     |- api.ts            # Tauri plugin wrappers
|     `- nscb-runner.ts     # Sidecar process + progress parsing
|- src-tauri/              # Tauri v2 / Rust backend
|  |- src/lib.rs           # Commands: run_nscb, import_keys, etc.
|  |- tauri.conf.json      # Window config, sidecar, bundling
|  `- capabilities/        # Security permissions
`- scripts/portable.mjs    # Portable folder assembly

Notes

  • Operation pages are config-driven via a generic OperationPage component — adding a new operation only requires a config object.
  • Backend and key files are imported at runtime into %TEMP%\nscb-desktop-tools.
  • The app uses native window decorations (no custom titlebar).

License

ISC

About

Desktop app that uses nscb_rust to compress/decompress/merge/split/create all switch game files

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors