From 2233441812289fdb5d72860fc843d7eb48900449 Mon Sep 17 00:00:00 2001 From: Cyd Date: Thu, 9 Jul 2026 00:13:11 -0500 Subject: [PATCH] Net: NIC off IRQ 3 (plasma COM2 owns it) -- pod no longer goes deaf in-game The plasma serial2 addition put COM2 (IRQ 3) in conflict with nicirq=3: netnub phase worked, then BTL4OPT opened the plasma port and NIC RX died, so the pod never checked in to the console. NIC now on IRQ 10 in all net confs + NET.CFG INT 10 (both sides must agree). Verified live: two full console missions with plasma running. Also: launch_pod.ps1 prepends the Npcap dir to PATH itself (a bare shell gave "NO PACKET DRIVER FOUND"); net_diag.conf = packet-stack-only boot with the NCSA Telnet suite on E: for DOS-side TCP tests; net_loop.conf promoted to full production parity (sound + plasma + IRQ 10) -- the GO.BAT-style instant netnub relaunch is also what lets the console recover its zombie TCP session between missions (see NET-NOTES). NET-NOTES: full 7/08-09 forensics writeup (TAP RX counter lie, console IP .10, SBK re-upload measured, zombie-session mechanics). LAST.EGG = the operator's missions from tonight's runs. Co-Authored-By: Claude Fable 5 --- ALPHA_1/REL410/BT/LAST.EGG | 246 +++++++++++++------------- emulator/NET-NOTES.md | 46 +++++ emulator/net-boot/NET.CFG | 2 +- emulator/net_diag.conf | 71 ++++++++ emulator/net_full.conf | 5 +- emulator/net_loop.conf | 30 +++- emulator/render-bridge/launch_pod.ps1 | 4 + 7 files changed, 273 insertions(+), 131 deletions(-) create mode 100644 emulator/net_diag.conf diff --git a/ALPHA_1/REL410/BT/LAST.EGG b/ALPHA_1/REL410/BT/LAST.EGG index dc93dfc..4f48a63 100644 --- a/ALPHA_1/REL410/BT/LAST.EGG +++ b/ALPHA_1/REL410/BT/LAST.EGG @@ -1,9 +1,9 @@ [mission] adventure=BattleTech -map=arena2 +map=rav scenario=freeforall time=day -weather=clear +weather=fog temperature=27 length=600 [ordinals] @@ -18,26 +18,26 @@ bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 -bitmap=000038000003C000001FF00000000F00 -bitmap=0000F8000003C000003FF80000000F00 -bitmap=0001F8000003C00000707C0000000F00 -bitmap=0001F8000003C00000603C0000000F00 -bitmap=00007801FC0FF00000003C3DF807FF00 -bitmap=00007803FE0FF00000003C3FFC0FFF00 -bitmap=00007803C703C00000003C3E3C1F0F00 -bitmap=000078078303C0000000783C1E1E0F00 -bitmap=000078078003C0000000783C1E1E0F00 -bitmap=00007807C003C0000000F03C1E1E0F00 -bitmap=00007807F003C0000001E03C1E1E0F00 -bitmap=00007803FC03C0000003C03C1E1E0F00 -bitmap=00007801FE03C0000007803C1E1E0F00 -bitmap=000078007F03C000000F003C1E1E0F00 -bitmap=000078001F03C000001E003C1E1E0F00 -bitmap=000078000F03C000003C003C1E1E0F00 -bitmap=000078060F03C0000078003C1E1E0F00 -bitmap=000078071E03E0000078003C1E1F1F00 -bitmap=00007803FE01F000007FFC3C1E0FFF00 -bitmap=00007801FC00F000007FFC3C1E07EF00 +bitmap=00000000000000000000000000000000 +bitmap=00000700000E00000003F00000001E00 +bitmap=00001F00000E0000000FF80000001E00 +bitmap=00007F00001E0000001FFC0000001E00 +bitmap=00007F00001E0000001E3E0000001E00 +bitmap=00000F00FC7FE000003C1E3CF807DE00 +bitmap=00000F03FE7FE00000001E3DFC0FFE00 +bitmap=00000F07821E000000001E3FFE1E3E00 +bitmap=00000F07001E000000001E3E3E1E1E00 +bitmap=00000F07001E000000003C3C1E3C1E00 +bitmap=00000F07E01E00000000783C1E3C1E00 +bitmap=00000F03FC1E00000000F03C1E3C1E00 +bitmap=00000F03FE1E00000001E03C1E3C1E00 +bitmap=00000F00FF1E00000003C03C1E3C1E00 +bitmap=00000F001F1E00000007803C1E3C1E00 +bitmap=00000F000F1E0000000F003C1E3C1E00 +bitmap=00000F000F1E0000001C003C1E3E3E00 +bitmap=00000F041E0FE000003FFE3C1E1FFE00 +bitmap=00000F07FE0FE000003FFE3C1E1FFE00 +bitmap=00000F03F807C000003FFE3C1E079E00 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 @@ -54,26 +54,26 @@ bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 -bitmap=001FFF0000003C0000003C03C0780000 -bitmap=001FFF0000003C0000007C03C0780000 -bitmap=00000E0000003C000000FC03C0780000 -bitmap=00003C0000003C000001BC03C0780000 -bitmap=0000700F3E1FFC000003BC0FF07BF000 -bitmap=0001E00F7E3FFC0000073C0FF07FF800 -bitmap=0003800FFE7C3C0000063C03C07C7800 -bitmap=0007F80FFE783C00000C3C03C0783C00 -bitmap=0007FE0F80783C0000183C03C0783C00 -bitmap=00001E0F00783C0000383C03C0783C00 -bitmap=00000F0F00783C0000703C03C0783C00 -bitmap=00000F0F00783C00007FFF03C0783C00 -bitmap=00000F0F00783C00007FFF03C0783C00 -bitmap=00000F0F00783C0000003C03C0783C00 -bitmap=00000F0F00783C0000003C03C0783C00 -bitmap=00000F0F00783C0000003C03C0783C00 -bitmap=00180F0F00783C0000003C03C0783C00 -bitmap=001C1F0F007C7C0000003C03E0783C00 -bitmap=000FFE0F003FFC0000003C01F0783C00 -bitmap=0007FC0F001FBC0000003C00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=0001F800000078000000070381E00000 +bitmap=0007FE000000780000000F0381E00000 +bitmap=0007FE000000780000001F0781E00000 +bitmap=000F1F000000780000003F0781E00000 +bitmap=00000F1E781F780000007F1FF9E3C000 +bitmap=00000F1EFC3FF8000000FF1FF9EFE000 +bitmap=00000F1FFC78F8000001EF0781FFF000 +bitmap=00001E1F3C7878000003CF0781F0F000 +bitmap=0001FC1E3CF0780000078F0781E0F000 +bitmap=0001F81E00F07800000F0F0781E0F000 +bitmap=0001FE1E00F07800000FFF8781E0F000 +bitmap=00001F1E00F07800000FFF8781E0F000 +bitmap=00000F1E00F07800000FFF8781E0F000 +bitmap=00000F1E00F0780000000F0781E0F000 +bitmap=00040F1E00F0780000000F0781E0F000 +bitmap=001E1F1E00F8F80000000F0781E0F000 +bitmap=000FFE1E007FF80000000F03F9E0F000 +bitmap=0007FC1E007FF80000000F03F9E0F000 +bitmap=0003F01E001E780000000F01F1E0F000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 @@ -90,26 +90,26 @@ bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 -bitmap=001FFF03C07800000000FC03C0780000 -bitmap=001FFF03C07800000003FC03C0780000 -bitmap=001E0003C07800000007C003C0780000 -bitmap=001E0003C0780000000F0003C0780000 -bitmap=001E000FF07BF000000F000FF07BF000 -bitmap=001E000FF07FF800001E000FF07FF800 -bitmap=001E0003C07C7800001E0003C07C7800 -bitmap=001FFC03C0783C00001EFC03C0783C00 -bitmap=001FFE03C0783C00001FFE03C0783C00 -bitmap=00001F03C0783C00001F1F03C0783C00 -bitmap=00000F03C0783C00001E0F03C0783C00 -bitmap=00000F03C0783C00001E0F03C0783C00 -bitmap=00000F03C0783C00001E0F03C0783C00 -bitmap=00000F03C0783C00001E0F03C0783C00 -bitmap=00000F03C0783C00001E0F03C0783C00 -bitmap=00000F03C0783C00001E0F03C0783C00 -bitmap=00180F03C0783C00001E0F03C0783C00 -bitmap=001C1F03E0783C00001F1F03E0783C00 -bitmap=000FFE01F0783C00000FFE01F0783C00 -bitmap=0007FC00F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=000FFF0381E0000000007E0381E00000 +bitmap=000FFF0381E000000001FE0381E00000 +bitmap=000FFF0781E000000001FE0781E00000 +bitmap=000E000781E000000003C00781E00000 +bitmap=000E001FF9E3C0000007801FF9E3C000 +bitmap=000EF81FF9EFE0000007801FF9EFE000 +bitmap=000FFE0781FFF00000073E0781FFF000 +bitmap=000FFF0781F0F000000F7F0781F0F000 +bitmap=00060F0781E0F000000FFF8781E0F000 +bitmap=0000078781E0F000000F87C781E0F000 +bitmap=0000078781E0F000000F03C781E0F000 +bitmap=0000078781E0F000000F03C781E0F000 +bitmap=0000078781E0F000000F03C781E0F000 +bitmap=0004078781E0F000000F03C781E0F000 +bitmap=000E0F8781E0F000000F03C781E0F000 +bitmap=001F0F0781E0F0000007878781E0F000 +bitmap=000FFF03F9E0F0000007FF83F9E0F000 +bitmap=0007FE03F9E0F0000003FF03F9E0F000 +bitmap=0001F801F1E0F0000000FC01F1E0F000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 @@ -126,26 +126,26 @@ bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 -bitmap=001FFF03C07800000007FC03C0780000 -bitmap=001FFF03C0780000000FFE03C0780000 -bitmap=00000F03C0780000001F1F03C0780000 -bitmap=00000F03C0780000001E0F03C0780000 -bitmap=00000F0FF07BF000001E0F0FF07BF000 -bitmap=00001F0FF07FF800001E0F0FF07FF800 -bitmap=00001E03C07C7800001E0F03C07C7800 -bitmap=00003E03C0783C00001E0F03C0783C00 -bitmap=00003C03C0783C00000F1E03C0783C00 -bitmap=00003C03C0783C000007FC03C0783C00 -bitmap=00007803C0783C000007FC03C0783C00 -bitmap=00007803C0783C00000F1E03C0783C00 -bitmap=00007803C0783C00001E0F03C0783C00 -bitmap=0000F003C0783C00001E0F03C0783C00 -bitmap=0000F003C0783C00001E0F03C0783C00 -bitmap=0000F003C0783C00001E0F03C0783C00 -bitmap=0000F003C0783C00001E0F03C0783C00 -bitmap=0000F003E0783C00000F1E03E0783C00 -bitmap=0000F001F0783C00000FFE01F0783C00 -bitmap=0000F000F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=001FFF8381E000000000F80381E00000 +bitmap=001FFF8381E000000003FE0381E00000 +bitmap=001FFF8781E000000003FE0781E00000 +bitmap=0000070781E000000007CF0781E00000 +bitmap=00000E1FF9E3C00000078F1FF9E3C000 +bitmap=00001C1FF9EFE00000078F1FF9EFE000 +bitmap=0000380781FFF00000078F0781FFF000 +bitmap=0000780781F0F00000039F0781F0F000 +bitmap=0000700781E0F0000003FE0781E0F000 +bitmap=0000E00781E0F0000001FC0781E0F000 +bitmap=0000E00781E0F0000007FF0781E0F000 +bitmap=0001E00781E0F00000078F8781E0F000 +bitmap=0001C00781E0F000000F078781E0F000 +bitmap=0001C00781E0F000000F078781E0F000 +bitmap=0001C00781E0F000000F078781E0F000 +bitmap=0003C00781E0F000000F8F8781E0F000 +bitmap=0003C003F9E0F0000007FF03F9E0F000 +bitmap=0003C003F9E0F0000003FE03F9E0F000 +bitmap=0003C001F1E0F0000001F801F1E0F000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 @@ -161,19 +161,19 @@ pilot=200.0.0.113 hostType=0 advancedDamage=1 loadzones=1 -name=cyd +name=MTP bitmapindex=1 experience=veteran -badge=VGL -patch=Yellow -role=Role::Default -dropzone=one vehicle=madcat vehicleValue=0 -color=White +badge=VGL +dropzone=one +color=Grey +patch=Red +role=Role::Default [largebitmap] -bitmap=BitMap::Large::cyd -[BitMap::Large::cyd] +bitmap=BitMap::Large::MTP +[BitMap::Large::MTP] bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 @@ -181,49 +181,47 @@ bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 -bitmap=000000000000000000003C0000000000 -bitmap=000000000000000000003C0000000000 -bitmap=000000000000000000003C0000000000 -bitmap=000000000000000000003C0000000000 -bitmap=000000000000FCF00E0FBC0000000000 -bitmap=000000000003FE781C1FFC0000000000 -bitmap=000000000007FE781C3C7C0000000000 -bitmap=00000000000F82783C3C3C0000000000 -bitmap=00000000001F003C38783C0000000000 -bitmap=00000000001E003C78783C0000000000 -bitmap=00000000001E003C70783C0000000000 -bitmap=00000000001E003E70783C0000000000 -bitmap=00000000001E001EE0783C0000000000 -bitmap=00000000001E001EE0783C0000000000 -bitmap=00000000001F001FE0783C0000000000 -bitmap=00000000000F020FC07C7C0000000000 -bitmap=000000000007FE0FC03FFC0000000000 -bitmap=000000000003FE0F803FFC0000000000 -bitmap=000000000000FC07800F3C0000000000 -bitmap=00000000000000070000000000000000 -bitmap=00000000000000070000000000000000 -bitmap=000000000000000F0000000000000000 -bitmap=000000000000000E0000000000000000 +bitmap=0000000000F0003BFFC7FE0000000000 +bitmap=0000000000F0007BFFC7FF0000000000 +bitmap=0000000000F8007BFFC7FF0000000000 +bitmap=0000000000F800F83C078F8000000000 +bitmap=0000000000FC00F83C07878000000000 +bitmap=0000000000FC01F83C07878000000000 +bitmap=0000000000FE03F83C07878000000000 +bitmap=0000000000FE03F83C078F8000000000 +bitmap=0000000000FF07F83C07FF8000000000 +bitmap=0000000000EF07783C07FF0000000000 +bitmap=0000000000EF8F783C07FC0000000000 +bitmap=0000000000E78E783C07800000000000 +bitmap=0000000000E7DE783C07800000000000 +bitmap=0000000000E3DC783C07800000000000 +bitmap=0000000000E3F8783C07800000000000 +bitmap=0000000000E1F8783C07800000000000 +bitmap=0000000000E1F0783C07800000000000 +bitmap=0000000000E0F0783C07800000000000 +bitmap=0000000000E0E0783C07800000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 bitmap=00000000000000000000000000000000 x=128 y=32 width=8 [smallbitmap] -bitmap=BitMap::Small::cyd -[BitMap::Small::cyd] +bitmap=BitMap::Small::MTP +[BitMap::Small::MTP] +bitmap=00000000000000000000000000000000 +bitmap=000000000000000000000805F9F00000 +bitmap=00000C0C6198000000000C0C61980000 +bitmap=00000E1C6198000000000E1C61980000 +bitmap=00000B2C61F0000000000B2C61800000 +bitmap=000009CC61800000000009CC61800000 +bitmap=0000088C618000000000000000000000 bitmap=00000000000000000000000000000000 -bitmap=00000000000000000000000000600000 -bitmap=00000000006000000000000000600000 -bitmap=000001EC33E000000000030666600000 -bitmap=000003066660000000000303C6600000 -bitmap=00000303C66000000000030186600000 -bitmap=000001E183E000000000000300000000 -bitmap=00000003000000000000000000000000 x=64 y=16 width=4 [Role::Default] model=dfltrole -[Role::NoReturn] -model=noretun diff --git a/emulator/NET-NOTES.md b/emulator/NET-NOTES.md index 7ed6c68..e5a50e1 100644 --- a/emulator/NET-NOTES.md +++ b/emulator/NET-NOTES.md @@ -419,6 +419,52 @@ heads render** -> mission ends on the console timer. Four fixes got here: Committed: `net_full.conf`, `net_loop.conf`, `net-boot/` (drivers, NET.CFG @340, loop.bat, README), `vpx-device/ne2000.cpp`, `vpx-device/ethernet_pcap.cpp`. +## Post-reboot outage forensics + IRQ 3 conflict (2026-07-08/09) + +A host reboot took the console<->pod link down for hours; every layer got +blamed before the real bug fell out. Findings, in the order they mattered: + +- **TAP-Windows V9 "Bytes received" is ALWAYS 0** -- the driver never counts + frames its user-mode app (SheepShaver) injects. Do not diagnose from the + adapter-status dialogs: read the bridge-miniport counters (they do count) + or sniff the wire (Npcap + ctypes; see render-bridge/probes/ for the + pattern). Bridge/TAPs/SheepShaver prefs were all healthy the whole time. +- **`NO PACKET DRIVER FOUND` at netnub = wpcap.dll not on PATH** of the shell + that launched DOSBox. launch_pod.ps1 now prepends + `C:\Windows\System32\Npcap` itself so no shell can reproduce this. +- **THE REAL BUG -- IRQ 3 double-booking:** the plasma readout (serial2 = + host COM2, added 2026-07-07) sits on IRQ 3, and the NE2000 was also on + `nicirq=3`. The netnub phase works (COM2 not yet open: ARP answered, egg + flows) -- then BTL4OPT opens the plasma port (`arg4=p`) and NIC RX dies + for good. Looks exactly like a mid-boot wedge. Fix: **NIC on IRQ 10** in + net_full.conf / net_diag.conf / net_loop.conf AND net-boot/NET.CFG + (`INT 10`) -- DOSBox device and ODI driver must agree. Verified: pod + stayed ARP-responsive through two full missions with plasma live. +- **Console's live IP is 200.0.0.10** (not .1 as assumed from the gateway + entry); it ARP-scans the cockpit roster slots (.11, .112-.120) + continuously while looking for pods. +- **Zombie console session between missions:** netnub exits after each + mission without closing TCP (no FIN -- the DOS stack just vanishes). + Console 4.10 keeps waiting on the dead socket; with the pod sitting at a + DOS pause for minutes, classic Mac TCP retransmit backoff grows to + multi-minute intervals and the console looks permanently wedged (silent + on the wire). Operator fix: relaunch the Console app (app only). Real + fix: behave like retail -- GO.BAT relaunched netnub within seconds, so + the console's early retransmissions hit the fresh stack and recover. + net_loop.conf (now FULL production parity: sound + plasma + IRQ 10) is + the conf to use for multi-mission sessions; verify console self-recovery + with it next time. +- **SoundFont upload measured (smldW device counters):** the game blindly + re-uploads the full SBK on EVERY netnub->game launch -- counter goes + 3,513,581 -> exactly 7,027,162 per card, no validation read-back, so + pre-loading the cards cannot short-circuit it. BUT the re-upload itself + is only ~20-30s; the slow first boot is dominated by something else + (pacer question still open). Loading a new egg into the already-running + game does NOT re-upload. +- Manual mission-N start in the same DOSBox: `32rtm.exe -x` (saying + "resident" is fine) then `netnub -p -f btl4opt > nn.log`; TSRs and SET + env persist from the autoexec. + ## Open questions / notes - Exact TCP listen port(s) — not in the source grep; get from NETNUB.EXE or a capture at milestone 3. diff --git a/emulator/net-boot/NET.CFG b/emulator/net-boot/NET.CFG index 3c735b5..6f2c49a 100644 --- a/emulator/net-boot/NET.CFG +++ b/emulator/net-boot/NET.CFG @@ -4,6 +4,6 @@ Link Support Link Driver NE2000 PORT 340 - INT 3 + INT 10 FRAME Ethernet_II FRAME Ethernet_802.2 diff --git a/emulator/net_diag.conf b/emulator/net_diag.conf new file mode 100644 index 0000000..058b7d9 --- /dev/null +++ b/emulator/net_diag.conf @@ -0,0 +1,71 @@ +# Networked pod boot (single mission, then DOS pause). +# Console (SheepShaver) pushes the mission egg over TCP 1501; pod runs it. +# RIO on COM1 + dual AWE32 sound (host env VWE_AWE32=1 + VWE_AWE_ROM=). +# +# CRITICAL: NE2000 is at nicbase=340, NOT 300 -- the VDB video splitter board +# is hardwired at 0x300-0x31A (palettes 0x300/0x308/0x310). nicbase=300 makes +# the NIC swallow the game's VDB palette writes -> all MFD/radar heads decode +# to black AND corrupts NIC RX (console EndMission lost, mission overruns its +# timer). net-boot/NET.CFG must match (PORT 340). VDB stays at 0x300. +# +# Launch (host env): VPXLOG, VPX_RESPOND=1, VPX_RENDER=1, VPX_DUMPDIR, +# RIO_TAP, VWE_AWE32=1, VWE_AWE_ROM, and C:\Windows\System32\Npcap on PATH. +# pcap realnic must be the bridge miniport (see NET-NOTES.md). +[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=directserial realport:COM1 rxpollus:100 rxburst:16 +serial2=directserial realport:COM2 +[autoexec] +mount c "C:\VWE\TeslaRel410\ALPHA_1" +mount d "C:\VWE\TeslaRel410\emulator\net-boot" +mount e "C:\VWE\TeslaRel410\sda4\TEL" +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 === NETWORK DIAGNOSTIC MODE: stack loaded, NO game/netnub === +echo NCSA Telnet suite mounted on E: (myip=200.0.0.74 per CONFIG.TEL) +echo e: then TELBIN 200.0.0.1 (TCP connect test to the Mac console) +echo or FINGER @200.0.0.1 / FTPBIN 200.0.0.1 +echo When done, start the game manually: +echo C: then CD REL410\BT then 32RTM -X then NETNUB -P -F BTL4OPT diff --git a/emulator/net_full.conf b/emulator/net_full.conf index 0cda89b..50a7184 100644 --- a/emulator/net_full.conf +++ b/emulator/net_full.conf @@ -24,7 +24,10 @@ cycles=max [ne2000] ne2000=true nicbase=340 -nicirq=3 +# IRQ 10, NOT 3: the plasma readout opens COM2 (IRQ 3) in-game -- with the +# NIC also on 3 the pod goes deaf the moment BTL4OPT starts (netnub phase +# still works, so it looks like a mid-boot failure). NET.CFG INT must match. +nicirq=10 backend=pcap [ethernet, pcap] realnic=DB5521D diff --git a/emulator/net_loop.conf b/emulator/net_loop.conf index add687b..0b66716 100644 --- a/emulator/net_loop.conf +++ b/emulator/net_loop.conf @@ -2,8 +2,12 @@ # 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). -# Sound is OFF here (setenv arg3=n) for fast reconnect cycles; flip to net_full -# for the full sound experience. +# 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 @@ -17,13 +21,24 @@ cycles=max [ne2000] ne2000=true nicbase=340 -nicirq=3 +# 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=directserial realport:COM1 rxpollus:100 rxburst:16 -serial2=disabled +serial2=directserial realport:COM2 [autoexec] mount c "C:\VWE\TeslaRel410\ALPHA_1" mount d "C:\VWE\TeslaRel410\emulator\net-boot" @@ -35,9 +50,14 @@ 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 n g +call setenv.bat r f s p echo === entering GO.BAT-style netnub loop (waits for console missions) === call d:\loop.bat diff --git a/emulator/render-bridge/launch_pod.ps1 b/emulator/render-bridge/launch_pod.ps1 index 2e53e17..df5ad9f 100644 --- a/emulator/render-bridge/launch_pod.ps1 +++ b/emulator/render-bridge/launch_pod.ps1 @@ -22,6 +22,10 @@ param( $ErrorActionPreference = 'Stop' New-Item -ItemType Directory -Force $Work | Out-Null +# pcap backend needs wpcap.dll; without it the NE2000 silently comes up dead +# ("NO PACKET DRIVER FOUND" at netnub). Don't trust the invoking shell's PATH. +if ($env:Path -notlike '*\Npcap*') { $env:Path = "C:\Windows\System32\Npcap;$env:Path" } + # a restart means the previous run dies first (COM1 + the fifodump are exclusive) foreach ($pidfile in "$Work\pod_pid.txt", "$Work\bridge_pid.txt") { if (Test-Path $pidfile) {