diff --git a/CMakeLists.txt b/CMakeLists.txt index 577b1df..d302a07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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" "$") diff --git a/content/AUDIO/AllAcceleration.wav b/content/AUDIO/AllAcceleration.wav new file mode 100644 index 0000000..d64927a Binary files /dev/null and b/content/AUDIO/AllAcceleration.wav differ diff --git a/content/AUDIO/AllAlarms.wav b/content/AUDIO/AllAlarms.wav new file mode 100644 index 0000000..01642c7 Binary files /dev/null and b/content/AUDIO/AllAlarms.wav differ diff --git a/content/AUDIO/AllButtons.wav b/content/AUDIO/AllButtons.wav new file mode 100644 index 0000000..5f0889e Binary files /dev/null and b/content/AUDIO/AllButtons.wav differ diff --git a/content/AUDIO/AllCoolant.wav b/content/AUDIO/AllCoolant.wav new file mode 100644 index 0000000..0057902 Binary files /dev/null and b/content/AUDIO/AllCoolant.wav differ diff --git a/content/AUDIO/AllDamage.wav b/content/AUDIO/AllDamage.wav new file mode 100644 index 0000000..37ba2fc Binary files /dev/null and b/content/AUDIO/AllDamage.wav differ diff --git a/content/AUDIO/AllEngine.wav b/content/AUDIO/AllEngine.wav new file mode 100644 index 0000000..3970e2e Binary files /dev/null and b/content/AUDIO/AllEngine.wav differ diff --git a/content/AUDIO/AllEnviron.wav b/content/AUDIO/AllEnviron.wav new file mode 100644 index 0000000..a4d6b58 Binary files /dev/null and b/content/AUDIO/AllEnviron.wav differ diff --git a/content/AUDIO/AllExplosion.wav b/content/AUDIO/AllExplosion.wav new file mode 100644 index 0000000..6c38847 Binary files /dev/null and b/content/AUDIO/AllExplosion.wav differ diff --git a/content/AUDIO/AllHits.wav b/content/AUDIO/AllHits.wav new file mode 100644 index 0000000..018a133 Binary files /dev/null and b/content/AUDIO/AllHits.wav differ diff --git a/content/AUDIO/AllProjectile.wav b/content/AUDIO/AllProjectile.wav new file mode 100644 index 0000000..d80b82a Binary files /dev/null and b/content/AUDIO/AllProjectile.wav differ diff --git a/content/AUDIO/AllWarning.wav b/content/AUDIO/AllWarning.wav new file mode 100644 index 0000000..55c3260 Binary files /dev/null and b/content/AUDIO/AllWarning.wav differ diff --git a/content/AUDIO/AutoCanonAction01.wav b/content/AUDIO/AutoCanonAction01.wav new file mode 100644 index 0000000..a40b5a9 Binary files /dev/null and b/content/AUDIO/AutoCanonAction01.wav differ diff --git a/content/AUDIO/AutoCanonFire01.wav b/content/AUDIO/AutoCanonFire01.wav new file mode 100644 index 0000000..4d2c6bf Binary files /dev/null and b/content/AUDIO/AutoCanonFire01.wav differ diff --git a/content/AUDIO/AutoCanonFireExt01.wav b/content/AUDIO/AutoCanonFireExt01.wav new file mode 100644 index 0000000..cb8ab04 Binary files /dev/null and b/content/AUDIO/AutoCanonFireExt01.wav differ diff --git a/content/AUDIO/AutoCanonJam01.wav b/content/AUDIO/AutoCanonJam01.wav new file mode 100644 index 0000000..5f92eb2 Binary files /dev/null and b/content/AUDIO/AutoCanonJam01.wav differ diff --git a/content/AUDIO/AutoCanonMisfire01.wav b/content/AUDIO/AutoCanonMisfire01.wav new file mode 100644 index 0000000..d80b82a Binary files /dev/null and b/content/AUDIO/AutoCanonMisfire01.wav differ diff --git a/content/AUDIO/AuxExplosion01.wav b/content/AUDIO/AuxExplosion01.wav new file mode 100644 index 0000000..174cb8e Binary files /dev/null and b/content/AUDIO/AuxExplosion01.wav differ diff --git a/content/AUDIO/AuxExplosion01LOD2.wav b/content/AUDIO/AuxExplosion01LOD2.wav new file mode 100644 index 0000000..79f7f83 Binary files /dev/null and b/content/AUDIO/AuxExplosion01LOD2.wav differ diff --git a/content/AUDIO/BasicBeep01.wav b/content/AUDIO/BasicBeep01.wav new file mode 100644 index 0000000..5f0889e Binary files /dev/null and b/content/AUDIO/BasicBeep01.wav differ diff --git a/content/AUDIO/BasicBeep02.wav b/content/AUDIO/BasicBeep02.wav new file mode 100644 index 0000000..5f0889e Binary files /dev/null and b/content/AUDIO/BasicBeep02.wav differ diff --git a/content/AUDIO/BasicClick01.wav b/content/AUDIO/BasicClick01.wav new file mode 100644 index 0000000..bf1380b Binary files /dev/null and b/content/AUDIO/BasicClick01.wav differ diff --git a/content/AUDIO/BigExpInt01.wav b/content/AUDIO/BigExpInt01.wav new file mode 100644 index 0000000..79f7f83 Binary files /dev/null and b/content/AUDIO/BigExpInt01.wav differ diff --git a/content/AUDIO/BigExpInt02.wav b/content/AUDIO/BigExpInt02.wav new file mode 100644 index 0000000..3fd3559 Binary files /dev/null and b/content/AUDIO/BigExpInt02.wav differ diff --git a/content/AUDIO/BigExpInt03.wav b/content/AUDIO/BigExpInt03.wav new file mode 100644 index 0000000..e0354d0 Binary files /dev/null and b/content/AUDIO/BigExpInt03.wav differ diff --git a/content/AUDIO/BigExpInt04.wav b/content/AUDIO/BigExpInt04.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/BigExpInt04.wav differ diff --git a/content/AUDIO/BigExpInt05.wav b/content/AUDIO/BigExpInt05.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/BigExpInt05.wav differ diff --git a/content/AUDIO/BigExplosion01.wav b/content/AUDIO/BigExplosion01.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/BigExplosion01.wav differ diff --git a/content/AUDIO/BigExplosion01LOD2.wav b/content/AUDIO/BigExplosion01LOD2.wav new file mode 100644 index 0000000..79f7f83 Binary files /dev/null and b/content/AUDIO/BigExplosion01LOD2.wav differ diff --git a/content/AUDIO/BigExplosion02.wav b/content/AUDIO/BigExplosion02.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/BigExplosion02.wav differ diff --git a/content/AUDIO/BigExplosion02LOD2.wav b/content/AUDIO/BigExplosion02LOD2.wav new file mode 100644 index 0000000..3fd3559 Binary files /dev/null and b/content/AUDIO/BigExplosion02LOD2.wav differ diff --git a/content/AUDIO/BigExplosion03.wav b/content/AUDIO/BigExplosion03.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/BigExplosion03.wav differ diff --git a/content/AUDIO/BigExplosion03LOD2.wav b/content/AUDIO/BigExplosion03LOD2.wav new file mode 100644 index 0000000..e0354d0 Binary files /dev/null and b/content/AUDIO/BigExplosion03LOD2.wav differ diff --git a/content/AUDIO/BigExplosion04.wav b/content/AUDIO/BigExplosion04.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/BigExplosion04.wav differ diff --git a/content/AUDIO/BigExplosion04LOD2.wav b/content/AUDIO/BigExplosion04LOD2.wav new file mode 100644 index 0000000..cedd551 Binary files /dev/null and b/content/AUDIO/BigExplosion04LOD2.wav differ diff --git a/content/AUDIO/BigExplosion05.wav b/content/AUDIO/BigExplosion05.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/BigExplosion05.wav differ diff --git a/content/AUDIO/BigExplosion05LOD2.wav b/content/AUDIO/BigExplosion05LOD2.wav new file mode 100644 index 0000000..cedd551 Binary files /dev/null and b/content/AUDIO/BigExplosion05LOD2.wav differ diff --git a/content/AUDIO/Collision01.wav b/content/AUDIO/Collision01.wav new file mode 100644 index 0000000..2488177 Binary files /dev/null and b/content/AUDIO/Collision01.wav differ diff --git a/content/AUDIO/Collision02.wav b/content/AUDIO/Collision02.wav new file mode 100644 index 0000000..2488177 Binary files /dev/null and b/content/AUDIO/Collision02.wav differ diff --git a/content/AUDIO/Collision03.wav b/content/AUDIO/Collision03.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/Collision03.wav differ diff --git a/content/AUDIO/Collision04.wav b/content/AUDIO/Collision04.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/Collision04.wav differ diff --git a/content/AUDIO/Collision05.wav b/content/AUDIO/Collision05.wav new file mode 100644 index 0000000..49427c7 Binary files /dev/null and b/content/AUDIO/Collision05.wav differ diff --git a/content/AUDIO/Collision06.wav b/content/AUDIO/Collision06.wav new file mode 100644 index 0000000..98da654 Binary files /dev/null and b/content/AUDIO/Collision06.wav differ diff --git a/content/AUDIO/Collision07.wav b/content/AUDIO/Collision07.wav new file mode 100644 index 0000000..3806712 Binary files /dev/null and b/content/AUDIO/Collision07.wav differ diff --git a/content/AUDIO/Collision08.wav b/content/AUDIO/Collision08.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/Collision08.wav differ diff --git a/content/AUDIO/Collision09.wav b/content/AUDIO/Collision09.wav new file mode 100644 index 0000000..3d8ecb5 Binary files /dev/null and b/content/AUDIO/Collision09.wav differ diff --git a/content/AUDIO/Collision10.wav b/content/AUDIO/Collision10.wav new file mode 100644 index 0000000..bef5199 Binary files /dev/null and b/content/AUDIO/Collision10.wav differ diff --git a/content/AUDIO/Collision11.wav b/content/AUDIO/Collision11.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/Collision11.wav differ diff --git a/content/AUDIO/CollisionExt01.wav b/content/AUDIO/CollisionExt01.wav new file mode 100644 index 0000000..018a133 Binary files /dev/null and b/content/AUDIO/CollisionExt01.wav differ diff --git a/content/AUDIO/CollisionExt01LOD2.wav b/content/AUDIO/CollisionExt01LOD2.wav new file mode 100644 index 0000000..018a133 Binary files /dev/null and b/content/AUDIO/CollisionExt01LOD2.wav differ diff --git a/content/AUDIO/CollisionExt02.wav b/content/AUDIO/CollisionExt02.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/CollisionExt02.wav differ diff --git a/content/AUDIO/CollisionExt02LOD2.wav b/content/AUDIO/CollisionExt02LOD2.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/CollisionExt02LOD2.wav differ diff --git a/content/AUDIO/CollisionExt03.wav b/content/AUDIO/CollisionExt03.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/CollisionExt03.wav differ diff --git a/content/AUDIO/CollisionExt03LOD2.wav b/content/AUDIO/CollisionExt03LOD2.wav new file mode 100644 index 0000000..49427c7 Binary files /dev/null and b/content/AUDIO/CollisionExt03LOD2.wav differ diff --git a/content/AUDIO/CollisionExt04.wav b/content/AUDIO/CollisionExt04.wav new file mode 100644 index 0000000..49427c7 Binary files /dev/null and b/content/AUDIO/CollisionExt04.wav differ diff --git a/content/AUDIO/CollisionExt04LOD2.wav b/content/AUDIO/CollisionExt04LOD2.wav new file mode 100644 index 0000000..98da654 Binary files /dev/null and b/content/AUDIO/CollisionExt04LOD2.wav differ diff --git a/content/AUDIO/CollisionExt05.wav b/content/AUDIO/CollisionExt05.wav new file mode 100644 index 0000000..98da654 Binary files /dev/null and b/content/AUDIO/CollisionExt05.wav differ diff --git a/content/AUDIO/CollisionExt05LOD2.wav b/content/AUDIO/CollisionExt05LOD2.wav new file mode 100644 index 0000000..3806712 Binary files /dev/null and b/content/AUDIO/CollisionExt05LOD2.wav differ diff --git a/content/AUDIO/CollisionExt06.wav b/content/AUDIO/CollisionExt06.wav new file mode 100644 index 0000000..3806712 Binary files /dev/null and b/content/AUDIO/CollisionExt06.wav differ diff --git a/content/AUDIO/CollisionExt06LOD2.wav b/content/AUDIO/CollisionExt06LOD2.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/CollisionExt06LOD2.wav differ diff --git a/content/AUDIO/CollisionExt07.wav b/content/AUDIO/CollisionExt07.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/CollisionExt07.wav differ diff --git a/content/AUDIO/CollisionExt07LOD2.wav b/content/AUDIO/CollisionExt07LOD2.wav new file mode 100644 index 0000000..fb9fbf8 Binary files /dev/null and b/content/AUDIO/CollisionExt07LOD2.wav differ diff --git a/content/AUDIO/CollisionExt08.wav b/content/AUDIO/CollisionExt08.wav new file mode 100644 index 0000000..3d8ecb5 Binary files /dev/null and b/content/AUDIO/CollisionExt08.wav differ diff --git a/content/AUDIO/CollisionExt09.wav b/content/AUDIO/CollisionExt09.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/CollisionExt09.wav differ diff --git a/content/AUDIO/CoolantDump01.wav b/content/AUDIO/CoolantDump01.wav new file mode 100644 index 0000000..03cf508 Binary files /dev/null and b/content/AUDIO/CoolantDump01.wav differ diff --git a/content/AUDIO/CoolantDump02.wav b/content/AUDIO/CoolantDump02.wav new file mode 100644 index 0000000..03cf508 Binary files /dev/null and b/content/AUDIO/CoolantDump02.wav differ diff --git a/content/AUDIO/CoolantDump03.wav b/content/AUDIO/CoolantDump03.wav new file mode 100644 index 0000000..d5d99f0 Binary files /dev/null and b/content/AUDIO/CoolantDump03.wav differ diff --git a/content/AUDIO/CoolantDump04.wav b/content/AUDIO/CoolantDump04.wav new file mode 100644 index 0000000..d5d99f0 Binary files /dev/null and b/content/AUDIO/CoolantDump04.wav differ diff --git a/content/AUDIO/CoolantDump05.wav b/content/AUDIO/CoolantDump05.wav new file mode 100644 index 0000000..200b7cf Binary files /dev/null and b/content/AUDIO/CoolantDump05.wav differ diff --git a/content/AUDIO/CoolantDumpExt01.wav b/content/AUDIO/CoolantDumpExt01.wav new file mode 100644 index 0000000..7a2a341 Binary files /dev/null and b/content/AUDIO/CoolantDumpExt01.wav differ diff --git a/content/AUDIO/CoolantDumpStart01.wav b/content/AUDIO/CoolantDumpStart01.wav new file mode 100644 index 0000000..03cf508 Binary files /dev/null and b/content/AUDIO/CoolantDumpStart01.wav differ diff --git a/content/AUDIO/CoolantLeak01.wav b/content/AUDIO/CoolantLeak01.wav new file mode 100644 index 0000000..0057902 Binary files /dev/null and b/content/AUDIO/CoolantLeak01.wav differ diff --git a/content/AUDIO/CoolantPresDcr01.wav b/content/AUDIO/CoolantPresDcr01.wav new file mode 100644 index 0000000..5f8912e Binary files /dev/null and b/content/AUDIO/CoolantPresDcr01.wav differ diff --git a/content/AUDIO/CoolantPresDcr02.wav b/content/AUDIO/CoolantPresDcr02.wav new file mode 100644 index 0000000..5f8912e Binary files /dev/null and b/content/AUDIO/CoolantPresDcr02.wav differ diff --git a/content/AUDIO/CoolantPresDcr03.wav b/content/AUDIO/CoolantPresDcr03.wav new file mode 100644 index 0000000..5f8912e Binary files /dev/null and b/content/AUDIO/CoolantPresDcr03.wav differ diff --git a/content/AUDIO/CoolantPresInc01.wav b/content/AUDIO/CoolantPresInc01.wav new file mode 100644 index 0000000..474891c Binary files /dev/null and b/content/AUDIO/CoolantPresInc01.wav differ diff --git a/content/AUDIO/CoolantPresInc02.wav b/content/AUDIO/CoolantPresInc02.wav new file mode 100644 index 0000000..474891c Binary files /dev/null and b/content/AUDIO/CoolantPresInc02.wav differ diff --git a/content/AUDIO/CoolantPresInc03.wav b/content/AUDIO/CoolantPresInc03.wav new file mode 100644 index 0000000..474891c Binary files /dev/null and b/content/AUDIO/CoolantPresInc03.wav differ diff --git a/content/AUDIO/Crunch01.wav b/content/AUDIO/Crunch01.wav new file mode 100644 index 0000000..dc8c824 Binary files /dev/null and b/content/AUDIO/Crunch01.wav differ diff --git a/content/AUDIO/Crunch01LOD2.wav b/content/AUDIO/Crunch01LOD2.wav new file mode 100644 index 0000000..3882d94 Binary files /dev/null and b/content/AUDIO/Crunch01LOD2.wav differ diff --git a/content/AUDIO/Damage01.wav b/content/AUDIO/Damage01.wav new file mode 100644 index 0000000..66d0d38 Binary files /dev/null and b/content/AUDIO/Damage01.wav differ diff --git a/content/AUDIO/Damage02.wav b/content/AUDIO/Damage02.wav new file mode 100644 index 0000000..6c2d710 Binary files /dev/null and b/content/AUDIO/Damage02.wav differ diff --git a/content/AUDIO/Damage03.wav b/content/AUDIO/Damage03.wav new file mode 100644 index 0000000..6c38847 Binary files /dev/null and b/content/AUDIO/Damage03.wav differ diff --git a/content/AUDIO/Death01.wav b/content/AUDIO/Death01.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/Death01.wav differ diff --git a/content/AUDIO/DefaultButton01.wav b/content/AUDIO/DefaultButton01.wav new file mode 100644 index 0000000..9dfff87 Binary files /dev/null and b/content/AUDIO/DefaultButton01.wav differ diff --git a/content/AUDIO/DestroyedInt01.wav b/content/AUDIO/DestroyedInt01.wav new file mode 100644 index 0000000..6d481ae Binary files /dev/null and b/content/AUDIO/DestroyedInt01.wav differ diff --git a/content/AUDIO/DestroyedInt02.wav b/content/AUDIO/DestroyedInt02.wav new file mode 100644 index 0000000..db6566c Binary files /dev/null and b/content/AUDIO/DestroyedInt02.wav differ diff --git a/content/AUDIO/DestroyedInt03.wav b/content/AUDIO/DestroyedInt03.wav new file mode 100644 index 0000000..3a46679 Binary files /dev/null and b/content/AUDIO/DestroyedInt03.wav differ diff --git a/content/AUDIO/DestroyedInt04.wav b/content/AUDIO/DestroyedInt04.wav new file mode 100644 index 0000000..66d0d38 Binary files /dev/null and b/content/AUDIO/DestroyedInt04.wav differ diff --git a/content/AUDIO/DestroyedInt05.wav b/content/AUDIO/DestroyedInt05.wav new file mode 100644 index 0000000..2f688ab Binary files /dev/null and b/content/AUDIO/DestroyedInt05.wav differ diff --git a/content/AUDIO/DestroyedInt06.wav b/content/AUDIO/DestroyedInt06.wav new file mode 100644 index 0000000..2f688ab Binary files /dev/null and b/content/AUDIO/DestroyedInt06.wav differ diff --git a/content/AUDIO/DuckServo01.wav b/content/AUDIO/DuckServo01.wav new file mode 100644 index 0000000..9c303f5 Binary files /dev/null and b/content/AUDIO/DuckServo01.wav differ diff --git a/content/AUDIO/EjectButton01.wav b/content/AUDIO/EjectButton01.wav new file mode 100644 index 0000000..5f0889e Binary files /dev/null and b/content/AUDIO/EjectButton01.wav differ diff --git a/content/AUDIO/EjectEnd01.wav b/content/AUDIO/EjectEnd01.wav new file mode 100644 index 0000000..fac7e40 Binary files /dev/null and b/content/AUDIO/EjectEnd01.wav differ diff --git a/content/AUDIO/EjectStart01.wav b/content/AUDIO/EjectStart01.wav new file mode 100644 index 0000000..21713a8 Binary files /dev/null and b/content/AUDIO/EjectStart01.wav differ diff --git a/content/AUDIO/ElectricDamage01.wav b/content/AUDIO/ElectricDamage01.wav new file mode 100644 index 0000000..37ba2fc Binary files /dev/null and b/content/AUDIO/ElectricDamage01.wav differ diff --git a/content/AUDIO/EngButton01.wav b/content/AUDIO/EngButton01.wav new file mode 100644 index 0000000..10fd9a9 Binary files /dev/null and b/content/AUDIO/EngButton01.wav differ diff --git a/content/AUDIO/EngineAccel01.wav b/content/AUDIO/EngineAccel01.wav new file mode 100644 index 0000000..2d62770 Binary files /dev/null and b/content/AUDIO/EngineAccel01.wav differ diff --git a/content/AUDIO/EngineAccel02.wav b/content/AUDIO/EngineAccel02.wav new file mode 100644 index 0000000..3f09f05 Binary files /dev/null and b/content/AUDIO/EngineAccel02.wav differ diff --git a/content/AUDIO/EngineAccel03.wav b/content/AUDIO/EngineAccel03.wav new file mode 100644 index 0000000..306ef7a Binary files /dev/null and b/content/AUDIO/EngineAccel03.wav differ diff --git a/content/AUDIO/EngineAccel04.wav b/content/AUDIO/EngineAccel04.wav new file mode 100644 index 0000000..a8a081e Binary files /dev/null and b/content/AUDIO/EngineAccel04.wav differ diff --git a/content/AUDIO/EngineAccel05.wav b/content/AUDIO/EngineAccel05.wav new file mode 100644 index 0000000..224f728 Binary files /dev/null and b/content/AUDIO/EngineAccel05.wav differ diff --git a/content/AUDIO/EngineAccel06.wav b/content/AUDIO/EngineAccel06.wav new file mode 100644 index 0000000..3f09f05 Binary files /dev/null and b/content/AUDIO/EngineAccel06.wav differ diff --git a/content/AUDIO/EngineAccel07.wav b/content/AUDIO/EngineAccel07.wav new file mode 100644 index 0000000..3970e2e Binary files /dev/null and b/content/AUDIO/EngineAccel07.wav differ diff --git a/content/AUDIO/EngineDamage01.wav b/content/AUDIO/EngineDamage01.wav new file mode 100644 index 0000000..5954463 Binary files /dev/null and b/content/AUDIO/EngineDamage01.wav differ diff --git a/content/AUDIO/EngineMotor01.wav b/content/AUDIO/EngineMotor01.wav new file mode 100644 index 0000000..96f398e Binary files /dev/null and b/content/AUDIO/EngineMotor01.wav differ diff --git a/content/AUDIO/EngineMotor02.wav b/content/AUDIO/EngineMotor02.wav new file mode 100644 index 0000000..3f09f05 Binary files /dev/null and b/content/AUDIO/EngineMotor02.wav differ diff --git a/content/AUDIO/EnginePower01.wav b/content/AUDIO/EnginePower01.wav new file mode 100644 index 0000000..5a4420a Binary files /dev/null and b/content/AUDIO/EnginePower01.wav differ diff --git a/content/AUDIO/EngineShiftFwd01.wav b/content/AUDIO/EngineShiftFwd01.wav new file mode 100644 index 0000000..f90e621 Binary files /dev/null and b/content/AUDIO/EngineShiftFwd01.wav differ diff --git a/content/AUDIO/EngineShiftRev01.wav b/content/AUDIO/EngineShiftRev01.wav new file mode 100644 index 0000000..f90e621 Binary files /dev/null and b/content/AUDIO/EngineShiftRev01.wav differ diff --git a/content/AUDIO/EngineWindUp01.wav b/content/AUDIO/EngineWindUp01.wav new file mode 100644 index 0000000..9d851c6 Binary files /dev/null and b/content/AUDIO/EngineWindUp01.wav differ diff --git a/content/AUDIO/FootFallExt01.wav b/content/AUDIO/FootFallExt01.wav new file mode 100644 index 0000000..d1bfb48 Binary files /dev/null and b/content/AUDIO/FootFallExt01.wav differ diff --git a/content/AUDIO/FootFallExt02.wav b/content/AUDIO/FootFallExt02.wav new file mode 100644 index 0000000..d1bfb48 Binary files /dev/null and b/content/AUDIO/FootFallExt02.wav differ diff --git a/content/AUDIO/FootFallExt03.wav b/content/AUDIO/FootFallExt03.wav new file mode 100644 index 0000000..d1bfb48 Binary files /dev/null and b/content/AUDIO/FootFallExt03.wav differ diff --git a/content/AUDIO/FootFallExt04.wav b/content/AUDIO/FootFallExt04.wav new file mode 100644 index 0000000..d1bfb48 Binary files /dev/null and b/content/AUDIO/FootFallExt04.wav differ diff --git a/content/AUDIO/FootFallInt01.wav b/content/AUDIO/FootFallInt01.wav new file mode 100644 index 0000000..5f7edd3 Binary files /dev/null and b/content/AUDIO/FootFallInt01.wav differ diff --git a/content/AUDIO/GeneratorSelect01.wav b/content/AUDIO/GeneratorSelect01.wav new file mode 100644 index 0000000..5f0889e Binary files /dev/null and b/content/AUDIO/GeneratorSelect01.wav differ diff --git a/content/AUDIO/IncomingAlarm01.wav b/content/AUDIO/IncomingAlarm01.wav new file mode 100644 index 0000000..01642c7 Binary files /dev/null and b/content/AUDIO/IncomingAlarm01.wav differ diff --git a/content/AUDIO/LaserACharge01.wav b/content/AUDIO/LaserACharge01.wav new file mode 100644 index 0000000..b56709b Binary files /dev/null and b/content/AUDIO/LaserACharge01.wav differ diff --git a/content/AUDIO/LaserACharge02.wav b/content/AUDIO/LaserACharge02.wav new file mode 100644 index 0000000..b56709b Binary files /dev/null and b/content/AUDIO/LaserACharge02.wav differ diff --git a/content/AUDIO/LaserACharge03.wav b/content/AUDIO/LaserACharge03.wav new file mode 100644 index 0000000..b56709b Binary files /dev/null and b/content/AUDIO/LaserACharge03.wav differ diff --git a/content/AUDIO/LaserACharge04.wav b/content/AUDIO/LaserACharge04.wav new file mode 100644 index 0000000..b56709b Binary files /dev/null and b/content/AUDIO/LaserACharge04.wav differ diff --git a/content/AUDIO/LaserAFire01.wav b/content/AUDIO/LaserAFire01.wav new file mode 100644 index 0000000..251aabc Binary files /dev/null and b/content/AUDIO/LaserAFire01.wav differ diff --git a/content/AUDIO/LaserAFire02.wav b/content/AUDIO/LaserAFire02.wav new file mode 100644 index 0000000..251aabc Binary files /dev/null and b/content/AUDIO/LaserAFire02.wav differ diff --git a/content/AUDIO/LaserAFire03.wav b/content/AUDIO/LaserAFire03.wav new file mode 100644 index 0000000..251aabc Binary files /dev/null and b/content/AUDIO/LaserAFire03.wav differ diff --git a/content/AUDIO/LaserAMisfire01.wav b/content/AUDIO/LaserAMisfire01.wav new file mode 100644 index 0000000..6e50342 Binary files /dev/null and b/content/AUDIO/LaserAMisfire01.wav differ diff --git a/content/AUDIO/LaserARelease01.wav b/content/AUDIO/LaserARelease01.wav new file mode 100644 index 0000000..a943d04 Binary files /dev/null and b/content/AUDIO/LaserARelease01.wav differ diff --git a/content/AUDIO/LaserARelease02.wav b/content/AUDIO/LaserARelease02.wav new file mode 100644 index 0000000..a943d04 Binary files /dev/null and b/content/AUDIO/LaserARelease02.wav differ diff --git a/content/AUDIO/LaserARelease03.wav b/content/AUDIO/LaserARelease03.wav new file mode 100644 index 0000000..a943d04 Binary files /dev/null and b/content/AUDIO/LaserARelease03.wav differ diff --git a/content/AUDIO/LaserASustain01.wav b/content/AUDIO/LaserASustain01.wav new file mode 100644 index 0000000..bc624d2 Binary files /dev/null and b/content/AUDIO/LaserASustain01.wav differ diff --git a/content/AUDIO/LaserASustain02.wav b/content/AUDIO/LaserASustain02.wav new file mode 100644 index 0000000..bc624d2 Binary files /dev/null and b/content/AUDIO/LaserASustain02.wav differ diff --git a/content/AUDIO/LaserASustain03.wav b/content/AUDIO/LaserASustain03.wav new file mode 100644 index 0000000..bc624d2 Binary files /dev/null and b/content/AUDIO/LaserASustain03.wav differ diff --git a/content/AUDIO/LaserASustainExt01.wav b/content/AUDIO/LaserASustainExt01.wav new file mode 100644 index 0000000..1112de0 Binary files /dev/null and b/content/AUDIO/LaserASustainExt01.wav differ diff --git a/content/AUDIO/LaserASustainExt02.wav b/content/AUDIO/LaserASustainExt02.wav new file mode 100644 index 0000000..1112de0 Binary files /dev/null and b/content/AUDIO/LaserASustainExt02.wav differ diff --git a/content/AUDIO/LaserASustainExt03.wav b/content/AUDIO/LaserASustainExt03.wav new file mode 100644 index 0000000..1112de0 Binary files /dev/null and b/content/AUDIO/LaserASustainExt03.wav differ diff --git a/content/AUDIO/LaserBFire01.wav b/content/AUDIO/LaserBFire01.wav new file mode 100644 index 0000000..962b292 Binary files /dev/null and b/content/AUDIO/LaserBFire01.wav differ diff --git a/content/AUDIO/LaserBFire02.wav b/content/AUDIO/LaserBFire02.wav new file mode 100644 index 0000000..962b292 Binary files /dev/null and b/content/AUDIO/LaserBFire02.wav differ diff --git a/content/AUDIO/LaserBFire03.wav b/content/AUDIO/LaserBFire03.wav new file mode 100644 index 0000000..962b292 Binary files /dev/null and b/content/AUDIO/LaserBFire03.wav differ diff --git a/content/AUDIO/LaserBSustain01.wav b/content/AUDIO/LaserBSustain01.wav new file mode 100644 index 0000000..7cb5c6c Binary files /dev/null and b/content/AUDIO/LaserBSustain01.wav differ diff --git a/content/AUDIO/LaserBSustain02.wav b/content/AUDIO/LaserBSustain02.wav new file mode 100644 index 0000000..7cb5c6c Binary files /dev/null and b/content/AUDIO/LaserBSustain02.wav differ diff --git a/content/AUDIO/LaserBSustain03.wav b/content/AUDIO/LaserBSustain03.wav new file mode 100644 index 0000000..7cb5c6c Binary files /dev/null and b/content/AUDIO/LaserBSustain03.wav differ diff --git a/content/AUDIO/LaserBSustainExt01.wav b/content/AUDIO/LaserBSustainExt01.wav new file mode 100644 index 0000000..7cb5c6c Binary files /dev/null and b/content/AUDIO/LaserBSustainExt01.wav differ diff --git a/content/AUDIO/LaserBSustainExt02.wav b/content/AUDIO/LaserBSustainExt02.wav new file mode 100644 index 0000000..7cb5c6c Binary files /dev/null and b/content/AUDIO/LaserBSustainExt02.wav differ diff --git a/content/AUDIO/LaserBSustainExt03.wav b/content/AUDIO/LaserBSustainExt03.wav new file mode 100644 index 0000000..7cb5c6c Binary files /dev/null and b/content/AUDIO/LaserBSustainExt03.wav differ diff --git a/content/AUDIO/LaserCFire01.wav b/content/AUDIO/LaserCFire01.wav new file mode 100644 index 0000000..962b292 Binary files /dev/null and b/content/AUDIO/LaserCFire01.wav differ diff --git a/content/AUDIO/LaserCFire02.wav b/content/AUDIO/LaserCFire02.wav new file mode 100644 index 0000000..962b292 Binary files /dev/null and b/content/AUDIO/LaserCFire02.wav differ diff --git a/content/AUDIO/LaserCFire03.wav b/content/AUDIO/LaserCFire03.wav new file mode 100644 index 0000000..962b292 Binary files /dev/null and b/content/AUDIO/LaserCFire03.wav differ diff --git a/content/AUDIO/LaserCSustain01.wav b/content/AUDIO/LaserCSustain01.wav new file mode 100644 index 0000000..a73edaf Binary files /dev/null and b/content/AUDIO/LaserCSustain01.wav differ diff --git a/content/AUDIO/LaserCSustain02.wav b/content/AUDIO/LaserCSustain02.wav new file mode 100644 index 0000000..a73edaf Binary files /dev/null and b/content/AUDIO/LaserCSustain02.wav differ diff --git a/content/AUDIO/LaserCSustain03.wav b/content/AUDIO/LaserCSustain03.wav new file mode 100644 index 0000000..a73edaf Binary files /dev/null and b/content/AUDIO/LaserCSustain03.wav differ diff --git a/content/AUDIO/LaserCSustainExt01.wav b/content/AUDIO/LaserCSustainExt01.wav new file mode 100644 index 0000000..d302a13 Binary files /dev/null and b/content/AUDIO/LaserCSustainExt01.wav differ diff --git a/content/AUDIO/LaserCSustainExt02.wav b/content/AUDIO/LaserCSustainExt02.wav new file mode 100644 index 0000000..d302a13 Binary files /dev/null and b/content/AUDIO/LaserCSustainExt02.wav differ diff --git a/content/AUDIO/LaserCSustainExt03.wav b/content/AUDIO/LaserCSustainExt03.wav new file mode 100644 index 0000000..d302a13 Binary files /dev/null and b/content/AUDIO/LaserCSustainExt03.wav differ diff --git a/content/AUDIO/LaserCSustainExt04.wav b/content/AUDIO/LaserCSustainExt04.wav new file mode 100644 index 0000000..d302a13 Binary files /dev/null and b/content/AUDIO/LaserCSustainExt04.wav differ diff --git a/content/AUDIO/LaserExp01LOD2.wav b/content/AUDIO/LaserExp01LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExp01LOD2.wav differ diff --git a/content/AUDIO/LaserExp02LOD2.wav b/content/AUDIO/LaserExp02LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExp02LOD2.wav differ diff --git a/content/AUDIO/LaserExp03LOD2.wav b/content/AUDIO/LaserExp03LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExp03LOD2.wav differ diff --git a/content/AUDIO/LaserExp04LOD2.wav b/content/AUDIO/LaserExp04LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExp04LOD2.wav differ diff --git a/content/AUDIO/LaserExp05LOD2.wav b/content/AUDIO/LaserExp05LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExp05LOD2.wav differ diff --git a/content/AUDIO/LaserExp06LOD2.wav b/content/AUDIO/LaserExp06LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExp06LOD2.wav differ diff --git a/content/AUDIO/LaserExpInt01.wav b/content/AUDIO/LaserExpInt01.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/LaserExpInt01.wav differ diff --git a/content/AUDIO/LaserExpInt02.wav b/content/AUDIO/LaserExpInt02.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/LaserExpInt02.wav differ diff --git a/content/AUDIO/LaserExpInt03.wav b/content/AUDIO/LaserExpInt03.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/LaserExpInt03.wav differ diff --git a/content/AUDIO/LaserExpInt04.wav b/content/AUDIO/LaserExpInt04.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExpInt04.wav differ diff --git a/content/AUDIO/LaserExpInt05.wav b/content/AUDIO/LaserExpInt05.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/LaserExpInt05.wav differ diff --git a/content/AUDIO/LaserExpInt06.wav b/content/AUDIO/LaserExpInt06.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/LaserExpInt06.wav differ diff --git a/content/AUDIO/LaserExplosion01.wav b/content/AUDIO/LaserExplosion01.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/LaserExplosion01.wav differ diff --git a/content/AUDIO/LaserExplosion02.wav b/content/AUDIO/LaserExplosion02.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/LaserExplosion02.wav differ diff --git a/content/AUDIO/LaserExplosion03.wav b/content/AUDIO/LaserExplosion03.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/LaserExplosion03.wav differ diff --git a/content/AUDIO/LaserExplosion04.wav b/content/AUDIO/LaserExplosion04.wav new file mode 100644 index 0000000..174cb8e Binary files /dev/null and b/content/AUDIO/LaserExplosion04.wav differ diff --git a/content/AUDIO/LaserExplosion05.wav b/content/AUDIO/LaserExplosion05.wav new file mode 100644 index 0000000..37593b2 Binary files /dev/null and b/content/AUDIO/LaserExplosion05.wav differ diff --git a/content/AUDIO/LaserExplosion06.wav b/content/AUDIO/LaserExplosion06.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/LaserExplosion06.wav differ diff --git a/content/AUDIO/LaserLoaded01.wav b/content/AUDIO/LaserLoaded01.wav new file mode 100644 index 0000000..b56709b Binary files /dev/null and b/content/AUDIO/LaserLoaded01.wav differ diff --git a/content/AUDIO/MapZoom01.wav b/content/AUDIO/MapZoom01.wav new file mode 100644 index 0000000..a079f20 Binary files /dev/null and b/content/AUDIO/MapZoom01.wav differ diff --git a/content/AUDIO/MchGunExp01.wav b/content/AUDIO/MchGunExp01.wav new file mode 100644 index 0000000..575da95 Binary files /dev/null and b/content/AUDIO/MchGunExp01.wav differ diff --git a/content/AUDIO/MchGunExp02.wav b/content/AUDIO/MchGunExp02.wav new file mode 100644 index 0000000..6b9fa73 Binary files /dev/null and b/content/AUDIO/MchGunExp02.wav differ diff --git a/content/AUDIO/MchGunExp03.wav b/content/AUDIO/MchGunExp03.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/MchGunExp03.wav differ diff --git a/content/AUDIO/MchGunExp04.wav b/content/AUDIO/MchGunExp04.wav new file mode 100644 index 0000000..3806712 Binary files /dev/null and b/content/AUDIO/MchGunExp04.wav differ diff --git a/content/AUDIO/MchGunExpCraft01.wav b/content/AUDIO/MchGunExpCraft01.wav new file mode 100644 index 0000000..575da95 Binary files /dev/null and b/content/AUDIO/MchGunExpCraft01.wav differ diff --git a/content/AUDIO/MchGunExpCraft02.wav b/content/AUDIO/MchGunExpCraft02.wav new file mode 100644 index 0000000..6b9fa73 Binary files /dev/null and b/content/AUDIO/MchGunExpCraft02.wav differ diff --git a/content/AUDIO/MchGunExpCraft03.wav b/content/AUDIO/MchGunExpCraft03.wav new file mode 100644 index 0000000..9274dc2 Binary files /dev/null and b/content/AUDIO/MchGunExpCraft03.wav differ diff --git a/content/AUDIO/MchGunExpCraft04.wav b/content/AUDIO/MchGunExpCraft04.wav new file mode 100644 index 0000000..3806712 Binary files /dev/null and b/content/AUDIO/MchGunExpCraft04.wav differ diff --git a/content/AUDIO/MchGunFire01.wav b/content/AUDIO/MchGunFire01.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFire01.wav differ diff --git a/content/AUDIO/MchGunFire02.wav b/content/AUDIO/MchGunFire02.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFire02.wav differ diff --git a/content/AUDIO/MchGunFire03.wav b/content/AUDIO/MchGunFire03.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFire03.wav differ diff --git a/content/AUDIO/MchGunFire04.wav b/content/AUDIO/MchGunFire04.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFire04.wav differ diff --git a/content/AUDIO/MchGunFire05.wav b/content/AUDIO/MchGunFire05.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFire05.wav differ diff --git a/content/AUDIO/MchGunFire06.wav b/content/AUDIO/MchGunFire06.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFire06.wav differ diff --git a/content/AUDIO/MchGunFireExt01.wav b/content/AUDIO/MchGunFireExt01.wav new file mode 100644 index 0000000..d04afed Binary files /dev/null and b/content/AUDIO/MchGunFireExt01.wav differ diff --git a/content/AUDIO/MchGunJam01.wav b/content/AUDIO/MchGunJam01.wav new file mode 100644 index 0000000..5f92eb2 Binary files /dev/null and b/content/AUDIO/MchGunJam01.wav differ diff --git a/content/AUDIO/MchGunMisfire01.wav b/content/AUDIO/MchGunMisfire01.wav new file mode 100644 index 0000000..10fd9a9 Binary files /dev/null and b/content/AUDIO/MchGunMisfire01.wav differ diff --git a/content/AUDIO/MechExplosion01.wav b/content/AUDIO/MechExplosion01.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/MechExplosion01.wav differ diff --git a/content/AUDIO/MechFireLoop01.wav b/content/AUDIO/MechFireLoop01.wav new file mode 100644 index 0000000..e77c60f Binary files /dev/null and b/content/AUDIO/MechFireLoop01.wav differ diff --git a/content/AUDIO/MedExpInt01.wav b/content/AUDIO/MedExpInt01.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/MedExpInt01.wav differ diff --git a/content/AUDIO/MedExpInt02.wav b/content/AUDIO/MedExpInt02.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/MedExpInt02.wav differ diff --git a/content/AUDIO/MedExpInt03.wav b/content/AUDIO/MedExpInt03.wav new file mode 100644 index 0000000..e0354d0 Binary files /dev/null and b/content/AUDIO/MedExpInt03.wav differ diff --git a/content/AUDIO/MedExpInt04.wav b/content/AUDIO/MedExpInt04.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/MedExpInt04.wav differ diff --git a/content/AUDIO/MedExpInt05.wav b/content/AUDIO/MedExpInt05.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/MedExpInt05.wav differ diff --git a/content/AUDIO/MedExplosion01.wav b/content/AUDIO/MedExplosion01.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/MedExplosion01.wav differ diff --git a/content/AUDIO/MedExplosion01LOD2.wav b/content/AUDIO/MedExplosion01LOD2.wav new file mode 100644 index 0000000..79f7f83 Binary files /dev/null and b/content/AUDIO/MedExplosion01LOD2.wav differ diff --git a/content/AUDIO/MedExplosion02.wav b/content/AUDIO/MedExplosion02.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/MedExplosion02.wav differ diff --git a/content/AUDIO/MedExplosion02LOD2.wav b/content/AUDIO/MedExplosion02LOD2.wav new file mode 100644 index 0000000..b2298ef Binary files /dev/null and b/content/AUDIO/MedExplosion02LOD2.wav differ diff --git a/content/AUDIO/MedExplosion03.wav b/content/AUDIO/MedExplosion03.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/MedExplosion03.wav differ diff --git a/content/AUDIO/MedExplosion03LOD2.wav b/content/AUDIO/MedExplosion03LOD2.wav new file mode 100644 index 0000000..e0354d0 Binary files /dev/null and b/content/AUDIO/MedExplosion03LOD2.wav differ diff --git a/content/AUDIO/MedExplosion04.wav b/content/AUDIO/MedExplosion04.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/MedExplosion04.wav differ diff --git a/content/AUDIO/MedExplosion04LOD2.wav b/content/AUDIO/MedExplosion04LOD2.wav new file mode 100644 index 0000000..cedd551 Binary files /dev/null and b/content/AUDIO/MedExplosion04LOD2.wav differ diff --git a/content/AUDIO/MedExplosion05.wav b/content/AUDIO/MedExplosion05.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/MedExplosion05.wav differ diff --git a/content/AUDIO/MedExplosion05LOD2.wav b/content/AUDIO/MedExplosion05LOD2.wav new file mode 100644 index 0000000..cedd551 Binary files /dev/null and b/content/AUDIO/MedExplosion05LOD2.wav differ diff --git a/content/AUDIO/MissileJam01.wav b/content/AUDIO/MissileJam01.wav new file mode 100644 index 0000000..1dc08fb Binary files /dev/null and b/content/AUDIO/MissileJam01.wav differ diff --git a/content/AUDIO/MissileLaunch01.wav b/content/AUDIO/MissileLaunch01.wav new file mode 100644 index 0000000..a6c9687 Binary files /dev/null and b/content/AUDIO/MissileLaunch01.wav differ diff --git a/content/AUDIO/MissileLoaded01.wav b/content/AUDIO/MissileLoaded01.wav new file mode 100644 index 0000000..3e445e6 Binary files /dev/null and b/content/AUDIO/MissileLoaded01.wav differ diff --git a/content/AUDIO/MissileLoading01.wav b/content/AUDIO/MissileLoading01.wav new file mode 100644 index 0000000..dd027f3 Binary files /dev/null and b/content/AUDIO/MissileLoading01.wav differ diff --git a/content/AUDIO/MissileMisfire01.wav b/content/AUDIO/MissileMisfire01.wav new file mode 100644 index 0000000..282a60a Binary files /dev/null and b/content/AUDIO/MissileMisfire01.wav differ diff --git a/content/AUDIO/MissileTravel01.wav b/content/AUDIO/MissileTravel01.wav new file mode 100644 index 0000000..60857c8 Binary files /dev/null and b/content/AUDIO/MissileTravel01.wav differ diff --git a/content/AUDIO/MyomerServo01.wav b/content/AUDIO/MyomerServo01.wav new file mode 100644 index 0000000..6d5d8d3 Binary files /dev/null and b/content/AUDIO/MyomerServo01.wav differ diff --git a/content/AUDIO/PPCExp01LOD2.wav b/content/AUDIO/PPCExp01LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/PPCExp01LOD2.wav differ diff --git a/content/AUDIO/PPCExp02LOD2.wav b/content/AUDIO/PPCExp02LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/PPCExp02LOD2.wav differ diff --git a/content/AUDIO/PPCExp03LOD2.wav b/content/AUDIO/PPCExp03LOD2.wav new file mode 100644 index 0000000..e482ad4 Binary files /dev/null and b/content/AUDIO/PPCExp03LOD2.wav differ diff --git a/content/AUDIO/PPCExpInt01.wav b/content/AUDIO/PPCExpInt01.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/PPCExpInt01.wav differ diff --git a/content/AUDIO/PPCExpInt02.wav b/content/AUDIO/PPCExpInt02.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/PPCExpInt02.wav differ diff --git a/content/AUDIO/PPCExpInt03.wav b/content/AUDIO/PPCExpInt03.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/PPCExpInt03.wav differ diff --git a/content/AUDIO/PPCExplosion01.wav b/content/AUDIO/PPCExplosion01.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/PPCExplosion01.wav differ diff --git a/content/AUDIO/PPCExplosion02.wav b/content/AUDIO/PPCExplosion02.wav new file mode 100644 index 0000000..ee0e0af Binary files /dev/null and b/content/AUDIO/PPCExplosion02.wav differ diff --git a/content/AUDIO/PPCExplosion03.wav b/content/AUDIO/PPCExplosion03.wav new file mode 100644 index 0000000..c027bb1 Binary files /dev/null and b/content/AUDIO/PPCExplosion03.wav differ diff --git a/content/AUDIO/ProgramButton01.wav b/content/AUDIO/ProgramButton01.wav new file mode 100644 index 0000000..f779797 Binary files /dev/null and b/content/AUDIO/ProgramButton01.wav differ diff --git a/content/AUDIO/ProjectileATravel01.wav b/content/AUDIO/ProjectileATravel01.wav new file mode 100644 index 0000000..f70a0b4 Binary files /dev/null and b/content/AUDIO/ProjectileATravel01.wav differ diff --git a/content/AUDIO/ProjectileLoaded01.wav b/content/AUDIO/ProjectileLoaded01.wav new file mode 100644 index 0000000..3e445e6 Binary files /dev/null and b/content/AUDIO/ProjectileLoaded01.wav differ diff --git a/content/AUDIO/ProjectileLoading01.wav b/content/AUDIO/ProjectileLoading01.wav new file mode 100644 index 0000000..7b9d1f9 Binary files /dev/null and b/content/AUDIO/ProjectileLoading01.wav differ diff --git a/content/AUDIO/SmallExplosion01.wav b/content/AUDIO/SmallExplosion01.wav new file mode 100644 index 0000000..79f7f83 Binary files /dev/null and b/content/AUDIO/SmallExplosion01.wav differ diff --git a/content/AUDIO/SmallExplosion02.wav b/content/AUDIO/SmallExplosion02.wav new file mode 100644 index 0000000..b2298ef Binary files /dev/null and b/content/AUDIO/SmallExplosion02.wav differ diff --git a/content/AUDIO/SmallExplosion03.wav b/content/AUDIO/SmallExplosion03.wav new file mode 100644 index 0000000..e0354d0 Binary files /dev/null and b/content/AUDIO/SmallExplosion03.wav differ diff --git a/content/AUDIO/SmallExplosion04.wav b/content/AUDIO/SmallExplosion04.wav new file mode 100644 index 0000000..cedd551 Binary files /dev/null and b/content/AUDIO/SmallExplosion04.wav differ diff --git a/content/AUDIO/SmallFireLoop01.wav b/content/AUDIO/SmallFireLoop01.wav new file mode 100644 index 0000000..e77c60f Binary files /dev/null and b/content/AUDIO/SmallFireLoop01.wav differ diff --git a/content/AUDIO/TorsoStop01.wav b/content/AUDIO/TorsoStop01.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/TorsoStop01.wav differ diff --git a/content/AUDIO/TorsoTwistExt01.wav b/content/AUDIO/TorsoTwistExt01.wav new file mode 100644 index 0000000..c113805 Binary files /dev/null and b/content/AUDIO/TorsoTwistExt01.wav differ diff --git a/content/AUDIO/TorsoTwistInt01.wav b/content/AUDIO/TorsoTwistInt01.wav new file mode 100644 index 0000000..c113805 Binary files /dev/null and b/content/AUDIO/TorsoTwistInt01.wav differ diff --git a/content/AUDIO/TorsoTwistStop01.wav b/content/AUDIO/TorsoTwistStop01.wav new file mode 100644 index 0000000..1235f9f Binary files /dev/null and b/content/AUDIO/TorsoTwistStop01.wav differ diff --git a/content/AUDIO/Translocate01.wav b/content/AUDIO/Translocate01.wav new file mode 100644 index 0000000..d23e301 Binary files /dev/null and b/content/AUDIO/Translocate01.wav differ diff --git a/content/AUDIO/TriggerDurLoad01.wav b/content/AUDIO/TriggerDurLoad01.wav new file mode 100644 index 0000000..c598f83 Binary files /dev/null and b/content/AUDIO/TriggerDurLoad01.wav differ diff --git a/content/AUDIO/ViewSwitch01.wav b/content/AUDIO/ViewSwitch01.wav new file mode 100644 index 0000000..bd8b67a Binary files /dev/null and b/content/AUDIO/ViewSwitch01.wav differ diff --git a/content/AUDIO/Warnings01.wav b/content/AUDIO/Warnings01.wav new file mode 100644 index 0000000..46f2a68 Binary files /dev/null and b/content/AUDIO/Warnings01.wav differ diff --git a/content/AUDIO/WindLoop01.wav b/content/AUDIO/WindLoop01.wav new file mode 100644 index 0000000..a4d6b58 Binary files /dev/null and b/content/AUDIO/WindLoop01.wav differ diff --git a/engine/MUNGA_L4/L4AUDLVL.h b/engine/MUNGA_L4/L4AUDLVL.h index 73dca59..16d333b 100644 --- a/engine/MUNGA_L4/L4AUDLVL.h +++ b/engine/MUNGA_L4/L4AUDLVL.h @@ -35,7 +35,7 @@ struct PRESETINFO bool is3d; }; -extern PRESETINFO allPresets[2][100]; +extern PRESETINFO allPresets[2][128]; bool PRESET_isImplemented(int bank, int preset); int PRESET_getNumSamples(int bank, int preset); diff --git a/engine/MUNGA_L4/L4AUDRES.cpp b/engine/MUNGA_L4/L4AUDRES.cpp index 8152a4e..3599765 100644 --- a/engine/MUNGA_L4/L4AUDRES.cpp +++ b/engine/MUNGA_L4/L4AUDRES.cpp @@ -1,3 +1,6 @@ +#include +#include +#include #include #include "mungal4.h" #pragma hdrstop @@ -14,11 +17,65 @@ #include "..\munga\app.h" #include "..\munga\notation.h" #include "openal\al.h" -#include "sndfile.h" +#include "openal\alc.h" ALuint *g_buffers; int g_numBuffers; +// +// Minimal canonical-PCM WAV reader. The repo's libsndfile-1.dll is a STUB +// (exports 15 funcs by ordinal only, no names -- sf_open always returns NULL +// and sf_strerror(NULL) faults), so the original sf_open path loaded nothing. +// Our soundbank samples (AUDIO1/2.RES, cracked by scratchpad/sf2extract.py) +// are written as plain 16-bit mono PCM WAVs, so a tiny RIFF/WAVE fmt+data +// parser loads the real sample data directly into the AL buffer -- no +// external dependency, no stub. Handles 8/16-bit mono/stereo PCM. +// +static bool LoadWavPCM(const char *path, char **outData, int *outBytes, + int *outChannels, int *outBits, int *outRate) +{ + FILE *fp = fopen(path, "rb"); + if (!fp) return false; + fseek(fp, 0, SEEK_END); long flen = ftell(fp); fseek(fp, 0, SEEK_SET); + if (flen < 44) { fclose(fp); return false; } + unsigned char *buf = new unsigned char[flen]; + size_t got = fread(buf, 1, flen, fp); + fclose(fp); + if ((long)got != flen) { delete [] buf; return false; } + if (memcmp(buf, "RIFF", 4) != 0 || memcmp(buf + 8, "WAVE", 4) != 0) { delete [] buf; return false; } + int channels = 0, bits = 0, rate = 0; + char *pcm = 0; int pcmBytes = 0; + bool haveFmt = false; + long p = 12; + while (p + 8 <= flen) + { + const unsigned char *id = buf + p; + unsigned int csz = buf[p+4] | (buf[p+5]<<8) | (buf[p+6]<<16) | ((unsigned)buf[p+7]<<24); + long body = p + 8; + if (memcmp(id, "fmt ", 4) == 0 && csz >= 16) + { + channels = buf[body+2] | (buf[body+3]<<8); + rate = buf[body+4] | (buf[body+5]<<8) | (buf[body+6]<<16) | ((unsigned)buf[body+7]<<24); + bits = buf[body+14] | (buf[body+15]<<8); + haveFmt = true; + } + else if (memcmp(id, "data", 4) == 0) + { + long avail = flen - body; + pcmBytes = ((long)csz <= avail) ? (int)csz : (int)avail; + if (pcmBytes < 0) pcmBytes = 0; + pcm = new char[pcmBytes > 0 ? pcmBytes : 1]; + memcpy(pcm, buf + body, pcmBytes); + } + p = body + csz + (csz & 1); // RIFF chunks are word-aligned + } + delete [] buf; + if (!haveFmt || pcm == 0) { delete [] pcm; return false; } + *outData = pcm; *outBytes = pcmBytes; + *outChannels = channels; *outBits = bits; *outRate = rate; + return true; +} + //############################################################################# //####################### AudioObjectStream ############################# //############################################################################# @@ -543,7 +600,7 @@ void for(int i=1; i <= 2; i++) { - for (int j=0; j < 100; j++) + for (int j=0; j < 128; j++) { if (PRESET_isImplemented(i,j)) { @@ -574,7 +631,7 @@ void //Load buffers for(int i=1; i<=2 && bufferInd < g_numBuffers; i++) { - for(int j=0; j<100 && bufferInd < g_numBuffers; j++) + for(int j=0; j<128 && bufferInd < g_numBuffers; j++) { if (PRESET_isImplemented(i,j)) { @@ -582,84 +639,65 @@ void { SAMPLEINFO info = PRESET_getSampleInfo(i,j,k); - //Load WAV to buffer - char *data; - int size; - //Open WAV char fullname[50]; - strcpy_s(fullname,50,"AUDIO\\"); + strcpy_s(fullname,50,"AUDIO/"); strcat_s(fullname,50,info.file); - SF_INFO *sfInfo = new SF_INFO[2]; - //SF_INFO is working different than expected! - sfInfo->format = 0; - SNDFILE *file = sf_open(fullname,SFM_READ,sfInfo); - - if (file == NULL) + char *data = 0; int size = 0; + int wavCh = 0, wavBits = 0, wavRate = 0; + if (!LoadWavPCM(fullname, &data, &size, &wavCh, &wavBits, &wavRate)) { - DEBUG_STREAM << "Failed to open." << std::endl; + if (getenv("BT_AUDIO_LOG") && bufferInd == 0) { + char cwd[512]; cwd[0]=0; _getcwd(cwd, sizeof(cwd)); + DEBUG_STREAM << "[audio] DIAG cwd=[" << cwd << "] path=[" << fullname << "] WAV load FAILED\n" << std::flush; + } + DEBUG_STREAM << "[audio] Failed to open AUDIO/" << info.file << " -- skipping\n" << std::flush; + PRESET_setBufferIndex(i,j,k,bufferInd); + bufferInd++; + continue; } - unsigned long formatBits = 0; - unsigned long sampleRate = sfInfo->samplerate; - size = sfInfo->frames; - - bool isMono = (sfInfo->channels == 1); - - if (sfInfo->format & SF_FORMAT_PCM_S8) - { - formatBits = 8; - } else if (sfInfo->format & SF_FORMAT_PCM_16) - { - formatBits = 16; - } else - { - DEBUG_STREAM << "BAD FORMAT" << std::endl; - } - ALenum format; - if (formatBits == 8) - { - if (isMono) - { - format = AL_FORMAT_MONO8; - } else - { - size *= 2; - format = AL_FORMAT_STEREO8; - } - } else if (formatBits == 16) - { - size *= 2; - if (isMono) - { - format = AL_FORMAT_MONO16; - } else - { - size *= 2; - format = AL_FORMAT_STEREO16; - } - } + if (wavBits == 8) + format = (wavCh == 1) ? AL_FORMAT_MONO8 : AL_FORMAT_STEREO8; + else + format = (wavCh == 1) ? AL_FORMAT_MONO16 : AL_FORMAT_STEREO16; - ALsizei alSampleRate = sampleRate; - - //Load size & data - delete [] sfInfo; - data = new char[size]; - sf_read_raw(file,data,size); - sf_close(file); - - //Feed the buffer - alBufferData(g_buffers[bufferInd],format,data,size,alSampleRate); + //Feed the buffer with the real PCM sample data + alBufferData(g_buffers[bufferInd], format, data, size, wavRate); + if (getenv("BT_AUDIO_LOG") && bufferInd < 3) + DEBUG_STREAM << "[audio] loaded buf" << bufferInd << " " << info.file + << " ch=" << wavCh << " bits=" << wavBits << " rate=" << wavRate + << " bytes=" << size << " alErr=" << alGetError() << "\n" << std::flush; PRESET_setBufferIndex(i,j,k,bufferInd); bufferInd++; - - delete [] data; + delete [] data; } } } } + if (getenv("BT_AUDIO_TEST") && g_numBuffers > 0) + { + // PROOF OF LIFE: play the first loaded sample so we can confirm the + // SF2 -> WAV -> OpenAL buffer -> speakers path works end to end. + ALCcontext *ctx = alcGetCurrentContext(); + alGetError(); + ALuint testsrc = 0; alGenSources(1, &testsrc); + ALenum genErr = alGetError(); + alSourcei(testsrc, AL_BUFFER, g_buffers[0]); + ALenum bufErr = alGetError(); + alSourcei(testsrc, AL_LOOPING, AL_TRUE); + alSourcef(testsrc, AL_GAIN, 1.0f); + alSourcePlay(testsrc); + ALenum playErr = alGetError(); + ALint st = 0; alGetSourcei(testsrc, AL_SOURCE_STATE, &st); + DEBUG_STREAM << "[audio] TEST-PLAY buffer0 src=" << testsrc + << " ctx=" << (void*)ctx + << " genErr=" << genErr << " bufErr=" << bufErr << " playErr=" << playErr + << " state=" << st << " playing=" << (int)(st==AL_PLAYING) << "\n" << std::flush; + } + // //---------------------------------------------------------------------- // Load the sound banks diff --git a/engine/lib/OpenAL32.dll b/engine/lib/OpenAL32.dll index 5cf2ff1..188e232 100644 Binary files a/engine/lib/OpenAL32.dll and b/engine/lib/OpenAL32.dll differ diff --git a/engine/lib/libsndfile-1.dll b/engine/lib/libsndfile-1.dll deleted file mode 100644 index d8ba6ba..0000000 Binary files a/engine/lib/libsndfile-1.dll and /dev/null differ diff --git a/engine/lib/libsndfile-1.lib b/engine/lib/libsndfile-1.lib deleted file mode 100644 index e812c2e..0000000 Binary files a/engine/lib/libsndfile-1.lib and /dev/null differ diff --git a/game/reconstructed/audiopresets.cpp b/game/reconstructed/audiopresets.cpp new file mode 100644 index 0000000..895a01d --- /dev/null +++ b/game/reconstructed/audiopresets.cpp @@ -0,0 +1,979 @@ +// GENERATED by scratchpad/sf2extract.py -- the audio soundbank table. +// Replaces the zero-init allPresets stub (btstubs.cpp) with the real +// bank/preset -> sample map recovered from the AWE32 SoundFonts +// (AUDIO1/2.RES, SF2 v1.0). Each preset -> a loose .wav the +// L4AUDRES loader sf_opens. Regenerate: python scratchpad/sf2extract.py +#include + +PRESETINFO allPresets[2][128] = {}; + +namespace { +struct AudioPresetInit { + AudioPresetInit() { + { SAMPLEINFO &s = allPresets[0][0].samples[0]; + allPresets[0][0].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EnginePower01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][1].samples[0]; + allPresets[0][1].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineMotor01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][2].samples[0]; + allPresets[0][2].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineMotor02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][3].samples[0]; + allPresets[0][3].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineDamage01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][4].samples[0]; + allPresets[0][4].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][5].samples[0]; + allPresets[0][5].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineShiftFwd01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][6].samples[0]; + allPresets[0][6].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineShiftRev01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][7].samples[0]; + allPresets[0][7].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "TorsoTwistInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][8].samples[0]; + allPresets[0][8].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "TorsoTwistExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][9].samples[0]; + allPresets[0][9].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MyomerServo01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][10].samples[0]; + allPresets[0][10].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserAMisfire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][11].samples[0]; + allPresets[0][11].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserAFire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][12].samples[0]; + allPresets[0][12].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserAFire02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][13].samples[0]; + allPresets[0][13].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserAFire03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][14].samples[0]; + allPresets[0][14].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustain01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][15].samples[0]; + allPresets[0][15].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustain02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][16].samples[0]; + allPresets[0][16].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustain03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][17].samples[0]; + allPresets[0][17].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserARelease01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][18].samples[0]; + allPresets[0][18].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserARelease02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][19].samples[0]; + allPresets[0][19].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserARelease03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][20].samples[0]; + allPresets[0][20].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserACharge01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][21].samples[0]; + allPresets[0][21].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserACharge02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][22].samples[0]; + allPresets[0][22].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserACharge03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][23].samples[0]; + allPresets[0][23].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserACharge04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][24].samples[0]; + allPresets[0][24].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBFire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][25].samples[0]; + allPresets[0][25].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBFire02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][26].samples[0]; + allPresets[0][26].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBFire03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][27].samples[0]; + allPresets[0][27].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustain01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][28].samples[0]; + allPresets[0][28].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustain02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][29].samples[0]; + allPresets[0][29].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustain03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][30].samples[0]; + allPresets[0][30].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCFire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][31].samples[0]; + allPresets[0][31].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCFire02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][32].samples[0]; + allPresets[0][32].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCFire03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][33].samples[0]; + allPresets[0][33].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustain01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][34].samples[0]; + allPresets[0][34].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustain02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][35].samples[0]; + allPresets[0][35].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustain03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][36].samples[0]; + allPresets[0][36].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MissileMisfire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][37].samples[0]; + allPresets[0][37].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MissileLaunch01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][38].samples[0]; + allPresets[0][38].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MissileTravel01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][39].samples[0]; + allPresets[0][39].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MissileLoading01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][40].samples[0]; + allPresets[0][40].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MissileLoaded01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][41].samples[0]; + allPresets[0][41].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonMisfire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][42].samples[0]; + allPresets[0][42].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonFire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][43].samples[0]; + allPresets[0][43].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonAction01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][44].samples[0]; + allPresets[0][44].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "ProjectileATravel01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][45].samples[0]; + allPresets[0][45].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "TriggerDurLoad01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][46].samples[0]; + allPresets[0][46].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustainExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][47].samples[0]; + allPresets[0][47].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustainExt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][48].samples[0]; + allPresets[0][48].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustainExt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][49].samples[0]; + allPresets[0][49].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustainExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][50].samples[0]; + allPresets[0][50].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustainExt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][51].samples[0]; + allPresets[0][51].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustainExt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][52].samples[0]; + allPresets[0][52].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustainExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][53].samples[0]; + allPresets[0][53].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustainExt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][54].samples[0]; + allPresets[0][54].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustainExt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][55].samples[0]; + allPresets[0][55].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonFireExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][56].samples[0]; + allPresets[0][56].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserLoaded01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][57].samples[0]; + allPresets[0][57].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][58].samples[0]; + allPresets[0][58].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][59].samples[0]; + allPresets[0][59].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][60].samples[0]; + allPresets[0][60].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][61].samples[0]; + allPresets[0][61].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][62].samples[0]; + allPresets[0][62].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][63].samples[0]; + allPresets[0][63].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][64].samples[0]; + allPresets[0][64].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][65].samples[0]; + allPresets[0][65].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][66].samples[0]; + allPresets[0][66].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][67].samples[0]; + allPresets[0][67].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][68].samples[0]; + allPresets[0][68].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunMisfire01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][69].samples[0]; + allPresets[0][69].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunJam01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][70].samples[0]; + allPresets[0][70].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonJam01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][71].samples[0]; + allPresets[0][71].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MissileJam01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][72].samples[0]; + allPresets[0][72].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFireExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][73].samples[0]; + allPresets[0][73].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "ProjectileLoading01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][74].samples[0]; + allPresets[0][74].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "IncomingAlarm01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][75].samples[0]; + allPresets[0][75].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "ProjectileLoaded01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][76].samples[0]; + allPresets[0][76].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel07.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][78].samples[0]; + allPresets[0][78].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BasicBeep01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][79].samples[0]; + allPresets[0][79].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BasicClick01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][80].samples[0]; + allPresets[0][80].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DefaultButton01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][81].samples[0]; + allPresets[0][81].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DuckServo01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][82].samples[0]; + allPresets[0][82].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MapZoom01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][83].samples[0]; + allPresets[0][83].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "ProgramButton01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][84].samples[0]; + allPresets[0][84].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "ViewSwitch01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][85].samples[0]; + allPresets[0][85].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "GeneratorSelect01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][86].samples[0]; + allPresets[0][86].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BasicBeep02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][87].samples[0]; + allPresets[0][87].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EjectButton01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][88].samples[0]; + allPresets[0][88].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngButton01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][89].samples[0]; + allPresets[0][89].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresInc02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][90].samples[0]; + allPresets[0][90].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantLeak01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][91].samples[0]; + allPresets[0][91].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][92].samples[0]; + allPresets[0][92].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresDcr02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][93].samples[0]; + allPresets[0][93].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresInc01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][94].samples[0]; + allPresets[0][94].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresDcr01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][95].samples[0]; + allPresets[0][95].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EjectStart01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][96].samples[0]; + allPresets[0][96].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EjectEnd01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][97].samples[0]; + allPresets[0][97].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][98].samples[0]; + allPresets[0][98].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresInc03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][99].samples[0]; + allPresets[0][99].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresDcr03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][100].samples[0]; + allPresets[0][100].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][101].samples[0]; + allPresets[0][101].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDumpStart01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][102].samples[0]; + allPresets[0][102].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][103].samples[0]; + allPresets[0][103].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][104].samples[0]; + allPresets[0][104].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDumpExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][105].samples[0]; + allPresets[0][105].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "WindLoop01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][106].samples[0]; + allPresets[0][106].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][107].samples[0]; + allPresets[0][107].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][108].samples[0]; + allPresets[0][108].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustainExt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][121].samples[0]; + allPresets[0][121].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllEnviron.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][122].samples[0]; + allPresets[0][122].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllCoolant.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][123].samples[0]; + allPresets[0][123].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllButtons.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][124].samples[0]; + allPresets[0][124].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllEngine.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][125].samples[0]; + allPresets[0][125].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllAlarms.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][126].samples[0]; + allPresets[0][126].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllProjectile.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[0][127].samples[0]; + allPresets[0][127].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllAcceleration.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][0].samples[0]; + allPresets[1][0].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][1].samples[0]; + allPresets[1][1].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][2].samples[0]; + allPresets[1][2].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][3].samples[0]; + allPresets[1][3].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][4].samples[0]; + allPresets[1][4].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][5].samples[0]; + allPresets[1][5].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][6].samples[0]; + allPresets[1][6].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision07.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][7].samples[0]; + allPresets[1][7].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision08.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][8].samples[0]; + allPresets[1][8].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision09.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][9].samples[0]; + allPresets[1][9].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision10.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][10].samples[0]; + allPresets[1][10].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Collision11.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][11].samples[0]; + allPresets[1][11].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][12].samples[0]; + allPresets[1][12].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][13].samples[0]; + allPresets[1][13].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][14].samples[0]; + allPresets[1][14].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][15].samples[0]; + allPresets[1][15].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][16].samples[0]; + allPresets[1][16].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][17].samples[0]; + allPresets[1][17].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt07.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][18].samples[0]; + allPresets[1][18].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt08.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][19].samples[0]; + allPresets[1][19].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt09.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][20].samples[0]; + allPresets[1][20].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][21].samples[0]; + allPresets[1][21].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][22].samples[0]; + allPresets[1][22].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][23].samples[0]; + allPresets[1][23].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][24].samples[0]; + allPresets[1][24].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][25].samples[0]; + allPresets[1][25].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][26].samples[0]; + allPresets[1][26].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][27].samples[0]; + allPresets[1][27].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][28].samples[0]; + allPresets[1][28].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][29].samples[0]; + allPresets[1][29].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][30].samples[0]; + allPresets[1][30].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][31].samples[0]; + allPresets[1][31].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][32].samples[0]; + allPresets[1][32].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][33].samples[0]; + allPresets[1][33].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][34].samples[0]; + allPresets[1][34].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][35].samples[0]; + allPresets[1][35].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][36].samples[0]; + allPresets[1][36].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "TorsoTwistStop01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][37].samples[0]; + allPresets[1][37].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][38].samples[0]; + allPresets[1][38].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][39].samples[0]; + allPresets[1][39].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "FootFallInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][40].samples[0]; + allPresets[1][40].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][41].samples[0]; + allPresets[1][41].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt02LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][42].samples[0]; + allPresets[1][42].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt03LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][43].samples[0]; + allPresets[1][43].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt04LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][44].samples[0]; + allPresets[1][44].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt05LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][45].samples[0]; + allPresets[1][45].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt06LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][46].samples[0]; + allPresets[1][46].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt07LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][47].samples[0]; + allPresets[1][47].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][48].samples[0]; + allPresets[1][48].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp02LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][49].samples[0]; + allPresets[1][49].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp03LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][50].samples[0]; + allPresets[1][50].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp04LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][51].samples[0]; + allPresets[1][51].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp05LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][52].samples[0]; + allPresets[1][52].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp06LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][53].samples[0]; + allPresets[1][53].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][54].samples[0]; + allPresets[1][54].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][55].samples[0]; + allPresets[1][55].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][56].samples[0]; + allPresets[1][56].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][57].samples[0]; + allPresets[1][57].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][58].samples[0]; + allPresets[1][58].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][59].samples[0]; + allPresets[1][59].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][60].samples[0]; + allPresets[1][60].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][61].samples[0]; + allPresets[1][61].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][62].samples[0]; + allPresets[1][62].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][63].samples[0]; + allPresets[1][63].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][64].samples[0]; + allPresets[1][64].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt06.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][65].samples[0]; + allPresets[1][65].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][66].samples[0]; + allPresets[1][66].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][67].samples[0]; + allPresets[1][67].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][68].samples[0]; + allPresets[1][68].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][69].samples[0]; + allPresets[1][69].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][70].samples[0]; + allPresets[1][70].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][71].samples[0]; + allPresets[1][71].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][72].samples[0]; + allPresets[1][72].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][73].samples[0]; + allPresets[1][73].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][74].samples[0]; + allPresets[1][74].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion02LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][75].samples[0]; + allPresets[1][75].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion03LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][76].samples[0]; + allPresets[1][76].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion04LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][77].samples[0]; + allPresets[1][77].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion05LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][78].samples[0]; + allPresets[1][78].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][79].samples[0]; + allPresets[1][79].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion02LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][80].samples[0]; + allPresets[1][80].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion03LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][81].samples[0]; + allPresets[1][81].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion04LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][82].samples[0]; + allPresets[1][82].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion05LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][83].samples[0]; + allPresets[1][83].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MechExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][84].samples[0]; + allPresets[1][84].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][85].samples[0]; + allPresets[1][85].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][86].samples[0]; + allPresets[1][86].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][87].samples[0]; + allPresets[1][87].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][88].samples[0]; + allPresets[1][88].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][89].samples[0]; + allPresets[1][89].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Damage01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][90].samples[0]; + allPresets[1][90].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Damage03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } + { SAMPLEINFO &s = allPresets[1][91].samples[0]; + allPresets[1][91].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Damage02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][92].samples[0]; + allPresets[1][92].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][93].samples[0]; + allPresets[1][93].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][94].samples[0]; + allPresets[1][94].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][95].samples[0]; + allPresets[1][95].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][96].samples[0]; + allPresets[1][96].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt05.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][97].samples[0]; + allPresets[1][97].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "MechFireLoop01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][98].samples[0]; + allPresets[1][98].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "ElectricDamage01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][99].samples[0]; + allPresets[1][99].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][100].samples[0]; + allPresets[1][100].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExplosion02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][101].samples[0]; + allPresets[1][101].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExplosion03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][102].samples[0]; + allPresets[1][102].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExp01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][103].samples[0]; + allPresets[1][103].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExp02LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][104].samples[0]; + allPresets[1][104].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExp03LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][105].samples[0]; + allPresets[1][105].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExpInt01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][106].samples[0]; + allPresets[1][106].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExpInt02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][107].samples[0]; + allPresets[1][107].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "PPCExpInt03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][108].samples[0]; + allPresets[1][108].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][109].samples[0]; + allPresets[1][109].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion02.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][110].samples[0]; + allPresets[1][110].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion03.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][111].samples[0]; + allPresets[1][111].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion04.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][112].samples[0]; + allPresets[1][112].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "SmallFireLoop01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][113].samples[0]; + allPresets[1][113].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Warnings01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][114].samples[0]; + allPresets[1][114].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Translocate01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][115].samples[0]; + allPresets[1][115].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Death01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][116].samples[0]; + allPresets[1][116].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "EngineWindUp01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][117].samples[0]; + allPresets[1][117].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Crunch01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][118].samples[0]; + allPresets[1][118].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "Crunch01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][119].samples[0]; + allPresets[1][119].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AuxExplosion01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][120].samples[0]; + allPresets[1][120].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AuxExplosion01LOD2.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][123].samples[0]; + allPresets[1][123].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllWarning.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][124].samples[0]; + allPresets[1][124].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllDamage.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][125].samples[0]; + allPresets[1][125].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllExplosion.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } + { SAMPLEINFO &s = allPresets[1][126].samples[0]; + allPresets[1][126].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "TorsoStop01.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + { SAMPLEINFO &s = allPresets[1][127].samples[0]; + allPresets[1][127].sampleNum = 1; + s.implemented = true; s.bufferIndex = -1; s.file = "AllHits.wav"; + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + } +} s_audioPresetInit; +} diff --git a/game/reconstructed/btstubs.cpp b/game/reconstructed/btstubs.cpp index 81fa1f5..5d358ff 100644 --- a/game/reconstructed/btstubs.cpp +++ b/game/reconstructed/btstubs.cpp @@ -48,9 +48,10 @@ // Default 1.0 so the mech-age divide in mech.cpp does not divide by zero. Scalar FrameTimeScale = 1.0f; -// TODO(bring-up): audio preset bank table (real data lives in WTPresets/L4AUDLVL). -// Zero-initialised -> PRESET_isImplemented() returns false (no presets) at boot. -PRESETINFO allPresets[2][100] = {}; +// Audio preset bank table -- NOW DEFINED in audiopresets.cpp (241 presets generated +// from the AWE32 SoundFonts AUDIO1/2.RES by scratchpad/sf2extract.py, task #50 +// 2026-07-15). The old zero-init stub here (PRESET_isImplemented -> false -> silent) +// is replaced by the real bank/preset->sample map. //===========================================================================// // BattleTech globals (status-message pool + hand-rolled vtable pointers the diff --git a/tools/sf2extract.py b/tools/sf2extract.py new file mode 100644 index 0000000..1fa3c0d --- /dev/null +++ b/tools/sf2extract.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +"""sf2extract.py -- extract the BattleTech AWE32 SoundFonts (AUDIO1/2.RES) into +loose WAV files + generate the allPresets[] C++ table for the WinTesla port. + +The banks are SoundFont **v1.0** (ifil 1.0, EMU8000): the `shdr` sample headers are +16 bytes {dwStart,dwEnd,dwStartLoop,dwEndLoop} (NO name/rate field -- the v2.0 +46-byte layout does not apply). Samples are 16-bit mono PCM in `smpl`. Preset -> +sample resolves through phdr->pbag->pgen(inst=41)->inst->ibag->igen(sampleID=53)->shdr. + +Output: + content/AUDIO/.wav (one per preset; the L4AUDRES loader sf_opens these) + game/reconstructed/audiopresets.cpp (the allPresets[2][100] table, replaces the + btstubs.cpp zero-init stub) + +Sample rate: SF2 v1.0 shdr has no per-sample rate; these were authored at 22050 Hz +(SAMPLE_RATE below -- adjust if pitch is wrong). Loop is taken from the shdr loop +points (a real loop region -> LoopAtWill; else ForceStatic one-shot). +""" +import struct, os, wave + +HERE = os.path.dirname(__file__) +AUDIO = os.path.join(HERE, "..", "content", "AUDIO") +OUT_CPP = os.path.join(HERE, "..", "game", "reconstructed", "audiopresets.cpp") +SAMPLE_RATE = 22050 + +def parse_bank(path): + d = open(path, "rb").read() + assert d[:4]==b"RIFF" and d[8:12]==b"sfbk" + def find(fc): p=d.find(fc); return p+8, struct.unpack_from(" ls + 8) and (le <= en) + out.append((preset, name, smpl[st*2:en*2], looping)) + return out + +def write_wav(name, pcm): + with wave.open(os.path.join(AUDIO, name+".wav"), "wb") as w: + w.setnchannels(1); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) + w.writeframes(pcm) + +def main(): + banks = {1:"AUDIO1.RES", 2:"AUDIO2.RES"} + table = {1:{}, 2:{}} + for bn, fn in banks.items(): + presets = parse_bank(os.path.join(AUDIO, fn)) + for (preset, name, pcm, looping) in presets: + if not name or not pcm: continue + write_wav(name, pcm) + table[bn][preset] = (name, looping) + print(f"bank {bn} ({fn}): {len(table[bn])} presets extracted to WAV") + # emit allPresets[2][100] + with open(OUT_CPP, "w", newline="\n") as f: + f.write('// GENERATED by scratchpad/sf2extract.py -- the audio soundbank table.\n') + f.write('// Replaces the zero-init allPresets stub (btstubs.cpp) with the real\n') + f.write('// bank/preset -> sample map recovered from the AWE32 SoundFonts\n') + f.write('// (AUDIO1/2.RES, SF2 v1.0). Each preset -> a loose .wav the\n') + f.write('// L4AUDRES loader sf_opens. Regenerate: python scratchpad/sf2extract.py\n') + f.write('#include \n\n') + f.write('PRESETINFO allPresets[2][128] = {};\n\n') + f.write('namespace {\nstruct AudioPresetInit {\n\tAudioPresetInit() {\n') + for bn in (1,2): + for preset, (name, looping) in sorted(table[bn].items()): + loop = "SampleLoop::LoopAtWill" if looping else "SampleLoop::ForceStatic" + f.write(f'\t\t{{ SAMPLEINFO &s = allPresets[{bn-1}][{preset}].samples[0];\n') + f.write(f'\t\t allPresets[{bn-1}][{preset}].sampleNum = 1;\n') + f.write(f'\t\t s.implemented = true; s.bufferIndex = -1; s.file = "{name}.wav";\n') + f.write(f'\t\t s.chan = SampleChannel::CHANNEL_CENTER; s.loop = {loop}; }}\n') + f.write('\t}\n} s_audioPresetInit;\n}\n') + total = len(table[1]) + len(table[2]) + print(f"wrote {OUT_CPP} ({total} presets)") + +if __name__ == "__main__": + main()