Files
BT412/context/wintesla-port.md
T
arcattackandClaude Opus 4.8 c75abca857 KB: audio backend was STUB DLLs (not just gated) -- now real OpenAL + in-tree WAV loader (task #50)
Correct the audio digest in wintesla-port.md + project-overview.md: the "no
sound ever" root cause was that BOTH engine/lib backend DLLs were no-op stubs
(libsndfile ordinal-only sf_open->NULL; OpenAL32 imports only KERNEL32). Now
real OpenAL Soft + LoadWavPCM; soundbank cracked (241 samples). Only remaining
gap = game triggering (AudioEntities).

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

4.5 KiB

id, title, status, source_sections, related_topics, key_terms
id title status source_sections related_topics key_terms
wintesla-port The WinTesla Windows Port — the base everything builds on established PROGRESS_LOG.md §5b, §8
source-completeness
rendering
build-and-run
multiplayer
WinTesla
L4D3D
MUNGA
RP
DPL

The WinTesla Windows Port

The Elsewhen RP411 archive is a working Windows port of the MUNGA engine (VS2005, WinTesla.sln). It means the hardest infrastructure is already solved — the bt411 build sits on top of it. Full detail: docs/PROGRESS_LOG.md §5b, §8.

What WinTesla already did (do NOT rebuild)

  • Renderer bypass: DONEMUNGA_L4/L4D3D.cpp + DXUtils replace libDPL / the IG board with Direct3D9. No libdpl.lib in the tree. (The early from-scratch D3D9 viewer was retired and removed.) [T1]
  • Audio: BACKEND now REAL + soundbank loaded; only game-triggering remains [T2, updated 2026-07-15]. OpenAL replaces the HMI "SOS" engine and the renderer→device→buffer→source→play chain IS all implemented (L4AUDRND/L4AUDRES/L4AUDLVL; PatchLevelOfDetail::PlayNote really calls alSourcePlay). The "no sound, ever" root cause was DEEPER than a gate — both audio backend DLLs shipped in engine/lib/ were no-op STUBS: (a) libsndfile-1.dll exports 15 funcs BY ORDINAL ONLY (no names), sf_open() always returns NULL; (b) OpenAL32.dll (72KB) imported only KERNEL32 — no dsound/wasapi/winmm — so it returned fake handles (ctx=0x00000001, alGenSources→0) and never touched the hardware. So the chain ran clean and silent. FIXES (commit 5b46655): OpenAL32.dll → real OpenAL Soft 1.25.2 Win32 (drop-in: the exe imports the 25 AL funcs by NAME; alSourcePlay now reaches AL_PLAYING). libsndfile DROPPED — replaced by LoadWavPCM() in L4AUDRES (a tiny in-tree RIFF/WAVE fmt+data reader, no external dep). Gates fixed earlier: the AWE_FRONT/AWE_REAR env-var gate in MakeAudioRenderer was relaxed to default-on (BT_NO_AUDIO=1 disables). Soundbank recovered: 241 samples cracked from AUDIO1/2.RES (SF2 v1.0) by tools/sf2extract.pycontent/AUDIO/*.wav + the allPresets[2][128] table (audiopresets.cpp, replacing the zero-init btstubs stub); all 241 load (alErr=0). The ONLY remaining gap: the reconstructed game never creates AudioEntities — nothing triggers PlayNote on weapon fire / footsteps / engine / explosion during play, so gameplay is still silent (a BT_AUDIO_TEST hook plays buffer0 as proof-of-life). Diagnostic harness: BT_AUDIO_LOG traces the chain; BT_AUDIO_TEST plays a sample. NOTE: the AUDIO1/2.RES were SF2 v1.0 (16-byte shdr records; sample rate assumed 22050 Hz — may need tuning if pitch is off).
  • L4 HAL on Windows + the VS build system: DONE. [T1]
  • Red Planet game logic: COMPLETE & buildableVTV/VTVMPPR/WEAPSYS/.... RP is at/near playable. [T1]
  • Multiplayer: the DOS NETNUB driver is already replaced by a ~3.5k-line WinSock2 TCP reimplementation (MUNGA_L4/L4NET.CPP) + the master/replicant distributed-sim core. See multiplayer. [T1]

What BT still needs (the only remaining work below the game layer is NONE)

Everything below the game layer — engine, renderer, audio, HAL, build — exists and is shared. The ONLY thing BT needs is its game-logic source, which is gone (see source-completeness) → it must be reconstructed, with the three anchors (BT headers + the WinTesla engine to compile against + RP's parallel code + the binary oracle). [T2]

Build implications

  • WinTesla.sln is VS2005 and hard-depends on the legacy DirectX SDK (June 2010) (d3dx9, dinput, dxerr — all removed from the modern Windows SDK). The DXSDK is installed at C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\. [T2]
  • The shared engine builds GREEN to munga_engine.lib via CMake/MSVC Win32 (see build-and-run). Recipe gotchas (include-path shadowing, the CAMMGR/time.h fixes, the ATL shim) are in docs/PROGRESS_LOG.md §8. [T2]

Roadmap position

Old plan ("build a libDPL shim + port the engine") is superseded — WinTesla did it. New plan: reuse the WinTesla engine (shared) + reconstruct the BT game library (BT410_L4 + game logic). The from-scratch libDPL shim is no longer needed. Phases 4-8 (BT game layer + pod bring-up) still apply. [T2]

Key Relationships