# RetroArch store — kidolgozott terv Készült 2026-08-17-én, a `MORE_STORES.md` 4. pontjának kifejtéseként. Minden alább szereplő formátum- és útvonal-állítás **egy valódi RetroArch-telepítésen mérve** (macOS, `~/Library/Application Support/RetroArch`), a mag-elérhetőség pedig a libretro buildbot indexéből. > **Megvalósítva ugyanaznap.** Három repó: > [`engines/warpstore`](https://git.teletypegames.org/engines/warpstore) (közös mag), > [`stores/warp-engine-retroarch-store`](https://git.teletypegames.org/stores/warp-engine-retroarch-store) (motor), > [`stores/ttg-retroarch-store`](https://git.teletypegames.org/stores/ttg-retroarch-store) (a mi store-unk). > A 11. pont javaslatával szemben a közös rész **azonnal** kiemelve — lásd az > „Amit a megvalósítás megváltoztatott" szakaszt a végén. Wiki: > [warpstore](https://wiki.teletypegames.org/engines/warpstore), > [motor](https://wiki.teletypegames.org/others/warp-engine-retroarch-store), > [store](https://wiki.teletypegames.org/others/ttg-retroarch-store). --- ## 1. Mit ad, és mit nem Új asset-fajtát **nem** fogyaszt: a RetroArch magok emulátorok, tehát pontosan azt eszik, amit a Batocera-store is — a `cartridge`-et. A nyereség nem a katalógus szélessége, hanem a **gazdagépek száma**: asztali Linux/Windows/macOS, Android, Steam Deck, konzolportok. A mai katalógusból (`released` + `archived`, 2026-08-17-i mérés) ez **6 cím, összesen 233 KB**: | Platform | Szoftver | Cím | Fájl | Méret | CRC32 | |---|---|---|---|---|---| | c64 | blessingofra | Blessing of Ra | `blessingofra-2.0.0.prg` | 10 561 | `4253CFC6` | | c64 | rabbitc64 | Rabbit Scooter | `rabbit-1.0.0.prg` | 8 072 | `31BF558B` | | c64 | c64demo | C64 Demo for Arok Party 2026 | `c64demo-1.0.prg` | 4 641 | `AF681FFC` | | tic80 | impostor | Definitely not an Impostor | `impostor-1.0.tic` | 163 497 | `8D9A45DA` | | tic80 | bombexpert | BombExpert | `bombexpert-0.2.tic` | 25 227 | `A67DDF4A` | | tic80 | mranderson | Mr Anderson's Adventure | `mranderson-0.1.tic` | 21 657 | `E98C7712` | Egy egész store negyed megabájt — ez az, ami miatt a szinkron gyakorlatilag ingyen van, és amiért az Android-célpont zip-ként is elküldhető. **A két mag mindenhol van.** A buildbot indexét végigkérdezve: | Cél | `vice_x64` | `tic80` | Fájlnév-alak | |---|---|---|---| | `apple/osx/arm64`, `apple/osx/x86_64` | ✔ | ✔ | `*_libretro.dylib` | | `linux/x86_64`, `linux/aarch64`, `linux/armhf`, `linux/armv7-neon-hf` | ✔ | ✔ | `*_libretro.so` | | `windows/x86_64` | ✔ | ✔ | `*_libretro.dll` | | `android/arm64-v8a`, `android/armeabi-v7a` | ✔ | ✔ | `*_libretro_android.so` | Tehát nincs olyan RetroArch-gazdagép, amin a katalógusunk ne futna — az Androidon viszont a mag fájlneve más (`_android.so`), és ez a tervben külön kezelendő. **Amire nem jó.** A `html` és a natív zipek maradnak kiszolgálatlanul: nincs böngésző-mag, és a LÖVE-hoz sincs valódi mag (a `lutro` nem LÖVE-kompatibilis). Batocerán és a többi ES-frontendes gépen szintén nem ez a helyes út — ott a RetroArch a háttérben fut, a könyvtár az ES-é, tehát a Batocera-store dolgozik. --- ## 2. A gazdaplatform, ahogy valóban kinéz Négy dolgot érdemes tudni, mert mind a négy megcáfol egy kézenfekvő feltevést. **(a) A `retroarch.cfg` az egyetlen igazságforrás, és a könyvtárak szét vannak szórva.** A mért gépen: ``` libretro_directory = ~/Library/Application Support/RetroArch/cores thumbnails_directory = ~/Library/Application Support/RetroArch/thumbnails playlist_directory = ~/Documents/RetroArch/playlists ← más ág! system_directory = ~/Documents/RetroArch/system ``` A playlist-könyvtár tehát nem a RetroArch alapkönyvtárában van. Aki a `/playlists` mintát égeti bele, az ezen a gépen csendben a semmibe ír. **A motor kötelezően a `retroarch.cfg`-ből olvassa a négy útvonalat**, és csak akkor tippel, ha nincs cfg. A `~` feloldandó, ahogy a Windows-os portable telepítések `:` prefixe is (a RetroArch saját alapkönyvtárát jelenti). **(b) A `.lpl` sémája.** Egy valódi playlist a gépről (rövidítve) — ez a formátum, amit írunk, nem egy dokumentációból vett közelítés: ```json { "version": "1.5", "default_core_path": "", "default_core_name": "", "label_display_mode": 0, "right_thumbnail_mode": 0, "left_thumbnail_mode": 0, "thumbnail_match_mode": 0, "sort_mode": 0, "items": [ { "path": "/…/Altered Beast (USA).md", "entry_slot": -1, "label": "Altered Beast (USA)", "core_path": "/…/cores/genesis_plus_gx_libretro.dylib", "core_name": "Sega - MS/GG/MD/CD (Genesis Plus GX)", "crc32": "00000000|crc", "db_name": "Sega - Mega Drive - Genesis.lpl" } ] } ``` Két tanulság: a `path` **absztolút út a célgépen** (ez a 7. pont egész problémája), a `crc32` pedig `"<8 hex>|crc"` alakú — a RetroArch maga gyakran csak nullákat ír bele, mi a valódit tudjuk beírni (`zlib.crc32`, ingyen). **(c) A borítókép útja a playlist nevéből jön.** A mért gépen: ``` thumbnails/Sega - Mega Drive - Genesis/Named_Boxarts/*.png Named_Titles/*.png Named_Snaps/*.png ``` Vagyis `thumbnails//Named_*/