Files
BT411/run/run.cmd
arcattackandClaude Opus 4.8 c13e72d0ba platform profile + gauge dev-composite (Milestone A: gauge renderer woken)
PLATFORM PROFILE (-platform pod|dev / BT_PLATFORM / run.cmd pod; default dev):
an env-preset selector, NOT a code fork -- it picks which environment the
existing video/gauge/input code reads.  dev = single 800x600 window + keyboard
(the working build); pod = RIO input + (on real hardware) the multi-surface
gauges/MFDs, mirroring content/SETENV.BAT (the pod path -- FindBestAdapterIndices
/ SVGA16 -- is left untouched).  The multi-surface needs the pod's 2 video cards,
so -platform pod does NOT auto-enable L4GAUGE on a dev box (stays bootable,
single-window).  Also fixes a real engine bug: SVGA16::BuildWindows
PostQuitMessage'd on a CreateDevice failure but fell through to a null-device
deref (segfault) -- now breaks (inert on the pod).

GAUGE DEV-COMPOSITE, Milestone A (option B; opt-in BT_DEV_GAUGES, default OFF):
wake the (dormant) gauge renderer so its CPU-rastered pixelBuffer can later be
composited into the dev window, WITHOUT touching the pod SVGA16 output path.
SVGA16 does no per-surface D3D in this mode (a DevGaugeComposite() gate forces
the no-surface path + short-circuits Update/Refresh).  Waking the never-exercised
gauge subsystem exposed 4 latent reconstruction bugs, each guarded:
SVGA16::Update / Refresh (empty mSurfaces[]), LBE4ControlsManager::MakeLinkedLamp
(NULL lamp manager), L4GaugeRenderer::NotifyOfNewInterestingEntity (garbage
warehouse chain).  It now boots STABLY; the gauge reconstruction is incomplete
(shadowed lamp-manager + warehouse members) -- Milestone B (the composite pass)
will reveal whether the content is real.  See docs/GAUGE_COMPOSITE.md.

Verified: default DEV un-regressed (combat DESTROYED, 0 crashes); pod path
untouched; BT_DEV_GAUGES boots stable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 10:18:40 -05:00

35 lines
1.2 KiB
Batchfile

@echo off
rem Launch btl4.exe against the bundled content tree.
rem The game requires its working directory to be the content dir (BTL4.RES,
rem VIDEO\, BTDPL.INI, *.EGG are all resolved relative to cwd).
rem
rem Usage: run.cmd [EGG] [pod|dev] (args order-independent)
rem EGG a mission descriptor in content\ (default DEV.EGG = grass/day)
rem pod | dev platform profile (default dev):
rem dev = single 800x600 window + keyboard (the dev test build)
rem pod = RIO cockpit input + (on real pod hardware) the
rem multi-surface gauges/MFDs. On a dev box pod boots
rem single-window (the multi-surface needs the pod's 2
rem video cards); it still exercises the pod input/config.
rem (Equivalent: set BT_PLATFORM=pod, or pass -platform pod straight to the exe.)
setlocal
set CFG=Debug
set EGG=
set PROF=dev
:parse
if "%~1"=="" goto done
if /i "%~1"=="pod" (set PROF=pod& shift& goto parse)
if /i "%~1"=="dev" (set PROF=dev& shift& goto parse)
set EGG=%~1
shift
goto parse
:done
if "%EGG%"=="" set EGG=DEV.EGG
if /i "%PROF%"=="pod" set BT_PLATFORM=pod
echo [run] egg=%EGG% profile=%PROF%
cd /d "%~dp0..\content"
"%~dp0..\build\%CFG%\btl4.exe" -egg %EGG%