NET-NOTES: post-mission egress hold decoded (RIO lamps + StopMission exit codes)

Wire + source answer to "what happens after the mission ends": the game
fades to the black hold, commands the RIO egress lamps (T 84 LampRequest
caught on the serial tap), and holds while its StateResponse to the
console's 1/s StateQuery flips to state 2. The hold ends only when the
console sends Application__StopMissionMessage with an ExitCodeID -- a
full remote-operations menu (run game/test patterns/ResetRIO/Norton/
SoftwareReset/camera/mission review) that the game hands to netnub as
its exit code for the pod loop to dispatch. The egress-hold length is
entirely the console's decision. Also documented the seat-trim-inside-
hull z-fighting lookalike (not a render bug).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-09 11:02:18 -05:00
co-authored by Claude Fable 5
parent a8eb10dc33
commit cfd368381b
+39
View File
@@ -551,6 +551,45 @@ Modern console + net_loop.conf pod = a fully autonomous mission loop;
the only operator action is queueing the next mission. (Console 4.10 the only operator action is queueing the next mission. (Console 4.10
by contrast needs an app relaunch per mission.) by contrast needs an app relaunch per mission.)
## Post-mission egress hold — decoded live + from source (2026-07-09 late)
The period flow after a mission timer expires (user memory: "lights come
on so the customer can leave the cockpit, then the pod closes out"),
confirmed on the wire and in CODE/:
1. Game fades the view to the black hold (fog sweep to 0.01/0.05 rgb 0)
and sends the wrap-up to the console (ConsolePlayerMechScoreUpdate /
team scores / RankAndScore -- BTCNSL.CPP message set).
2. **Game commands the RIO egress lamps**: `T 84` = LampRequest on the
serial tap right at mission end. RIO SetLamp(lamp, state), states =
solid/flashSlow/flashMed/flashFast + two brightness channels
(L4RIO.HPP RIOCommand/LampState enums).
3. Game HOLDS (RIO polling continues, view stays black). Its 1/s
StateQuery->StateResponse exchange with the console flips a state
field to 2 (= mission-over/hold; it reads 0 in the ready phase).
Console polls per Stationary.ini loadQueryInterval=1.
4. **The console ends the hold: Application__StopMissionMessage carrying
an ExitCodeID** (APPMSG.HPP: console msg set = StateQuery/CheckLoad/
RunMission/StopMission/KeyCommand/Suspend/Resume/LoadMission/Abort).
ExitCodeID is a remote-ops menu: Abort, RunRedPlanet/BattleTech (+
SinglePlayer variants), test patterns, TestPlasmaDisplay, ResetRIO,
RunAudioTest, RunNortonDiskDoctor, CheckDiskUsage, Refresh*,
ChangeScreenMode, SoftwareReset, ClearCrashlog, KillSpoolFile,
RunCamera/MissionReview -- the game exits through netnub with that
code and the pod's GO.BAT-era loop dispatches it. Handler impl is
compiled-only (StopMissionMessageHandler declared in BTL4APP.HPP;
body not in the archive).
Observed: Console 4.10 closed the hold within seconds; the .NET
console left the pod holding for minutes until it sent its close.
The hold length is entirely the console's call = the customer-egress
window.
Also caught live: sliding the bridge seat trim far back (forward -10)
puts the eye inside the mech's hull meshes -- z-fighting reads as a
"smeared" render and the canopy cage disappears (you are behind it).
Not a render bug; trim back to the per-mech eye position (Mad Cat ~
-1.8) restores the view.
## Open questions / notes ## Open questions / notes
- Exact TCP listen port(s) — not in the source grep; get from NETNUB.EXE - Exact TCP listen port(s) — not in the source grep; get from NETNUB.EXE
or a capture at milestone 3. or a capture at milestone 3.