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
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
- Exact TCP listen port(s) — not in the source grep; get from NETNUB.EXE
or a capture at milestone 3.