docs: vehicleSubSystems DONE + render-verified

Mark the engineering-screen cluster-panel system complete in the spec + CLAUDE.md
§10.  Render-verified (BT_DEV_GAUGES_DOCK): 7 authentic panels build + draw --
SENSOR CLUSTER, MYOMERS, ER MED LASER RANGE 500M x3, PPC RANGE 500M x2 -- with bar
gauges, recharge dials, and lamps; 0 crashes, combat un-regressed.  Records that
the aux-screen blocker resolved cleanly via the PoweredSubsystem bridge (the fields
were already populated; no MechSubsystem core re-base was needed) and lists the
non-blocking follow-ups.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-07 07:17:27 -05:00
co-authored by Claude Opus 4.8
parent 6fceb58439
commit f4ad0f4340
3 changed files with 64 additions and 43 deletions
+2 -15
View File
@@ -11,27 +11,14 @@ import java.io.*;
public class DecompVSS extends GhidraScript {
public void run() throws Exception {
String outPath = "C:\\Users\\epilectrik\\AppData\\Local\\Temp\\claude\\C--git-bt411\\09bf24bb-f92d-423a-b815-1eb662736f58\\scratchpad\\vss_sub.txt";
String outPath = "C:\\Users\\epilectrik\\AppData\\Local\\Temp\\claude\\C--git-bt411\\09bf24bb-f92d-423a-b815-1eb662736f58\\scratchpad\\vss_kids.txt";
PrintWriter out = new PrintWriter(new FileWriter(outPath));
FunctionManager fm = currentProgram.getFunctionManager();
Memory mem = currentProgram.getMemory();
DecompInterface dec = new DecompInterface();
dec.openProgram(currentProgram);
long[] targets = {
// btl4gau2 sub-gauge ctors that must be reconstructed
0x4c70a4L, 0x4c7134L, 0x4c3134L, // CoolingLoop/AnimatedSubsystemLamp + dtor + connection
0x4c7160L, 0x4c71f0L, 0x4c31ecL, // PowerSource/AnimatedSourceLamp + dtor + connection
0x4c721cL, 0x4c72acL, 0x4c733cL, // ScalarBarGauge/GeneratorVoltage + ctor2 + dtor
0x4c6d80L, 0x4c6e54L, 0x4c6ee0L, // ConfigMapGauge + dtor + SetColor
0x4c6f34L, // ConfigMapGauge Execute (guess)
// SubsystemCluster helpers
0x4c89c4L, 0x4c8820L, 0x4c8990L, 0x4c8a28L, 0x4c2ec4L,
// Weapon/Ballistic extra vtable slots
0x4c92e4L, 0x4c9b24L, 0x4c9b50L, 0x4c8990L,
// connections
0x4749deL, 0x474855L, 0x4c3288L,
};
long[] targets = { 0x4c4170L, 0x4c5470L, 0x4c5b7cL, 0x4c5148L };
for (long t : targets) {
Address a = toAddr(t);
Function f = fm.getFunctionContaining(a);