From 90f812a59a06c1d7ba14a1215cd9597b8bf1113a Mon Sep 17 00:00:00 2001 From: Taiga Date: Sun, 21 Jun 2026 08:31:22 +0000 Subject: [PATCH] [2026-06-21] taiga-vault: family/how-to/htpc-emulators-setup.md family/how-to/htpc-steam-nonsteam-shortcuts.md --- family/how-to/htpc-emulators-setup.md | 73 +++++++++++-------- .../how-to/htpc-steam-nonsteam-shortcuts.md | 26 ++++--- 2 files changed, 60 insertions(+), 39 deletions(-) diff --git a/family/how-to/htpc-emulators-setup.md b/family/how-to/htpc-emulators-setup.md index e09df147..b3e585f8 100644 --- a/family/how-to/htpc-emulators-setup.md +++ b/family/how-to/htpc-emulators-setup.md @@ -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 --- diff --git a/family/how-to/htpc-steam-nonsteam-shortcuts.md b/family/how-to/htpc-steam-nonsteam-shortcuts.md index dcc3bd2d..8456e9c2 100644 --- a/family/how-to/htpc-steam-nonsteam-shortcuts.md +++ b/family/how-to/htpc-steam-nonsteam-shortcuts.md @@ -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/`, отфильтровать по 920×430.