# 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). ```powershell # 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 ```powershell # 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) ```powershell # 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) ```powershell # 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 ```powershell # 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 -p` accepts 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 with `Get-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.