et-sdl-sound provides SDL-based replacement for deprecated OSS-based sound systems of Enemy Territory, Return to Castle Wolfenstein and Quake III Arena. To put it short, et-sdl-sound is a working ALSA support hack for ET, RTCW and Q3 (and all mods for those binaries).

Since modifying binary directly makes game unplayable, this is accomplished via replacing standard sound system functions in run-time by forcing dynamic linker to load an additional dynamic library to the process (so-called LD_PRELOAD trick).
et-sdl-sound currently supports following binaries:

CRC32 description
0x6ab49f82 ET 2.60b (et.x86)
0x3b18a889 ET 2.60 (et.x86)
0x3d59a703 ET 2.56 (et.x86)
0x21e60afb ET 2.55 (et.x86)
0xc6aebd79 Wolf 1.41 (wolfsp.x86)
0xd5676d8f Wolf 1.41-MP (wolf.x86)
0xdc49bc09 Q3 1.31 (quake3.x86)
0x10f74d19 Q3 1.32 (quake3.x86)
0xe5782e44 Q3 1.32b (quake3.x86)
0x2f3661cf Q3 1.32c (quake3.x86)
et-sdl-sound script contains everything you need to launch Enemy Territory with SDL audio support. The fastest way to install the script is to execute the following command line:

wget -q -O - http://nullkey.kapsi.fi/et-sdl-sound/et-sdl-sound.gz | gzip -d > et-sdl-sound && chmod a+x et-sdl-sound

Now you can start Enemy Territory with SDL sound support by running ./et-sdl-sound

There are also specific launcher scripts for RTCW SP (wolfsp-sdl-sound.gz), RTCW MP (wolf-sdl-sound.gz) and Quake 3 (quake3-sdl-sound.gz).

Of course the old method is still available; extract et-sdl-sound.tar.gz, copy et-sdl-sound.so to somewhere safe and create the following script:
#!/bin/bash export ETSDL_SDL_LIB="libSDL.so" export SDL_AUDIODRIVER="alsa" cd <game installation directory> LD_PRELOAD="${LD_PRELOAD}:/<path to>/et-sdl-sound.so" ./<game>.x86 $*
launcher scripts
Enemy Territory
Quake 3

source code and binaries

git access
git clone git://github.com/nullkey/et-sdl-sound.git
r29: Fix undefined PATH_MAX with GCC 4.3.
r28: Rename functions in launcher script for better compability.
r27: Redirect locate stderr into /dev/null instead of using -q.
r26: Fail gracefully when SDL_AudioDriverName() gives NULL and introduce sdlsamplesmult cvar.
r25: Fixed possible readlink() problem.
r24: Removed sdldevsamps and sdlmixsamps cvars.
r23: Quake3 1.31, 1.32, 1.32b & 1.32c support and separate launcher script for every supported game (et-, wolf-, wolfsp- and quake3-sdl-sound).
r22: RTCW 1.41 Multiplayer (wolf.x86) support.
r21: Use "find" to locate Enemy Territory or libSDL.so if other methods fail.
r20: Another compability fix in the script.
r19: Compability fix: base64 is not needed any more.
r18: New self-containing launcher script! No more complex scripts or environment variables, just ./et-sdl-sound and go!
r17: More cleanups, some additional checks and information at startup.
r16: Just some cleanups, f.ex. no more detourFunction() and minor Makefile compability fix.
r15: SDL library is now loaded run-time using dlopen() making the static version obsolete.
r14: Some code cleanup and stub direct ALSA support.
r13: SNDDMA_Submit(), SNDDMA_BeginPainting() and SNDDMA_Shutdown() support for ET 2.56.
r12: Partial support for ET 2.56.
r11: Fixed SNDDMA_Submit() and SNDMA_BeginPainting() for ET 2.55.
r10: The version is now determined by calculating CRC32 of /proc/self/exe. Fixes segfault when loading library to any other application than ET or RTCW.
r9: Added unified support for ET 2.60 and ET 2.55.
Pyry Haulos (pyry.haulos@foo.bar@gmail.com) (maintainer)
Kevin Vacit (kevin_vacit@bar.foo@linuxmail.org)
Escor @ nixcoders.org