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).
about
support
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) |
install
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:
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:
wget -q -O - http://nullkey.ath.cx/~stuff/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 $*
download
launcher scripts
source code and binaries
git access
| et-sdl-sound.gz | Enemy Territory | |
| wolf-sdl-sound.gz | RTCW MP | |
| wolfsp-sdl-sound.gz | RTCW SP | |
| quake3-sdl-sound.gz | Quake 3 |
source code and binaries
| et-sdl-sound.tar.gz | (archive) |
git access
git clone git://nullkey.ath.cx/~pyry/et-sdl-sound
changelog
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.
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.
authors
Pyry Haulos (pyry.haulos@foo.bar@gmail.com) (maintainer)
Kevin Vacit (kevin_vacit@bar.foo@linuxmail.org)
Escor @ nixcoders.org
Kevin Vacit (kevin_vacit@bar.foo@linuxmail.org)
Escor @ nixcoders.org