TITLE=TTG Batocera Store ROUTE=/stores/ttg-batocera-store LOCALE=hu MODIFIED=1792413440 URL=https://wiki.teletypegames.org/hu/stores/ttg-batocera-store L=1 https://batocera.org L=2 https://teletypegames.org L=3 #22 L=4 #45 L=5 #44 L=6 https://git.teletypegames.org/stores/ttg-batocera-store L=7 #24 L=8 #57 L=9 #63 L=10 #64 q│ A cttg-batocera-storeq felteszi a katalógusunkat a 1Batocerára. A q│ 2https://teletypegames.org 3WarpEngine-katalógusából lehúzza a játékokat a q│ dobozra, kiírja az EmulationStation-metaadatokat és a borítóképeket, és q│ bsaját menübejegyzéstq ad az áruháznak — iTeletype Gamesq —, ahonnan újra q│ futtatható az új kiadásokért. Ez a repó csak az áruházdefiníció: egy cconfig.json0 és két indítószkript. A logika a közös motorban van, a 4warp-engine-batocera-store repóban — ez annak a Teletype Games-konfigurációja. Ha nem Batocera-dobozon, hanem RetroArchon szeretnéd — asztali gépen, Androidon, Steam Decken, kézikonzolon —, használd a 5TTG RetroArch Store áruházat. 1Amit kapsz 1══════════ • bSaját menübejegyzés0 — iTeletype Games0 a fő körhintában, benne platformonként egy mappával és egy iUpdate Teletype Games0 bejegyzéssel, amely egy kattintással letölt minden újdonságot. • bParancssor SSH-n0 — clist0, csync0, cremove0, cconfig0, szárazon futtatással, címenkénti szinkronnal és felülbírálásokkal. • bA könyvtáradhoz nem nyúl0 — a játékok a c/userdata/roms/teletypegames/0 alatt élnek, nem a doboz saját rendszereiben, így a szinkron vagy a takarítás semmihez nem érhet hozzá, ami a tiéd. A mi játékainkon a kedvencek és a játékszámlálók túlélik az újraírást. • bBorítókép és metaadat0 — cím, leírás, szerző és kép beleolvad a cgamelist.xml fájlba, így a játékok úgy néznek ki, mintha be lettek volna szkennelve. • bNulla függőség0 — csak a Python 3 szabványkönyvtára. • bIdempotens szinkronok0 — a meglévő fájlokhoz nem nyúl, egy kiadásemelés kicseréli a régi assetet. A letöltések az c/api/download0 végponton mennek, de a teletypegames.org szándékosan kihagyja a letöltésszámból az áruház cwarpstore/*0 user agentjét, így a dobozra telepítések nem jelennek meg a statisztikában. 1Áttekintés 1══════════ p Teletype Games ▸ "Update Teletype Games" p │ p ├─ GET /api/software a teljes katalógus p ├─ a doboz által futtatható platformok c64 → c64, plus4 → cplus» p 4, tic80 → tic80 p ├─ a legfrissebb nem dev kiadás amely a megfelelő assete» p t hordozza p ├─ GET /api/download?path= .prg / .tic az áruház ma» p ppájába p ├─ GET borítókép p ├─ gamelist.xml kiírása cím, leírás, szerző, kép p └─ es_systems_ttg.cfg kiírása a menübejegyzés bRepó:0 6https://git.teletypegames.org/stores/ttg-batocera-store bMotor: 4warp-engine-batocera-store bRetroArch-megfelelője:0 5TTG RetroArch Store bBatocera:0 1https://batocera.org bKatalógusoldal:0 3WarpEngine (clibs/ruby/warp_engine0 a cteletypegames0 repóban) r────────────────────────────────────────────────────────────────────────────── 1Telepítés 1═════════ SSH-n a Batocera-dobozon: p curl -fsSL https://git.teletypegames.org/stores/ttg-batocera-store/raw/branc» p h/master/install.sh | sh Vagy egy checkoutból: p scp -r ttg-batocera-store root@batocera:/tmp/ p ssh root@batocera /tmp/ttg-batocera-store/install.sh A telepítő lehúzza a motort — a 4warp-engine-batocera-store és a 7warpstore azon commitját, amellyel ezt a konfigurációt kipróbáltuk; ezek az cinstall.sh0 elején vannak rögzítve, az cENGINE_REF0 és a cWARPSTORE_REF0 felülírja őket —, azt és ezt a konfigurációt a c/userdata/system/batocera-store/ttg/0 könyvtárba teszi, kiírja a cttg-store0 indítót, és lefuttatja az első szinkront — amely letölti a játékokat és kiírja a menübejegyzést. Indítsd újra az EmulationStationt, hogy lásd: p batocera-es-swissknife --restart A telepítő újrafuttatása a frissítési út: felfrissíti a motort, a konfigurációt (a régit cconfig.json.bak0 néven megtartva) és a gyorsítótárazott logót, a cstate.json0 fájlhoz pedig nem nyúl. Checkoutból futtatva a logót is a checkoutból veszi. bHa 4.0 előtti telepítésről jössz0, az első szinkron a szerkezetet is átalakítja: a játékok kikerülnek a cc64/teletypegames/0, ctic80/teletypegames/0 és cports/teletypegames/0 mappákból a c/userdata/roms/teletypegames/0 alá, a régi iPorts ▸ Teletype Games Store0 bejegyzés pedig eltűnik — a frissítő már a menübejegyzésen belül van. A költözés nem fájlmozgatás, hanem eltávolítás plusz friss letöltés, ami a mai katalógussal percek kérdése. A gamelistjeidet a mi csomópontjaink nélkül újraírja, nem törli, a cgamelist.xml.ttg-backup másolatokat pedig kilistázza, de érintetlenül hagyja. A c-n sync0 előre megmutatja az egészet; a cconfig.json0 cemulationstation.menu.mode: "merge" beállítása megtartja a régi elrendezést. r────────────────────────────────────────────────────────────────────────────── 1Használat 1═════════ bAz eszközön.0 iTeletype Games ▸ „Update Teletype Games"0. Letölt mindent, ami új, majd újraindítja az EmulationStationt. Az ES által indított szkriptnek nincs konzolja, így a kimenet a c/userdata/system/batocera-store/ttg/store.log0 fájlba megy. p fő körhinta: … ▸ Teletype Games ▸ ┌ Commodore 64 p ├ Commodore Plus/4 p ├ TIC-80 p ├ Ports a natív bu» p ildek p └ Update Teletype Games a szinkron A bejegyzés a saját TTG-logónkat viseli, amely az áruházrepóban van (clogo.png0, plusz egy vektoros clogo.svg0 azoknak a témáknak, amelyek csak SVG-t keresnek), és amelyet a motor a doboz minden témájának logómappájába telepít. Ahová nem ér el, ott a téma szövegként mutatja: iTELETYPE GAMES0. A Batocera-image-hez adott témák a csak olvasható rendszeren élnek, így a másolatuk a RAM-overlayben van, és újraindításkor eltűnne; a motor néhány sort tesz a c/boot/postshare.sh0-ba, amely az EmulationStation indulása előtt visszateszi, az eltávolítás pedig kiveszi ezeket a sorokat. Csak azok a platformok jelennek meg, amelyekre van telepített tartalom, és a játékok pontosan úgy indulnak, ahogy a doboz indítaná őket: a motor a doboz saját cc640, ccplus40, ctic800 és cports0 rendszereiről másolja át az indítóparancsot és az emulátorlistát, így amit a C64-hez beállítottál, az a mi C64-es játékainkra is érvényes. Hogy ez hogyan áll össze, azt a 4motor oldala írja le. bSSH-n0, az indítón keresztül: p S=/userdata/system/batocera-store/ttg-store p p $S list # kompatibilis katalógusbejegyzések; * telepítve, ^ » p van frissítés p $S sync # minden újdonság letöltése, a gamelistek és a menü » p frissítése p $S sync blessingofra # csak egy cím (soha nem takarít) p $S -n sync # szárazon futtatás p $S remove c64-demo # eltávolítás (a c64:c64-demo is jó) p $S config # az érvényes konfiguráció, és hogy hol van a menübe» p jegyzés A globális kapcsolók az alparancs belé0 jönnek: c$S --roms-root /tmp/roms sync0. t┌────────────────────┬───────────────────────────────────────────────────────┐ t│h Kapcsoló t│h Jelentés t│ t├────────────────────┼───────────────────────────────────────────────────────┤ t│0 c--config 0 t│0 az áruház konfigurációs fájlja (alapérték t│ t│0 t│0 c/userdata/system/batocera-store/ttg/config.json0) t│ t├────────────────────┼───────────────────────────────────────────────────────┤ t│0 c--base-url 0 t│0 a katalógus alap-URL-jének felülbírálása t│ t├────────────────────┼───────────────────────────────────────────────────────┤ t│0 c--roms-root 0 t│0 a ROM-gyökér felülbírálása t│ t├────────────────────┼───────────────────────────────────────────────────────┤ t│0 c-n0, c--dry-run0 t│0 jelenti a műveleteket, de semmit nem változtat t│ t├────────────────────┼───────────────────────────────────────────────────────┤ t│0 c-v0, c--verbose0 t│0 bőbeszédű naplózás t│ t├────────────────────┼───────────────────────────────────────────────────────┤ t│0 c--version0 t│0 verzió kiírása t│ t└────────────────────┴───────────────────────────────────────────────────────┘ Két alparancs a gépnek szól, nem a felhasználónak: a csync-from-es0 az, amit a menübejegyzés hív, az capply-gamelists --wait-pid 0 pedig az általa indított leválasztott gyerekfolyamat. r────────────────────────────────────────────────────────────────────────────── 1Hova kerülnek a dolgok 1══════════════════════ p /userdata/system/batocera-store/ p ├── ttg-store indító p └── ttg/ p ├── store.py, warpstore.py a motor és a közös magja p ├── config.json az áruház, amely kiválasztotta p └── state.json, catalog.json, store.log p p /userdata/system/configs/emulationstation/es_systems_ttg.cfg a menübejegyz» p és p //ttg.png, ttg.svg a bejegyzés » p logója p /boot/postshare.sh jelölt blokk, amely bootkor visszat» p eszi a logót p p /userdata/roms/teletypegames/ az áruház saját ROM-mappája p ├── c64/ p │ ├── blessingofra-2.2.0.prg, rabbit-1.0.0.prg, … p │ ├── images/blessingofra.png, … p │ └── gamelist.xml p ├── cplus4/ … p ├── tic80/ … p ├── ports/ p │ ├── rabbitroller.sh, images/rabbitroller.png p │ ├── .data/rabbitroller/ a kicsomagolt program p │ └── gamelist.xml p └── store/ maga a menübejegyzés p ├── update.sh a szinkron, ahogy a menü indítja p └── gamelist.xml A doboz saját rendszermappáihoz egyáltalán nem nyúl: a takarítás nem érheti el a ROM-jaidat, mert azok nincsenek ugyanabban a fában, a mi mappánkon belül pedig csak az törlődik, amit a cstate.json0 nyilvántart — egy oda bemásolt saját ROM megtartja a fájlját és a gamelist-bejegyzését. r────────────────────────────────────────────────────────────────────────────── 1Konfiguráció 1════════════ c/userdata/system/batocera-store/ttg/config.json0, ebből a repóból: p { p "store": { p "id": "ttg", p "name": "Teletype Games", p "base_url": "https://teletypegames.org", p "api": { p "catalog": "/api/software", p "download": "/api/download" p } p }, p p "paths": { p "roms_root": "/userdata/roms", p "subfolder": "teletypegames" p }, p p "emulationstation": { p "menu": { p "mode": "system", p "updater": true, p "logo": [ p "https://git.teletypegames.org/stores/ttg-batocera-store/raw/branch/» p master/logo.png", p "https://git.teletypegames.org/stores/ttg-batocera-store/raw/branch/» p master/logo.svg" p ] p }, p "folder_name": "Teletype Games", p "restart": true p }, p p "catalog": { p "statuses": ["released", "archived"], p "owner_id": null, p "only": [], p "exclude": [] p }, p p "platforms": { p "c64": { "system": "c64", "kind": "cartridge", "ext": ".prg", "enabled":» p true }, p "plus4": { "system": "cplus4", "kind": "cartridge", "ext": ".prg", "enab» p led": true }, p "tic80": { "system": "tic80", "kind": "cartridge", "ext": ".tic", "enabl» p ed": true }, p p "ebitengine": { "system": "ports", "install": "port", p "kind": { "x86_64": "linux_x64", "aarch64": "linux_arm64» p " }, p "ext": ".zip", "enabled": true }, p "bevy": { "system": "ports", "install": "port", p "kind": { "x86_64": "linux_x64", "aarch64": "linux_arm64" }, p "ext": ".zip", "enabled": true }, p "godot": { "system": "ports", "install": "port", p "kind": { "x86_64": "linux_x64" }, p "ext": ".zip", "enabled": true }, p "love": { "system": "ports", "install": "port", p "kind": { "x86_64": "linux_x64" }, p "ext": ".zip", "enabled": true } p }, p p "behavior": { p "prune": true, p "timeout": 30, p "insecure": false p } p } A teljes kulcsreferencia a 4motor oldalán van. A dobozon végzett szerkesztések a következő telepítésig maradnak meg, amely a régi fájlt cconfig.json.bak0 néven megtartja. Ami tartós, az a repóba való; a repó CI-ja (cscripts/ci-check.sh0) a rögzített motorral betölti a konfigurációt, és elbukik minden olyan kulcson, amelyet a motor nem ismer — egy elírt kulcsot különben csendben figyelmen kívül hagyna. 2Platform-leképezés 2────────────────── Egy platform akkor telepíthető, ha a kiadási assetje olyan fájl, amelyet a dobozon meglévő valamelyik rendszer közvetlenül el tud indítani — a „meglévő" itt azt jelenti, hogy szerepel a doboz saját ces_systems.cfg0 fájljában, tehát ebbe az image-be beleépült az emulátor: t┌───────────────────┬──────────────┬──────────────────────┬──────────────┐ t│h Katalógusplatform t│h Asset típusa t│h Batocera-rendszer t│h Kiterjesztés t│ t├───────────────────┼──────────────┼──────────────────────┼──────────────┤ t│0 8cc640 t│0 ccartridge0 t│0 cc640 (VICE) t│0 c.prg0 t│ t│0 9cplus40 t│0 ccartridge0 t│0 ccplus40 (VICE cxplus40) t│0 c.prg0 t│ t│0 10ctic800 t│0 ccartridge0 t│0 ctic800 t│0 c.tic0 t│ t└───────────────────┴──────────────┴──────────────────────┴──────────────┘ Az cebitengine0, cbevy0, cgodot0 és clove0 natív Linux-buildet szállít, és úgy települ, ahogy a Batocera Ports rendszere csinálja — egy c.sh0 indító a kicsomagolt program mellett, a iTeletype Games ▸ Ports0 alatt, a doboz architektúrájához választott assettel (clinux_x640 vagy clinux_arm640; a cgodot0 és a clove0 csak x86_64). A cphaser0 csak webes buildet szállít, így nincs leképezve. A natív címek többsége cdemo0 státuszú, amit a ccatalog.statuses0 kihagy; a felvétele konfigurációs szerkesztés: p "catalog": { "statuses": ["released", "archived", "demo"] } Egy platformot kihagy, ha a doboznak nincs meg a rendszere; a clist0 ezt jelenti: cskipped : this box has no '' system0. r────────────────────────────────────────────────────────────────────────────── 1Eltávolítás 1═══════════ p curl -fsSL https://git.teletypegames.org/stores/ttg-batocera-store/raw/branc» p h/master/uninstall.sh | sh Eltávolítja a játékokat (a kicsomagolt port-tartalmat is), a mi gamelistjeinket, a menübejegyzést, a témáidba tett logókat és a c/boot/postshare.sh0 blokkját, az indítót és az áruház könyvtárát, majd újraindítja az EmulationStationt. A cDRY_RUN=10 megmutatja, mi tűnne el; a cKEEP_HOME=10 megtartja a cstate.json0 fájlt és a naplót az újratelepítéshez. A tiédből semmi nem megy vele: minden, amit az áruház telepített, egyetlen saját mappában van, így az eltávolítás pontosan úgy hagyja a dobozt, ahogy volt. Olyan dobozon, amely még a régi elrendezést használja, a gamelistjeidet a mi csomópontjaink nélkül újraírja, nem törli, így a játékszámlálók és a kedvencek megmaradnak, a cgamelist.xml.ttg-backup0 másolatokat pedig kilistázza, de érintetlenül hagyja. r────────────────────────────────────────────────────────────────────────────── 1Hibakeresés 1═══════════ t┌─────────────────────────────────────┬──────────────────────────────────────┐ t│h Tünet t│h Mit ellenőrizz t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 Frissítés után nem jelenik meg t│0 c/userdata/system/batocera-store/ttg/0 t│ t│0 semmi t│0 cstore.log0, majd t│ t│0 t│0 cbatocera-es-swissknife --restart0 t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 cskipped : this box has no0 t│0 az az emulátor nincs benne ebben a t│ t│0 c'' system0 t│0 Batocera-image-ben t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 Hiányzik a iTeletype Games0 bejegyzés t│0 a szinkron írja a t│ t│0 t│0 c/userdata/system/configs/0 t│ t│0 t│0 cemulationstation/es_systems_ttg.cfg0 t│ t│0 t│0 fájlt; nézd meg a naplót, majd t│ t│0 t│0 indítsd újra az ES-t t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 TLS-hibák egy tesztpéldány felé t│0 állítsd a cbehavior.insecure0 értéket t│ t│0 t│0 ctrue0-ra a cconfig.json0 fájlban t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 Egy címet soha ne telepítsen t│0 vedd fel a katalógusnevét a t│ t│0 t│0 cconfig.json0 ccatalog.exclude0 t│ t│0 t│0 listájába t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 A gamelist hibásnak tűnik t│0 a miénk a t│ t│0 t│0 c/userdata/roms/teletypegames/0 t│ t│0 t│0 c/gamelist.xml0; a 4.0 előtti t│ t│0 t│0 eredeti a t│ t│0 t│0 c/gamelist.xml.ttg-backup0 t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 Újraindítás után a bejegyzés t│0 a cttg-store: theme logos0 blokk a t│ t│0 szövegként mutatja: iTELETYPE GAMES0 t│0 c/boot/postshare.sh0-ban; ha hiányzik, t│ t│0 t│0 a napló megmondja, miért (a c/boot0 t│ t│0 t│0 nem volt írhatóra csatolható) — t│ t│0 t│0 futtasd újra a telepítőt t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 cskipped : sold on the store's0 t│0 fizetős cím; az áruház névtelenül t│ t│0 csite0 t│0 tölt le, ezért az oldalon kell t│ t│0 t│0 megvenni t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 A játékok eltűntek egy szinkron t│0 egy hiányzó ROM-felcsatolás t│ t│0 után t│0 szándékosan megszakítja a szinkront; t│ t│0 t│0 ellenőrizd, hogy a c/userdata/roms0 t│ t│0 t│0 fel van-e csatolva t│ t└─────────────────────────────────────┴──────────────────────────────────────┘