# Switch Эмуляция и ROM-инфраструктура — Research > Исследование: май 2026. Цель: запустить DKC Tropical Freeze / Returns на HTPC, настроить автоматический поиск и скачку через Кракена/Eagle. --- ## 1. Switch Эмулятор — Текущий Landscape (2026) ### Ситуация Nintendo подала в суд: **оригинальный Ryujinx закрылся** (октябрь 2024), **Yuzu закрылся** раньше. Оба форка живы: | Эмулятор | Основа | Статус | Для чего | |----------|--------|--------|----------| | **Ryujinx (GreemDev)** | Ryujinx | ✅ Активно, GitHub | Десктоп (Win/Linux/macOS) | | **Eden** | Yuzu | ✅ Активно, eden-emu.dev | Android + десктоп | | Citron | Yuzu | Активно | Альтернатива | | Suyu/Sudachi | Yuzu | Менее активны | Эксперименты | **Для HTPC (Bazzite/Linux десктоп): рекомендован Ryujinx (GreemDev fork).** Eden больше ориентирован на Android, хотя DKC Tropical Freeze на нём тоже работает. ### EmuDeck — правильный способ установки EmuDeck автоматически ставит Ryujinx, настраивает пути, добавляет в Steam ROM Manager. ```bash # В KDE Desktop Mode (не gamescope): curl -L https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh | bash ``` Ryujinx после установки через EmuDeck: - Бинарь: `/home/bazzite/Applications/publish/Ryujinx` - Конфиг: `~/.config/Ryujinx/` - **Keys: `~/Emulation/bios/ryujinx/keys/`** (не `~/.config/Ryujinx/system/`) - ROMs: `~/Emulation/roms/switch/` - Saves: `~/Emulation/saves/ryujinx/saves/` --- ## 2. prod.keys — Где взять `prod.keys` — ключи шифрования Nintendo Switch. Технически: дамп из реального Switch через Hekate/Lockpick_RCM. ### Практика (common knowledge) Ключи широко распространены в community-источниках: - **Rutracker**: поиск "Nintendo Switch prod.keys" или "switch firmware keys" - **4PDA**: раздел эмуляторов Switch - **Archive.org**: публичные архивы с firmware дампами - Telegram-каналы по Switch эмуляции ### Версионность `prod.keys` должны соответствовать или быть новее firmware. Рекомендуется брать свежую связку keys + firmware одной версии (17.0.0+). ### Установка ``` ~/Emulation/bios/ryujinx/keys/prod.keys ~/Emulation/bios/ryujinx/keys/title.keys # опционально, нужны для некоторых игр ``` Firmware ставится через GUI: Ryujinx → `Tools → Install Firmware → Install from XCI or ZIP` --- ## 3. DKC Tropical Freeze — Совместимость **Статус:** ✅ Работает | Железо | Эмулятор | Результат | |--------|----------|-----------| | i5-6500 + GTX 1050 Ti | Eden | Perfect | | M1 Pro | Ryujinx 1.1.0 | Отлично (video на Reddit) | Наше железо (i7-6800K + RX 570) сопоставимо с i5-6500 + GTX 1050 Ti. RX 570 поддерживает Vulkan — основной backend для Linux. **Ожидается: Playable до Perfect.** **DKC Returns HD** (2025, Switch): новая ремастер-версия, более требовательная. Начинать с Tropical Freeze (2018 порт) — он оптимальнее на эмуляторе. ### ROMs форматы - `.nsp` — предпочтительный (NSP = Nintendo Submission Package) - `.xci` — картридж-дамп, тоже работает --- ## 4. qBittorrent на HTPC ### Установка (Flatpak, без rpm-ostree) ```bash ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \ "flatpak install -y flathub com.qbittorrent.qBittorrent" ``` ### Настройка Web UI В GUI: Tools → Options → Web UI: - Enable Web UI: ✅ - Port: **8080** - Authentication: задать логин/пароль - IP: 0.0.0.0 (все интерфейсы) Или через SSH после запуска — конфиг в `~/.var/app/com.qbittorrent.qBittorrent/config/qBittorrent/qBittorrent.conf`. После настройки: `http://192.168.1.86:8080` ### API — как Eagle/Кракен добавляет торрент ```bash # 1. Логин — получаем SID cookie SID=$(curl -s -i \ --header 'Referer: http://192.168.1.86:8080' \ --data 'username=admin&password=PASSWORD' \ http://192.168.1.86:8080/api/v2/auth/login \ | grep -i 'set-cookie' | grep -o 'SID=[^;]*') # 2. Добавить магнет-ссылку curl -s \ --cookie "$SID" \ --data-urlencode "urls=magnet:?xt=urn:btih:HASH&dn=..." \ --data "savepath=/home/bazzite/Emulation/roms/switch/" \ http://192.168.1.86:8080/api/v2/torrents/add # 3. Проверить статус curl -s --cookie "$SID" \ "http://192.168.1.86:8080/api/v2/torrents/info?filter=all" | jq '.[].name' ``` Полный API: cookie-based, `/api/v2/torrents/add` принимает: - `urls` — магнет или URL торрент-файла - `savepath` — куда сохранить - `category` — категория --- ## 5. Jackett на Кракене — Поиск по трекерам ### Что это Jackett — proxy-сервер который транслирует поисковые запросы в tracker-специфичные HTTP запросы. Поддерживает **RuTracker.org** (semi-private, нужна учётка). ### Установка на Кракене (Docker) ```yaml # /srv/.../docker/jackett/docker-compose.yml services: jackett: image: lscr.io/linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 - PGID=1000 - TZ=Asia/Bishkek volumes: - ./config:/config - ./downloads:/downloads ports: - 9117:9117 restart: unless-stopped ``` ```bash ssh kraken-ssh "cd /srv/.../docker/jackett && docker compose up -d" ``` Web UI: `http://192.168.1.14:9117` ### Настройка RuTracker 1. Открыть Jackett Web UI → Add Indexer → поиск "rutracker" 2. Ввести логин/пароль от RuTracker.org 3. Test indexer — должен вернуть результаты ### API — как Eagle ищет игру ```bash # Поиск через Jackett Torznab API curl "http://192.168.1.14:9117/api/v2.0/indexers/rutracker/results/torznab/?apikey=JACKETT_KEY&t=search&q=Donkey+Kong+Tropical+Freeze+Switch&cat=8000" # Возвращает XML/JSON с magnet-ссылками и метаданными ``` Jackett также поддерживает JSON: добавить `&format=json` или использовать `results/torznab` endpoint. --- ## 6. Целевая Архитектура: Полный Flow ``` Eagle/Кракен (агент) │ ├── 1. Запрос: "найди DKC Tropical Freeze NSP" │ ├── 2. Поиск: Jackett API (Кракен :9117) │ └── rutracker → список торрентов с магнетами │ ├── 3. Выбор лучшего результата (seeders, размер, формат) │ ├── 4. Добавление в qBittorrent (HTPC :8080) │ └── magnet URL + savepath=/home/bazzite/Emulation/roms/switch/ │ └── 5. Уведомление: "скачивается X GB, ~Y мин" ``` --- ## 7. План действий (приоритет) ### Шаг 1: EmuDeck + Ryujinx (разовая установка, нужен Desktop Mode) ```bash # Переключиться в Desktop Mode на HTPC, затем: ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \ "curl -L https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh -o /tmp/emudeck.sh && bash /tmp/emudeck.sh" # Либо запустить интерактивно из браузера на HTPC ``` ⚠️ EmuDeck требует GUI для первоначальной настройки (создаёт директории, настраивает Steam ROM Manager). ### Шаг 2: prod.keys + firmware - Найти на Rutracker или 4PDA свежую пару keys + firmware (17.0.x) - Положить в `~/Emulation/bios/ryujinx/keys/` - Установить firmware через Ryujinx GUI ### Шаг 3: qBittorrent на HTPC ```bash ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \ "flatpak install -y flathub com.qbittorrent.qBittorrent" ``` Настроить Web UI через GUI (один раз). ### Шаг 4: Jackett на Кракене ```bash ssh kraken-ssh "mkdir -p /srv/.../docker/jackett && cd /srv/.../docker/jackett" # Создать docker-compose.yml (выше), добавить RuTracker учётку ``` ### Шаг 5: ROM - Через Jackett: найти NSP/XCI для DKC Tropical Freeze - Закачать через qBittorrent в `~/Emulation/roms/switch/` - Запустить через Steam ROM Manager → появится в Gaming Mode --- ## 8. Open Questions - [ ] EmuDeck требует десктопного сессии на HTPC — нужно физически или через VNC? Через SSH не пойдёт (нужен GUI установщик) - [ ] RuTracker учётка — есть? Надо создать если нет - [ ] Jackett: добавить на Кракен как постоянный сервис рядом с Transmission - [ ] Совместная игра: DKC Tropical Freeze поддерживает кооп (2 игрока) — идеально папа + Лиза --- ## Ссылки - EmuDeck Wiki Ryujinx: https://emudeck.github.io/emulators/steamos/ryujinx/ - Ryujinx (GreemDev fork): https://github.com/GreemDev/Ryujinx - Eden: https://eden-emu.dev - Jackett: https://github.com/Jackett/Jackett - qBittorrent API: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation