From 88caa81e04186f81e963643747a92b82e19f9802 Mon Sep 17 00:00:00 2001 From: Cyd Date: Fri, 10 Jul 2026 11:05:25 -0500 Subject: [PATCH] Correct CTCL description: acronym expansion is inference, not attested Searched the firestorm tree for an authoritative expansion of "CTCL" and found none. Replaced the guessed "cafe/Tesla control layer" wording with the attested facts (Console 2 Launcher message comments, _ECTCL_Console/ _ECTCL_Launcher roles, Tesla-centric coin-op API) and flagged the reading "Console-Tesla Control Layer" as inference. New facts from the dig: CTCL is game-agnostic (_EAT_MW4/_EAT_RP) and has its own ports 1000/1001, added to the port map. Co-Authored-By: Claude Fable 5 --- docs/PODBAY-ECOSYSTEM.md | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/docs/PODBAY-ECOSYSTEM.md b/docs/PODBAY-ECOSYSTEM.md index 5b4b3c0..3afedc2 100644 --- a/docs/PODBAY-ECOSYSTEM.md +++ b/docs/PODBAY-ECOSYSTEM.md @@ -65,11 +65,25 @@ machines on the internet. lobby UI + ≥32 drop zones per map). Two full bays in one match needs it; one bay's 16 split across two sites does not. - Replication is ~O(n²) at the session host — host placement/upstream matters. -- **CTCL (cafe/Tesla control layer):** `ctcl.dll`/`ctcls.dll` + per-role inis - (`ctcl-game.ini`, `ctcl-camera.ini`, `ctcl-mr.ini`): `[teslas]` maps pod IP → pilot - seat; `[Games]` lines carry the exe + `-ctcltype` role; aux-message and taunt tables. - The bay roster is **static config**, which is exactly what a site-ID-based addressing - scheme can template. +- **CTCL — the console↔Tesla control layer:** `ctcl.dll` (client, compiled into + game/launcher/editor from shared `ctcl.cpp`) + `ctcls.dll` (server side, + `code\ctcls\`) + per-role inis (`ctcl-game.ini`, `ctcl-camera.ini`, `ctcl-mr.ini`): + `[teslas]` maps pod IP → pilot seat; `[Games]` lines carry the exe + `-ctcltype` + role; aux-message and taunt tables. The bay roster is **static config**, which is + exactly what a site-ID-based addressing scheme can template. + - *Naming note:* the acronym is never expanded anywhere in source, comments, or + docs. What **is** attested (`ctcl.h`, `ctcl.cpp`, `ctcl_params.h`): message + directions are commented "Console 2 Launcher" / "Launcher 2 Console"; role + constants are `_ECTCL_Console` / `_ECTCL_Launcher`; the API is Tesla-centric + (`CTCL_GetTeslaCount`, `STeslaInfo`, `MAX_TESLAS 16`, `MAX_CAMERAS 4`) and + coin-op-aware (`CTCL_CoinDisplay`). So "Console↔Tesla Control Layer/Link" is our + best reading — treat it as inference, not fact. + - **Game-agnostic:** app-type constants `_EAT_MW4` and `_EAT_RP` (`ctcl_params.h`) + — the same control layer drives both Firestorm and Red Planet. One layer for + SiteLink to reason about, not two. + - **Own ports:** `PORT_Launcher 1000`, `PORT_Game 1001`, `PORT_CameraShip 1001` + (`Launcher\ctcl.cpp`) — distinct from Munga 1501 and DirectPlay (transport + details unverified; confirm in Phase 0). - **Dedicated server exists:** `mw4dedicatedui` project (`...\mw4\Code\mw4dedicatedui`) — option to host cross-site matches on a neutral box instead of one bay's console. - **Dormant internet-era code:** MSN Zone "GUN" matchmaking (`Games_GUN.cpp`, @@ -122,6 +136,7 @@ machines on the internet. | 53290 | TCP | console → pod | TeslaLauncher RPC (provision/install/launch), OFB-encrypted framed JSON | | (local bcast) | UDP | pod ↔ console | SecureConfig first-boot beacons (on-site only) | | 1501 | TCP | console → pod | Munga game control (RP; BT411 uses same convention, port per `-net`) | +| 1000 / 1001 | TCP/UDP (unverified) | console ↔ launcher/game/camera | CTCL control channel (`PORT_Launcher`/`PORT_Game`/`PORT_CameraShip` in `firestorm\...\Launcher\ctcl.cpp`) | | 47624 + 2300–2400, or fixed `DirectPlayPort` | TCP/UDP | pod ↔ session host | Firestorm DirectPlay 4 session + game traffic | | 80 | TCP | console/game → PQS box | PQS HTTP endpoints | | 3306 | TCP | PQS internal | MySQL (localhost today) |