I'm working with "CHAR_Deathstroke_D.xxx" in this tutorial.
Be prepared if you want this to work on all languages, you have to modify all the language files. For now I explain it for the english files. Simply injecting the english FSB file to all language archives won't work because most of the FSB files have different offsets in their corresponding .xxx archive!
Also just for information, the regular announcer from the character selection screen CAN NOT be changed yet (it didn't work for me). You can edit the mp3 file but it will still play the announcer sound of the main character (in my example Deathstroke). Don't know how to fix this yet.
This is the result:
https://vimeo.com/82154888 [Wager sounds at the end of video]
TOOLS NEEDED
- Sound editing software (Adobe Audition or another)
- decompress.exe {by Gildor}
- FsbExtractor {by Aezay} (attached to this post, see below)
- Generic Renamer {by HowardC}
- Generic Injector {by HowardC}
- Hex Editor
After collecting a few sound shots (I took these) we can start off editing the files.
Get SND_SPEECH_Deathstroke_eng.xxx from your "DiscContentPCG\Sounds" folder. Drag this over decompress.exe and continue working with the decompressed file, delete the old one. Move the new file to your "Generic Renamer" folder because we prepare the file for your DLC character.
Start MKKEGenericRenamer.exe and fill the boxes as following:
Code: Select all
Archive to Search for Strings: SND_SPEECH_Deathstroke_eng.xxx
Original String: SND_SPEECH_Deathstroke_eng
New String: SND_SPEECH_DP_eng
Code: Select all
Archive to Search for Strings: SND_SPEECH_Deathstroke_eng.xxx
Original String: SND_SPEECH_Deathstroke
New String: SND_SPEECH_DP
STEP 2 - Creating the original FSB bank
Your speech file should be ready. Now we need to find the offsets to create our original FSB files first. Open the Hex Editor and open your .xxx file in it. Search for "FSB5" string. There is only one inside. Now we know our original FSB file is called "embedded_0002282f.fsb". You need this original file to inject your modified FSB file later.
Make a copy of "SND_SPEECH_DP_eng.xxx" and rename it to embedded_0002282f.fsb. Open this in the Hex Editor again. Search again for "FSB5" and remove everything BEFORE the string "FSB5".
Now go to the the end of the file and remove the following block. (Only remove the line with null bytes if the FsbExtractor gives you a warning!) Our original FSB is ready. That's what fsbii.exe does with FSB4 file format automatically.
STEP 3 - Mod your sounds
If you want you can now export all the mp3 files from your FSB with FsbExtractor and modify them. Just drag & drop the FSB bank to the FsbExtractor.
Please make sure your files are smaller or the same size as the original files! That's important, otherwise you can't inject them back!
Usually the files are:
- 48 kHz
- CBR (constant bitrate)
- 128 - 320 kbps (this varies from file to file)
STEP 4 - Create modded FSB bank and inject
Now we can create our modded FSB file to inject it back. You can try creating a new FSB from scratch with fsbank.exe (make sure you use the correct settings on creating). Otherwise we can inject mp3 files with HowardC's Generic Injector. That's how I did it until now.
Copy (!!!) embedded_0002282f.fsb, original_sound.mp3, your_modded_sound.mp3 to the Generic Injector folder.
Code: Select all
Archive to Inject Into: embedded_0002282f.fsb
Original File: original_sound.mp3
New File: your_modded_sound.mp3
If your modded FSB bank is done, you need to inject it back to the .xxx archive. But before this, rename your new FSB file to something like "modded_embedded_0002282f.fsb".
Code: Select all
Archive to Inject Into: SND_SPEECH_DP_eng.xxx
Original File: embedded_0002282f.fsb
New File: modded_embedded_0002282f.fsb
The last step is to make your character file ready for the new sound archive, with renaming the strings it will now play the sounds of your modified SND_SPEECH archive.
Open CHAR_Deathstroke_D.xxx in the Generic Renamer, doing this:
Code: Select all
Archive to Search for Strings: CHAR_Deathstroke_D.xxx
Original String: SND_SPEECH_Deathstroke_eng
New String: SND_SPEECH_DP_eng
Code: Select all
Archive to Search for Strings: CHAR_Deathstroke_D.xxx
Original String: SND_SPEECH_Deathstroke
New String: SND_SPEECH_DP
I know this can be a little bit confusing probably on the first try, but if you done this a few times, it's really easy. You can do the same steps on your Intro and Victory files.
For example there you work with:
- Joker_Intro.xxx and SND_CIN_INT_Joker_eng.xxx
or
- Joker_Victory.xxx and SND_CIN_VIC_Joker_eng.xxx