281 lines
11 KiB
Markdown
281 lines
11 KiB
Markdown
# 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
|
||
```
|
||
|
||
### Кооп игры на 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`
|
||
Скрипт: `/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.
|
||
|
||
---
|
||
|
||
## 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"
|
||
```
|