[2026-05-16] HTPC полная настройка: Dolphin+RetroArch+MAME+Ryujinx+qBittorrent; геймпады Xbox; switch-emulation-rom-infra; htpc-emulators-setup

This commit is contained in:
Alexey Martemyanov
2026-05-16 14:58:54 +06:00
parent 57e315fb8d
commit 18c98e05ff
3 changed files with 238 additions and 2 deletions
+201
View File
@@ -0,0 +1,201 @@
# HTPC — Эмуляторы: Настройка
> Актуально: май 2026. Железо: i7-6800K, RX 570, 32GB RAM.
---
## Dolphin (Wii / GameCube)
**Версия:** 2603a (Flatpak `org.DolphinEmu.dolphin-emu`)
**Конфиг:** `~/.var/app/org.DolphinEmu.dolphin-emu/config/dolphin-emu/`
### Статус настройки (16.05.2026) ✅
- **Видео:** Vulkan, 3x Internal Resolution (1080p→1440p EFB), VSync, async shader compilation
- **Fullscreen:** включён при запуске
- **ISO пути:**
- `~/Emulation/roms/gc`
- `~/Emulation/roms/wii`
- `/run/media/bazzite/Data/dolphin roms` ← основная библиотека
- `/run/media/bazzite/Data/games`
### Геймпады — Xbox схема
**Контроллеры:** 2× Xbox 360, 2× 8BitDo (Xbox-схема). Драйвер `xpad` загружен.
**GCPad (для GC игр):** XInput2/0..3/Xbox 360 Controller
- A/B/X/Y → A/B/X/Y
- Z (GC) → Shoulder R
- Start → Start
- Стики → Axis 0/1 (левый), Axis 2/3 (правый) — deadzone 15%
- Триггеры → Trigger L/R, threshold 90%
**Wiimote + Classic Controller (для Wii игр):** XInput2/0..3/Xbox 360 Controller
- Extension = Classic Controller
- Кнопки маппятся напрямую через Classic Controller
- WiimoteSource = 1 (эмуляция, не реальный Wiimote)
### Игры на Data диске (`/run/media/bazzite/Data/dolphin roms/`)
| Игра | Формат | Game ID | Тип | Кооп |
|------|--------|---------|-----|------|
| **Donkey Kong Country Returns** | .iso | SF8P01 | Wii | ✅ 2P |
| **New Super Mario Bros Wii** | .iso | — | Wii | ✅ 4P |
| Donkey Kong Jungle Beat | .wbfs | — | GC | — |
| Luigi's Mansion | .iso | — | GC | — |
| Metroid Prime Trilogy | .iso | — | Wii | — |
| Super Mario Sunshine | .iso | — | GC | — |
| Zelda: Breath of the Wild | папка | — | Wii U? | — |
| Zelda: Skyward Sword | .iso | — | Wii | — |
| Zelda: Wind Waker | .iso | — | GC | — |
| Zelda: Four Swords Adventures | .gcm | — | GC | — |
| Zelda: Collector's Edition | .iso | — | GC | — |
### ⚠️ Важные нюансы при запуске
**DKC Returns — финальный маппинг (Xbox геймпад → Classic Controller):**
| Xbox кнопка | Действие в игре |
|-------------|----------------|
| A | Прыжок |
| B | Бег / подбор |
| X | Roll / **Shake** (ground pound, атака на Rambi) |
| Y | Бег / подбор |
| LB | ZL (Roll альтернатива) |
| RB | ZR (Roll альтернатива) |
| LT | ZL analog |
| RT | ZR analog |
| Start | + (Пауза) |
| Back | - (Карта) |
| D-Pad | D-Pad |
| Левый стик | Движение |
| Правый стик | C-Stick |
**X нажат = одновременно CC/X (Roll) + Shake** — как в оригинальном DKC где X = Roll.
**Если геймпад не определяется:**
- Проверить: `ls /dev/input/js*` — должны появиться js0, js1 при подключении
- Xbox 360 проводной: автоматически через `xpad`
- 8BitDo в Xbox режиме (кнопка X при включении): определяется как xpad-совместимый
---
---
## MAME
**Версия:** 0.287 (Flatpak `org.mamedev.MAME`)
**Конфиг:** `~/.var/app/org.mamedev.MAME/data/MAME/mame.ini`
**Статус:** ✅ настроен (16.05.2026)
**ROM пути:**
- `/run/media/bazzite/Data/mame_roms`**отобранные ~46 игр** (из chosen_mame.sh)
- `/run/media/bazzite/Data/mame roms` — дополнительно (mspacman, neogeo)
- Полная база 22k ROM: `/run/media/bazzite/Data/downloads/mame_0.271_roms_[merged]/`
**Видео:** Vulkan (bgfx), fullscreen, vsync, skip_gameinfo
**Отобранные игры (chosen_mame.sh):**
Pacman, DK Jr, SF2, Space Invaders, MK, Asteroids, Centipede, Metal Slug 1-5, KOF98, Contra, Double Dragon, Final Fight, Golden Axe 3, TMNT, Ghosts'n Ghouls, SSRIDERS, Raiden, Tetris, Battletoads, Puzzle Bobble, Robocop, Punisher, Rampage 2, Hyper SF2, и др.
**neogeo BIOS** скопирован в `mame_roms/` — Metal Slug работает.
**RetroArch MAME cores:** `mame_libretro.so` (0.287) + `mame2003_plus_libretro.so` (0.139)
ROM симлинк: `~/Emulation/roms/mame/roms/mame_chosen → /run/media/bazzite/Data/mame_roms`
---
## RetroArch
**Версия:** 1.22.2 (Flatpak `org.libretro.RetroArch`)
**Статус:** ✅ настроен (16.05.2026)
- **Видео:** Vulkan, fullscreen, vsync
- **Геймпады:** Xbox autoconfig скопирован в `~/.var/app/.../autoconfig/` — определяется автоматически при подключении
- `X360 Controller.cfg` (проводной)
- `X360 Wireless Controller.cfg` (беспроводной)
- `8BitDo_Ultimate_C_Wired_Controller_for_Xbox.cfg`
- **ROM пути (симлинки):**
| Папка | Ссылка |
|-------|--------|
| `~/Emulation/roms/snes_data` | `/run/media/bazzite/Data/snes roms` |
| `~/Emulation/roms/sega_data` | `/run/media/bazzite/Data/sega roms` |
| `~/Emulation/roms/n64_data` | `/run/media/bazzite/Data/n64 roms` |
| `~/Emulation/roms/gba_data` | `/run/media/bazzite/Data/gba roms` |
| `~/Emulation/roms/mame/roms/mame_chosen` | `/run/media/bazzite/Data/mame_roms` |
**Конфиг:** `~/.var/app/org.libretro.RetroArch/config/retroarch/`
**ROM browser:** `~/Emulation/roms/` (+ симлинки на Data диск)
### Доступные cores
| Core | Платформа | Файл |
|------|-----------|------|
| snes9x | SNES | `snes9x_libretro.so` |
| bsnes / bsnes_hd | SNES | `bsnes_libretro.so` / `bsnes_hd_beta_libretro.so` |
| genesis_plus_gx | Sega MD/CD | `genesis_plus_gx_libretro.so` |
| mgba | GBA/GB/GBC | `mgba_libretro.so` |
| mupen64plus_next | N64 | `mupen64plus_next_libretro.so` |
### ROM симлинки (Data диск → ~/Emulation/roms/)
```
snes_data → /run/media/bazzite/Data/snes roms
sega_data → /run/media/bazzite/Data/sega roms
n64_data → /run/media/bazzite/Data/n64 roms
gba_data → /run/media/bazzite/Data/gba roms
```
### Кооп игры на Data диске (готовы к запуску)
**SNES:**
- Donkey Kong Country 1, 2, 3 ✅
- Contra III, Battletoads ✅
**N64:**
- Mario Kart 64 ✅
- Diddy Kong Racing ✅
- Mario Party ✅
- Donkey Kong 64
**Sega:**
- Streets of Rage 2 ✅ (кооп)
- Sonic 1/2/3 ✅
- Golden Axe I/II ✅
---
## Ryujinx (Nintendo Switch)
**Версия:** 1.3.3 (Ryubing fork, Flatpak `io.github.ryubing.Ryujinx`)
**Статус:** ✅ Установлен (16.05.2026), ждёт ключей
**Пути:**
```
Keys: ~/.var/app/io.github.ryubing.Ryujinx/data/Ryujinx/system/prod.keys
ROMs: ~/Emulation/roms/switch/
```
**Нужно:**
1. Скачать `prod.keys` + firmware: https://github.com/THZoria/NX_Firmware
2. Firmware: Ryujinx → Tools → Install Firmware
3. ROM DKC Tropical Freeze (.nsp/.xci) — через qBittorrent
→ Подробно: [[switch-emulation-rom-infra]]
---
## Геймпады — общая информация
| Тип | Подключение | Драйвер | Статус |
|-----|------------|---------|--------|
| Xbox 360 (×2) | USB | xpad (в ядре) | ✅ автоматически |
| 8BitDo (×2) | USB/Bluetooth, Xbox режим | xpad-совместимый | ✅ в Xbox режиме |
**8BitDo Xbox режим:** удерживать **X** при включении контроллера → определяется как Xbox-совместимый через xpad.
**Проверить подключение:**
```bash
ls /dev/input/js* # должно быть js0, js1, ...
cat /proc/bus/input/devices | grep -A4 "Xbox\|8BitDo"
```
+10 -2
View File
@@ -32,9 +32,17 @@
- Бэкап оригинального (пустого) сейва: `saveData.bin.backup_20260516_1233`
- Shovel Campaign должна отображаться как пройденная — проверить запуском
## Статус системы
## Установленные эмуляторы
- [x] Bazzite установлен, автологин в Gaming Mode
→ Полная настройка геймпадов, путей, игр: [[htpc-emulators-setup]]
| Эмулятор | Flatpak ID | Версия | Статус |
|----------|-----------|--------|--------|
| **Dolphin** (Wii/GC) | `org.DolphinEmu.dolphin-emu` | 2603a | ✅ настроен |
| **RetroArch** | `org.libretro.RetroArch` | 1.22.2 | ✅ cores есть |
| **Ryujinx** (Switch) | `io.github.ryubing.Ryujinx` | 1.3.3 | ✅ ждёт ключей |
| **melonDS** (DS) | `net.kuribo64.melonDS` | 1.1 | установлен |
| **PPSSPP** (PSP) | `org.ppsspp.PPSSPP` | 1.20.3 | установлен |
- [x] 1080p@60Hz, аудио LPCM работает
- [x] LG Magic Remote работает (magic4pc)
- [x] Без пароля при входе
+27
View File
@@ -42,6 +42,33 @@ confidence: high
- Лимит исчерпывается только после очистки кеша когда весь TMDb идёт заново
- Проблема не в архитектуре — это нормально
## Docker Deploy — Kraken (обязательный порядок)
После каждого деплоя **обязательно** чистить dangling images, иначе диск забивается (~1-2GB за прогон):
```bash
# Mac (после docker build)
docker image prune -f
# Kraken (после docker load)
ssh kraken-ssh "docker image prune -f"
```
Полная последовательность деплоя:
```bash
# 1. Собрать
docker build -f Dockerfile.kraken -t media-pipeline:kraken .
# 2. Перенести
docker save media-pipeline:kraken -o /tmp/mp.tar
scp /tmp/mp.tar kraken-ssh:/tmp/
ssh kraken-ssh "docker load -i /tmp/mp.tar && rm /tmp/mp.tar && docker image prune -f"
rm /tmp/mp.tar
# 3. Почистить локально
docker image prune -f
```
## Docker Run — Kraken
Всегда монтировать `unresolved.json` явно: