Weapons fire; hat-glance + MFD fixes; windowless bridge

vpx-device/vpxlog.cpp -- WEAPONS FIRE. The game's fire gate is
targetReticle.targetEntity (mech+0x388), filled every frame by a Division-board
reticle pick (dpl_RapidSectPixel) our HLE never answered, so every shot
misfired. The device now casts the camera centre ray against the live scene
(Moller-Trumbore) and returns the full hit -- instance + DCS + geogroup +
geometry -- piggybacked on the draw_scene reply; terrain is a valid target so
you can fire and miss. Sending geogroup=0 was hanging the game (GetAppSpecific
on a null); returning the real geogroup fixed it. Pick is default-on with a
single VPX_NO_PICK escape hatch. Also swaps the upper-left/right MFD explode
windows (screen location only -- decode untouched, real cause TBD on a pod).

dpl3-revive/patha/vrview.py -- HAT-GLANCE fix at the source. One cockpit DCS
(0xa2c) flushes a rank-2 rotation (shifted body -> wrong read window) that
collapsed the camera chain to rank 2 and smeared the head glance onto the wrong
axis (left/right hat read as pitch). chain_matrix(fix_degenerate) treats a
degenerate chain DCS as identity: preserves the look exactly and keeps stick-Y
torso pitch working (an earlier bridge-level yaw/pitch swap broke stick-Y and
was reverted). User-verified live: hat all 4 dirs + stick-Y both correct.

render-bridge/launch_pod.ps1 -- launch the bridge with pyw (windowless) so no
console window parks over the cockpit displays (Start-Process ignores
-WindowStyle once stdout/stderr are redirected).

render-bridge/live_bridge.py -- surface bridge render errors, flush the status
line; reverted glance-swap note.

Also vendored HUD (dpl2d) renderer work in vrboard/vrview_gl and RENDERER-COLLAB
/ RIO notes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-07 09:53:14 -05:00
co-authored by Claude Opus 4.8
parent c18c253658
commit 2bb2ff7302
8 changed files with 909 additions and 51 deletions
+35
View File
@@ -313,3 +313,38 @@ Every board packet is retransmitted until the game ACKs `FC` (within the
TXMAXIDLE window; ~33ms with the patched EXE). Byte pacing at the 9600-baud
wire rate (~1ms/byte) matters: vRIO blasting bytes back-to-back caused NAK/
restart churn during init until the user added pacing.
## RIO button unit map (L4CTRL.HPP enum; wire unit byte == buttonGroup index)
Press = `88 <unit> <ck>`, release = `89 <unit> <ck>` (ck = sum&0x7F). The game
uses the unit byte DIRECTLY as its button index (L4CTRL.CPP RIO::ButtonPressedEvent).
| unit | button |
|-----------|--------------------------------------------------------|
| 0x00-0x07 | AuxLowerRight 8..1 (panel) |
| 0x08-0x0F | AuxLowerLeft 8..1 (panel) |
| 0x10-0x15 | Secondary 1..6 |
| 0x18-0x1D | Secondary 7..12 |
| 0x20-0x27 | AuxUpperCenter 8..1 |
| 0x28-0x2F | AuxUpperLeft 8..1 |
| 0x30-0x37 | AuxUpperRight 8..1 |
| 0x39-0x3B | IcomHeadPluggedIn / IcomSensor / IcomMikePluggedIn |
| 0x3C | Door |
| 0x3D | Panic |
| 0x3F | Throttle1 |
| 0x40 | **JoystickTrigger** (= FIRE) |
| 0x41/0x42 | JoystickHatDown / HatUp |
| 0x43/0x44 | **JoystickHatRight / HatLeft** (= TORSO TWIST R/L) |
| 0x45 | JoystickPinky (= torso/look DOWN per TORSO.CTL) |
| 0x46 | JoystickThumbLow (= TORSO CENTER) |
| 0x47 | JoystickThumbHigh (= torso/look UP) |
CORRECTION (user, operated the real pods): in the PRODUCTION cockpit torso
twist is AXIS-driven; TORSO.CTL's button mappings (TorsoLeft=HatLeft etc.,
limits per TORSO.SUB: +-80deg horiz @20deg/s, +10/-30 vert @40deg/s) were the
DEV-rig fallback for setups without the full cockpit. On the real pod the HAT
gives momentary GLANCE views (left/right/rear). Keypad keys are a SEPARATE
event type (8A KeyPressed: unit,key). Verified live 2026-07-06: vRIO hat
glances DO work in-game (units 0x41-0x44 arriving), so the 88/89 button path
is validated end-to-end -- weapons-not-firing is NOT a unit-code problem;
suspect weapon-group arming/mission state (see MECHWEAP.CTL) instead.