[2026-06-21] taiga-vault: family/how-to/htpc-emulators-setup.md family/how-to/htpc-steam-nonsteam-shortcuts.md

This commit is contained in:
Taiga
2026-06-21 08:31:22 +00:00
parent 74e865f964
commit 90f812a59a
2 changed files with 60 additions and 39 deletions
+43 -30
View File
@@ -406,35 +406,43 @@ CACHE="$HOME/.var/app/org.libretro.RetroArch/config/retroarch/system/Mupen64plus
| В Steam (shortcuts.vdf) | ✅ 24 игры | launchoptions → плоские симлинки |
| Постеры (SteamGridDB) | ✅ wide + poster для всех | `~/.steam/steam/userdata/147839491/config/grid/` |
**Игры в Steam (Switch):**
| Игра | ROM slug |
|------|----------|
| Donkey Kong Country Tropical Freeze | `donkey_kong.nsp` |
| Super Mario Odyssey | `mario_odyssey.nsp` |
| Mario Kart 8 Deluxe | `mario_kart_8.nsp` |
| The Legend of Zelda: Breath of the Wild | `zelda_botw.nsp` |
| Donkey Kong Country Returns HD | `donkey_kong_country_returns_hd.nsz` |
| Hollow Knight | `hollow_knight.nsp` |
| Hollow Knight: Silksong | `hollow_knight__silksong.nsz` |
| It Takes Two | `it_takes_two.nsp` |
| Little Nightmares | `little_nightmares.nsp` |
| Little Nightmares III | `little_nightmares_iii.nsp` |
| Luigi Mansion 3 | `luigi_mansion_3.nsp` |
| Ori and the Will of the Wisps | `ori_and_the_will_of_the_wisps.nsz` |
| Plants vs. Zombies: Replanted | `plants_vs__zombies__replanted.nsz` |
| Spyro Reignited Trilogy | `spyro_reignited_trilogy.nsp` |
| Super Mario 3D All-Stars | `super_mario_3d_all_stars.nsp` |
| Super Mario 3D World + Bowser Fury | `super_mario_3d_world___bowser_fury.nsz` |
| Super Mario Bros. Wonder | `super_mario_bros__wonder.nsp` |
| Super Mario Party | `super_mario_party.nsp` |
| Super Smash Bros. Ultimate | `super_smash_bros__ultimate.nsz` |
| Sonic Mania | `sonic_mania.nsp` |
| The Disney Afternoon Collection | `the_disney_afternoon_collection.nsz` |
| Unravel Two | `unravel_two.nsz` |
| Vasilisa and Baba Yaga | `vasilisa_and_baba_yaga.nsz` |
| Constance | `constance.nsp` |
**36 игр в Steam (Switch) — статус на 21.06.2026:**
Всего symlinks в `~/Emulation/roms/switch/`: 36. Из них в Steam добавлено 27 (shortcuts.vdf), у 9 нет shortcut.
Эмулятор: Ryujinx 1.3.3 (flatpak), firmware 19.0.1, prod.keys (12KB), title.keys отсутствует.
**Symlink схема:** плоские симлинки без пробелов в `~/Emulation/roms/switch/` (например `donkey_kong.nsp`) → `/run/media/system/Data/Switch Roms/...` Оригинальные симлинки на папки сохранены для совместимости.
| Игра | ROM slug | Статус |
|------|----------|--------|
| Animal Crossing New Horizons | `animal_crossing.nsp` | ❓ |
| Donkey Kong Country Tropical Freeze | `donkey_kong.nsp` | ✅ работает |
| Super Mario Odyssey | `mario_odyssey.nsp` | ✅ работает |
| Mario Kart 8 Deluxe | `mario_kart_8.nsp` | ✅ работает |
| The Legend of Zelda: Breath of the Wild | `zelda_botw.nsp` | ✅ работает |
| Spyro Reignited Trilogy | `spyro_reignited_trilogy.nsp` | ✅ работает |
| Majora's Mask (2Ship2Harkinian) | `majoras_mask.nsp` | ❌ PAL_SEHException (GPU crash) |
| Donkey Kong Country Returns HD | `donkey_kong_country_returns_hd.nsz` | ❓ не проверялся |
| Hollow Knight | `hollow_knight.nsp` | ❌ Hash error (битый ROM) |
| Hollow Knight: Silksong | `hollow_knight__silksong.nsz` | ❓ |
| It Takes Two | `it_takes_two.nsp` | ❓ |
| Little Nightmares | `little_nightmares.nsp` | ❓ |
| Little Nightmares III | `little_nightmares_iii.nsp` | ❓ |
| Luigi Mansion 3 | `luigi_mansion_3.nsp` | ❓ |
| Ori and the Will of the Wisps | `ori_and_the_will_of_the_wisps.nsz` | ❓ |
| Plants vs. Zombies: Replanted | `plants_vs__zombies__replanted.nsz` | ❓ |
| Super Mario 3D All-Stars | `super_mario_3d_all_stars.nsp` | ❓ |
| Super Mario 3D World + Bowser Fury | `super_mario_3d_world___bowser_fury.nsz` | ❓ |
| Super Mario Bros. Wonder | `super_mario_bros__wonder.nsp` | ❓ |
| Super Mario Party | `super_mario_party.nsp` | ❓ |
| Super Smash Bros. Ultimate | `super_smash_bros__ultimate.nsz` | ❓ |
| Sonic Mania | `sonic_mania.nsp` | ❓ |
| The Disney Afternoon Collection | `the_disney_afternoon_collection.nsz` | ❓ |
| Unravel Two | `unravel_two.nsz` | ❓ |
| Sam & Max Save the World | `sam_and_max_save_the_world.nsp` | ❓ |
| Vasilisa and Baba Yaga | `vasilisa_and_baba_yaga.nsz` | ❌ ArgumentOutOfRangeException |
| Constance | `constance.nsp` | ❓ |
| Hunting Simulator 2 | `hunting_simulator_2.nsz` | ❓ |
| Carnivores Dinosaur Hunt | `carnivores_dinosaur_hunt.nsz` | ❌ ArgumentOutOfRangeException |
**Symlink схема:** плоские симлинки без пробелов в `~/Emulation/roms/switch/``/run/media/system/Data/Switch Roms/...` Оригинальные симлинки на папки сохранены для совместимости.
**Transmission:** `/data/Switch Roms` (case-sensitive, с пробелом) мапится в `/run/media/system/Data/Switch Roms/` через mount `/data``/run/media/system/Data`
@@ -451,8 +459,13 @@ CACHE="$HOME/.var/app/org.libretro.RetroArch/config/retroarch/system/Mupen64plus
**Launcher:** `~/Emulation/tools/launchers/ryujinx.sh` — ищет `~/Applications/publish/Ryujinx.sh` → не находит (`.bak`) → запускает `flatpak run io.github.ryubing.Ryujinx`.
**Логирование:** `~/ryujinx-launch.log` — PWD, ARGS, EXE, EXIT_CODE.
**Статус проверки игр:** pending — сначала починить ключи.
**Следующий шаг:** установить firmware 22.1.0 под свежие prod.keys либо найти title.keys.
**Ryujinx не поддерживает NSZ нативно** — только NSP и XCI. NSZ нужно конвертировать в NSP (SAK / Switch Army Knife) или скачивать NSP версии.
**TODO:**
- [ ] Конвертировать NSZ → NSP или найти NSP версии ROMов (Hollow Knight, Василиса, Carnivores и др.)
- [ ] Обновить firmware до 22.1.0 под свежие prod.keys
- [ ] Найти title.keys (missing `key_area_key_application_14`)
- [ ] Проверить все 35 игр после конвертации NSZ → NSP
---
+17 -9
View File
@@ -18,6 +18,13 @@ systemctl --user start gamescope-session-plus@steam.service
## Единственный правильный способ — vdf.binary_load
**Процедура (один py-скрипт, с бэкапом):**
1. Остановить Steam
2. Сделать бэкап shortcuts.vdf
3. Отредактировать VDF
4. Запустить Steam
Использовать модуль `vdf` (установлен на HTPC через pip). **Никогда** не редактировать бинарный VDF через ручную сборку байтов или замену строк — это ломает файл.
```python
@@ -44,10 +51,10 @@ def compute_appid(name, exe):
next_idx = str(len(shortcuts))
shortcuts[next_idx] = {
'AppName': 'Game Name',
'Exe': '/path/to/game.exe',
'StartDir': '/path/to/',
'LaunchOptions': '',
'appid': compute_appid('Game Name', '/path/to/game.exe'),
'Exe': '/home/bazzite/Emulation/tools/launchers/ryujinx.sh',
'StartDir': '/home/bazzite/Emulation/tools/launchers',
'LaunchOptions': '/home/bazzite/Emulation/roms/switch/animal_crossing.nsp',
'appid': compute_appid('Game Name', '/home/bazzite/Emulation/tools/launchers/ryujinx.sh'),
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
@@ -105,14 +112,13 @@ cp ~/.steam/steam/userdata/*/config/shortcuts.vdf{,.bak}
После записи VDF — перезапустить Steam, чтобы он подхватил изменения.
## Wide Steam Grid Posters
## Wide Steam Grid Posters — Порядок действий
При добавлении новой не-Steam игры — сразу скачивай и **wide** (920×430, `{appid}.png`), а не только poster (600×900, `{appid}p.png`).
Без wide постером игра выглядит как пустая белая заглушка в основном режиме библиотеки.
**Перед остановкой Steam** — сначала скачать все постеры. Так как Steam не нужен для скачивания.
### Naming convention
### Постеры для всех форматов
Файлы кладутся в `~/.steam/steam/userdata/147839491/config/grid/`:
При добавлении новой не-Steam игры — сразу скачивай все 4 формата:
| Размер | Формат файла | Назначение |
|--------|-------------|------------|
@@ -123,6 +129,8 @@ cp ~/.steam/steam/userdata/*/config/shortcuts.vdf{,.bak}
**Unsigned appid** = `signed_appid & 0xFFFFFFFF`. Пример: `-1321720074``2973247222`.
→ Подробно: [[htpc-steam-nonsteam-shortcuts]]
### Процедура (как делал Whale)
1. **Найти постеры на SteamGridDB** — зайти на `https://www.steamgriddb.com/game/<ID>`, отфильтровать по 920×430.