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>
5.7 KiB
Pod launch cheat-sheet
All commands run from a normal (non-elevated) PowerShell at the repo root
(C:\VWE\TeslaRel410). render-bridge\launch_pod.ps1 prepends Npcap to PATH,
stops any previous run (pod + bridge), and starts DOSBox-X + the GL render
bridge. Do NOT launch from an elevated shell (the launcher can't stop an
elevated previous instance).
Boot to netnub-ready is ~4 min with sound (the SoundFont upload); add -NoSound
to skip it.
Real-pod DEPLOYMENT (cockpit window layout)
Formats the windows for the original VDB + octopus 4-head wiring: borderless VDB head windows on their VGA outputs + the GL bridge as the main out-the-window view, then parks DOSBox at 10,10 with focus (keeps the RIO fed).
# BT looped drops, cockpit layout
& .\emulator\render-bridge\pod_deploy.ps1
# Red Planet, cockpit layout
& .\emulator\render-bridge\pod_deploy.ps1 -Conf .\emulator\net_rp.conf
Layout (edit the RECTS at the top of pod_deploy.ps1 for this rig's outputs):
main/bridge 0,0 832x512 · radar/win0 800,0 · 3-color MFD/win4 1440,0 ·
2-color MFD/win3 2080,0 (heads 640x480). Re-assert DOSBox focus anytime:
& .\emulator\render-bridge\focus_dosbox.ps1. TODO: borderless-fullscreen main
(BRIDGE_BORDERLESS), portrait-radar rotation in cockpit mode if this pod's radar
CRT is sideways.
Main render = 832x512 (2026-07-11), the dPL3 board's NATIVE framebuffer
resolution — the original Division card rendered 832x512 and scanned it out
itself (NTSC/SVGA off the card). Three independent confirmations: the game's
view flush carries an 832x512 screen (dpl3-revive/spec/VELOCIRENDER_PROTOCOL.md),
BT's death-camera stream has floats [10..11] = 832x512
(render-bridge/DEATH-SEQUENCE-NOTES.md), and pick/fire events arrive in
832x512 board-pixel coordinates (dpl3-revive/patha/vrboard.py). We render 1:1
at that size (pod_deploy RECTS + pod-launch --bridge-size default) until
everything is wired and verified; presenting on an 800x600 output (letterbox /
scale — the old 800x600 window was a suspected source of rendering issues) is
an OPEN decision after that.
Networked (console-driven) — the main ones
# BT, LOOPED drops (auto-relaunches netnub per mission -- production parity)
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\net_loop.conf
# BT, single mission then DOS pause (no loop)
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\net_full.conf
# Red Planet, networked (single-shot; RP-native -- use the .NET console)
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\net_rp.conf -Mipmap
# Network diagnostic boot (packet stack only, no game; NCSA Telnet suite on E:)
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\net_diag.conf
Console side:
- Host .NET TeslaConsole talks to the pod directly (bridge IP 200.0.0.1 +
Npcap
SendToRxAdapters; both survive reboot). RP-native. - Mac SheepShaver Console 4.10 needs the mirror daemon (below), started AFTER the pod is up. Drove both BT and RP historically.
Mac-console mirror (run AFTER the pod is up)
# Lets SheepShaver Console 4.10 reach the pod (pod->Mac mirror + Mac->pod reinject)
Start-Process pythonw 'C:\VWE\TeslaRel410\emulator\net-tools\tap2_mirror.py'
Solo -egg (no console/network -- dev bypass, fast)
# BT arena city mission (the launcher default if -Conf is omitted)
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\render-bridge\gauge_arena_sound.conf
# BT arena2 / ravine variants
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\render-bridge\gauge_arena2_sound.conf
& .\emulator\render-bridge\launch_pod.ps1 -Conf .\emulator\render-bridge\gauge_rav_sound.conf
Flags (append to any launch)
| Flag | Effect |
|---|---|
-Mipmap |
mip-filter minified textures (fixes RP checkerboard-floor shimmer; harmless for BT; NON-authentic, default off) |
-NoSound |
skip the ~4-min SoundFont upload (fast boot, no audio) |
-NoBridge |
pod only, no GL render window |
-ShowNative |
also show the native Division window (black-cleared wire-decode diagnostic) |
-BridgePos '2020,20' |
move the GL render window (SDL honors it at creation) |
Shutdown
# stop pod + bridge + mirror from their pid files
foreach ($pf in 'pod_pid.txt','bridge_pid.txt','tap2_mirror_pid.txt') {
$p = Get-Content "$env:LOCALAPPDATA\Temp\vwe-pod\$pf" -ErrorAction SilentlyContinue
if ($p) { Stop-Process -Id $p -Force -ErrorAction SilentlyContinue }
}
Get-CimInstance Win32_Process -Filter "Name like 'py%'" |
? { $_.CommandLine -match 'live_bridge|tap2_mirror' } |
% { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }
Reminders / gotchas
- ONE CONSOLE AT A TIME.
netnub -paccepts a single console connection; whoever connects first owns the pod. To switch Mac <-> .NET: quit the unused one, wait the pod's ~60s loop for a fresh netnub, then bring up the other. Diagnose withGet-NetTCPConnection -RemoteAddress 200.0.0.113(owning process). See NET-NOTES.md. - VDB display diagnostics (per-game head work, e.g. RP) are opt-in env vars
set BEFORE launching, all default-off:
$env:VDB_SCAN='1'(VRAM content locator),$env:VDB_PALDUMP='C:\...\rppal'(dump the 3 CLUTs),$env:VDB_BASE='0x100000'(read-base override),$env:VDB_REALSTRIDE='1',$env:VDB_APPLYMASK='1'. See VDB-NOTES.md. - RP gauges need the granularity fix already committed (REL410/RP/GAUGE/L4GAUGE.INI granularityInKB=64). See VDB-NOTES.md.
- Confs carry the NIC on IRQ 10 (COM2/plasma owns IRQ 3). net_loop / net_full / net_rp / net_diag all have sound + plasma + the 0x340 NIC.
Net map: pod 200.0.0.113, .NET console/host 200.0.0.1, Mac console 200.0.0.10, netnub TCP 1501.