Skip to content
SadykovIVPublic

About

Nintendo Switch Image Converter for macOS ARM64

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Nintendo Switch Image Converter (NSIC)

Языки / Languages: Русский · English

NSIC — настольное приложение для macOS ARM64, которое собирает пользовательские NSP, NSZ, XCI и XCZ в единый XCI и при необходимости проверяет готовый образ. Основной сценарий — подготовка локального образа base + update + DLC для запуска в MeloNX.

Интерфейс следует модели PS4 FFPFSC: источник → найденный состав → параметры → журнал и проверяемый результат.

Warning

Успешная сборка и статическая проверка не гарантируют запуск конкретной игры в MeloNX. NSIC не меняет TITLE ID. В безопасном режиме модификаций исходные base и update сохраняются, а PublicData/Meta выбранного DLC пересобираются и имеют не исходную подпись — это ожидаемый результат.

Возможности

  • выбор отдельных файлов, рекурсивное сканирование папки и drag-and-drop;
  • распознавание base, update и DLC по TITLE ID и имени файла;
  • защита от случайного объединения разных игр;
  • защита от одновременной упаковки взаимоисключающих прав It Takes Two: для полной игры используется 010092A0172E5001, а Friends Pass 010092A0172E5002 исключается;
  • сборка только в XCI с отключённым по умолчанию изменением RSV/key generation;
  • опциональное исключение delta-фрагментов;
  • проверка расшифровки и подписей обычного XCI; для модифицированного DLC вместо неприменимой исходной подписи проверяются все уровни внутренней IVFC;
  • проверенный на MeloNX безопасный режим русификаций Unreal Engine: файлы PAK/UTOC/UCAS из <TITLE ID>/romfs встраиваются в явно выбранный DLC-плагин, не затрагивая base, update и остальные DLC;
  • поэтапный прогресс, скорость, ETA, журнал и безопасная отмена;
  • понятное использование временной папки: потоковая сборка NSP/XCI может её не заполнять, а NSZ/XCZ и встраивание модификаций используют её явно;
  • русский и английский интерфейс;
  • локальное хранение настроек в Application Support;
  • импорт пользовательского prod.keys и внешнего backend без добавления их в репозиторий.

Быстрый запуск

  1. Откройте Настройки.
  2. Импортируйте свой законно полученный prod.keys.
  3. Импортируйте nscb_rust-macos-arm64 либо явно скачайте его из релиза автора.
  4. Для встраивания русификатора дополнительно импортируйте ARM64-бинарники hactool и исправленный hacPack, затем выберите папку модификации и совместимый DLC-контейнер с Unreal-плагином (.uplugin и штатный .pak). Перед сборкой hacPack примените патч NSIC по инструкции: он устраняет переполнение при шифровании секций больше 4 ГБ и разрешает реальные версии SDK новее 0.x.
  5. Добавьте base, самый новый update и DLC одной игры.
  6. Выберите папку результата и нажмите «Собрать XCI».

Исходные файлы передаются backend только для чтения. Результат и временные данные создаются в выбранных пользователем каталогах.

Backend и лицензирование

NSIC использует cxfcxf/nscb_rust как отдельно запускаемую утилиту. Backend не включён в исходники или релизы NSIC. На 4 августа 2026 года в его репозитории не найден отдельный файл лицензии, поэтому автоматизация релиза NSIC намеренно не упаковывает этот бинарник.

Пользователь запускает загрузку или импорт вручную. Для релиза, содержащего backend, сначала необходимо получить явное разрешение автора или дождаться публикации лицензии.

Опциональный pipeline модификаций вызывает внешние hactool (ISC) и hacPack (GPL-2.0). Они импортируются пользователем и не входят в исходники или релизы NSIC.

После пересборки PublicData NCA выбранного DLC приложение запускает полную проверку IVFC через hactool. Образ не создаётся, если хотя бы один из уровней 0–5 повреждён. Эта схема была подтверждена на MeloNX для It Takes Two: Full Game DLC определяется, а русская PAK-озвучка загружается без пересборки Program NCA. После merge NSIC дополнительно перечитывает состав готового XCI и проверяет, что ожидаемые base и DLC присутствуют ровно по одному разу.

Безопасность и границы проекта

  • NSIC не ищет и не скачивает игры, ключи или title keys.
  • prod.keys, keys.txt, игровые форматы и backend исключены из Git.
  • содержимое ключей не записывается в журнал; путь ключа маскируется как <prod.keys> в отображаемой команде;
  • загрузка backend ограничена официальными GitHub Releases cxfcxf/nscb_rust;
  • используйте только собственные законно полученные дампы и ключи.

Подробнее: SECURITY.md и THIRD_PARTY_NOTICES.md.

Разработка

Требуются Node.js 20+, pnpm и стабильный Rust toolchain.

pnpm install
pnpm typecheck
pnpm test
cargo test --manifest-path src-tauri/Cargo.toml
pnpm dev

Сборка macOS ARM64:

./scripts/build_release_macos_arm64.sh

Или напрямую:

pnpm build:arm64

Структура репозитория

Nintendo-Switch-Image-Converter/
├── .github/
│   ├── ISSUE_TEMPLATE/       # шаблоны ошибок и предложений
│   └── workflows/            # CI и публикация macOS ARM64
├── assets/                   # исходники брендинга
├── docs/
│   ├── ARCHITECTURE.md       # границы UI / Tauri / backend
│   └── RELEASING.md          # проверяемый процесс релиза
├── scripts/                  # локальная сборка и аудит релиза
├── src-tauri/                # Rust host и настройки Tauri
├── ui/                       # React UI и тестируемая модель
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── SECURITY.md
└── THIRD_PARTY_NOTICES.md

Почему не switch-merge-utility

switch-merge-utility удобен для склейки частей одного split-файла, но его README прямо указывает, что он не применяет обновления NSP/XCI. Для сборки base + update + DLC нужен контентно-ориентированный backend.

Другие изученные проекты:

  • NSC_Builder — зрелая концепция multi-content XCI/NSP;
  • NSZ — lossless-сжатие и распаковка NSZ/XCZ;
  • nscb-desktop — Tauri-интеграция с nscb_rust.

План развития

  • чтение CNMT/NACP-метаданных вместо резервной классификации по имени;
  • очередь нескольких игр и возобновление прерванных задач;
  • оценка свободного места до запуска;
  • подписанные и notarized релизы;
  • диагностический пакет без ключей и пользовательских путей;
  • предварительная оценка требуемого места для пересборки DLC-контейнера;
  • поддержка нескольких совместимых модификаций с управлением порядком наложения.

Лицензия

Исходный код NSIC распространяется по лицензии ISC. Сторонние компоненты имеют собственные лицензии и условия распространения.

About

Nintendo Switch Image Converter for macOS ARM64

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages