Ультимативное решение для установки `NSP`, `NSZ`, `XCI` и `XCZ` и работы с Nintendo Switch. Поддержка установки по MTP, USB, http (с вашего личного сервера), внешнего USB и многое другое. Поддержка просмотра картинок в формате `jpg`, `png` и `psd`. Поддержка работы с архивами `zip` и `rar`, а так же с контейнерами `cbr`/`cbz`. Поддержка текстовых файлов, просмотр в режиме обычного текста и в режиме hex-просмотра. Может быть использован в качестве файлового менеджера (копирование, перемещение, удаление файлов и папок, создание папок). Работа с сохранениями (в том числе резервное копирование и восстановление) и многое другое.
Поместите `dbi.nro` и `dbi.config` в папку `sdmc:/switch/DBI/` на вашей каре памяти. Запускайте из режима апплета с помощью Homebrew Launcher (через альбомы)
* **Browse SD Card** — установка `NSP`/`NSZ`/`XCI`/`XCZ`-файлов из карты памяти.
* **Browse USB0 Drive** — установка `NSP`/`NSZ`/`XCI`/`XCZ`-файлов с внешнего USB-накопителя в exFAT/FAT32: флешки, жёсткого диска, проч.
* **Install title from USB** — установка `NSP`/`NSZ`/`XCI`/`XCZ` из ПК по USB 2.0 и 3.0-проводу, через прилагаемую программу dbibackend. *Горячая клавиша для этой опции*: кнопка **(Y)**.
* **Install title from Gamecard** — этот пункт появляется при вставленном в Switch игровом картридже, — для установки игры из имеющегося игрового картриджа в microSD-карту или внутреннюю NAND-память консоли.
* **Home server** — начиная с версии v150, есть возможность устанавливать игры по сети (HTTP), через WiFi без провода или LAN-USB-адаптер. Подробнее об этом ниже
* **Browse installed applications** — просмотр установленных игр, их общее установленное количество, посмотреть потраченное время на игру и количество её запусков, проверить (верифицировать) на ошибки, перенести игровые данные между встроенной памятью, картой памяти и обратно, возможность их выборочного или потокового удаления вместе с прилагаемыми LayeredFS-модами, просмотр наличия у них обновлений и DLC, ручное удаление DLC/обновлений/LaryeredFS (LFS) мода, функция Reset Required version для сброса системной проверки обновления у выбранной игры. *Горячая клавиша для этой опции*: кнопка **(L)**.
* **Run MTP responder** — включение внутреннего MTP-сервера для присоединения Switch к ПК или к Android-устройству (телефон/планшет/пр., протестированы Pixel 3, Xiaomi Mi A1, Lenovo Tab 4 7" TB-7304X), можно: просматривать и работать с картой памяти (1: External SD Card) и внутренней память консоли, просматривать установленные игры (4: Installed games), сделать бекап игровых сохранений на ПК (7: Saves), при вставленном игровом картридже дампить его (full/trimmed/сертификат) на ПК/Android (9: Gamecard). *Горячая клавиша для этой опции*: кнопка X (ей же выходить из MTP).
В самом левом нижнем углу (SD) написано про занятый размер данных на карте/общий размер карты. В правом нижнем углу (NAND) написан занятый размер данных во встроенной памяти Switch/общий встроенной памяти Switch.
* **(Y)** - инвертировать выделение, выделить всё, если ничего не выделено. **На главном экране** - установка по USB с помощью dbibackend (пункт меню "**Install title from USB**")
* **(ZL)**, **(ZR)** - быстрое перемещение по меню
* **(+)** на правом джойконе - контекстное меню, которое позволяет производить контекстные операции, как-то удаление, сброс требуемой версии прошивки, монтирование по MTP и др.
Кнопка **(A)** открывает папку, кнопка **(B)** возвращает назад, после открытия папки с файлами для установки, кнопкой **(X)** можно выделить только необходимые файлы, кнопокй **(Y)** инвертировать выбор. При этом цвет названия выделенных файлов изменится с белого на светло-синий.
**Total install size** — объём свободного пространства, которое необходимо для установки выбранных файлов.
**Install target** — локация установки данных: **NAND** — внутренняя память консоли Nintendo Switch, **SD** — карта памяти microSD, **AUTO** — опция по-умолчанию для установки всегда на карту памяти microSD, но если на ней будет недостаточно места, данные установятся во внутреннюю память.
**Delete after install** — это опция удаления установочных дистрибутивов (файлов `NSP`/`NSZ`/`XCI`/`XCZ`) с карты после их успешной установки; чтобы она работала, с файлов должен быть снят атрибут «Только чтение». По-умолчанию файлы не удаляются. Опция видна только при установке с карты памяти/внешнего USB
**Turn off screen** — возможность выключить экран на время установки для экономия электроэнергии аккумулятора, сразу после успешной установки экран автоматически включится. Эта опция работает только в портативном режиме.
Нажмите **Start install**, чтобы начать установку. После успешной установки, внизу появится надпись *Installation Complete. Press B to return*.
В программе имеется встроенная автоматическая функция удаления старых апдейтов при установке нового обновления к игре, поэтому за лишнее занимаемое место ими можно не беспокоиться.
Через Install title from USB очень удобно устанавливать игры, обновления и DLC к ним сразу напрямую по USB-проводу с ПК на Switch, минуя необходимость вынимать карту и тратить двойное время, закачивая дистрибутивы (`NSP`/`NSZ`/`XCI`/`XCZ`-файлы) на карту памяти и устанавливая их оттуда. *Горячая клавиша для вызова этой опции из главного меню*: кнопка **(Y)**.
Для работы сперва нужно скачать на ПК dbibackend (`dbibackend.exe` для Windows или `dbibackend` для всех ОС), запустить его, выбрать игры для установки, нажать **Start server**, затем подключить USB-C кабель к ПК и Switch, выбрать пункт **Install title from USB** в dbi и установить все необходимые игры.
Для быстрой отправки файлов или папок с играми на установку, нажмите на них правой клавишей мыши, выберите Отправить > dbibackend, установочные файлы сразу помещаются в очередь dbibackend. Для того, чтобы это настроить в Windows, нажмите `Win+R`, введите `shell:sendto`, положите в папку ярлык для `dbibackend.exe`
### Home server
Пункт **"Home server"** появляется при наличии настроенного раздела **Network install sources** в `dbi.config` (подробнее про этот файл ниже). Причём название этого пункта будет меняться в зависимости от названия указанного в конфигурационном файле
отредактируйте файл `/nginx/conf/nginx.conf`, прописав в `location` адрес вашего Switch, вместо указанного в примере `127.0.0.1` (или всю свою подсеть вида 192.168.1.1/24 или 192.168.0.0/16); его можно узнать на Switch в **Системных настройках** > **Интернет**:
Сохраните конфиг, запустите `nginx.exe`, разрешив программе доступ в сеть, затем скопируйте нужную игру в локальную папку /nginx/html/Nintendo/Switch/ на ПК, а на Switch выберите строку «Home server».
Получаем обычный интерфейс инсталляции файлов, и можно начать устанавливать все игры по сети, после чего, при желании веб-сервер можно остановить через nginx -s stop.
В качестве адреса сервера, можно использовать и доменное имя в интернете, например, своего удалённого VPS — лучше с HTTP Basic-аутентификацией вида http://user:password@host:port/Nintendo/Switch/
В**Browse installed applications** можно посмотреть список установленных программ, обновлений, DLC к ним, по отдельности их занимаемый объём и версию, порядковую и в HEX-формате, их titleID, посмотреть общее время игры и количество запусков, наличие установленного LayeredFS-мода к игре (для Atmosphére).
В квадратных скобках перед названием игры написана базовая информация о месте установки, составе и наличии мода игры. Отображается только то, что установлено. То есть, если буквы b в квадратных скобках нет, значит у игры не установлена сама базовая часть (в таком случае строка будет окрашена красным)
* **Move title to MicroSD/NAND** - переместить выбранные тайтлы в NAND или на карту памяти, в зависимости от того, где тайтл сейчас находится. Если части тайтла находятся и там и там, будут отображены оба варианта
* **Reset required version** - сбросить проверку требуемой для запуска тайтла версии системы (должен быть включён дебаг в Atmosphere)
Отображается иконка игры, **TitleID**, название (**name**), автор (**Author**), версия (**Version**), поддерживаемые языки (**Language**) и наличие LFS-мода (**LFS-mod**)
Так же здесь можно узнать количество времени, проведённого в игре (**Total play time**), сколько раз игра была запущена (**Total launches**), сколько она весит (в целом (**Total occupied space**), а так же сколько места занимает в NAND (**Space in NAND**) и на SD (**Space on MicroSD**)), размер сохранений (**Total saves size**) и какой язык у игры активен (**Forced Language**)
* **Move records to MicroSD/NAND** - переместить выбранную запись в NAND или на карту памяти, в зависимости от того, где она сейчас находится. Если части тайтла находятся и там и там, будут отображены оба варианта
* **Reset required version** - сбросить проверку требуемой для запуска тайтла версии системы (должен быть включен дебаг в Atmosphere)
* **Force language** - позволяет принудительно запускать игру с выбранным языком. По-умолчанию игра запускается с тем же языком, что выбран в системе, ежели такового в игре нет, то в зависимости от региона консоли. Выбранный язык будет отображаться рядом с иконкой игры в поле **Forced Language**
* **Check integrity** - проверка целостности данных выбранных тайтлов
* **Expose contents via MTP** - смонтировать содержимое выбранных тайтлов по MTP
**Cleanup orphaned files** автоматически чистит ненужные файлы игр, файлы от прерванных установок игр, скачанное (официально) обновление OFW прошивки и все неиспользуемые тикеты игр, если они были найдены.
Просмотр и удаление ненужных тикетов игр. **Ticket (или encrypted title key)** — это специальная зашифрованная уникальная информация о правах запуска на контент игры, которая устанавливается в систему при инсталляции каждой игры (**000** в конце titleID)/обновления (**800** в конце titleID)/каждого DLC.
**Run MTP responder** включает встроенный в dbi MTP-сервер для обмена данными с ПК либо к Android-устройству по USB-C OTG (телефон/планшет/прочие устройства). *Горячая клавиша для вызова этой опции из главного меню*: кнопка **(X)** (ей же выходить из MTP). После подключения USB-провода к ПК и запуска MTP-сервера в dbi, на ПК появится следующее окно:
1: **External SD Card**, для просмотра, копирования и удаления файлов и папок c/на ПК и с/на карту памяти microSD. В случае, если размер файла превышает 4Гб, DBI автоматически разобьёт его на фрагменты специальным образом, чтобы свитч видел такой файл как цельный
2: **NAND User**, просмотр, копирование файлов и папок на ПК с внутренней память Switch, в его системный раздел USER (раздел доступен только для чтения).
3: **NAND System**, просмотр, копирование файлов и папок на ПК с внутренней памяти Switch, в его системный раздел SYSTEM (раздел доступен только для чтения).
4: **Installed games**, для просмотра установленных игр.
В**Installed games** отображаются все игры как в NAND, внутренней памяти Switch, так и установленные на карту памяти, все вместе. Чтобы сделать дамп (дистрибутив) установленный игры себе на ПК в формате .NSP, просто скопируйте папку с названием игры из **Installed games** на свой ПК, при этом на базе вашего personalized-тикета генерируется общий common-тикет с полностью очищенной личной информацией. Вы получите дамп этой игры в виде раздельных файлов - отдельно саму игру, отдельно обновление и DLC. Если для игры были установлены читы или моды, они будут находится в папке `Mods & Cheats`. Так же можно получить скомбинированный дамп, в котором в один файл будет склеяны сама игры, все её DLC и обновление. Такой файл лежит прямо в корне раздела **Installed games**.
Здесь так же хранится сгенерированный dbi `InstalledApplications.csv`, с таблицей списка установленных игр, их TitleID и текущей версии.
Скопируйте в эту папку ваши **NSP**/**NSZ**/**XCI** или **XCZ**. По окончанию копирования игра будет установлена на **карту памяти** вашей приставки. При установке NSZ-файлов учитывайте, что их фактический размер может сильно отличаться от размера после установки, так что если при наличии свободных 2Гб на карте памяти у вас, например, не хватает места для установки NSZ размером, скажем, в 1Гб, не удивляйтесь, поскольку контейнер NSZ - сжатый.
6: **NAND install**: Скопируйте в эту папку ваши **NSP**/**NSZ**/**XCI** или **XCZ**. По окончанию копирования игра будет установлена во **внутреннюю память** вашей приставки. При установке NSZ-файлов учитывайте, что их фактический размер может сильно отличаться от размера после установки, так что если при наличии свободных 2Гб на карте памяти у вас, например, не хватает места для установки NSZ размером, скажем, в 1Гб, не удивляйтесь, поскольку контейнер NSZ - сжатый.
7: **Saves**: Доступ ко всем сохранениям игр — в аккаунтах (Account), системных программ (System), в Background Content Asymmetric synchronized delivery and Transmission (BCAT, пример: ивенты в ACNH), временных (Temporary), кэш (Cache, пример: аддоны в DOOM), системных BCAT (SystemBCAT), — хранящимся во внутренней памяти Switch
В папке **Installed games** — сохранения для имеющихся установленных сейчас игр
Unin**stalled games** — сохранения от удалённых игр, которые раньше запускались. Отсюда можно сделать их бекап, скопировав их на ПК, а также удалить ненужные — для этого откройте папку с именем нужной игры, затем удалите папку с ником вашего аккаунта/Device-сохранения.
Для того, чтобы восстановить сохранения, скопируйте их в соответствующую папку с ПК. DBI не требует предварительного запуска игры для восстановления сохранения, однако это касается только обычных сохранений. BCAT или Cache сохранения требуют предварительного запуска игры перед восстановлением.
8: **Album**: доступ к скриншотам и видеороликам (Альбому), точно так же, как это сделано в OFW 11.0.0 Nintendo.
9: **Gamecard**: при вставленном в Switch игровом картридже появляется возможность скопировать его дамп в .XCI либо trimmed .XCI на ПК, вместе со встроенным в него обновлением, если оно есть, с уже убранным его персональным RSA-сертификатом; кроме того, возможно отдельно экспортировать его сертификат
**Exit** — выход из программы в HOS, минуя hbmenu, либо в hbmenu (это настраивается в dbi.config); если dbi был запущен из тайтла/форвардера, программа перезагрузится либо останется на чёрном экране.
* **«SIGNATURE: Invalid»/«SIGNATURE: GC->eShop» / HASH NOT MATCHED TO META** — это НЕ ОШИБКИ, а уведомления о несовпадении подписи в заголовках, например, при использовании конвертации или редактирования, кастомного NSP, форвардера.
* **«HASH MISMATCH»** — чаще всего, это НЕ ОШИБКА, игра была сконвертирована из картриджа (тогда всё в порядке), иногда — имеются проблемы с целостностью файла, перекачайте-перехешируйте его, передачей данных по USB-кабелю/порту/в процессе установки между ПК и Switch.
* **DELTA SKIPPED** — это НЕ ОШИБКА, а уведомление, что ненужные фрагменты в файле обновления были пропущены, если они в нём были, как и было должно.
* **«No tickets found. Possibly this NSP was converted from XCI.»** — это НЕ ОШИБКА, на работоспособность игры не влият, но информирование, что игра без тикетов. Она может быть дампом из .XCI-картриджа или переконвертирована в Standard Crypto.
* **«WARNING» title marked as Application but has AddonContent** — это НЕ ОШИБКА, обычно это указывает на homebrew-игру в .NSP, созданную не по стандартам, к примеру, когда в Application-тайтл (основную игру, v0) добавили и AddonContent-флаг (DLC).
* **«This application base is not stand alone. Make sure you installed update»** при установке новых Sparse Storage игр — это НЕ ОШИБКА, не забудьте, кроме базового файла игры, установить ещё и апдейт к ней перед запуском.
* **«read: USB communication failed»** — проверьте/замените USB-кабель и USB-порт на ПК.
* **«Cannot parse content meta. Corrupted file or old firmware»** — Либо файл поврежден, либо ваша прошивка слишком устарела для анализа метафайла. Проверьте файл и обновите его до последней версии cfw и последней поддерживаемой версии прошивки.
* **«Invalid NCA magic!»** — обновитесь на последнюю версию OFW и CFW, если ошибка сохраняется после этого, перепроверьте целостность установочного файла игры.
* **«Received less data than expected»** и **Installation aborted** — ошибка в передаче данных, перепроверьте и при необходимости замените USB-кабель/USB-порт между Switch и ПК. Также обязательно убедитесь, что у вас установлена самая последняя версия программы, как вот в этом посте.
* **«std::bad_alloc»** — переименуйте файл без спецсимволов и кириллицы в имени и пути к нему, плюс убедитесь, что у используете самую последняя версия программы, как в посте, на консоль установлена последняя версия OFW и CFW.
* **«Nothing to install»** в окне выборе файлов — переименуйте файл без спецсимволов, иероглифов или кириллицы в имени и пути к нему.
* **«INVALID LENGTH»** — проверить соединение USB-C кабеля и USB-порта, проверить с другими USB-C-кабелями, целостность файла игры и карту памяти на ошибки, при установке через MTP — запустить dbi через любую игру (тайтл) с удерживанием кнопки R, а не в режиме апплета через альбомы.
* **«INVALID DECOMPRESSED LENGTH», вместе с «TRANSFER ERROR»**, при установке с карты памяти/носителя/dbibackend — освободите побольше места на карте памяти, удалите ненужные файлы с карты, если их больше 20000 шт.
* **«605: Content or placeholder path not exists»** и **«SOME CONTENTS ARE MISSING»** — битая файловая система карты памяти, или нерабочая/некачественная флешка. Проверьте её в chkdsk и h2testw, если нет ошибок, переформатируйте в FAT32.
* **WARNING! Extra buffers exceeded**, при установке через MTP — запустите dbi через тайтл = через любую игру, удерживая кнопку R при её запуске; альтернативно — через NSP-форвардер, и использовать более быструю microSD-карту с другим USB-кабелем/портом.
* **No tickets found but they are required** — некорректный (неполный, без тикета но с titlerights) дамп игры, найдите другой.
* **SOME CONTENTS ARE MISSING. APPLICATION WILL BE UNUSABLE** — контейнер неполный, проверьте целостность установочного файла игры.
* **«Invalid personalized ticket»**, в конце установки игры при инсталлировании .tik-тикета — некорректный дамп игры, где вместо common-тикета остался персонализированный с той консоли, на которой была куплена игра; скачайте другой, корректный дамп.
* **«No ES или других sigpatches»** — не все/устаревшие/некорректно/не установлены сигпатчи на консоли, установите их самую новейшую версию.
Файл dbi.config был добавлен, начиная с версии 253. Он находится рядом с DBI.nro, и заменяет прежние файлы-флаги dbi.default.ascii и dbi.network.config, а также добавляет несколько новых опций для удобной кастомизации настроек под пользователя.
* **UseLibUsbHsFS** - **true** включает библиотеку [libusbhsfs](https://github.com/DarkMatterCore/libusbhsfs) для работы с внешними USB-накопителями через USB-OTG на Switch, **false** отключает её.
* **AppSorting** - опции для сортировки списка приложений
* **SaveSorting** - опции для сортировки сохранений
* **Visibility of main menu items** - настроить, какие пункты меню будут отображаться в главном меню DBI, вы можете запретить отображение параметра в главном меню, изменив значение на **false**
* **OptimizeClockSpeed** - отключает оптимизацию частоты SoC в простое. Отключено по-умолчанию, поскольку **может привести к лагам на стартовом экране при некорректном выходе из DBI**! Корректный выход - через пункт меню **Exit**.
* **VersionsURL** - может принимать прямую ссылку на файл на уудалённом сервере, либо на файл на карте памяти. Примеры: `https://raw.githubusercontent.com/blawar/titledb/master/versions.txt` или `sdmc:/versions.txt`
* **ROSaveFS** - просматривать сохранения в режиме только для чтения
* **ShowUpdateFromHere** - показывать кнопку "Update all titles" в контекстном меню для автообновления установленных игр из всех (microSD/USB/HTTP/FTP) доступных источников
* **CalculateLFSSize** — включает или отключает подсчёт размера установленных LFS-модов. Если включено, может повлиять на скорость открытия меню "*Browse installed applications*"
* **ShowMACInInstalledGames** — **false** выключает показ виртуальной директории **«Mods & cheats»** в пункте Installed games в MTP, перенаправляющей по пути `sdmc:/atmosphere/contents/TITLEID/` на карту памяти.
Кастомные пункты для MTP-режима для быстрого доступа к папкам на вашей карте памяти. Формат: `<отображаемое_имя папки>=<путь>`, например: `Homebrew=sdmc:/switch`.
В режиме MTP появится папка `Homebrew`, ссылающаяся на папку `switch` на вашей карте памяти
Позволяет изменить имя отображаемого тайтла. Например, если указать `10023901191C000=Naheulbeuk`, то в приложении вместо `The Dungeon of Naheulbeuk: The Amulet of Chaos` будет отображаться просто `Naheulbeuk`
1.**Будьте внимательны**, вам нужно класть не саму папку с titleID игры, а её содержимое! Например, вы скачали перевод для игры Cadence of Hyrule, в виде архиве `Cadence of Hyrule.rar`. Внутри этого архива вы видите папку с TitleID игры - `01000B900D8B0000`. Вам нужно распаковать архив, перейти в папку `01000B900D8B0000` и скопировать всё содержимое папки в **Mods & Cheats**! Не саму папку `01000B900D8B0000`, а всё то, что в ней находится! В данном примере, папку `romfs`
### USB 3.0
DBI поддерживает работу по USB 3.0. Если вы используете kefir, то USB 3.0 активно по-умолчанию. В ином случае, нужно активировать эту функцию через конфигурационные файлы Atmosphere, прописав в `atmosphere\config\system_settings.ini`:
Спасибо [SciresM](https://github.com/SciresM) за [hactool](https://github.com/SciresM/hactool) (лицензия [ISC](https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_ISC)) - DBI использует некоторые структуры данных, взятые оттуда