[2026-05-16] HTPC полная настройка: Dolphin+RetroArch+MAME+Ryujinx+qBittorrent; геймпады Xbox; switch-emulation-rom-infra; htpc-emulators-setup
This commit is contained in:
@@ -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"
|
||||
```
|
||||
@@ -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] Без пароля при входе
|
||||
|
||||
@@ -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` явно:
|
||||
|
||||
Reference in New Issue
Block a user