Audio: ENABLE sound -- real OpenAL + in-tree WAV loader; both backend DLLs were no-op STUBS (task #50)
Root cause of "no sound, ever": the two audio backend DLLs shipped in the repo are fakes. libsndfile-1.dll exports 15 funcs BY ORDINAL ONLY (no names) and sf_open() always returns NULL; OpenAL32.dll (72KB) imports only KERNEL32 -- no dsound/wasapi/winmm -- so it is a pure no-op that returns fake handles (ctx=0x00000001, alGenSources->0) and never touches the hardware. The whole render->device->buffer->source->play chain ran clean and silent. Fixes: - OpenAL32.dll: replace the stub with the real OpenAL Soft 1.25.2 Win32 build (imports AVRT/ole32/WINMM, real WASAPI backend). The exe imports the 25 AL funcs by NAME so it is a drop-in; alGenSources now yields a live source and alSourcePlay reaches AL_PLAYING. - libsndfile: DROPPED entirely. It is replaced by LoadWavPCM() in L4AUDRES -- a tiny RIFF/WAVE fmt+data reader that loads our soundbank WAVs (16-bit PCM) straight into the AL buffer. Removed the .lib/.dll from the link + copy and git-rm'd the stub. (This also kills the "ordinal 50 could not be located in libsndfile-1.dll" load-failure popup: adding an sf_strerror import bound to an ordinal the 2..16-only stub could not satisfy.) - Soundbank: 241 samples cracked from AUDIO1/2.RES (SF2 v1.0) by tools/sf2extract.py into content/AUDIO/*.wav + the allPresets[2][128] table (audiopresets.cpp), replacing the zero-init btstubs stub. All 241 now load (alErr=0). BT_AUDIO_TEST plays buffer0 as proof-of-life; BT_AUDIO_LOG traces the chain. Remaining: in-game triggering (AudioEntities on fire/step/engine/explosion) so PlayNote fires during play -- next audio wave. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
52440e13b0
commit
5b46655b82
+4
-3
@@ -281,6 +281,7 @@ add_library(bt410_l4 STATIC
|
||||
"game/reconstructed/thermalsight.cpp"
|
||||
"game/reconstructed/torso.cpp"
|
||||
"game/reconstructed/btstubs.cpp"
|
||||
"game/reconstructed/audiopresets.cpp"
|
||||
"game/reconstructed/dpl2d.cpp"
|
||||
"game/original/BT/BTMSSN.CPP"
|
||||
"game/original/BT/BTREG.CPP"
|
||||
@@ -319,7 +320,6 @@ target_link_libraries(btl4 PRIVATE
|
||||
bt410_l4
|
||||
munga_engine
|
||||
"${CMAKE_SOURCE_DIR}/engine/lib/OpenAL32.lib"
|
||||
"${CMAKE_SOURCE_DIR}/engine/lib/libsndfile-1.lib"
|
||||
"${DXSDK}/Lib/x86/d3d9.lib"
|
||||
"${DXSDK}/Lib/x86/d3dx9.lib"
|
||||
"${DXSDK}/Lib/x86/dinput8.lib"
|
||||
@@ -331,9 +331,10 @@ target_link_libraries(btl4 PRIVATE
|
||||
# UNRESOLVED tolerates the dead offline-tool factory in mech3.cpp. See docs.
|
||||
target_link_options(btl4 PRIVATE /FORCE)
|
||||
|
||||
# Copy the third-party runtime DLLs next to the built exe.
|
||||
# Copy the OpenAL runtime DLL next to the built exe. (libsndfile is gone: its
|
||||
# repo DLL was a no-op STUB -- L4AUDRES now loads the soundbank WAVs with an
|
||||
# in-tree RIFF/PCM reader, no external dependency.)
|
||||
add_custom_command(TARGET btl4 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${CMAKE_SOURCE_DIR}/engine/lib/OpenAL32.dll"
|
||||
"${CMAKE_SOURCE_DIR}/engine/lib/libsndfile-1.dll"
|
||||
"$<TARGET_FILE_DIR:btl4>")
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user