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 {
-
Hull LU · shared with blkrlepton, lepton, quark
+
Hull LU · shared with blkrlepton, blkrquark, lepton, quark

NEUT

4× BOOSTCHUTEEJECT

6 subsystems34 mappings

@@ -447,25 +447,61 @@ td.fn {
-
Hull MU · shared with broccoli, burro, mule
+
Hull MU · shared with blkrbroc, broccoli, burro, mule

BARGE

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

Preset assignments
PresetTRIGGERTHUMB HIGHTHUMB LOWPINKY
1BOOST 1BOOST 2CHUTE
2BOOST 1BOOST 2CHUTELIFT CUT
3BOOST 1BOOST 2LIFT CUT
4BOOST 1BOOST 2LIFT CUTCHUTE
5BOOST 1BOOST 2HORNLIFT CUT
6LIFT CUTBOOST 1BOOST 2CHUTE
+
+
+
Hull MU · shared with barge, broccoli, burro, mule
+

BLKRBROC

+

3× BOOSTCHUTEUNARMED

+

4 subsystems28 mappings

+
+
Preset assignments
PresetTRIGGERTHUMB HIGHTHUMB LOWPINKY
1BOOST 1BOOST 2CHUTE
2BOOST 1BOOST 2CHUTELIFT CUT
3BOOST 1BOOST 2LIFT CUT
4BOOST 1BOOST 3LIFT CUTCHUTE
5BOOST 1BOOST 2HORNLIFT CUT
6LIFT CUTBOOST 1BOOST 2CHUTE
+
-
Hull LU · shared with lepton, neut, quark
+
Hull LU · shared with blkrquark, lepton, neut, quark

BLKRLEPTON

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

Preset assignments
PresetTRIGGERTHUMB HIGHTHUMB LOWPINKY
1BOOST 1BOOST 2CHUTE
2BOOST 1BOOST 2CHUTELIFT CUT
3BOOST 1BOOST 2LIFT CUT
4BOOST 1BOOST 2LIFT CUTCHUTE
5BOOST 1BOOST 2HORNLIFT CUT
6LIFT CUTBOOST 1BOOST 2CHUTE
+
+
+
Hull LU · shared with blkrlepton, lepton, neut, quark
+

BLKRQUARK

+

2× BOOSTUNARMED

+

2 subsystems17 mappings

+
+
Preset assignments
PresetTRIGGERTHUMB HIGHTHUMB LOWPINKY
1BOOST 1BOOST 2
2BOOST 1BOOST 2LIFT CUT
3BOOST 1BOOST 2LIFT CUT
4BOOST 1BOOST 2LIFT CUT
5BOOST 1BOOST 2HORNLIFT CUT
6LIFT CUTBOOST 1BOOST 2
+
+
+
+
Hull SU · shared with blkspk, bug, speck
+

BLKRSPK

+

3× BOOSTCHUTEUNARMED

+

4 subsystems28 mappings

+
+
Preset assignments
PresetTRIGGERTHUMB HIGHTHUMB LOWPINKY
1BOOST 1BOOST 2CHUTE
2BOOST 1BOOST 2CHUTELIFT CUT
3BOOST 1BOOST 2LIFT CUT
4BOOST 1BOOST 3LIFT CUTCHUTE
5BOOST 1BOOST 2HORNLIFT CUT
6LIFT CUTBOOST 1BOOST 2CHUTE
+
+
+
+
Hull BU · shared with blktrn, bull, tarntula
+

BLKRTRAN

+

4× BOOSTCHUTEUNARMED

+

5 subsystems33 mappings

+
+
Preset assignments
PresetTRIGGERTHUMB HIGHTHUMB LOWPINKY
1BOOST 2CHUTE
2BOOST 2CHUTELIFT CUT
3BOOST 2LIFT CUT
4BOOST 2BOOST 4LIFT CUTCHUTE
5BOOST 2HORNLIFT CUT
6LIFT CUTBOOST 1BOOST 2CHUTE
+
-
Hull SU · shared with bug, speck
+
Hull SU · shared with blkrspk, bug, speck

BLKSPK

3× BOOSTCHUTEUNARMED

4 subsystems28 mappings

@@ -474,7 +510,7 @@ td.fn {
-
Hull BU · shared with bull, tarntula
+
Hull BU · shared with blkrtran, bull, tarntula

BLKTRN

4× BOOSTCHUTEUNARMED

5 subsystems33 mappings

@@ -483,7 +519,7 @@ td.fn {
-
Hull MU · shared with barge, burro, mule
+
Hull MU · shared with barge, blkrbroc, burro, mule

BROCCOLI

3× BOOSTCHUTEUNARMED

4 subsystems28 mappings

@@ -492,7 +528,7 @@ td.fn {
-
Hull SU · shared with blkspk, speck
+
Hull SU · shared with blkrspk, blkspk, speck

BUG

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

@@ -501,7 +537,7 @@ td.fn {
-
Hull BU · shared with blktrn, tarntula
+
Hull BU · shared with blkrtran, blktrn, tarntula

BULL

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

@@ -510,7 +546,7 @@ td.fn {
-
Hull MU · shared with barge, broccoli, mule
+
Hull MU · shared with barge, blkrbroc, broccoli, mule

BURRO

1× BOOSTCHUTEUNARMED

2 subsystems17 mappings

@@ -519,7 +555,7 @@ td.fn {
-
Hull LU · shared with blkrlepton, neut, quark
+
Hull LU · shared with blkrlepton, blkrquark, neut, quark

LEPTON

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

@@ -528,7 +564,7 @@ td.fn {
-
Hull MU · shared with barge, broccoli, burro
+
Hull MU · shared with barge, blkrbroc, broccoli, burro

MULE

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

@@ -537,7 +573,7 @@ td.fn {
-
Hull LU · shared with blkrlepton, lepton, neut
+
Hull LU · shared with blkrlepton, blkrquark, lepton, neut

QUARK

2× BOOSTUNARMED

2 subsystems17 mappings

@@ -546,7 +582,7 @@ td.fn {
-
Hull SU · shared with blkspk, bug
+
Hull SU · shared with blkrspk, blkspk, bug

SPECK

2× BOOSTCHUTEUNARMED

3 subsystems23 mappings

@@ -555,7 +591,7 @@ td.fn {
-
Hull BU · shared with blktrn, bull
+
Hull BU · shared with blkrtran, blktrn, bull

TARNTULA

3× BOOSTCHUTEUNARMED

4 subsystems28 mappings

@@ -564,7 +600,7 @@ td.fn {
-

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