INFO:This tutorial is going to cover multiple different types of audio replacements, such as music, voices, and sound effects. Some programs you will need to find on your own, but can be found with a quick Google search.
What you'll need for either
- Switch BotW dump of basegame, update + DLC (This tutorial by CraftyBoss will help)
- BCFSTM-BCFWAV-Converter by Aboood40091
- Sarc_tool by Aboood40091
- Foobar2000 and the vgmstream plugin
- Python 2.7 and 3.7
LINK VOICES, SOUND EFFECTSWhat you'll need:
- MK8 Voice Tools
- BotW Tools (RepackBars.py) by Aaaboy97
- Switch .bars extractor QuickBMS script by RandomTalkingBush
Assuming you have your dump of the game, you first want to find the .bars file you want to change. PlayerVoice (Link's voice) and others are in TitleBG.pack, and others can be found in other .packs. (romfs\Pack) To extract a .pack, drag it onto sarc_tool.exe, and it will output a folder with the contents. Other sound effects and voices can be found in romfs\Sound\Resource. To extract a .bars file, open QuickBMS, and open your script with it, then the .bars file, and a folder to save your files in. It should extract your sound effects. You can open these .bfwav files with foobar2000. Now, you need your sounds that you want to add into the game. They must be in wav 16-bit format and the same Hz as the original .bfwav. (you can check by opening the .bfwav in foobar2000, it says at the bottom) They also need to be the same name and be shorter than the original. Once you have your files ready, convert them to .bfwav using NW4F_WaveConverter.exe, and remove .dspadpcm from all of them. Now they need to be converted from big endian to little endian with BCFSTM-BCFWAV-Converter. If you open up an original .bfwav in HxD, look at the first line. It will say FWAVÿþ (or FF FE in offsets 04 and 05 respectively.) This is a little endian file. Open up your newly converted .bfwav and it will say FWAVþÿ (FE FF) which is big endian. Put all your new .bfwav files into the same directory as main.py. Create a new text file, open it with notepad++, and put this into it.
for /r %%i in (*.bfwav) do main.py -format FWAV -bom 1 "%%i"Now, save it as a .bat file called something like convertFWAV.bat. Run this file, and it should show every file being converted. If not, and it says it will close in 5 seconds, open the .bat file and add python between do and main.py, so it looks like:
for /r %%i in (*.bfwav) do python main.py -format FWAV -bom 1 "%%i"Now, every file should be converted to little endian. To make sure, open your new .bfwav with HxD and it should say FWAVÿþ (FF FE) at the beginning. We are now ready to inject the new .bfwavs with RepackBars.py. Create a new folder, call it something like NewFiles, and put all of your NEW .bfwavs in it. Put all of the ORIGINAL .bfwavs in a new folder called something like OldFiles. Put the original x.bars next to those folders. Open the BotW tools and find RepackBars.py, shift click the window and open command window here. Type RepackBars.py, drag x.bars into the cmd, then drag your OldFiles folder into the cmd, put a space, then drag your NewFiles folder into the cmd, and hit enter. It should list every .bfwav in the .bars file and whether it's being replaced, and create output.bars in the same folder as the script. If it doesn't work, add python before RepackBars.py and try it again. Rename output.bars to the original .bars file name. Skip to the end if this was what you wanted to replace.
BFSTP FilesSome .bars files may contain .bfstp files instead of .bfwav files. You can listen to the .bfstp files by converting them to .bfstm with BCFSTM-BCFWAV-Converter. Put your .bfstp in the same directory as main.py. Create a new text file, put this in it, convert it to .bat and run it.
for /r %%i in (*.bfstp) do main.py -format FSTM -bom 1 "%%i"There should now be a new file with the same name but with the extension .bfstm, which you can listen to in foobar2000. To convert your .bfstm to .bfstp, create a new text file, put this in it, convert to .bat and run.
for /r %%i in (*.bfstm) do main.py -format FSTP -bom 1 "%%i"You should be able to use the method at the end of the previous section, but have the .bfstp's instead of the .bfwav's.
MUSICWhat you'll need:
FSTMÿþ (or FF FE in offsets 04 and 05 respectively) which is little endian. Open up your newly made .bfstm with HxD and it will say FSTMþÿ (FE FF) which is big endian. We want the new file to be little endian. Put the new file in the same directory as main.py (BCFSTM-BCFWAV-Converter) create a new text file, and open it with notepad++. Put this in: