Files
obsidian-vault/family/how-to/htpc-emulators-setup.md
T

339 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HTPC — Эмуляторы: Настройка
> Актуально: май 2026. Железо: i7-6800K, RX 570, 32GB RAM.
---
## Бэкап сейвов
**Daily → Data диск** (`Persistent=true` — срабатывает при включении если пропустил):
- `saves-backup.timer` (00:00 daily)
- Скрипт: `~/scripts/backup-saves.sh`
- Назначение: `/run/media/bazzite/Data/backups/saves/`
- Покрывает: Dolphin GC, Dolphin Wii, RetroArch, Ryujinx, Steam userdata, MAME
**Weekly → Кракен HDD** (`Persistent=true`):
- `saves-sync-kraken.timer` (weekly)
- Скрипт: `~/scripts/backup-saves-to-kraken.sh`
- Назначение: `kraken@192.168.1.14:/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/backups/htpc-saves/`
- ⚠️ Путь назначения **всегда на HDD** (`/srv/dev-disk-by-uuid-.../`), не в `~/` (SSD, маленький)
- Транспорт: rsync по LAN (SSH ключ bazzite→kraken авторизован)
```bash
# Запустить вручную:
bash ~/scripts/backup-saves.sh # Data диск
bash ~/scripts/backup-saves-to-kraken.sh # Кракен
```
---
## 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 + Nunchuk (для Wii игр):** SDL/0/Xbox 360 Controller
- Extension = **Nunchuk** (не Classic Controller — DKC Returns пишет "unsupported controller" на CC)
- Shake привязан на кнопку X (порог 0.2, frequency 50)
- 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
```
### NES игры в Steam (Mesen core)
Добавлены 17.05.2026 через `mesen_libretro.so`. ROM: `758 nes roms/` на Data диске.
| Игра | ROM файл | HD Pack |
|------|----------|---------|
| Darkwing Duck | `darkwing duck (u).nes` | ❌ нет |
| Chip 'n Dale | `chip 'n dale rescue rangers (u) [!].nes` | ❌ нет |
| Batman | `batman (u).nes` | ❌ нет |
| Super Mario Bros | `super mario bros. (ju) (prg0) [!].nes` | ✅ mkwong98 |
| The Legend of Zelda | `legend of zelda, the (u) (prg1).nes` | ✅ Zelda Remastered |
| Castlevania | `castlevania (u) (prg1).nes` | ✅ 30th Anniversary HD |
| Bomberman | `bomberman (u).nes` | ✅ Bomberman Remastered |
| Battle City | `battle city (j) [p1].nes` | ✅ imkrut |
**Установка HD паков:**
- Папка: `~/.var/app/org.libretro.RetroArch/config/retroarch/system/HdPacks/`
- Подпапка = имя ROM файла без `.nes`
- `Mesen.opt`: `mesen_hdpacks = "enabled"`
- Скачать с romhacking.net вручную (Cloudflare, curl не работает):
- Battle City: https://www.romhacking.net/forum/index.php?topic=30639.0
- Bomberman: https://www.romhacking.net/forum/index.php?topic=30619.0
- Castlevania: https://www.romhacking.net/forum/index.php?topic=24125.0 (30th Anniversary)
- Zelda Remastered: https://www.romhacking.net/forum/index.php?topic=31559.0
- Super Mario Bros: https://forums.nesdev.org/download/file.php?id=12073
### Кооп игры на 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 ✅
---
## Steam библиотека — shortcuts и artwork
**Статус:** ✅ 61 игра добавлена в Steam (16.05.2026), запускаются из Gaming Mode.
### Как добавлено
Прямая запись в `~/.steam/steam/userdata/<uid>/config/shortcuts.vdf` через Python + `vdf` библиотека.
Скрипт: `/tmp/add_shortcuts.py` (можно восстановить при необходимости).
**Формат записи:**
```python
sc['Exe'] = '/home/bazzite/Emulation/tools/launchers/retroarch.sh' # или dolphin-emu.sh
sc['LaunchOptions'] = '-L /home/bazzite/.var/.../core.so /path/to/rom'
```
⚠️ **Важно:** `~` в путях не разворачивается — только абсолютные пути `/home/bazzite/...`
⚠️ **Важно:** Steam перезаписывает shortcuts.vdf при запуске — писать только пока Steam закрыт.
### Игры по эмуляторам
| Эмулятор | Launcher | Игр |
|----------|----------|-----|
| Dolphin (Wii/GC) | `launchers/dolphin-emu.sh` | 10 |
| RetroArch SNES | `launchers/retroarch.sh` + `snes9x_libretro.so` | 11 |
| RetroArch N64 | `launchers/retroarch.sh` + `mupen64plus_next_libretro.so` | 11 |
| RetroArch GBA | `launchers/retroarch.sh` + `mgba_libretro.so` | 2 |
| RetroArch Genesis | `launchers/retroarch.sh` + `genesis_plus_gx_libretro.so` | 8 |
| RetroArch MAME | `launchers/retroarch.sh` + `mame2003_plus_libretro.so` | 19 |
### Artwork (SteamGridDB)
API ключ: `~/Documents/steamgriddb_api_key.txt` + `~/.bashrc` (STEAMGRIDDB_API_KEY)
Значение: `09d4a0e62e70ed18bfa3af8ff3ceee56`
Скрипт: `/tmp/get_artwork.py`
Скачивает: cover (`{appid}p.png`), hero (`{appid}_hero.png`), logo (`{appid}_logo.png`)
Результат: 60/61 ok (Aladdin — нет арта на SteamGridDB)
Grid dir: `~/.steam/steam/userdata/<uid>/config/grid/`
```bash
# Перескачать / добавить новые игры:
python3 /tmp/get_artwork.py
```
### Описания — недоступно
Steam не поддерживает описания для non-Steam shortcuts — ни через vdf, ни через API. Ограничение самого Steam.
---
## Windows игры (Data/games) — Proton
**Статус:** ✅ 39 игр добавлены в Steam shortcuts (17.05.2026), Proton Experimental, обложки скачаны.
**Расположение игр:** `/run/media/bazzite/Data/games/`
**Список:**
Bombrman, Brawlhalla, Castle Crashers, Contra: Operation Galuga, Cuphead, Disco Noir, Distance, Doom 3 BFG Edition, Duck Game, Fallout 4, Final Fantasy X/X-2 HD, Gas Guzzlers Extreme, GTA V, GRIP, Heave Ho, Human Fall Flat, Lethal League Blaze, Liftoff FPV, Metal Slug X, Metro Exodus, Monaco, Nidhogg 2, No Time to Explain, Pummel Party, Rayman Legends, Rayman Origins, Red Alert 3, Samurai Gunn, Savant Ascent, Shovel Knight, Civilization V, Skydrift, Soldat, Split Second, Super Bomberman R2, TowerFall Ascension, Vladik Brutal, Worms WMD, Worms World Party Remastered
**Compat tool:** `proton_experimental` — прописан в `~/.local/share/Steam/config/config.vdf``CompatToolMapping`
**Скрипты:**
```bash
python3 /tmp/add_windows_games.py # добавить игры в shortcuts.vdf (Steam закрыт!)
python3 /tmp/artwork_windows.py # скачать обложки с SteamGridDB
```
**Сейвы Windows → Linux:**
- Rayman Origins: скопирован на `/run/media/bazzite/Data/backups/saves/rayman-origins/savegame_0`
- При первом запуске через Proton: положить в `~/.local/share/Steam/steamapps/compatdata/<appid>/pfx/drive_c/users/steamuser/Documents/My Games/rayman origins/savegame/`
---
## Wishlist / К покупке в Steam
| Игра | Платформа | Примечание |
|------|-----------|------------|
| **DuckTales Remastered** | Steam | HD ремастер WayForward (2013) — пока недоступен в магазине |
---
## TODO: DOS / Windows Standalone
- [ ] Discworld (DOS) — настроить через DOSBox в RetroArch или DOSBox Staging standalone
- [ ] Другие Windows/DOS игры — добавить в SRM как standalone shortcuts
- [ ] Добавить парсеры в SRM: DOS и/или Windows категории
---
## 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"
```