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>
35 lines
1.2 KiB
Batchfile
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%
|