• 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

#1
Hello! This thread is here for researching the Nitro Sound Engine which was used in the DS generation of Pokémon games.

Foreword:
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.

Resources:
 
#2
I would also like to further note that looping midis before converting to SSEQ is exactly the same process as with the AGB: You use [ for loop start, and ] for loop end.

@platinum The reason is likely due to 2 reasons: The NDS is extremely picky about the format the instrument samples are in, depending on the game. Knowing what the original uses might aid in this. It is also possible the public version of NSM that was floating around is an older version than the one used for the target game (especially B/W/2, possibly HGSS). This could cause it to fail. I found a complete DS SDK pulled from the dev site before it was removed, but I long since forgot where (not like I could share it anyhow). That site also had a full final Wii SDK (minus Unity/UE for Wii).
 
#3
I would also like to further note that looping midis before converting to SSEQ is exactly the same process as with the AGB: You use [ for loop start, and ] for loop end.

@platinum The reason is likely due to 2 reasons: The NDS is extremely picky about the format the instrument samples are in, depending on the game. Knowing what the original uses might aid in this. It is also possible the public version of NSM that was floating around is an older version than the one used for the target game (especially B/W/2, possibly HGSS). This could cause it to fail. I found a complete DS SDK pulled from the dev site before it was removed, but I long since forgot where (not like I could share it anyhow). That site also had a full final Wii SDK (minus Unity/UE for Wii).
I've done some research, and it seems like the Nitro Composer tools haven't been updated in a significant way. I seem to have more success with using this custom sound data with the Generation 5 games (where shared banks aren't really a thing) than with Generation 4 (where shared banks are a thing). I think the issue lies within Generation 4's method of keeping the shared bank in memory, and any additional banks being loaded.
 
#4
The 's' in .sdat, .sseq, .sbnk, .swar and .swav quite possibly stands for "Soundmaker", since that's actually the name of the official dev software used in the Nitro System or TWL System files.

Apart from that, Soundmaker is really handy for creating sound data for ROM hacks, the files can be exported and used with no problems at all~ There's actually package online that has the Wii, Nintendo DS and Nintendo DSi dev tools, as well as some prototype Wii U tools. It's called "Official Nintendo SDKs 2010", I named it as that since it seemed more or less made around then. It has the 2010 tools, however it may be a little outdated to some that may have newer versions of such tools.

I also have NW4R Soundmaker (the Wii variant) as well, with some earlier versions (such as 2.0.0) not playing sound on Windows 10, and version 3.0.0 crashing upon load. I assume it may be because I'm running Windows 10 and it's facing compatibility issues.

Anyways, comparing the source format used in Soundmaker with the binary data actually gives us a good clue on how Soundmaker files are built from their source format.

With all this information, this could help pave the way for developing a free and open source alternative to Soundmaker in which can create project files in the exact same way and have all the functions that Soundmaker has, with the exception that it's open source.