NEUT
4× BOOSTCHUTEEJECT
@@ -447,25 +447,61 @@ td.fn {diff --git a/docs/CONTROL-PRESETS.md b/docs/CONTROL-PRESETS.md
index b926c18..1895a57 100644
--- a/docs/CONTROL-PRESETS.md
+++ b/docs/CONTROL-PRESETS.md
@@ -214,7 +214,7 @@ resource by name: `"L4"` for the pod RIO, `"Thrustmaster"` for the stick
appear six times with six different targets.
**Every VTV in `assets/RP411/RPL4.RES` ships a full six-preset table, for
-both the RIO and the Thrustmaster** — 34 of them as of the resource file
+both the RIO and the Thrustmaster** — 38 of them as of the resource file
promoted from the airlock archive (see §8). Decoded, the *lepton* (two
boosters, one chute, unarmed) reads:
@@ -369,7 +369,32 @@ simply been renamed out of reach. `disk` remains the one genuine orphan: a
panel layout with no vehicle behind it in any resource file, and no entry in
the console's own config either.
-Four of the eight community variants have a `ControlsMappings List` but no
-mapping streams of their own; they reference another vehicle's by resource
-id, so they carry no preset table of their own and are absent from the
-roster page.
+### Reading the file by id rather than by proximity
+
+Every vehicle in the file has its own mapping streams — 38 of them, all on
+the roster page. An earlier pass claimed four of the community variants
+shared another vehicle's streams; that was wrong, and worth recording
+because of *why*.
+
+Streams are stored as resources named plainly `L4` and `Thrustmaster`, so
+nothing in the stream itself says which vehicle it belongs to. The first
+decoder guessed: it took the nearest preceding vehicle name in the file.
+That works while vehicles are laid out one after another, and quietly fails
+when they are not — it lost `vole` outright and mis-attributed four of the
+`blkr` variants, whose streams simply do not sit where the guess expected.
+
+The file answers the question exactly, if asked properly. A vehicle's
+`ControlsMappings List of 2 elements` holds the **resource ids** of its two
+streams. Resolving an id needs the id table, and ids are not quite
+positional — this file leaves 53 and 56 unassigned, and the listing marks
+them `Not Used`, so a plain walk of the directory drifts by two from there
+on. Aligning the walk against `RPL4TOOL -l`, skipping the unassigned ids,
+gives an exact id→resource map: 1077 ids with **zero** size mismatches.
+
+Subsystem names come the same way, from each vehicle's own
+`Stream of N Subsystems`, checked against the count in its header rather
+than pattern-matched out of the bytes.
+
+The lesson is the ordinary one: the format had an explicit answer, and the
+first decoder inferred one from layout instead. Everything the guess got
+right, it got right by luck of ordering.
diff --git a/docs/vtv-presets.html b/docs/vtv-presets.html
index 8af7608..8510bf0 100644
--- a/docs/vtv-presets.html
+++ b/docs/vtv-presets.html
@@ -244,7 +244,7 @@ td.fn {
- 34 / 34 VTV
+ 38 / 38 VTV
@@ -384,7 +384,7 @@ td.fn {
4× BOOSTCHUTEEJECT 2× BOOSTCHUTEUNARMED 3× BOOSTCHUTEUNARMED 2× BOOSTCHUTEUNARMED 2× BOOSTUNARMED 3× BOOSTCHUTEUNARMED 4× BOOSTCHUTEUNARMED 3× BOOSTCHUTEUNARMED 4× BOOSTCHUTEUNARMED 3× BOOSTCHUTEUNARMED 2× BOOSTCHUTEUNARMED 2× BOOSTCHUTEUNARMED 1× BOOSTCHUTEUNARMED 2× BOOSTCHUTEUNARMED 2× BOOSTCHUTEUNARMED 2× BOOSTUNARMED 2× BOOSTCHUTEUNARMED 3× BOOSTCHUTEUNARMEDNEUT
BARGE
Preset TRIGGER THUMB HIGH THUMB LOW PINKY 1 BOOST 1 BOOST 2 CHUTE — 2 BOOST 1 BOOST 2 CHUTE LIFT CUT 3 BOOST 1 BOOST 2 LIFT CUT — 4 BOOST 1 BOOST 2 LIFT CUT CHUTE 5 BOOST 1 BOOST 2 HORN LIFT CUT 6 LIFT CUT BOOST 1 BOOST 2 CHUTE BLKRBROC
+ Preset TRIGGER THUMB HIGH THUMB LOW PINKY 1 BOOST 1 BOOST 2 CHUTE — 2 BOOST 1 BOOST 2 CHUTE LIFT CUT 3 BOOST 1 BOOST 2 LIFT CUT — 4 BOOST 1 BOOST 3 LIFT CUT CHUTE 5 BOOST 1 BOOST 2 HORN LIFT CUT 6 LIFT CUT BOOST 1 BOOST 2 CHUTE BLKRLEPTON
Preset TRIGGER THUMB HIGH THUMB LOW PINKY 1 BOOST 1 BOOST 2 CHUTE — 2 BOOST 1 BOOST 2 CHUTE LIFT CUT 3 BOOST 1 BOOST 2 LIFT CUT — 4 BOOST 1 BOOST 2 LIFT CUT CHUTE 5 BOOST 1 BOOST 2 HORN LIFT CUT 6 LIFT CUT BOOST 1 BOOST 2 CHUTE BLKRQUARK
+ Preset TRIGGER THUMB HIGH THUMB LOW PINKY 1 BOOST 1 BOOST 2 — — 2 BOOST 1 BOOST 2 — LIFT CUT 3 BOOST 1 BOOST 2 LIFT CUT — 4 BOOST 1 BOOST 2 LIFT CUT — 5 BOOST 1 BOOST 2 HORN LIFT CUT 6 LIFT CUT BOOST 1 BOOST 2 — BLKRSPK
+ Preset TRIGGER THUMB HIGH THUMB LOW PINKY 1 BOOST 1 BOOST 2 CHUTE — 2 BOOST 1 BOOST 2 CHUTE LIFT CUT 3 BOOST 1 BOOST 2 LIFT CUT — 4 BOOST 1 BOOST 3 LIFT CUT CHUTE 5 BOOST 1 BOOST 2 HORN LIFT CUT 6 LIFT CUT BOOST 1 BOOST 2 CHUTE BLKRTRAN
+ Preset TRIGGER THUMB HIGH THUMB LOW PINKY 1 BOOST 2 — CHUTE — 2 BOOST 2 — CHUTE LIFT CUT 3 BOOST 2 — LIFT CUT — 4 BOOST 2 BOOST 4 LIFT CUT CHUTE 5 BOOST 2 — HORN LIFT CUT 6 LIFT CUT BOOST 1 BOOST 2 CHUTE BLKSPK
BLKTRN
BROCCOLI
BUG
BULL
BURRO
LEPTON
MULE
QUARK
SPECK
TARNTULA
No VTV matches that.
-34 VTVs carry a preset table; 21 are armed. Decoded from the pod +
38 VTVs carry a preset table; 21 are armed. Decoded from the pod
RIO ControlMappings stream in assets/RP411/RPL4.RES —
subsystem names from each vehicle's own subsystem list, functions from
ModePreset1..6 mask bits. Boosters, chute and weapons are the vehicle's