[Tutorial] Custom Music With Luma's LayeredFS

Discussion in '3DS - Tutorials' started by bungboi, Sep 17, 2018.

  1. bungboi

    bungboi GBAtemp Regular

    Oct 31, 2017
    United States
    I am not responsible for any damage caused to your console, but I am open to help if you have problems.
    Always keep a NAND backup handy. (Make one using the NANDManager script included with the GodMode9 download.)

    Please note, LayeredFS doesn't work for Smash. You're gonna need SaltySD.

    Introduction to LayeredFS
    LayeredFS allows you to replace game files without dumping/altering game files. With this, and GodMode9, you can insert custom music into the majority of 3DS games.

    1. A 3DS running Luma3DS
    2. GodMode9
    3. A .BCSTM converter

    4. The .wav of the song you want (Very important: The song must be a 16 bit wav, less than 3.3mb, it must be stereo, and it should be at 22.050 kHz. You can do this with Audacity.
    Mounting the Game
    Mounting a Digital Game
    1. Boot into GodMode9 by holding Start on boot
    2. Select "SYSNAND SD" and then select "title"
    Step 2 Screenshot
    3. Hold R and press A. You'll see a set of options come up on the bottom screen. Press "Search for titles"
    Step 3 Screenshot
    4. Look through the list of titles, and find your game. (In this case, I'm using 3D Land)
    5. Select the game, press "TMD file options," and then select "Mount CXI/NDS to drive"
    Step 4 & 5 Screenshot
    6. When prompted, press A to enter the path.

    You can now continue on to finding the music!

    Mounting a Cartridge Game

    1. Boot into GodMode9 by holding Start on boot
    2. Select "GAMECART" and then select the .3ds file (not the .trim.3ds)
    3. In the list of options, select "NCSD image options," and then select "Build CIA from file"
    Step 2 & 3 Screenshot
    4. Once it's finished, go to "SDCARD (3DS)," select "gm9," and then select "out"
    5. Select the new CIA file, select "CIA image options," and then select "Mount image to drive" (In the screenshot, it says /out/newdir. This is just a temporary folder I made.)
    Step 5 Screenshot
    6. When prompted, press A to enter the path.
    7. You may be put into a folder that looks like the screenshot below. Select the top folder, and if it has "exefs," "romfs," and "exefs.bin," then you're in the right spot.
    Step 7 Screenshots

    You can now continue on to finding the music!

    Finding the Music
    1. You have now mounted the game, and you'll be able to browse the files. Select the folder named "romfs"
    2. Now, we have to find where the .BCSTM files are. Most of the time, there'll be a folder named something like "Sound," or in this case "SoundData"
    3. Select this folder, and, if needed, select the stream folder.
    4. And there's all of the music! Open a notepad document and type in the directory at the top. In my case I'd type "/romfs/SoundData/stream"
    Step 4 Screenshot
    5. Find the BCSTM file you want to replace. I want to replace the music for the World 1 map, so go to your notepad document and write down the names of the .BCSTM files (in my case it'd be STM_BGM_WORLD1_A and B)
    (screenshot not in spoilers because it's important to write down the directory and file names)

    You now have the name and the directory of the music you want to replace, (for me, it's /romfs/SoundData/stream/STM_BGM_WORLD1_A.bcstm and B.) You can now turn off your 3DS.

    Converting your music
    1. Open the BCSTM converter and have your .wav music ready. (Keep in mind, it must be a 16 bit wav at 22.050 kHz, less than 3.3mb, and it must be stereo.)
    2. Uncheck "Limit bytes to:" and set the sampling rate as 22050 kHz
    3. Press "Convert audio to BRSTM," and then name the file anything you want
    4. After that, press "Convert BRSTM to BCSTM" in the bottom left and select the file you just made. You now have a playable 3DS audio file.

    (screenshot not in spoilers because it's important for good quality audio)

    5. Take your new BCSTM file and rename it to the same name(s) that's in your notepad document. For me, it was STM_BGM_WORLD1_A.bcstm and B, so I'll copy and paste the BCSTM twice and rename them accordingly

    Here's how your files should look
    Getting your music to play in game
    1. On your computer, go to the Luma folder on your SD card. In here, make a folder named "titles"
    2. In the titles folder, make a new folder and name it the title ID for your game. To find the title ID, go here, (3D Land is 0004000000054000)
    3. In the new title ID folder, copy how your notepad document looks (for me, it was /romfs/SoundData/stream, so I'll make folders on the SD card with those names)
    (screenshot not in spoilers because it's important)
    4. In the last folder, put in the BCSTM file(s)
    5. Put the SD card back into the 3DS, and hold Select while booting.
    6. Check "Enable game patching," and then press Start to boot.

    When you launch the game, it should replace the game's music with yours. If the audio sounds glitchy, you're going to need to fix it in Audacity using the rules in the requirements section.
    If you want to turn off the music, simply hold Select while booting, and uncheck "Enable game patching."
    Enjoy your custom music! :)
    Last edited by bungboi, Nov 13, 2018
    someguy12345, Ricken and MartyDreamy like this.
  2. someguy12345

    someguy12345 Advanced Member

    Nov 25, 2014
    United States
    This is such an underrated post, thank you!
    bungboi likes this.