From 946c74bc661459c084fde2cdad19a128d68c4ec6 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Mon, 17 Aug 2026 08:37:41 +0200 Subject: [PATCH] Document the experimental Ports install MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/README.md b/README.md index f25ed4e..aab43df 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,55 @@ reach ROMs you put there yourself. To change any of it, edit `/userdata/system/batocera-store/ttg/config.json` on the box — the full key reference is in the engine's README. +## Native games as Ports — experimental + +Cartridges are all this store installs by default, which is a little under half +the catalog: the rest of our games are native builds, and an emulator cannot +boot those. The engine can install them through Batocera's **Ports** system +instead, but it is off here on purpose — **nobody has yet confirmed on real +hardware that the games start**, and each one is a 30–100 MB download rather +than a few kilobytes. + +To try it, add platform entries to +`/userdata/system/batocera-store/ttg/config.json` on the box: + +```json +"platforms": { + "ebitengine": { + "system": "ports", + "install": "port", + "kind": { "x86_64": "linux_x64", "aarch64": "linux_arm64" }, + "ext": ".zip", + "enabled": true + }, + "godot": { "system": "ports", "install": "port", + "kind": { "x86_64": "linux_x64" }, "ext": ".zip", "enabled": true }, + "love": { "system": "ports", "install": "port", + "kind": { "x86_64": "linux_x64" }, "ext": ".zip", "enabled": true }, + "bevy": { "system": "ports", "install": "port", + "kind": { "x86_64": "linux_x64", "aarch64": "linux_arm64" }, + "ext": ".zip", "enabled": true } +} +``` + +Then `/userdata/system/batocera-store/ttg-store sync`. The games appear under +*Ports ▸ Teletype Games*; `remove` takes the unpacked program with it. + +**Mind the architecture.** Only the platforms listed with an `aarch64` entry +above have ARM builds today — on a Raspberry Pi or a handheld the others are +skipped with a message naming the architecture, rather than installing something +that cannot start. `godot`, `love` and `tic80` have no ARM build at all yet: a +Godot ARM export needs a preset in the game repo, LÖVE has no upstream ARM +runtime, and TIC-80's exporter has no ARM target. + +With everything that can be enabled turned on, the coverage measured on +2026-08-17 was **13 of 15** titles on x86_64 and **9 of 15** on ARM. The two that +stay out either way are `phaserdemo` and `trickster-tiles`: they ship only a web +build. + +Report back what happens on a real box — that is the missing piece before this +becomes the default. + ## Where things land ```