The entry borrowed the Ports icon, because that was the only way for a
custom ES system to have any artwork at all: EmulationStation resolves a
system's carousel logo through the theme, and there is no user-level
override. Engine 4.2 installs a logo into the themes instead, so this store
ships one — the TTG mark from media/TTG-Logo.png, keyed out of its
background and cropped, plus a vector "TTG" for the themes that only look
for an SVG.
The theme folder now defaults to the store id rather than `ports`, so the
file is ours and no theme's own artwork is overwritten.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Engine 4.1 makes the store folder the menu entry, so the sync is started
from *Teletype Games -> "Update Teletype Games"* rather than through a
"Store" subfolder.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Engine 4.0 gives a store its own carousel entry instead of scattering the
games across the box's systems, so this config switches to it: the games
land in /userdata/roms/teletypegames/ with a folder per platform, and the
sync is started from *Teletype Games -> Store -> "Update Teletype Games"*.
That makes the Ports entry redundant, so the installer stops asking for
one — the engine takes the old *Ports -> Teletype Games Store* script away
on the first sync after the upgrade, along with the old ROM folders. The
games are downloaded again into the new place rather than moved; today's
catalog is six cartridges and one native build.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cartridges were under half the catalog; the rest are native builds no
emulator can boot. Batocera runs Linux and its Ports system takes .sh
launchers, so ebitengine, bevy, godot and love now map to ports with a
per-architecture kind: linux_x64 on x86_64, linux_arm64 where a build
exists. Where it does not, the engine skips the title naming the
architecture rather than installing a binary that cannot start.
Verified end to end against the live catalog with a local roms root:
on aarch64 rabbitroller is skipped for want of a linux_arm64 asset, on
x86_64 it unpacks under ports/.data/teletypegames/ with an executable
bit and a working launcher.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
uninstall.sh mirrors install.sh: it names the store and lets the engine do the
work. It passes STORE_ID rather than a config URL — taking a store away does not
need a download, and the id is what names its home.
Both wrappers are POSIX sh now, and neither pipes curl into a shell any more: a
failed download would feed an empty script to sh and look like success, so the
installer is fetched to a file and run from there.
The repository moved from the tools org to stores. The old raw URLs still
redirect, so a box installed yesterday keeps updating.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
store.py no longer stands alone: warpstore.py sits next to it in the store
home. And the same catalog now has a second store — ttg-retroarch-store —
for the machines that run RetroArch rather than Batocera.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The engine can now install native builds through Batocera's Ports system,
which is the other half of our catalog — cartridges are all this store
takes today. It stays off here: nobody has run one of these games on real
hardware yet, and each is a 30-100 MB download rather than a few kilobytes.
The README says how to switch it on per platform, which platforms have an
ARM build (so a Pi or a handheld skips the rest instead of installing
something that cannot start), and what the coverage measures at today.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>