ttg-retroarch-storeputs the https://teletypegames.org catalog into RetroArch's library: two playlists with box art — Teletype Games - Commodore 64 and Teletype Games - TIC-80 — on desktop Linux, Windows, macOS, Android, Steam Deck or a handheld. This repository is onlyconfig.jsonand two wrapper scripts; the logic is in the shared RetroArch store engine.
Repository: https://git.teletypegames.org/stores/ttg-retroarch-store Engine: WarpEngine RetroArch Store Batocera equivalent: TTG Batocera Store
curl -fsSL https://git.teletypegames.org/stores/ttg-retroarch-store/raw/branch/master/install.sh | sh
The installer fetches the engine, puts it and this config in ~/.local/share/warp-engine-store/ttg-retroarch/, writes the ttg-retroarch-store launcher into ~/.local/bin, prints the directories it resolved from your retroarch.cfg, and runs the first sync. Restart RetroArch to see the playlists — it builds its menu at startup.
Without the two cores the playlists still work, and RetroArch asks which core to use the first time. To lose the prompt: Online Updater ▸ Core Downloader ▸ VICE x64 and TIC-80, then sync again.
S=~/.local/bin/ttg-retroarch-store
$S paths # where things go, and whether the cores are there
$S list # compatible catalog entries; * installed, ^ update available
$S sync # download everything new, refresh the playlists
$S sync blessingofra # just one title (never prunes)
$S -n sync # dry run
$S remove c64demo # uninstall
Close RetroArch before syncing: it writes its playlists back on exit, so a sync underneath a running instance can be undone. The store refuses rather than lose the work.
Keep it current from crontab:
0 * * * * ~/.local/bin/ttg-retroarch-store sync >>~/.local/share/warp-engine-store/ttg-retroarch/store.log 2>&1
curl -fsSL https://git.teletypegames.org/stores/ttg-retroarch-store/raw/branch/master/uninstall.sh | sh
It removes the six games, the two playlists and their thumbnails, then the launcher and the store home. Close RetroArch first, for the same reason as a sync. DRY_RUN=1 shows what would go; KEEP_HOME=1 keeps state.json and the log for a reinstall.
Nothing of yours goes with it: content you put in the teletypegames/ folder keeps its directory, a playlist that still holds an entry of yours is rewritten rather than deleted, and any *.lpl.ttg-backup is listed and left alone.
| Catalog platform | Playlist | Core | Extension |
|---|---|---|---|
c64 |
Teletype Games - Commodore 64 | vice_x64_libretro (VICE x64) |
.prg |
tic80 |
Teletype Games - TIC-80 | tic80_libretro (TIC-80) |
.tic |
Statuses released and archived, whole catalog, no owner filter — six titles,
233 KB in total as measured on 2026-08-17:
| Playlist | Titles |
|---|---|
| Commodore 64 | Blessing of Ra, Rabbit Scooter, C64 Demo for Arok Party 2026 |
| TIC-80 | Definitely not an Impostor, BombExpert, Mr Anderson's Adventure |
That is the cartridge half of the catalog. Our other games are native and web builds, which no libretro core runs; on a Batocera box they install as Ports through the TTG Batocera Store.
Everything lands under the teletypegames/ subfolder of RetroArch's content directory, so a prune can never reach your own content. To change any of it, edit ~/.local/share/warp-engine-store/ttg-retroarch/config.json — the full key reference is on the engine's page.
RetroArch on Android reads the same playlists, but Android cannot run Python, so the tree is rendered on a computer and copied over:
$S export /tmp/ra-ttg \
--target-prefix /storage/emulated/0/RetroArch \
--target-libretro-dir /data/data/com.retroarch.aarch64/cores \
--core-suffix _android.so
adb push /tmp/ra-ttg/. /storage/emulated/0/RetroArch/
Both cores are published for Android arm64-v8a and armeabi-v7a, so the games do run there — but this path has not been tried on a device. If the playlists do not show up, check the phone's own paths:
adb shell cat /storage/emulated/0/RetroArch/retroarch.cfg | grep _directory
~/.local/share/warp-engine-store/
├── ttg-retroarch/
│ ├── retroarch_store.py, warpstore.py, config.json
│ └── state.json, catalog.json
└── (launcher: ~/.local/bin/ttg-retroarch-store)
<content_root>/teletypegames/c64/ blessingofra-2.0.0.prg, rabbit-1.0.0.prg, …
<content_root>/teletypegames/tic80/ impostor-1.0.tic, …
<playlists_dir>/Teletype Games - Commodore 64.lpl
<playlists_dir>/Teletype Games - TIC-80.lpl
<thumbnails_dir>/Teletype Games - Commodore 64/Named_Boxarts/Blessing of Ra.png
playlists_dir, thumbnails_dir and the cores folder come from your retroarch.cfg. They are not always where you would guess, so paths prints what was resolved and where each answer came from.
.prg, or load and wait for RUN? If it waits, the fix is a core option or shipping .d64.adb push wrote.Report back what happens — the design notes are in devarea/RETROARCH_STORE.md.