• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.
  • Announcement - March 5th 12:17 PM GMT

    Hi there Guest!
    Thanks for checking out Silph Co.! Right now things are very much still in development with things like themes, guidelines, rules and most importantly content, still being a WIP. The staff and our members are actively working to make the community more homey for you. In the mean time, we are welcoming feedback and suggestions if you have them in the Feedback section.
    Please read the forum rules before posting.

Other [DS] Pokémon Music & Sound Engine Research

Mar 4, 2018
5th and Main
Hello! This thread is here for researching the Nitro Sound Engine which was used in the DS generation of Pokémon games.

The Pokémon games on the DS use a proprietary Nintendo sound engine, which is called the "Nitro Composer Sound System". The way this sound system works is pretty much like a standard MIDI player:
  1. The game, when started, loads Nitro Composer Sound Data (.sdat), and parses all of the entries in the sound data.
  2. Whenever a song is told to be played, the game uses the entry to load all of the files which correspond to the entry. In most cases, this is a combination of a Nitro Composer Sequence File (.sseq), a Nitro Composer Bank Data file (.sbnk), and a Nitro Composer Wave Archive file (.swar).
  3. The game loads the files for the entry into the RAM, maps them to their corresponding locations and plays the sequence using that data.

The current state of DS Music Hacking:
The good news is that we are actually able to create custom sound data, using an official program from the NITRO/TWL-SDK (which I cannot provide for copyright reasons).
The bad news is, while being able to load custom sequence data flawlessly, the games seem to be very picky about what it plays and what it doesn't, particularly with the sound banks. As of right now, we don't know why. But hopefully we are able to find a solution soon. I also hope to post some tutorials about using the Nitro Composer SDK for things like this.