First of all, I want to mention that this post is entirely for educational purposes only: It’s just a retrospective and inspection of a compression method used by a warez group…and only that.

Hello everyone! This time, I’m going to talk about something that has quite intrigued me before, about how it was pretty impressive AND functional, and that I have mostly figured out how it was done: The WAVE Injector.

Now, to understand what all this even means, I’m going to explain where all this comes from. It started in the warez group CLASS, which was founded in January 1, 1997 (and disbanded in January 9, 2004: 7 years after their appearance) and released quite a lot of cracked games, notably “ripped” ones, which weren’t necessarily complete as most didn’t include things like the game’s movies and music, but also specialized in compressing them. The method that CLASS used to compress and release their games was comprised by using the ACE compression format, which was the best for the time and could be used by custom-made installers; and the aforementioned “WAVE Injector” by “CLASS/BACKLASH”. While it may have existed before, I can say that from May 7, 2001, the date when Mr. Driller for PC was released by the group, this WAVE Injector was being used in many games.

Something notable is how mostly the file that actually compressed the WAV files was named “mp3unpack”, but the WAVE Injector also had a important role which did have to do with it’s name, which will be discussed soon. But regardlessly, both programs have interesting functions.

On the topic of mp3unpack and WAVE Injector themselves, mp3unpack seems to be a self-contained extractor that ALSO converts MP3 files inside it to WAV (Which could lead to it’s name “mp3unpack”: Unpacks and converts MP3 files). I’m not sure if this is true, nor if the audio files can be extracted from these mp3unpack executables, but judging by the name, filesize and function,  it’s safe to assume that it does the function above under a loading-bar interface.


About the actual WAVE Injector, it also seems to do what it’s name says: Injects WAVE files inside another file. By knowing what file to target with injection through a command-line parameter and automatically detecting the unpacked WAV files to inject through their filenames, it fills said targeted file (which is supposed to be mostly dummied out) with the WAV data. This is used for the games that instead of just using the WAV files, they use a archive that contains all of the music data.


In the case of Mr. Driller, the game uses “rom” files for it’s data, and there are the “songs.rom” and “se.rom” files which are the ones that contain music and sound respectively. Because of how it uses a single archive instead of separate WAVs, after using mp3unpack and extracting the WAV files, the program needs to inject them into the (purposely mostly dummied out by them) .rom files through a batch file that passes the following command-line parameters:

@startw inject.exe "data\songs.rom" "data\se.rom"

Note that it points to a “data” folder since there is where the .rom files and the unpacked WAVs are.  The unpacked WAV files seem to have some kind of adresses in their filenames, or in other words, the adresses or locations where said files would have to be injected each one, which would also allow the program to inject in proper order each file.


The WAVE Injector also seems to check if the files unpacked properly, as it checks for the filesize of them. When I experimented attempting to replacing one wav file with another one and then running the injector, I ran with this error:


Now, for games that simply use WAV files without any archive, like The House of the Dead II, only the mp3unpack program is included, as it extracts all the needed WAV files and it’s done. Also, it gotta be noted that the mp3unpack and WAVE Iinjector programs are mostly the same but their content (obviously) depends of the game: mp3unpacker always uses the same MP3>WAV compression technique but of course the extracted WAV files correspond to the game where they are used, while the injector is intended for a specific game, which leads to it checking the filesizes of the unpacked WAVs to see if they are correct (should the game use WAVEInjector).

To wrap up this post, with mp3unpack (Which is often confused with WAVE Injector) and WAVE Injector explained, the rest of compression (ACE) is just the compression archive doing it’s job. Here is the source where I found about the thing that the mp3unpack did, and if you also want to do this kind of compression trick with WAV files too, you can check this post, which was made to achieve a similar result to what mp3unpack does (except with the custom GUI). If you liked this post, drop by a comment, remember to check out everything else here and keep tuned for more.