diff --git a/MORE_STORES.md b/MORE_STORES.md index ec7b3c4..651f4a0 100644 --- a/MORE_STORES.md +++ b/MORE_STORES.md @@ -92,6 +92,13 @@ A `shortcuts.vdf`-be írva a játékaink megjelennek a Steam könyvtárban borí ### 4. RetroArch playlistek `.lpl` JSON playlist platformonként. A cartridge-eket sokkal nagyobb közönségnek adja, mint a Batocera: Android, asztali gépek, konzolok. Kis formátum, kevés munka. +**Kész (2026-08-17).** Terv és mérések: `RETROARCH_STORE.md`. Három repó: +`engines/warpstore` (a kiemelt közös mag), `tools/warp-engine-retroarch-store` +(motor), `tools/ttg-retroarch-store` (a mi store-unk). A Batocera-motor ugyanabban +a körben átült a közös magra. **Hátra van:** valódi gépen kipróbálni, hogy a +VICE-mag magától indítja-e a `.prg`-t, és hogy az Android `adb push` útvonalai +állnak-e. Ott mérve: mind a két mag (`vice_x64`, `tic80`) elérhető minden célon, Androidon is; a playlist-könyvtár nem feltétlenül a RetroArch alapkönyvtárában van, tehát a `retroarch.cfg` kötelező olvasmány; a borító csak PNG lehet, amin az `impostor` GIF-je ma elhasal; leírást a `.lpl` nem tud. A motor egyetlen valódi új képessége az út-átírás (`stage_root` / `target_prefix`), ami az Androidot és a 2. pont asztali store-ját egyszerre szolgálja. + ### 5. BBS store A `bbs/bbs-server`-be, a saját `rubbs`-unkra épülve. Bármelyik asset-fajtát tudja adni letöltésként, és ez az egyetlen a listán, amit **rajtunk kívül senki nem tudna lemásolni** — márkaérték, nem csak elérés. @@ -117,12 +124,15 @@ Mind ugyanaz a forma: **olvasd a WarpEngine katalógust → írd a gazdaplatform Egy dolog viszont **nem** tartozik az adapterbe, hanem a közös részbe: az **architektúra-illesztés**. A gazdaplatform megmondja, milyen gépen fut (`uname -m`, Windows/macOS esetén a megfelelő megfelelője), és a motornak ehhez kell asset-fajtát választania. Ez a 0., 1. és 2. pontnak egyaránt kell, tehát egyszer, jó helyen érdemes megírni. +**A közös rész 2026-08-17-én kiemelve:** `engines/warpstore`, egyetlen fájl, amit mindkét motor a telepítéskor letölt. Benne a katalógus és gyorsítótára, a kiadásválasztás, a `state.json`, a borító-letöltés, az atomikus írás és a törlés-őr — plusz az architektúra-illesztés, ami a második adapter miatt `resolve_for_host`-tá bővült: nem csak az `arch`, hanem az `os` is kulcs lehet, mert egy libretro mag fájlneve OS-enként más. Egy új store innentől valóban egy adapter plusz egy config. + ## A javasolt sorrend 1. ~~**`linux_arm64` a build-mátrixba**~~ — **kész** (2026-08-16). Az `ebitengine` és a `bevy` gyártja; a `godot`-hoz a játék repójában kell ARM export preset, a LÖVE-hoz nincs upstream ARM AppImage, a TIC-80 `export` parancsának meg nincs ARM célja. A `bevydemo` 1.0.0 már `linux_arm64`-et is ad. 2. ~~**Architektúra-illesztés a motorba**~~ — **kész** (2026-08-17). A `kind` és az `ext` lehet architektúra-leképezés `*` tartalékkal; a felismert arch látszik a `list` és a `config` kimenetében. `aarch64`-en végigpróbálva: az ARM csomagot tölti le, és a benne lévő bináris valóban AArch64. 3. ~~**`linux_*` → Batocera ports**~~ — **kész** (2026-08-17). `install: "port"`; `aarch64`-en végigpróbálva: telepítés, idempotens újraszinkron, eltávolítás a 106 MB-os payloaddal, és a névtér-védés is (idegen `.data` útra mutató bejegyzést elutasít). **Hátra van:** bekapcsolni a `ttg-batocera-store` configjában, és valódi gépen kipróbálni, hogy a natív játékok tényleg elindulnak-e. -4. **ES-családú store-ok** (1.) — a motor itt már majdnem kész. +4. ~~**RetroArch playlistek**~~ — **kész** (2026-08-17), a közös mag kiemelésével együtt. Lásd `RETROARCH_STORE.md`. **Hátra van:** a VICE `.prg`-autostart és az Android-út valódi gépen. +5. **ES-családú store-ok** (1.) — a motor itt már majdnem kész, és a `warpstore` óta az adapter tényleg csak a gazdaplatform írása. ## Amit valódi gépen kell ellenőrizni diff --git a/REPO_REFACT.md b/REPO_REFACT.md index 78c99ba..d01f515 100644 --- a/REPO_REFACT.md +++ b/REPO_REFACT.md @@ -38,7 +38,8 @@ git.teletypegames.org/ │ ├── warp_engine Rails engine: katalógus + API ← ma tools/ │ ├── rubbs Ruby gem: Telnet BBS keretrendszer ← ma tools/ │ ├── inkwell Go: Point'n'Click DSL ← ma games/ -│ └── gorpg Go: Ebitengine RPG motor ← ma games/ +│ ├── gorpg Go: Ebitengine RPG motor ← ma games/ +│ └── warpstore Python: a store-motorok közös magja ← új, 2026-08-17 │ ├── bbs/ BBS szerverek és showcase-ek. A keretrendszerük │ │ (rubbs) az engines/ alatt van. @@ -69,6 +70,8 @@ git.teletypegames.org/ │ │ A név marad, de kap definíciót és 19 helyett 5 repót. │ ├── warp-engine-batocera-store │ ├── ttg-batocera-store +│ ├── warp-engine-retroarch-store ← új, 2026-08-17 +│ ├── ttg-retroarch-store ← új, 2026-08-17 │ ├── ttg-marketplace ← ma internal/ │ ├── devarea │ └── tic80-draw-image (vendorolt, GitHub) @@ -90,6 +93,7 @@ git.teletypegames.org/ - **Gem git-források rendezve** (2026-08-16): `bbs/bbs-server`, `bbs/sermo-bbs` és `bbs/impostor-bbs` — mindhárom a kanonikus hoszton az `engines/rubbs`-ra mutat, a rögzített revíziók változatlanul. - **Builder image-ek átköltöztetve** (2026-08-16): mind a 8 konténer-csomag a `build` org alá került, a `ci_platforms` és a dokumentáció (7 toolchain README + Dockerfile, 2 wiki-oldal) átírva. Az `internal` org ezzel kiüríthető — ez volt az egyetlen, ami visszatartotta. - **Wiki `engines/` névtér** (2026-08-16): a `warp-engine`, `rubbs` és `inkwell` oldal egy közös `/engines` szekcióba került, a régi URL-ek Grav-átirányítással élnek tovább. +- **Három új repó a store-vonalon** (2026-08-17): `engines/warpstore` (a store-motorok kiemelt közös magja — az `engines/` definíciója szerint „könyvtár, amitől más repók függnek"), `tools/warp-engine-retroarch-store` és `tools/ttg-retroarch-store`. A `repos.list` és a `WIKI_CONNECTION.md` táblája követi; a `check-repos.sh` 49 repóval zölden fut. A `tools/` ezzel 5 helyett 7 repó. - **Workspace mappák igazítva** (2026-08-16): a mappa mostantól egy az egyben az org (`bbs/`, `build/`, `demos/`, `engines/`, `games/`, `infra/`, `services/`, `tools/`). Kivétel a `devarea`, ami a gyökérben marad, mert a `clone-repos.sh` a szülőjébe klónoz. ## Nyitott pontok diff --git a/RETROARCH_STORE.md b/RETROARCH_STORE.md new file mode 100644 index 0000000..9aa957f --- /dev/null +++ b/RETROARCH_STORE.md @@ -0,0 +1,590 @@ +# 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), +> [`tools/warp-engine-retroarch-store`](https://git.teletypegames.org/tools/warp-engine-retroarch-store) (motor), +> [`tools/ttg-retroarch-store`](https://git.teletypegames.org/tools/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_*/