Cockpit camera complete + namedpipe transport + 832x512 native res

Render bridge (live_bridge.py, vrview_gl.py):
- Hat glances render (left/right frame the canopy, hat-down = clean rear).
  Root bug was a stale _ckpt['fix'] key -> KeyError every glance frame ->
  render aborted (screen froze on hold, snapped back on release). The glance
  itself is the authentic eye-DCS action-0x1f reflush fp_cam already applies.
- Torso twist turret-true (root-axis yaw, zero parallax); lasers follow torso.
- Rear glance drops the canopy shell for a clean view (original-hardware
  behavior); mission-fade shroud 9fd hidden.
- Wireframe debug mode (VRVIEW_WIREFRAME / 'w' key), scene-pass scoped.
- Renderer output = 832x512, the dPL3 board's native framebuffer res.

DOSBox-X fork: namedpipe serial backend (serialnamedpipe.cpp/.h) for
vRIO/vPLASMA, replacing com0com; overlapped non-blocking I/O; typed frames
(0x00 data / 0x01 DTR+RTS). Tracked copies + apply steps in vpx-device.

Docs: COCKPIT-CAGE-NOTES (full glance/twist/rear forensics), XP-PORT-PLAN
(back-burnered), RIO-NOTES (namedpipe + keypad), pipe/egg conf variants.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-14 10:08:15 -05:00
co-authored by Claude Opus 4.8
parent 873882b4be
commit aadda7f9a5
16 changed files with 1801 additions and 16 deletions
+9
View File
@@ -218,6 +218,12 @@ void main() {
# VRVIEW_HUDSCALE once the right size is found vs period footage.
HUDSCALE = [float(os.environ.get('VRVIEW_HUDSCALE', '1.0'))]
# Scene-pass wireframe (debug): VRVIEW_WIREFRAME=1 or the bridge's 'w' key.
# Scoped to the 3D instance/particle passes only -- global GL wireframe would
# also line-ify the fullscreen present blit and blank the window. (The period
# equivalent, dpl wireframe / ALT-W, is dead code in shipped BTL4OPT.)
WIREFRAME = [os.environ.get('VRVIEW_WIREFRAME', '0') != '0']
HUD_FS = """
#version 330
uniform vec3 u_col;
@@ -499,6 +505,8 @@ class GLRenderer(vrview.Renderer):
FIX = np.eye(4)
FIX[:3, :3] = [[0, 0, -1], [0, 1, 0], [1, 0, 0]]
ctx.wireframe = bool(WIREFRAME[0]) # scene pass only (see WIREFRAME)
for inst in c.instances:
if not vrview.inst_visible(board.nodes, inst):
continue
@@ -536,6 +544,7 @@ class GLRenderer(vrview.Renderer):
self._draw_particles(board, V, vp, self.skip / 60.0)
self._draw_psfx(board, V)
ctx.wireframe = False # HUD + present stay solid
self._draw_hud2d_gl(board, vp)
# present: FBO -> window with the DAC gamma