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 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-10 11:05:25 -05:00
co-authored by Claude Fable 5
parent 7ebcb0f0ab
commit 88caa81e04
+20 -5
View File
@@ -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 + 23002400, 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) |