How can I inject my own audio into .bcsar files?

Discussion in '3DS - ROM Hacking, Translations and Utilities' started by dj505, Apr 1, 2017.

  1. dj505
    OP

    dj505 Inexperienced Romhacker

    Member
    523
    119
    Oct 4, 2014
    Canada
    Most likely at the arcade
    I'm trying to modify one of the Nintendo demo video apps (just for fun) and the audio is stored in a .bcsar file. Is there any way I can open the file to extract the audio, or inject my own?

    EDIT: I found this, but the download link seems to be dead.
     
    Last edited by dj505, Apr 1, 2017
  2. HelpTheWretched

    HelpTheWretched Advanced Member

    Newcomer
    64
    27
    Feb 4, 2010
    Canada
    The program I've used is called 3DS Audio Ripper, it's pretty simple. I did a quick search and didn't find a link, so I'm attaching the file for you here. A BCSar can contain several kinds of files, and sounds are typically CWAV.

    You could also extract them with a hex editor - just search the BCSar file for a "CWAV" header and copy everything up until the next header.

    As for injecting your own audio: It's possible, also using a hex editor, but there's a good chance that your custom CWAV will need to be exactly the same file size as the one you want to replace. That's because it seems that games/apps refer to sounds in the BCSar by their location, not by name. You'll also need a program to convert your sound files to CWAV, which can be extremely hard to find outside of Nintendo devkit software... :ph34r:
     

    Attached Files:

    lwyx2017 likes this.
  3. dj505
    OP

    dj505 Inexperienced Romhacker

    Member
    523
    119
    Oct 4, 2014
    Canada
    Most likely at the arcade
    Thanks! This is exactly what I needed!
     
    HelpTheWretched likes this.
  4. HelpTheWretched

    HelpTheWretched Advanced Member

    Newcomer
    64
    27
    Feb 4, 2010
    Canada
    If you can't find a WAV > CWAV converter, I've got enough free time to convert a couple for you... I'll just need to know the exact number of bytes of the one(s) you're replacing. ;)