EN /HU | Belépés

TTG Batocera Store

A ttg-batocera-store felteszi a katalógusunkat a Batocerára. A https://teletypegames.org WarpEngine-katalógusából lehúzza a játékokat a dobozra, kiírja az EmulationStation-metaadatokat és a borítóképeket, és saját menübejegyzést ad az áruháznak — Teletype Games —, ahonnan újra futtatható az új kiadásokért.

Ez a repó csak az áruházdefiníció: egy config.json és két indítószkript. A logika a közös motorban van, a warp-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 TTG RetroArch Store áruházat.

Amit kapsz

  • Saját menübejegyzésTeletype Games a fő körhintában, benne platformonként egy mappával és egy Update Teletype Games bejegyzéssel, amely egy kattintással letölt minden újdonságot.
  • Parancssor SSH-nlist, sync, remove, config, szárazon futtatással, címenkénti szinkronnal és felülbírálásokkal.
  • A könyvtáradhoz nem nyúl — a játékok a /userdata/roms/teletypegames/ 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.
  • Borítókép és metaadat — cím, leírás, szerző és kép beleolvad a gamelist.xml fájlba, így a játékok úgy néznek ki, mintha be lettek volna szkennelve.
  • Nulla függőség — csak a Python 3 szabványkönyvtára.
  • Idempotens szinkronok — a meglévő fájlokhoz nem nyúl, egy kiadásemelés kicseréli a régi assetet, a letöltések pedig az /api/download végponton mennek, így beleszámítanak a statisztikába.

Áttekintés

TXT
Teletype Games ▸ "Update Teletype Games"
        ├─ GET /api/software                        a teljes katalógus
        ├─ a doboz által futtatható platformok      c64 → c64, tic80 → tic80
        ├─ a legfrissebb nem dev kiadás             amely a megfelelő assetet hordozza
        ├─ GET /api/download?path=<asset>           .prg / .tic az áruház mappájába
        ├─ GET <software.imageUrl>                  borítókép
        ├─ gamelist.xml kiírása                     cím, leírás, szerző, kép
        └─ es_systems_ttg.cfg kiírása               a menübejegyzés

Repó: https://git.teletypegames.org/stores/ttg-batocera-store Motor: warp-engine-batocera-store RetroArch-megfelelője: TTG RetroArch Store Batocera: https://batocera.org Katalógusoldal: WarpEngine (libs/ruby/warp_engine a teletypegames repóban)


Telepítés

SSH-n a Batocera-dobozon:

SH
curl -fsSL https://git.teletypegames.org/stores/ttg-batocera-store/raw/branch/master/install.sh | sh

Vagy egy checkoutból:

SH
scp -r ttg-batocera-store root@batocera:/tmp/
ssh root@batocera /tmp/ttg-batocera-store/install.sh

A telepítő lehúzza a motort, azt és ezt a konfigurációt a /userdata/system/batocera-store/ttg/ könyvtárba teszi, kiírja a ttg-store 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:

SH
batocera-es-swissknife --restart

A telepítő újrafuttatása a frissítési út: felfrissíti a motort és a konfigurációt (a régit config.json.bak néven megtartva), a state.json fájlhoz pedig nem nyúl.

Ha 4.0 előtti telepítésről jössz, az első szinkron a szerkezetet is átalakítja: a játékok kikerülnek a c64/teletypegames/, tic80/teletypegames/ és ports/teletypegames/ mappákból a /userdata/roms/teletypegames/ alá, a régi Ports ▸ Teletype Games Store 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 gamelist.xml.ttg-backup másolatokat pedig kilistázza, de érintetlenül hagyja. A -n sync előre megmutatja az egészet; a config.json emulationstation.menu.mode: "merge" beállítása megtartja a régi elrendezést.


Használat

Az eszközön. Teletype Games ▸ „Update Teletype Games". Letölt mindent, ami új, majd újraindítja az EmulationStationt. Az ES által indított szkriptnek nincs konzolja, így a kimenet a /userdata/system/batocera-store/ttg/store.log fájlba megy.

TXT
fő körhinta:  …  ▸  Teletype Games  ▸  ┌ Commodore 64
                                       ├ TIC-80
                                       ├ Ports                    a natív buildek
                                       └ Update Teletype Games    a szinkron

A bejegyzés a saját TTG-logónkat viseli, amely az áruházrepóban van (logo.png, plusz egy vektoros logo.svg 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: TELETYPE GAMES. 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űnik — a következő frissítés visszateszi, a batocera-save-overlay pedig véglegesíti.

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 c64, tic80 és ports 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 motor oldala írja le.

SSH-n, az indítón keresztül:

SH
S=/userdata/system/batocera-store/ttg-store

$S list                 # kompatibilis katalógusbejegyzések; * telepítve, ^ van frissítés
$S sync                 # minden újdonság letöltése, a gamelistek és a menü frissítése
$S sync blessingofra    # csak egy cím (soha nem takarít)
$S -n sync              # szárazon futtatás
$S remove c64demo       # eltávolítás (a c64:c64demo is jó)
$S config               # az érvényes konfiguráció, és hogy hol van a menübejegyzés

A globális kapcsolók az alparancs elé jönnek: $S --roms-root /tmp/roms sync.

Kapcsoló Jelentés
--config <path> az áruház konfigurációs fájlja (alapérték /userdata/system/batocera-store/ttg/config.json)
--base-url <url> a katalógus alap-URL-jének felülbírálása
--roms-root <path> a ROM-gyökér felülbírálása
-n, --dry-run jelenti a műveleteket, de semmit nem változtat
-v, --verbose bőbeszédű naplózás
--version verzió kiírása

Két alparancs a gépnek szól, nem a felhasználónak: a sync-from-es az, amit a menübejegyzés hív, az apply-gamelists --wait-pid <pid> pedig az általa indított leválasztott gyerekfolyamat.


Hova kerülnek a dolgok

TXT
/userdata/system/batocera-store/
├── ttg-store                            indító
└── ttg/
    ├── store.py, warpstore.py           a motor és a közös magja
    ├── config.json                      az áruház, amely kiválasztotta
    └── state.json, catalog.json, store.log

/userdata/system/configs/emulationstation/es_systems_ttg.cfg   a menübejegyzés

/userdata/roms/teletypegames/            az áruház saját ROM-mappája
├── c64/
│   ├── blessingofra-2.0.0.prg, rabbit-1.0.0.prg, …
│   ├── images/blessingofra.png, …
│   └── gamelist.xml
├── tic80/  …
├── ports/
│   ├── rabbitroller.sh, images/rabbitroller.png
│   ├── .data/rabbitroller/              a kicsomagolt program
│   └── gamelist.xml
└── store/                               maga a menübejegyzés
    ├── update.sh                        a szinkron, ahogy a menü indítja
    └── 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 state.json nyilvántart — egy oda bemásolt saját ROM megtartja a fájlját és a gamelist-bejegyzését.


Konfiguráció

/userdata/system/batocera-store/ttg/config.json, ebből a repóból:

JSON
{
  "store": {
    "id": "ttg",
    "name": "Teletype Games",
    "base_url": "https://teletypegames.org",
    "api": { "catalog": "/api/software", "download": "/api/download" }
  },
  "paths": { "roms_root": "/userdata/roms", "subfolder": "teletypegames" },
  "emulationstation": { "menu": { "mode": "system", "theme": "ports", "updater": true }, "restart": true },
  "catalog": { "statuses": ["released", "archived"], "owner_id": null, "only": [], "exclude": [] },
  "platforms": {
    "c64": { "system": "c64", "kind": "cartridge", "ext": ".prg", "enabled": true },
    "tic80": { "system": "tic80", "kind": "cartridge", "ext": ".tic", "enabled": true }
  },
  "behavior": { "prune": true, "timeout": 30, "insecure": false }
}

A teljes kulcsreferencia a motor oldalán van. A dobozon végzett szerkesztések a következő telepítésig maradnak meg, amely a régi fájlt config.json.bak néven megtartja. Ami tartós, az a repóba való.

Platform-leképezés

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 es_systems.cfg fájljában, tehát ebbe az image-be beleépült az emulátor:

Katalógusplatform Asset típusa Batocera-rendszer Kiterjesztés
c64 cartridge c64 (VICE) .prg
tic80 cartridge tic80 .tic

Az ebitengine, bevy, godot és love natív Linux-buildet szállít, és úgy települ, ahogy a Batocera Ports rendszere csinálja — egy .sh indító a kicsomagolt program mellett, a Teletype Games ▸ Ports alatt. A phaser csak webes buildet szállít, így nincs leképezve. Egy leképezés hozzáadása konfigurációs szerkesztés:

JSON
"platforms": { "godot": { "system": "godot", "kind": "linux_x64", "ext": ".zip", "enabled": true } }

Egy platformot kihagy, ha a doboznak nincs meg a rendszere; a list ezt jelenti: skipped <name>: this box has no '<system>' system.


Eltávolítás

SH
curl -fsSL https://git.teletypegames.org/stores/ttg-batocera-store/raw/branch/master/uninstall.sh | sh

Eltávolítja a játékokat (a kicsomagolt port-tartalmat is), a mi gamelistjeinket, a menübejegyzést, az indítót és az áruház könyvtárát, majd újraindítja az EmulationStationt. A DRY_RUN=1 megmutatja, mi tűnne el; a KEEP_HOME=1 megtartja a state.json 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 gamelist.xml.ttg-backup másolatokat pedig kilistázza, de érintetlenül hagyja.


Hibakeresés

Tünet Mit ellenőrizz
Frissítés után nem jelenik meg semmi /userdata/system/batocera-store/ttg/store.log, majd batocera-es-swissknife --restart
skipped <name>: this box has no '<system>' system az az emulátor nincs benne ebben a Batocera-image-ben
Hiányzik a Teletype Games bejegyzés a szinkron írja a /userdata/system/configs/emulationstation/es_systems_ttg.cfg fájlt; nézd meg a naplót, majd indítsd újra az ES-t
TLS-hibák egy tesztpéldány felé állítsd a behavior.insecure értéket true-ra a config.json fájlban
Egy címet soha ne telepítsen vedd fel a katalógusnevét a config.json catalog.exclude listájába
A gamelist hibásnak tűnik a miénk a /userdata/roms/teletypegames/<system>/gamelist.xml; a 4.0 előtti eredeti a <system>/gamelist.xml.ttg-backup
A játékok eltűntek egy szinkron után egy hiányzó ROM-felcsatolás szándékosan megszakítja a szinkront; ellenőrizd, hogy a /userdata/roms fel van-e csatolva