What you will need:
1. A full dump of Mario Kart 8 Deluxe (with the .nca containing the game fully extracted) and your BGM.bars
2. A copy of Mario Kart 8 Deluxe (Physical or Digital)
3. A microsd card (duh)
5. slashiee's StreamTool
6. AboodXD's BFSTM-BCFWAV-Converter
8. A hex editor such as HxD
9. The latest release of Python
10. A song of your choosing
FOR MULTI CHANNEL BFSTMS:
2. Multi BRSTM Converter GUI
1. Converting the musicIn Audacity, open up the song of your choosing. You may alter the song as much as you like. Once ready, go to file -> export -> export to wav, and name the song to the exact same name of the song you are going to replace in-game. A full list of songs can be found here. *Note: The N at the end of the name is for laps 1 & 2, and the F is for lap 3.
Next, extract the contents of slashiee's streamtool to wherever you desire. Then double click on the ~SETUP.bat file. Once ready, you will be redirected to the ffmpeg download website. Select the 32-bit nightly shared version of ffmepg, and download the archive. Extract all of the contents of the bin folder (Not the bin folder itself!) into the streamtool folder. Next drag your .wav of your song into the streamtool folder. Then drag the song onto this batch: "Convert to BFSTM (Switch PCM16).bat", and wait for it to convert.
Download the latest version of Python, and when installing it, you will see a box saying "Add python to PATH". Click on this box and make sure it has a check mark inside of it. After Python has installed, download AboodXD's BFSTM-BCFWAV-Converter, extract it, and move the bfstm of your song to the folder. Click on the address bar in file explorer and type in cmd, then hit enter. In the command prompt, type in this command:
main.py-format FSTP -bom 1 "name of your bfstm.bfstm"
Replace "name of your bfstm" with the actual name of your song. If done correctly you should have a .bfstp of your song.
FOR MULTI CHANNEL BFSTMS:
Some songs use 6+ channels, which will require the exact same amount of channels in your bfstm. This includes Water Park, Super Bell Subway, Electrodrome, Mt. Wario, Cloudtop Cruise, and Dolphin Shoals. For this we will copy the song about 2 more times in audacity, and split all the channels to mono, giving us 6 channels. Go to the 2 channels below the top 2 channels and silence them. Next go to file -> export -> export multiple, and make sure they are .wav files. Download and extract the multi brstm gui builder and export all of the channels (as individual songs) to the wav folder inside of the Multi BRSTM Builder GUI folder. Rename each channel to these EXACT numbers from top to bottom: 1, 2, 3, 4, 5, 6. It should look something like this:
Go back to the main folder and startup the Multi BRSTM Gui application. Select the exact amount of channels your song has and then open up brawlbox. Go to file->new->new brstm audio stream, and open any of the wav files in the wav folder. In Multi BRSTM Gui tick the "Loop" box and in brawlbox copy the values in the END box and paste them in the end box in Multi BRSTM Gui. Then in the box for naming, name the file to the song you will replace and click "Build batch file". Then run build.batch in the Multi BRSTM Gui Builder folder. *This will take a while, please be patient!
Once it has finished, go into the out folder and move your brstm into the streamtool folder, and go to the "Convert to BFSTM (Switch PCM16" batch, right click on it and edit it in note pad. Look in the text for any thing that says .wav, and replace it with .brstm. *Make sure to change these back to .wav for later once you are finished! Save it, and drag your brstm onto the batch file, and wait for it to convert. Then convert to a bfstp as stated above.
2. Replacing the header in BGM.barsBGM.bars is the file used to make sure our music is played properly in-game so there will be no issues. You will find this file in your out put folder\Audio\Static. *It is recommended you keep a backup of this file in case if anything goes wrong! Now download BARSViewer and extract it to whereever, and open it up. Select your BGM.bars, and extract all of the contents of it. It should be in a folder called BGM. Now download and install HxD, and open up your BGM.bars, the bfstp of your custom bfstm, and the original bfstp header inside of the BGM folder. (Make sure it is named to the song you are about to replace!) Rename your custom bfstp to something like "pBGM_WU_TECHNO_N(mod).bfstp". In the original BFSTP header, select a couple of lines and copy them, They don't have to be specfic, we are only using these to find the header inside of BGM.bars. Copy these. Go to BGM.bars and go to search->find, then go to hex values. Paste the hex values you just copied from the original bfstp into here, and you will find the original BFSTP header. Click in front of the VERY FIRST value, like right here:
Now go back to your original BFSTP and hit Ctrl + A to select ALL of the bytes. You should be able to see a length at the bottom, as shown here:
Now go to your custom BFSTP, and go to edit -> selct block, and then click on legnth and type in the EXACT length of the original BFSTP, like here:
This will select a block of bytes the same legnth as the original BFSTP. Copy these bytes, and go back to BGM.bars. MAKE SURE YOUR TYPING CURSOR IS WHERE I TOLD YOU TO PLACE IT BEFORE, and go to edit -> paste write. This will paste the header of our custom bfstp into BGM.bars. Save the file and close HxD
3. Installing the mods.Remove your microsd card from your switch (make sure it is powered off first!) and insert it into your pc. In the folder of your custom firmware, go to titles and make a new folder (if it isn't already there) and name it to the title id of Mario Kart 8 DX (This will vary from region to region, so look it up yourself.) Inside of that make a folder called RomFS, then inside that make a new folder called Audio. Inside of that make 2 new folders: once called static and one called resource. Move your BGM.bars to the Static folder, and inside of the Resource folder make a new folder called Stream. Place your bfstm in here. Eject your microsd card from your computer, boot into the cfw of your choosing, start Mario Kart 8 DX, and test out the song, hopefully it works!
F.A.QQ: I have speed issues (too slow or too fast)!
A: BGM.bars isn't present. Make sure it is in your cfw folder\titles\mario kart 8 dx titleid\RomFS\Audio\Static.
Q: I have static when my music starts!
A: You converted your song to a normal bfstm. Make sure it is a PCM16 bfstm and try again.
Q: My game crashed/My switch froze!
A: You did something wrong when replacing the bfstp header. Read the instructions over again carefully and try again.
Q: My song is muted!
A: You probably converted to a wii u BFSTM. Make sure it is the correct BFSTM.
Q: My switch is banned!
A: Your fault, you went online, can't do anything about that!
Q: Can I share/download someone else's BGM.bars?
A: NO! That is piracy, which is against the law.
Q: it doesnt work!!!!!1
A: First of all, before commenting your actual issue, read the rest of the FAQ and see if it has been already answered. Then comment your actual issue, and be descriptive please, or it will take longer.
For any other questions, contact any of the other helpers or me on Discord:
My discord username: Hellacia#7378
Mario Kart 8 Deluxe Modding: https://discord.gg/hKS9CBQ
Audacity Team (Audacity)