Deploy: --pipe trim -- named-pipe serials to vRIO/vPLASMA for every mode

Dev-rig policy (2026-07-17): everything on the dev machine runs named pipes
to vRIO until Real-RIO testing -- no com0com. pod-launch --pipe selects the
<mode>_pipe conf (serial1=namedpipe pipe:vrio, serial2=namedpipe
pipe:vplasma); pipe variants of all three deploy templates (auto-staged/
rendered) + a dev-tree net_loop_pipe.conf beside the existing RP one.
Requires the vRIO dist >= 20260716-68e3d1f (VRioPipeService/
VPlasmaPipeService landed there). Arcade cockpits with the physical RIO
keep the plain COM-port confs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-17 21:54:23 -05:00
co-authored by Claude Fable 5
parent 38dd84f5ec
commit e18a5c8454
6 changed files with 259 additions and 4 deletions
+62
View File
@@ -0,0 +1,62 @@
# DEPLOY TEMPLATE -- rendered to net_loop_pipe.conf by deploy/configure.ps1 at install.
# PIPE TRIM: serial1/2 are NAMED PIPES to vRIO (pipe:vrio) + vPLASMA
# (pipe:vplasma) -- the dev-rig default (launch: pod-launch <mode> --pipe;
# vRIO dist >= 20260716-68e3d1f speaks the pipe). Arcade cockpits with the
# REAL RIO/plasma on COM ports use the non-_pipe confs.
# Tokens (filled by postinstall): @@ROOT@@ = package dir (C:\games\<folder>),
# @@REALNIC@@ = this pod's NIC GUID fragment, @@MACADDR@@ = stable derived MAC.
# BattleTech, GO.BAT-style netnub loop (pod stays connected + picks up missions).
[sdl]
output=opengl
priority=highest,highest
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[ne2000]
ne2000=true
nicbase=340
# IRQ 10, NOT 3: COM2 (plasma) owns IRQ 3 in-game.
nicirq=10
macaddr=@@MACADDR@@
backend=pcap
[ethernet, pcap]
realnic=@@REALNIC@@
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
rate=44100
blocksize=1024
prebuffer=60
[serial]
serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16
serial2=namedpipe pipe:vplasma
[autoexec]
mount c "@@ROOT@@\ALPHA_1"
mount d "@@ROOT@@\net-boot"
d:
echo === loading NE2000 packet-driver stack (pcap/bridge, port 340) ===
d:\lsl
d:\ne2000
d:\odipkt
c:
cd \rel410\bt
set VIDEOFORMAT=svga
set BLASTER=A220 I5 D1 H5 P330 T6
c:\sb16\diagnose /s
set BLASTER=A240 I7 D3 H6 P300 T6
c:\sb16\diagnose /s
set BLASTER=A220 I5 D1 H5 P330 T6
set TEMP=c:\
set HEAPSIZE=15000000
set L4GAUGE=640x480x16
call setenv.bat r f s p
echo === entering GO.BAT-style netnub loop (waits for console missions) ===
call d:\loop.bat
+63
View File
@@ -0,0 +1,63 @@
# DEPLOY TEMPLATE -- rendered to net_rp_pipe.conf by deploy/configure.ps1 at install.
# PIPE TRIM: serial1/2 are NAMED PIPES to vRIO (pipe:vrio) + vPLASMA
# (pipe:vplasma) -- the dev-rig default (launch: pod-launch <mode> --pipe;
# vRIO dist >= 20260716-68e3d1f speaks the pipe). Arcade cockpits with the
# REAL RIO/plasma on COM ports use the non-_pipe confs.
# Tokens (filled by postinstall): @@ROOT@@ = package dir (C:\games\<folder>),
# @@REALNIC@@ = this pod's NIC GUID fragment, @@MACADDR@@ = stable derived MAC.
# Red Planet 4.10, networked pod boot (console pushes the mission egg over TCP).
# Loops netnub (loop_rp.bat) so the pod stays connected + picks up missions;
# runs until the supervisor (pod-launch) kills DOSBox. No single-shot in deploy.
[sdl]
output=opengl
priority=highest,highest
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[ne2000]
ne2000=true
nicbase=340
nicirq=10
macaddr=@@MACADDR@@
backend=pcap
[ethernet, pcap]
realnic=@@REALNIC@@
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
rate=44100
blocksize=1024
prebuffer=60
[serial]
serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16
serial2=namedpipe pipe:vplasma
[autoexec]
mount c "@@ROOT@@\ALPHA_1"
mount d "@@ROOT@@\net-boot"
d:
echo === loading NE2000 packet-driver stack (pcap/bridge, port 340) ===
d:\lsl
d:\ne2000
d:\odipkt
c:
cd \rel410\rp
set VIDEOFORMAT=svga
set BLASTER=A220 I5 D1 H5 P330 T6
c:\sb16\diagnose /s
set BLASTER=A240 I7 D3 H6 P300 T6
c:\sb16\diagnose /s
set BLASTER=A220 I5 D1 H5 P330 T6
set TEMP=c:\
set HEAPSIZE=15000000
set L4GAUGE=640x480x16
call setenv.bat r f s p
echo === entering netnub loop (waits for console missions; supervisor kills to stop) ===
call d:\loop_rp.bat
+58
View File
@@ -0,0 +1,58 @@
# DEPLOY TEMPLATE -- rendered to vwetest_pipe.conf by deploy/configure.ps1 at install.
# PIPE TRIM: serial1/2 are NAMED PIPES to vRIO (pipe:vrio) + vPLASMA
# (pipe:vplasma) -- the dev-rig default (launch: pod-launch <mode> --pipe;
# vRIO dist >= 20260716-68e3d1f speaks the pipe). Arcade cockpits with the
# REAL RIO/plasma on COM ports use the non-_pipe confs.
# Tokens (filled by postinstall): @@ROOT@@ = package dir (C:\games\<folder>),
# @@REALNIC@@ = this pod's NIC GUID fragment, @@MACADDR@@ = stable derived MAC.
# VGL_LABS factory cockpit test suite: the stock C:\VWETEST\TEST.BAT chain
# (DIAGNOSE + AWEUTIL /S on both AWE cards, SETSVGA, VGLTEST\TSTALL.EXE --
# RIO, plasma, audio, video/Division calibration, Munga-net). Launch:
# pod-launch test. AWEUTIL's WC-timed init needs the parity-safe EMU8000
# sample-counter readback (vweawe.cpp, 2026-07-16) -- on older dosbox-x.exe
# builds it hangs at AWEUTIL. Drops to a DOS prompt when the suite exits.
[sdl]
output=opengl
priority=highest,highest
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[ne2000]
ne2000=true
nicbase=340
# IRQ 10, NOT 3: COM2 (plasma) owns IRQ 3 in the suite, same as in-game.
nicirq=10
macaddr=@@MACADDR@@
backend=pcap
[ethernet, pcap]
realnic=@@REALNIC@@
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
rate=44100
blocksize=1024
prebuffer=60
[serial]
serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16
serial2=namedpipe pipe:vplasma
[autoexec]
mount c "@@ROOT@@\ALPHA_1"
mount d "@@ROOT@@\net-boot"
d:
echo === loading NE2000 packet-driver stack (for the Munga-net tests) ===
d:\lsl
d:\ne2000
d:\odipkt
c:
cd \vwetest
echo === VGL_LABS cockpit test suite (stock TEST.BAT) ===
call test.bat
echo === test suite exited -- DOS prompt ===
+63
View File
@@ -0,0 +1,63 @@
# Networked pod boot, GO.BAT-style loop (persistent: auto-relaunches netnub
# after each mission/idle disconnect so the pod stays connected to the console
# and picks up missions as the operator queues them -- mirrors the real pod's
# GO.BAT). Same 0x340 NIC fix as net_full.conf (see that file's header).
# FULL production parity (sound + plasma) as of 2026-07-08: the SBK re-upload
# per mission is only ~30s (measured), and the instant netnub relaunch is what
# lets the console recover its TCP session between missions WITHOUT an app
# restart (netnub exits without FIN; a fast relaunch answers the console's
# early retransmissions -- sitting at a DOS pause instead wedges the console
# into multi-minute Mac TCP backoff; that is why retail looped).
[sdl]
output=opengl
priority=highest,highest
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[ne2000]
ne2000=true
nicbase=340
# IRQ 10, NOT 3: COM2 (plasma) owns IRQ 3 in-game; see net_full.conf.
nicirq=10
backend=pcap
[ethernet, pcap]
realnic=DB5521D
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
rate=44100
blocksize=1024
prebuffer=60
[serial]
serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16
serial2=namedpipe pipe:vplasma
[autoexec]
mount c "C:\VWE\TeslaRel410\ALPHA_1"
mount d "C:\VWE\TeslaRel410\emulator\net-boot"
d:
echo === loading NE2000 packet-driver stack (pcap/bridge, port 340) ===
d:\lsl
d:\ne2000
d:\odipkt
c:
cd \rel410\bt
set VIDEOFORMAT=svga
set BLASTER=A220 I5 D1 H5 P330 T6
c:\sb16\diagnose /s
set BLASTER=A240 I7 D3 H6 P300 T6
c:\sb16\diagnose /s
set BLASTER=A220 I5 D1 H5 P330 T6
set TEMP=c:\
set HEAPSIZE=15000000
set L4GAUGE=640x480x16
call setenv.bat r f s p
echo === entering GO.BAT-style netnub loop (waits for console missions) ===
call d:\loop.bat
+12 -4
View File
@@ -26,6 +26,7 @@ namespace VwePod
public bool NoBridge;
public bool NoSound;
public bool Pipe;
public bool Mipmap;
public bool NoFocus;
public bool DryRun;
@@ -76,6 +77,7 @@ namespace VwePod
case "--dosbox-xy": ParseWH(Next(a), out o.DosBoxX, out o.DosBoxY); dosboxXySet = true; break;
case "--no-bridge": o.NoBridge = true; break;
case "--no-sound": o.NoSound = true; break;
case "--pipe": o.Pipe = true; break;
case "--mipmap": o.Mipmap = true; break;
case "--no-focus": o.NoFocus = true; break;
case "--dry-run": o.DryRun = true; break;
@@ -103,17 +105,20 @@ namespace VwePod
?? throw new ArgumentException("dosbox-x.exe not found under root; pass --dosbox");
o.DosBoxDir = Path.GetDirectoryName(o.DosBox);
o.Conf = confArg ?? FirstExisting(Path.Combine(o.Root, o.Mode.ConfBase + ".conf"));
// --pipe: the <mode>_pipe conf variant (serials as named pipes to
// vRIO/vPLASMA -- the dev-rig trim; real cockpits keep COM ports).
string confBase = o.Mode.ConfBase + (o.Pipe ? "_pipe" : "");
o.Conf = confArg ?? FirstExisting(Path.Combine(o.Root, confBase + ".conf"));
if (o.Conf == null)
{
// A .tmpl sitting there means the install was extracted but never
// configured -- point at the real fix, not at --conf.
bool unrendered = File.Exists(Path.Combine(o.Root, o.Mode.ConfBase + ".conf.tmpl"));
bool unrendered = File.Exists(Path.Combine(o.Root, confBase + ".conf.tmpl"));
throw new ArgumentException(unrendered
? o.Mode.ConfBase + ".conf not rendered yet: this install hasn't been configured.\n" +
? confBase + ".conf not rendered yet: this install hasn't been configured.\n" +
"Run postinstall.bat (elevated) from the extracted zip root, or:\n" +
" powershell -File <install>\\deploy\\configure.ps1 -Root <install>"
: o.Mode.ConfBase + ".conf not found under root; pass --conf");
: confBase + ".conf not found under root; pass --conf");
}
o.RendererExe = rendererArg ?? FirstExisting(
@@ -182,6 +187,9 @@ namespace VwePod
--no-sound skip the ~4-min SoundFont upload. WARNING: no AWE32 =
no SOS ticks; bt/rp FREEZE at RIO init on the default
FAST-clock confs (only safe with a SLOW-clock conf)
--pipe use the <mode>_pipe conf: serial1/2 as named pipes to
vRIO (pipe:vrio) + vPLASMA (pipe:vplasma). Dev-rig
default trim; arcade cockpits keep real COM ports
--mipmap VRVIEW_MIPMAP=1 (RP floor shimmer fix; non-authentic)
--no-focus skip the window layout/focus pass
--dry-run resolve paths + print the launch plan, then exit");
+1
View File
@@ -70,6 +70,7 @@ see `../CAMERA-REVIEW-NOTES.md`. Default mode: `bt`.
| `--layout cockpit\|explode` | `cockpit` = borderless VDB head windows (default); `explode` = 7-window debug |
| `--no-bridge` | pod only, no GL render window |
| `--no-focus` | skip the renderer-topmost / DOSBox-focus pass |
| `--pipe` | use the `<mode>_pipe` conf: serials as named pipes to vRIO (`pipe:vrio`) + vPLASMA (`pipe:vplasma`), no com0com. **Dev-rig policy (2026-07-17): always `--pipe` on the dev machine** — vRIO dist ≥ `20260716-68e3d1f` speaks the pipe; the plain confs (real COM ports) are for cockpits with the physical RIO/plasma |
### Window placement (per-rig; normally fixed, overridable per-launch)