Restores the PPC's authentic secondary-display effect: an EnergyDamageType hit
scrambles every secondary cockpit display for 0.8s while the main out-the-window
view stays clean. Was fully specced (phase-14) with the engine half already
present under the original VWE names; only the trigger and the visual were
missing (the visual STUBBED since 2007).
A -- TRIGGER (game/reconstructed/mech.cpp): in TakeDamageMessageHandler, at the
binary's @0x4a03f3 position (after the cylinder resolve, before the burst
loop, so ONCE per damage message) fire
GetGaugeRenderer()->SpecialEffect(scrambleVideo, damageType*0.2f) on
EnergyDamageType (==4). That type is authored on exactly the 14 PPC/ERPPC
records, so the branch is structurally PPC-exclusive -- no weapon-class check.
Duration DERIVED from the ordinal (4*0.2==0.8s), not a literal. BT_DMG_LOG
prints [ppc-scramble].
B -- VISUAL (SVGA16::FunkyVideo, was the 2007 stub): FunkyVideo now arms
scrambleActive; new SVGA16::ScrambleRowShift is a per-source-row horizontal
shear+roll, read by BOTH DrawDevSurface (surround/dock) and ExpandPlaneToBGRA
(glass windows, native + rotated radar), so all secondary surfaces shear
together in source space and the main 3D view (separate timing chain) is
untouched -- the modern stand-in for the VGA CRTC Horizontal-Total detune.
Tunable: BT_SCRAMBLE_SHEAR (px/line, def 4), BT_SCRAMBLE_ROLL (px/sec, def
220); BT_SCRAMBLE_TEST=1 forces it on for tuning by eye.
C -- NON-STACKING LATCH (L4GaugeRenderer::SpecialEffect): ignore the re-arm while
scrambleVideoFlag is set (matches the binary's `modified` latch) -- a second
PPC during the window no longer extends it. Was a divergence.
Verified: Release links clean; surround boots + runs with the effect forced on,
every secondary MFD + the radar shear while the out-the-window view stays clean,
no crash (screenshot). Open (for the playtesters who filed the report): live
PPC-fire confirmation + by-eye shear tuning -- k/roll are not recoverable from
the binary.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>