diff --git a/MORE_STORES.md b/MORE_STORES.md
index ec7b3c4..651f4a0 100644
--- a/MORE_STORES.md
+++ b/MORE_STORES.md
@@ -92,6 +92,13 @@ A `shortcuts.vdf`-be írva a játékaink megjelennek a Steam könyvtárban borí
### 4. RetroArch playlistek
`.lpl` JSON playlist platformonként. A cartridge-eket sokkal nagyobb közönségnek adja, mint a Batocera: Android, asztali gépek, konzolok. Kis formátum, kevés munka.
+**Kész (2026-08-17).** Terv és mérések: `RETROARCH_STORE.md`. Három repó:
+`engines/warpstore` (a kiemelt közös mag), `tools/warp-engine-retroarch-store`
+(motor), `tools/ttg-retroarch-store` (a mi store-unk). A Batocera-motor ugyanabban
+a körben átült a közös magra. **Hátra van:** valódi gépen kipróbálni, hogy a
+VICE-mag magától indítja-e a `.prg`-t, és hogy az Android `adb push` útvonalai
+állnak-e. Ott mérve: mind a két mag (`vice_x64`, `tic80`) elérhető minden célon, Androidon is; a playlist-könyvtár nem feltétlenül a RetroArch alapkönyvtárában van, tehát a `retroarch.cfg` kötelező olvasmány; a borító csak PNG lehet, amin az `impostor` GIF-je ma elhasal; leírást a `.lpl` nem tud. A motor egyetlen valódi új képessége az út-átírás (`stage_root` / `target_prefix`), ami az Androidot és a 2. pont asztali store-ját egyszerre szolgálja.
+
### 5. BBS store
A `bbs/bbs-server`-be, a saját `rubbs`-unkra épülve. Bármelyik asset-fajtát tudja adni letöltésként, és ez az egyetlen a listán, amit **rajtunk kívül senki nem tudna lemásolni** — márkaérték, nem csak elérés.
@@ -117,12 +124,15 @@ Mind ugyanaz a forma: **olvasd a WarpEngine katalógust → írd a gazdaplatform
Egy dolog viszont **nem** tartozik az adapterbe, hanem a közös részbe: az **architektúra-illesztés**. A gazdaplatform megmondja, milyen gépen fut (`uname -m`, Windows/macOS esetén a megfelelő megfelelője), és a motornak ehhez kell asset-fajtát választania. Ez a 0., 1. és 2. pontnak egyaránt kell, tehát egyszer, jó helyen érdemes megírni.
+**A közös rész 2026-08-17-én kiemelve:** `engines/warpstore`, egyetlen fájl, amit mindkét motor a telepítéskor letölt. Benne a katalógus és gyorsítótára, a kiadásválasztás, a `state.json`, a borító-letöltés, az atomikus írás és a törlés-őr — plusz az architektúra-illesztés, ami a második adapter miatt `resolve_for_host`-tá bővült: nem csak az `arch`, hanem az `os` is kulcs lehet, mert egy libretro mag fájlneve OS-enként más. Egy új store innentől valóban egy adapter plusz egy config.
+
## A javasolt sorrend
1. ~~**`linux_arm64` a build-mátrixba**~~ — **kész** (2026-08-16). Az `ebitengine` és a `bevy` gyártja; a `godot`-hoz a játék repójában kell ARM export preset, a LÖVE-hoz nincs upstream ARM AppImage, a TIC-80 `export` parancsának meg nincs ARM célja. A `bevydemo` 1.0.0 már `linux_arm64`-et is ad.
2. ~~**Architektúra-illesztés a motorba**~~ — **kész** (2026-08-17). A `kind` és az `ext` lehet architektúra-leképezés `*` tartalékkal; a felismert arch látszik a `list` és a `config` kimenetében. `aarch64`-en végigpróbálva: az ARM csomagot tölti le, és a benne lévő bináris valóban AArch64.
3. ~~**`linux_*` → Batocera ports**~~ — **kész** (2026-08-17). `install: "port"`; `aarch64`-en végigpróbálva: telepítés, idempotens újraszinkron, eltávolítás a 106 MB-os payloaddal, és a névtér-védés is (idegen `.data` útra mutató bejegyzést elutasít). **Hátra van:** bekapcsolni a `ttg-batocera-store` configjában, és valódi gépen kipróbálni, hogy a natív játékok tényleg elindulnak-e.
-4. **ES-családú store-ok** (1.) — a motor itt már majdnem kész.
+4. ~~**RetroArch playlistek**~~ — **kész** (2026-08-17), a közös mag kiemelésével együtt. Lásd `RETROARCH_STORE.md`. **Hátra van:** a VICE `.prg`-autostart és az Android-út valódi gépen.
+5. **ES-családú store-ok** (1.) — a motor itt már majdnem kész, és a `warpstore` óta az adapter tényleg csak a gazdaplatform írása.
## Amit valódi gépen kell ellenőrizni
diff --git a/REPO_REFACT.md b/REPO_REFACT.md
index 78c99ba..d01f515 100644
--- a/REPO_REFACT.md
+++ b/REPO_REFACT.md
@@ -38,7 +38,8 @@ git.teletypegames.org/
│ ├── warp_engine Rails engine: katalógus + API ← ma tools/
│ ├── rubbs Ruby gem: Telnet BBS keretrendszer ← ma tools/
│ ├── inkwell Go: Point'n'Click DSL ← ma games/
-│ └── gorpg Go: Ebitengine RPG motor ← ma games/
+│ ├── gorpg Go: Ebitengine RPG motor ← ma games/
+│ └── warpstore Python: a store-motorok közös magja ← új, 2026-08-17
│
├── bbs/ BBS szerverek és showcase-ek. A keretrendszerük
│ │ (rubbs) az engines/ alatt van.
@@ -69,6 +70,8 @@ git.teletypegames.org/
│ │ A név marad, de kap definíciót és 19 helyett 5 repót.
│ ├── warp-engine-batocera-store
│ ├── ttg-batocera-store
+│ ├── warp-engine-retroarch-store ← új, 2026-08-17
+│ ├── ttg-retroarch-store ← új, 2026-08-17
│ ├── ttg-marketplace ← ma internal/
│ ├── devarea
│ └── tic80-draw-image (vendorolt, GitHub)
@@ -90,6 +93,7 @@ git.teletypegames.org/
- **Gem git-források rendezve** (2026-08-16): `bbs/bbs-server`, `bbs/sermo-bbs` és `bbs/impostor-bbs` — mindhárom a kanonikus hoszton az `engines/rubbs`-ra mutat, a rögzített revíziók változatlanul.
- **Builder image-ek átköltöztetve** (2026-08-16): mind a 8 konténer-csomag a `build` org alá került, a `ci_platforms` és a dokumentáció (7 toolchain README + Dockerfile, 2 wiki-oldal) átírva. Az `internal` org ezzel kiüríthető — ez volt az egyetlen, ami visszatartotta.
- **Wiki `engines/` névtér** (2026-08-16): a `warp-engine`, `rubbs` és `inkwell` oldal egy közös `/engines` szekcióba került, a régi URL-ek Grav-átirányítással élnek tovább.
+- **Három új repó a store-vonalon** (2026-08-17): `engines/warpstore` (a store-motorok kiemelt közös magja — az `engines/` definíciója szerint „könyvtár, amitől más repók függnek"), `tools/warp-engine-retroarch-store` és `tools/ttg-retroarch-store`. A `repos.list` és a `WIKI_CONNECTION.md` táblája követi; a `check-repos.sh` 49 repóval zölden fut. A `tools/` ezzel 5 helyett 7 repó.
- **Workspace mappák igazítva** (2026-08-16): a mappa mostantól egy az egyben az org (`bbs/`, `build/`, `demos/`, `engines/`, `games/`, `infra/`, `services/`, `tools/`). Kivétel a `devarea`, ami a gyökérben marad, mert a `clone-repos.sh` a szülőjébe klónoz.
## Nyitott pontok
diff --git a/RETROARCH_STORE.md b/RETROARCH_STORE.md
new file mode 100644
index 0000000..9aa957f
--- /dev/null
+++ b/RETROARCH_STORE.md
@@ -0,0 +1,590 @@
+# RetroArch store — kidolgozott terv
+
+Készült 2026-08-17-én, a `MORE_STORES.md` 4. pontjának kifejtéseként. Minden
+alább szereplő formátum- és útvonal-állítás **egy valódi RetroArch-telepítésen
+mérve** (macOS, `~/Library/Application Support/RetroArch`), a mag-elérhetőség
+pedig a libretro buildbot indexéből.
+
+> **Megvalósítva ugyanaznap.** Három repó:
+> [`engines/warpstore`](https://git.teletypegames.org/engines/warpstore) (közös mag),
+> [`tools/warp-engine-retroarch-store`](https://git.teletypegames.org/tools/warp-engine-retroarch-store) (motor),
+> [`tools/ttg-retroarch-store`](https://git.teletypegames.org/tools/ttg-retroarch-store) (a mi store-unk).
+> A 11. pont javaslatával szemben a közös rész **azonnal** kiemelve — lásd az
+> „Amit a megvalósítás megváltoztatott" szakaszt a végén. Wiki:
+> [warpstore](https://wiki.teletypegames.org/engines/warpstore),
+> [motor](https://wiki.teletypegames.org/others/warp-engine-retroarch-store),
+> [store](https://wiki.teletypegames.org/others/ttg-retroarch-store).
+
+---
+
+## 1. Mit ad, és mit nem
+
+Új asset-fajtát **nem** fogyaszt: a RetroArch magok emulátorok, tehát pontosan
+azt eszik, amit a Batocera-store is — a `cartridge`-et. A nyereség nem a
+katalógus szélessége, hanem a **gazdagépek száma**: asztali Linux/Windows/macOS,
+Android, Steam Deck, konzolportok.
+
+A mai katalógusból (`released` + `archived`, 2026-08-17-i mérés) ez **6 cím,
+összesen 233 KB**:
+
+| Platform | Szoftver | Cím | Fájl | Méret | CRC32 |
+|---|---|---|---|---|---|
+| c64 | blessingofra | Blessing of Ra | `blessingofra-2.0.0.prg` | 10 561 | `4253CFC6` |
+| c64 | rabbitc64 | Rabbit Scooter | `rabbit-1.0.0.prg` | 8 072 | `31BF558B` |
+| c64 | c64demo | C64 Demo for Arok Party 2026 | `c64demo-1.0.prg` | 4 641 | `AF681FFC` |
+| tic80 | impostor | Definitely not an Impostor | `impostor-1.0.tic` | 163 497 | `8D9A45DA` |
+| tic80 | bombexpert | BombExpert | `bombexpert-0.2.tic` | 25 227 | `A67DDF4A` |
+| tic80 | mranderson | Mr Anderson's Adventure | `mranderson-0.1.tic` | 21 657 | `E98C7712` |
+
+Egy egész store negyed megabájt — ez az, ami miatt a szinkron gyakorlatilag
+ingyen van, és amiért az Android-célpont zip-ként is elküldhető.
+
+**A két mag mindenhol van.** A buildbot indexét végigkérdezve:
+
+| Cél | `vice_x64` | `tic80` | Fájlnév-alak |
+|---|---|---|---|
+| `apple/osx/arm64`, `apple/osx/x86_64` | ✔ | ✔ | `*_libretro.dylib` |
+| `linux/x86_64`, `linux/aarch64`, `linux/armhf`, `linux/armv7-neon-hf` | ✔ | ✔ | `*_libretro.so` |
+| `windows/x86_64` | ✔ | ✔ | `*_libretro.dll` |
+| `android/arm64-v8a`, `android/armeabi-v7a` | ✔ | ✔ | `*_libretro_android.so` |
+
+Tehát nincs olyan RetroArch-gazdagép, amin a katalógusunk ne futna — az Androidon
+viszont a mag fájlneve más (`_android.so`), és ez a tervben külön kezelendő.
+
+**Amire nem jó.** A `html` és a natív zipek maradnak kiszolgálatlanul: nincs
+böngésző-mag, és a LÖVE-hoz sincs valódi mag (a `lutro` nem LÖVE-kompatibilis).
+Batocerán és a többi ES-frontendes gépen szintén nem ez a helyes út — ott a
+RetroArch a háttérben fut, a könyvtár az ES-é, tehát a Batocera-store dolgozik.
+
+---
+
+## 2. A gazdaplatform, ahogy valóban kinéz
+
+Négy dolgot érdemes tudni, mert mind a négy megcáfol egy kézenfekvő feltevést.
+
+**(a) A `retroarch.cfg` az egyetlen igazságforrás, és a könyvtárak szét vannak
+szórva.** A mért gépen:
+
+```
+libretro_directory = ~/Library/Application Support/RetroArch/cores
+thumbnails_directory = ~/Library/Application Support/RetroArch/thumbnails
+playlist_directory = ~/Documents/RetroArch/playlists ← más ág!
+system_directory = ~/Documents/RetroArch/system
+```
+
+A playlist-könyvtár tehát nem a RetroArch alapkönyvtárában van. Aki a
+`/playlists` mintát égeti bele, az ezen a gépen csendben a semmibe ír.
+**A motor kötelezően a `retroarch.cfg`-ből olvassa a négy útvonalat**, és csak
+akkor tippel, ha nincs cfg. A `~` feloldandó, ahogy a Windows-os portable
+telepítések `:` prefixe is (a RetroArch saját alapkönyvtárát jelenti).
+
+**(b) A `.lpl` sémája.** Egy valódi playlist a gépről (rövidítve) — ez a
+formátum, amit írunk, nem egy dokumentációból vett közelítés:
+
+```json
+{
+ "version": "1.5",
+ "default_core_path": "",
+ "default_core_name": "",
+ "label_display_mode": 0,
+ "right_thumbnail_mode": 0,
+ "left_thumbnail_mode": 0,
+ "thumbnail_match_mode": 0,
+ "sort_mode": 0,
+ "items": [
+ {
+ "path": "/…/Altered Beast (USA).md",
+ "entry_slot": -1,
+ "label": "Altered Beast (USA)",
+ "core_path": "/…/cores/genesis_plus_gx_libretro.dylib",
+ "core_name": "Sega - MS/GG/MD/CD (Genesis Plus GX)",
+ "crc32": "00000000|crc",
+ "db_name": "Sega - Mega Drive - Genesis.lpl"
+ }
+ ]
+}
+```
+
+Két tanulság: a `path` **absztolút út a célgépen** (ez a 7. pont egész
+problémája), a `crc32` pedig `"<8 hex>|crc"` alakú — a RetroArch maga gyakran
+csak nullákat ír bele, mi a valódit tudjuk beírni (`zlib.crc32`, ingyen).
+
+**(c) A borítókép útja a playlist nevéből jön.** A mért gépen:
+
+```
+thumbnails/Sega - Mega Drive - Genesis/Named_Boxarts/*.png
+ Named_Titles/*.png
+ Named_Snaps/*.png
+```
+
+Vagyis `thumbnails//Named_*/