The Crazy Taxi re-release on Playstation Network and Xbox Live Arcade is pretty faithful to the arcade and Dreamcast versions, but it’s missing the original soundtrack! That may seem a petty complaint, but I’m not the only one who misses the atmosphere of Bad Religion and Offspring:

But one very important ingredient is missing that kills the nostalgia – which is really the only reason to spend any money on this outdated download. SEGA didn’t have any problems overcharging for this remake, but it didn’t want to spend any money to re-up the licensing agreement for the soundtrack. (IGN)

It was hard to play the Xbox Live Arcade version without hearing the Offspring’s familiar “Yeah yeah yeah yeah!” blasting out of the speakers. The Offspring, along with Bad Religion, provided the game’s soundtrack in the original release. These songs, along with the sound of that announcer, went a long way toward creating the game’s mood. In the new version, they have been replaced by completely forgettable pop-punk tracks, and it’s a downgrade. (Ars)

Luckily for us, we can swap the music back to something more interesting with only a few tools:

Use existing music files

I wanted some songs from Crazy Taxi 1 and 2. Dreamcast owners may have trouble getting files off GD-ROM unless you have a Dreamcast serial cable or make an SD dump:

…or you could just download a copy!

No matter how you obtain it, SONG01.AFS on the Crazy Taxi disc contains the tracks we’re after. Split it into individual music tracks with afs_extract :

./afs_extract SONG01.AFS SONG01.AFS - 9 SONG01_00.adx 00080000 0004f000 SONG01_01.adx 000cf000 001ceeee SONG01_02.adx 0029e000 000fea42 SONG01_03.adx 0039d000 00313db2 SONG01_04.adx 006b1000 004a8e1e SONG01_05.adx 00b5a000 006577e6 SONG01_06.adx 011b1800 00647742 SONG01_07.adx 017f9000 004f57f2 SONG01_08.adx 01cee800 000ff800

The resulting files are:

Filename Identity SONG01_00.adx Menu loop SONG01_01.adx Menu Loop long SONG01_02.adx Hear It intro (Driver select) SONG01_03.adx Bad Religion - Inner Logic (Credits) SONG01_04.adx Bad Religion - Ten in 2010 SONG01_05.adx Bad Religion - Them and Us SONG01_06.adx The Offspring - Way Down the Line SONG01_07.adx The Offspring - All I Want SONG01_08.adx Driver select again

Crazy Taxi 2 also has a SONG01.AFS , but it only contains the menu loop and driver select loop. The rest of the songs are individual ADX files on-disc:

Filename Identity SONG01_00.adx Menu loop SONG01_01.adx Methods of Mayhem - Who The Hell Cares (Driver select) SONG3.adx The Offspring - No Brakes SONG4.adx The Offspring - Walla Walla SONG05_01.adx The Offspring - Come Out Swinging Intro SONG05_02.adx The Offspring - Come Out Swinging SONG6.adx The Offspring - One Fine Day SONG7.adx Methods of Mayhem - Crash SONG7US.adx Methods of Mayhem - Crash (A cappella)

Creating new music files

Wav2adx and adxencd can create ADX files out of standard PCM wav audio. Wav2adx choked on the wav files created by flac -d , but adxencd works fine in WINE:

for i in *.flac; do flac -d “$i”;done for i in *.wav; do wine /home/nicole/Desktop/adxencd.exe “$i”;done

for i in *.flac; do flac -d "$i";done && for i in *.wav; do wine /home/nicole/Desktop/adxencd.exe "$i";done |||||||||||| ADX Audio decompression tool Ver.4.70 |||||||||| Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI Input sound data file: '02 - Nitro (Youth Energy).wav' ADX Compressed data file : '02 - Nitro (Youth Energy).adx' Sampling frequency : 44100 Hz = Input sound data No. of channels : 2 Input audio sample : 6480936 smpl = 146.0 sec <44100 Hz> ADX output sample : 6480936 smpl(Blk:6480960 smpl) = 146.0 sec <44100 Hz> .................... |||||||||||| ADX Audio decompression tool Ver.4.70 |||||||||| Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI Input sound data file: '05 - Give You Nothing.wav' ADX Compressed data file : '05 - Give You Nothing.adx' Sampling frequency : 44100 Hz = Input sound data No. of channels : 2 Input audio sample : 5390784 smpl = 122.0 sec <44100 Hz> ADX output sample : 5390784 smpl(Blk:5390784 smpl) = 122.0 sec <44100 Hz> .................... |||||||||||| ADX Audio decompression tool Ver.4.70 |||||||||| Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI Input sound data file: '06 - Something to Believe In.wav' ADX Compressed data file : '06 - Something to Believe In.adx' Sampling frequency : 44100 Hz = Input sound data No. of channels : 2 Input audio sample : 8714160 smpl = 197.0 sec <44100 Hz> ADX output sample : 8714160 smpl(Blk:8714176 smpl) = 197.0 sec <44100 Hz> .................... |||||||||||| ADX Audio decompression tool Ver.4.70 |||||||||| Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI Input sound data file: '09 - Suffer.wav' ADX Compressed data file : '09 - Suffer.adx' Sampling frequency : 44100 Hz = Input sound data No. of channels : 2 Input audio sample : 4743984 smpl = 107.0 sec <44100 Hz> ADX output sample : 4743984 smpl(Blk:4744000 smpl) = 107.0 sec <44100 Hz> .................... |||||||||||| ADX Audio decompression tool Ver.4.70 |||||||||| Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI Input sound data file: '12 - So Alone.wav' ADX Compressed data file : '12 - So Alone.adx' Sampling frequency : 44100 Hz = Input sound data No. of channels : 2 Input audio sample : 3407460 smpl = 77.0 sec <44100 Hz> ADX output sample : 3407460 smpl(Blk:3407488 smpl) = 77.0 sec <44100 Hz> .................... ||| ||||||||| ADX Audio decompression tool Ver.4.70 |||||||||| Software Audio Encoder for "CRI ADX for Dreamcast" 1999-11-30 Copyright(c) 1996-1999 CRI Input sound data file: '13 - Do What You Want.wav' ADX Compressed data file : '13 - Do What You Want.adx' Sampling frequency : 44100 Hz = Input sound data No. of channels : 2 Input audio sample : 2960580 smpl = 67.0 sec <44100 Hz> ADX output sample : 2960580 smpl(Blk:2960608 smpl) = 67.0 sec <44100 Hz> ....................

Replacing the files

Use wxPirs (runs in Mono!) to extract the Crazy Taxi package, demo or paid. The package is Content/0000000000000000/58410A34/000D0000/8CCAFCF0BCA37A5854932556831B08F3542CC94358 on the Xbox hard drive.

After that, it’s just a matter of copying the replacement files to SoundData/music_adx with the filename of an existing track.

cd SoundData/music_adx cp '/home/nicole/Desktop/CT1/SONG01_00.adx' name_loop.adx cp '/home/nicole/Desktop/CT1/SONG01_04.adx' Escape_Artist.adx cp '/home/nicole/Desktop/CT1/SONG01_05.adx' Flinch.adx cp '/home/nicole/Desktop/CT1/SONG01_06.adx' Get_Out.adx cp '/home/nicole/Desktop/CT1/SONG01_07.adx' Jump_Bink.adx cp '/home/nicole/Desktop/CT2/SONG3.ADX' Orange_Wednesday.adx cp '/home/nicole/Desktop/CT2/SONG4.ADX' Radiator.adx cp '/home/nicole/Desktop/Convert/02 - Nitro (Youth Energy).adx' Radical_Sabbatical.adx cp '/home/nicole/Desktop/Convert/05 - Give You Nothing.adx' Ragdoll.adx cp '/home/nicole/Desktop/Convert/06 - Something to Believe In.adx' Spy_Chaser.adx cp '/home/nicole/Desktop/Convert/09 - Suffer.adx' Taking_It_Back.adx cp '/home/nicole/Desktop/Convert/12 - So Alone.adx' The_Chase.adx cp '/home/nicole/Desktop/Convert/13 - Do What You Want.adx' Your_Mouth_Is_A_Guillotine.adx

name_loop.adx is played during the main menu and mode select, and The_Chase.adx in played during driver select in addition to in-game.

Finish up

You can use Le Fluffie, the free alternative to XLAST from the XDK, to make a replacement LIVE package of your modified game. Or, you can just execute default.xex :

YEAH YEAH YEAH YEAH YEAH!