Most people that hang around DS hacking eventually come across audio hacking which has been covered elsewhere but I feel like covering it again and maybe doing a bit more research into various things some of which was done as I was typing this up. As a rule of thumb everything that is not SDAT is a simple format, a known format, a wrapper of some form for a common format or something just wrapped around plain wave- to my knowledge there are no alternative tracker/sequencer formats with all the alt formats being some form of straight digitised wave form (although things can be layered across the various channels) save perhaps some of the things the music games do and maybe disgaea depending on how you look at it. I am not intending to go into music games and their formats with the aim of custom songs in those at this point but if it is there I will quite happily fiddle with it. To this end a quick overview of the state of things. SDAT The DS SDK format and one used by the vast majority of games however the games that do not use it with the possible exception of el tigre make my mule are noteworthy games in the DS library so it might well be worth the time having a look at the others. SDAT however is the container file for it all (occasionally you can see files outside them) It is a full audio format with three types of audio playback supported although there are helper files. SSEQ- analogous somewhat to midi and/or tracker formats SWAR (SWAV)- small PCM or ADPCM samples that either stand alone or are used as instruments for SSEQ. STRM- usually some PCM or ADPCM and can go right to full audio tracks (some of the Tony Hawk games had them including files outside the SDAT). The first hacks to it were simple swaps to lower file sizes when people were still using GBA era devices with as little as 16 megabytes of space on them (more often 32). Later some were sliced up and they kept working. After that came undubs where usually Japanese audio in the form of a whole SDAT file was stuck in a US or EU rom and it usually made the game have the Japanese audio. As localisation tends to just change things across most of the time this worked, when it did not work it was usually the fault of the rom packing tool (ndstool which some use standalone but more use with DSLazy or DSBuff is far from perfect for commercial roms) but the occasional rom does have a big change (megaman ZX and possibly Spectral Genesis) Around the same time it was discovered that Zoids Saga had an SMAP file in it- SMAP is a sort of info sheet generated by Nintendo's tools (although other programs can now generate them) which led to the whole SDAT format being reverse engineered. Occasionally other files like SADL are seen alongside the SDAT file. http://www.romhacking.net/docs/469/ http://kiwi.ds.googlepages.com/sdat.html http://gbatemp.net/t253947-nintendo-sdat-specifications?view=findpost&p=3154732 At first this mainly led to ripping the audio tracks (more on that in a moment) but later it allowed repointing hacks http://gbatemp.net/index.php?showtopic=122534&hl= Later injection happened http://jul.rustedlogic.net/thread.php?id=7518 Alongside this the ability to generate SSEQ files happened http://sites.google.com/site/kiwids/ (see midi2sseq) More recently we got another one http://gbatemp.net/t301382-ds-code-sseq-player-and-new-mid-to-sseq-converter These days STRM and SWAV files can also be made and injected. Also with SSEQ being a proper tracker format (or close enough) you can edit the commands to change the audio however you will which culminates in the likes of http://gbatemp.net/t305204-nintendo-ds-music-hacking-looping-included-fully-explained http://pkmnhackersonline.com/romhacking/25/DS Music Hacking [LOOPING INCLUDED] (an older version) Tutorials covering some of the concepts with editing commands (mainly looping in SSEQ because several people like doing that) but if you know what goes you can probably do it by hand far more easily. Repacking a file into SDAT can supposedly be done with http://filetrip.net/f5658-NDS-Editor-0-1.html but that is a long shot so it is usually advised that you rebuild by hand or modify an existing file to accommodate you new file (pointers, section lengths and file lengths need changing) Ripping can be done in several ways The crudest is a line out from a DS into the line in/mic of your soundcard The second uses an emulator and a loopback option to grab sound (or maybe the emulator has sound grab abilities but it is the same idea) As running roms is no great issue these hacks can be helped along with audio hacks (repointing stuff) to either mute SFX and such or get end game tracks to play early on/at a quiet point. Equally with an emulator you can drop channels to leave whatever you want to play (most of the time it will be aimed at a given channel all the time). These two abilities hold for all audio ripping regardless of format. After this we have conversion which comes in one of two types SSEQ2midi style- these tools attempt to take sseq and approximate them to midi instruments. The aforementioned SSEQ2midi can do it http://sites.google.com/site/kiwids http://code.google.com/p/loveemu/downloads/list (also includes some STRM and SWAV stuff) Various flavours of this exist but most are just minor bugfixes on the initial thing. It should be noted that Monster Tale ( http://gbatemp.net/index.php?showtopic=292661 ) has confused these tools so some work might need to be done there. NDSsndext (can also do the STRM and SWAV formats) http://filetrip.net/nds-downloads/utilities/download-nds-sound-extractor-0-4-f28818.html Originally from http://nintendon.s6.xrea.com/ but downloads of it no longer available there. VGMtrans http://gbatemp.net/threads/new-vgmtrans-github-and-loveemu.354869/ It does a line in straight SSEQ to midi but it can also generate DLS files which can be combined Crystaltile2 supposedly has some playback but it is broken. It does however have a wonderful parser and information grabbing option http://filetrip.net/f23649-CrystalTile2-2010-09-06.html After this you have proper emulation. VGMtoolbox combined with snakemeat and caitsith2's plugins/rip kits (might have to search a bit for those). http://sourceforge.net/projects/vgmtoolbox/files/vgmtoolbox/ Much like the nsf format and similar formats this emulates the audio so barring a few tiny quirks with the decoder libraries it is about 1:1 http://www.zophar.net/utilities/2sf/vio2sf.html has a foobar and co compatible decoder (which can then spit out a standard wave file to be used as appropriate). That is pretty much SDAT hacking covered, some stuff is still to discover and simple graphical tools are not as common as they might be but SDAT hacking is pretty mature. It is by no means a complete tools list either- several other nice tools exist here. pkg packed files. possibly just a packaged format- not seen so often for SDAT (indeed most packaged files kick SDAT out of the package and have it fly solo- see early phoenix wright and tony hawk games). Examples being El Tigre: Make my mule. Doing a strings search fo the ET.pkg there are some mentions of WAVE and SWAV A 32 bit flip will need to be applied if you are going to down this path. The pkg format appears to have a header (containing a lot of files by the looks of things) The initial 48 byte header has some stuff in it but following that is a file allocation table of sorts Entries are 52 bytes long Starts with name in ASCII (unsure as to longest possible "wireless_signal_strength.spr" being a longer example) Next is file number (counts up in hex) Next is possibly a flag (0100 being the most common but 0000 appearing a lot) Compression was not checked for but given the next two it could well be Next is some form of file size (probably decompressed) Next is another file size, 0000 flag entries are usually the same but the 0100 stuff is usually smaller (compressed size perhaps)- taking the location value from the previous one did have a tendency to generate this number but not enough were tested to see about padding. This is followed by the file location SWAV were not compressed/encrypted (had 0000 flag) and look like a standard one- imported as ADPCM at around 22050Hz into audacity well enough. wave just looked to be file names (SPX extension like most of the other files). Going off topic str, spr, fnt, txt, swav, scn, xml, csa, lua and dat being the other extensions (whether this is lua the programming language or not is a different matter- it has been seen in puzzle quest before though). Files seem compressed or encrypted though and it is not standard flag at the start of the file stuff not to mention it is not even the sort of half readable stuff you get with LZ (checked XML and txt). dat format (pending a better name) DSARC FL is the magic stamp in songs.dat msnd is seen in extensions, DSEQ is the magic stamp for the msnd files although DSARC is used elsewhere. Seen in Disgaea Alongside this seems to be a .tbl file which might have some good stuff in it. Curiously DSEQ and SSEQ are seen- 12 times for 13 header entries although it seems song006.msnd ( 0ED000 ) is repeated for whatever reason. File is 1FAE00 long Header on the file 16 bytes initially Code: 00000000 4453 4152 4320 464C 0D00 0000 0100 0000 DSARC FL........ 48 bytes after that for each entry 28 bytes possibly for names (none are very long) A search for SSEQ (note not the start of each section/file) 0x00000430 0x00031A30 0x0005DC30 0x0008C630 0x000BE430 0x000ED030 0x000FFA30 0x0012FA30 0x00157430 0x00188630 0x001B7230 0x001C9C30 If you prefer a search for DSEQ 0x00000400 0x00031A00 0x0005DC00 0x0008C600 0x000BE400 0x000ED000 0x000FFA00 0x0012FA00 0x00157400 0x00188600 0x001B7200 0x001C9C00 One tweaked header sample Code: 000314BC 00000400 song001.msnd.................................... 0002C1DC 00031A00 bgm_10.msnd..................................... 0002E974 0005DC00 song003.msnd............................t....... 00031C60 0008C600 song004.msnd............................`....... 0002EA10 000BE400 song005.msnd.................................... 000128A8 000ED000 song006.msnd.............................(...... 0002FFDC 000FFA00 song007.msnd.................................... 000128A8 000ED000 song006.msnd.............................(...... 00027864 0012FA00 songJingle.msnd.........................dx...... 0003106C 00157400 song008.msnd............................l....t.. 0002EAF4 00188600 songJingle2.msnd................................ 000128A8 001B7200 song016.msnd.............................(...r.. 0003106C 001C9C00 song018.msnd............................l....... 00000000 00000000 ................................................ 00000000 00000000 ................................................ 00000000 00000000 ................................................ 00000000 00000000 ................................................ 00000000 00000000 ................................................ 00000000 00000000 ................................................ 00000000 00000000 ................................................ 00000000 00000000 ................................................ the "song" part may be a name of sorts- several references to Jingle2.msnd are seen in the file. Pulling song001.msnd from the file and viewing that Appears to be a header section Code: 00000004 00000000 .... 00000008 00000000 .... 0000000C 00000000 .... 00000010 00000040 ...@ 00000014 000060A0 ..`. 00000018 00006400 ..d. 0000001C 00000000 .... 00000020 00006048 ..`H 00000024 0000035C ...\ 00000028 0002B0BC .... 0000002C 00054F60 ..O` At 40 there is data but at 30 there is SSEQ At 60A0 in the new file there is SNBK At 6400 there is SWAR (this seems to hold for other files) These are the three files needed for complete SSEQ playback, At 6078 the SSEQ file turns to 00 so that might be some padding/file length. 035c could well be the length of the SBNK (if a 0000 is used to end the file) 0002 B0BC could be the length of the SWAR as a 4 bytes later there comes the Jingle2.msnd "reference" and a bit more data before starting the next file. 00054F60 might be playback help stuff More fiddling needed. A quick scan of BGM.dat looks like what is known so far is good. Also voice.dat and se.dat (now having files with the extension .se and .swav with the .swav appearing to correspond to the .se files) hold up. To this end it looks like a rejigged SDAT format. .dat.tbl files appear to grow in size with the amount of files contained within the dat files. Conventional Wave files. Used by Electroplankton. Music making games often have odd formats at their heart and Electroplankton has plain wave files as you can generate even with loads of tools. Related to the below format. BAR format (seemingly package files in this case for wave format) Brothers in Arms. A very odd game for hackers and pretty much forgotten. Everything is in "BAR" files with one named sounds.bar Looking at the other files they start with what could be simple pointers/locations with nothing else In the sounds.bar there are bunch of "RIFF" which is classic wave file behaviour- https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ Would be pointers line up fairly well although they appear to be offset (not checked how/how much) and there are more amounts of RIFF than pointers. Still straight extraction gives a apparently straight windows compatible wave file- some orchestral stuff for the tests at 32 bit float 22050Hz (22KHz- fairly standard low grade sampling rate) and mono. PCM audio. Used by N+ This is a raw PCM audio format, better audio editors feature raw import (audacity http://audacity.sourceforge.net/ has the ability) and raw export is too troubling either. ADX/AHX- An old format seen back on the dreamcast and systems since but appeared on the DS as well. Games have been seen to split the difference between this and SDAT (Ninja Gaiden being a good example). Used by several games apparently http://www.cri-mw.com/product/adoption/platform/ds.html (note this can also include their video format and their file packing/handling stuff). First spotted in a basketball game but came to the fore in The World ends with you often referred to as TWEWY. It is pretty much a wrapper format for some MPEG audio of various flavours and several tools are capable of handling conversion to and from not to mention file system hacks are viable. adx2wav adh2wav wav2adx being the main tools here They can be found with a simple search but some downloads might appear at some point. http://www.geocities.co.jp/Playtown/2004/dcdev/dcdev.html DSE audio format. Home page in Japanese for the library http://www.procyon-studio.co.jp/dse/ Some reverse engineering for the pokemon stuff http://projectpokemon.org/wiki/Digital_Sound_Elements GBAtemp thread http://gbatemp.net/threads/need-some-help-reversing-the-dse-audio-formats.405139/ Seen in various extensions like .pb and has magic stamps/section stamps like SED SWD and SMD Seen in Inazuma 11 From the relocalisation project Our guess as to what goes would be based on some of the magic stamps in the file and the history of DS audio it is likely some form of close to hardware decoding wave/PCM/IMA-ADPCM. If a straight undub did not work try making the file names the same and fiddling there. It appears to be one of the simplest packing formats on the DS with several things like it Code: 00000000 | 3244 5F30 3030 2E53 4544 0000 0000 0000 | 2D_000.SED...... 00000010 | 0000 0000 0000 0000 0000 0000 BC08 0000 | ................ 00000020 |3244 5F30 3030 2E53 5744 0000 0000 0000 | 2D_000.SWD...... 00000030 | 0000 0000 0000 0000 BC08 0000 C0CA 0100 | ................ First line is file name First 14 bytes appear to be size (although flipping them gets a bit odd for really big numbers) In the second line BC08 flips to 08BC which is the start of a file (0000 in the first line indicates the file starts at the start of the file so that is not much use for reversing). The next line is 7CD3, looking back for a second you have BC08 C0CA 0100 or more accurately 08BC and 0001 CAC0, adding them rather nicely produces 0001 D37C. This is quite nice in rom hacking*- you saw the rest of the rom where things had 16byte alignment. *other roms/files like alignment so file start + length does not always equal next file start location. 0001 D37C is where the next file starts. All names appeared to be filename.S?? so searching for .S yields 852 files. Add one as there is a file called Makefile which is detailed at 66C0 in the .ph file. Odd little files like this can make or break a rom hack so I looked at that. E875 4D02 translates as 024D75E8 050B long 024D 7AF3 is the end which is rather nicely also the next file still (means things probably did not change as the file went on) It appears to do as it says on the tin, perhaps not quite as nice as princess maker, zoids saga stuff for sound or some of the other interesting things that have been dug out of roms over the years. Code: # #------------------------------------------------------------------------------- # author : nozuru # memo : データの追加・削除をした場合はcleanすること #------------------------------------------------------------------------------- NUL = /dev/null TOOLPATH = ../../Tool/packer PACKER = $(TOOLPATH)/packer BINDIR = bin INSTALLDIR = ../ ../ ../ina_main/data_iz/sound/ge SRCS := $(wildcard *.SED *.SMD *.SWD) vpath %.pb $(BINDIR) #------------------------------------------------------------------------------- #packerが第一引数からパック名・フォルダ名・ルートディレクトリ名を取り出すため #カレントディレクトリ名が入るように相対パスを指定 #パス区切り文字として'\'しか受け付けないので注意 all: makedir ge.pb ge.pb: $(SRCS) @$(PACKER) ..\\ge @mv ../ge.pb $(BINDIR)/sound.pb @mv ../ge.ph $(BINDIR)/sound.ph #------------------------------------------------------------------------------- makedir: @mkdir -p $(BINDIR) #------------------------------------------------------------------------------- install: all @cp $(BINDIR)/sound.p* $(INSTALLDIR) #------------------------------------------------------------------------------- clean: @-$(RM) -R $(BINDIR) #------------------------------------------------------------------------------- http://pastebin.com/uA6refYY SAD audio format Seen in Zombi Daisuki and possibly a few others. Usually sat alongside bin files with the magic stamp SIR0 Pending further research one file list with sizes. Do note the game is quite interesting from a hacker perspective. Warning: Spoilers inside! Code: 1472 # sizedata.bin 96 # volumedata.bin 6048 # filelist.bin 16912 # se_zo_vo_zombie_m5.sad 13808 # se_zo_vo_zombie_m3.sad 16304 # se_zo_vo_zombie_m2.sad 22000 # se_zo_vo_zombie_m1.sad 9728 # se_zo_vo_zombie_f5.sad 4944 # se_zo_vo_zombie_f4.sad 23520 # se_zo_vo_zombie_f3.sad 16032 # se_zo_vo_zombie_f2.sad 1593216 # bgm_zo_ev_99_epilogue_l.sad 19744 # se_zo_vo_zombie_f1.sad 15504 # se_zo_vo_swat_6.sad 18048 # se_zo_vo_swat_5.sad 26016 # se_zo_vo_swat_3.sad 17776 # se_zo_vo_swat_2.sad 13904 # se_zo_vo_swat_1.sad 16032 # se_zo_vo_human_m7.sad 20464 # se_zo_vo_human_m6.sad 19200 # se_zo_vo_human_m5.sad 14352 # se_zo_vo_human_m4.sad 19888 # se_zo_vo_human_m3.sad 5232 # se_zo_vo_human_m2.sad 12880 # se_zo_vo_human_m1.sad 34960 # se_zo_vo_human_f7.sad 25216 # se_zo_vo_human_f6.sad 19936 # se_zo_vo_human_f5.sad 16864 # se_zo_vo_human_f4.sad 16960 # se_zo_vo_human_f3.sad 4976 # se_zo_vo_human_f2.sad 5216 # se_zo_vo_human_f1.sad 20464 # se_zo_vo_cameraman_6.sad 17856 # se_zo_vo_cameraman_3.sad 13728 # se_zo_vo_cameraman_2.sad 15440 # se_zo_vo_cameraman_1.sad 17296 # se_zo_vo_boss_9_7.sad 21360 # se_zo_vo_boss_9_6.sad 16080 # se_zo_vo_boss_9_5.sad 25840 # se_zo_vo_boss_9_4.sad 23440 # se_zo_vo_boss_9_3.sad 33728 # se_zo_vo_boss_9_2.sad 29280 # se_zo_vo_boss_9_1.sad 17712 # se_zo_vo_boss_7_6.sad 21360 # se_zo_vo_boss_7_5.sad 29872 # se_zo_vo_boss_7_3.sad 15680 # se_zo_vo_boss_7_2.sad 22976 # se_zo_vo_boss_7_1.sad 6768 # se_zo_vo_boss_6_6.sad 8784 # se_zo_vo_boss_6_5.sad 392624 # bgm_zo_title_l.sad 19648 # se_zo_vo_boss_6_3.sad 18976 # se_zo_vo_boss_6_2.sad 18272 # se_zo_vo_boss_6_1.sad 36608 # se_zo_vo_boss_5_6.sad 20576 # se_zo_vo_boss_5_5.sad 37504 # me_zo_gn_sortie.sad 67200 # se_zo_at_death_meteor.sad 15136 # se_zo_vo_boss_5_3.sad 12448 # se_zo_vo_boss_5_2.sad 10032 # se_zo_vo_boss_5_1.sad 17440 # se_zo_vo_boss_4_6.sad 20944 # se_zo_vo_boss_4_5.sad 16752 # se_zo_vo_boss_4_3.sad 15632 # se_zo_vo_boss_4_2.sad 15376 # se_zo_vo_boss_4_1.sad 14752 # se_zo_vo_boss_3_6.sad 18624 # se_zo_vo_boss_3_5.sad 29664 # se_zo_vo_boss_3_3.sad 17680 # se_zo_vo_boss_3_2.sad 8768 # se_zo_vo_boss_3_1.sad 6352 # se_zo_vo_boss_2_6.sad 7168 # se_zo_vo_boss_2_5.sad 34576 # se_zo_vo_boss_2_3.sad 28752 # se_zo_vo_boss_2_2.sad 22144 # se_zo_vo_boss_2_1.sad 15360 # se_zo_vo_boss_1_6.sad 19200 # se_zo_vo_boss_1_5.sad 31536 # se_zo_vo_boss_1_3.sad 10352 # se_zo_vo_boss_1_2.sad 6064 # se_zo_vo_boss_1_1.sad 14864 # se_zo_vo_boss_0_6.sad 18720 # se_zo_vo_boss_0_5.sad 12336 # se_zo_vo_boss_0_3.sad 15840 # se_zo_vo_boss_0_2.sad 11504 # se_zo_vo_boss_0_1.sad 7696 # se_zo_vo_zombie_m4.sad 57920 # se_zo_ev_env_sand_l.sd 56256 # se_zo_ev_eyes.sd 106304 # se_zo_ev_farm_l.sd 107008 # se_zo_ev_farm_sad_l.sd 5408 # se_zo_ev_finger.sd 15808 # se_zo_ev_fire_ignite.sd 38272 # se_zo_ev_fire_l.sd 8000 # se_zo_ev_fist.sd 23744 # se_zo_ev_footwork_l.sd 108416 # se_zo_ev_forest_l.sd 25184 # se_zo_ev_gas_l.sd 25888 # se_zo_ev_glass_01.sd 33760 # se_zo_ev_glass_02.sd 25792 # se_zo_ev_gun_01.sd 25024 # se_zo_ev_gun_02.sd 5152 # se_zo_ev_gun_set.sd 17312 # se_zo_ev_gus_bottle.sd 5280 # se_zo_ev_hammer.sd 19360 # se_zo_ev_helicopter_l.sd 7808 # se_zo_ev_homer.sd 8256 # se_zo_ev_hotdog.sd 31840 # se_zo_ev_howl.sd 47712 # se_zo_ev_jet_l.sd 11840 # se_zo_ev_ketchup.sd 61312 # se_zo_ev_kiss.sd 6944 # se_zo_ev_knock.sd 11872 # se_zo_ev_landing.sd 29120 # se_zo_ev_maj_eff.sd 18048 # se_zo_ev_news_01.sd 19552 # se_zo_ev_news_02.sd 17632 # se_zo_ev_news_03.sd 19392 # se_zo_ev_news_04.sd 12640 # se_zo_ev_news_05.sd 14912 # se_zo_ev_news_06.sd 11392 # se_zo_ev_news_noise.sd 9152 # se_zo_ev_paper.sd 11296 # se_zo_ev_phone_button.sd 25088 # se_zo_ev_phone_ringtone.sd 34304 # se_zo_ev_rain_l.sd 14944 # se_zo_ev_red_point.sd 53184 # se_zo_ev_rumble_l.sd 14272 # se_zo_ev_run.sd 95328 # bgm_zo_ev_00_prologue_a.sd 67168 # se_zo_ev_env_h_2_l.sd 5440 # se_zo_ev_siren_l.sd 21664 # se_zo_ev_sovetsky_laugh.sd 5344 # se_zo_ev_splash_01.sd 53472 # se_zo_ev_splash_02.sd 5984 # se_zo_ev_step.sd 12544 # se_zo_ev_step_back.sd 36896 # se_zo_ev_step_slow.sd 16128 # se_zo_ev_swat_call.sd 16864 # se_zo_ev_switch_open.sd 31232 # se_zo_ev_tank_l.sd 10592 # se_zo_ev_timer.sd 81344 # se_zo_ev_truck.sd 3904 # se_zo_ev_turn.sd 5920 # se_zo_ev_tv_noise.sd 41952 # se_zo_ev_tv_noise_l.sd 34688 # se_zo_ev_tv_noise_small.sd 8096 # se_zo_ev_tv_off.sd 53408 # se_zo_ev_tv_smile.sd 2976 # se_zo_ev_umbrella.sd 17824 # se_zo_ev_up_wipe.sd 16352 # se_zo_ev_walk_l.sd 50912 # se_zo_ev_wind_l.sd 15712 # se_zo_ev_wink.sd 9344 # se_zo_ev_zoom_01.sd 89152 # se_zo_ev_z_wakeup.sd 143104 # se_zo_farm_01.sd 29408 # se_zo_sine_ex.sd 9472 # se_zo_sine_exq.sd 84512 # se_zo_soccer_01.sd 94624 # se_zo_stage_01.sd 12640 # se_zo_stage_02.sd 13824 # se_zo_stage_11.sd 9216 # se_zo_stage_12.sd 13184 # se_zo_stage_13.sd 10944 # se_zo_stage_14.sd 13536 # se_zo_stage_15.sd 15360 # se_zo_stage_16.sd 15552 # se_zo_stage_21.sd 22112 # se_zo_stage_22.sd 15712 # se_zo_stage_24.sd 21152 # se_zo_stage_25.sd 18080 # se_zo_stage_26.sd 21440 # se_zo_stage_27.sd 10400 # se_zo_stage_28.sd 21568 # se_zo_stage_29.sd 28576 # se_zo_stage_30.sd 13536 # se_zo_stage_31.sd 12768 # se_zo_system_01.sd 104448 # se_zo_ev_env_h_1_l.sd 3872 # se_zo_ev_emergency_switch.sd 16384 # se_zo_ev_electric_02.sd 11264 # se_zo_ev_electric_01.sd 28384 # se_zo_ev_eff_2.sd 25824 # se_zo_ev_eff_1.sd 10208 # se_zo_ev_drum.sd 32736 # se_zo_ev_drip_l.sd 84544 # se_zo_ev_drip.sd 12576 # se_zo_ev_descent.sd 11328 # se_zo_ev_creak.sd 22240 # se_zo_ev_cow.sd 19552 # se_zo_ev_collapse.sd 9600 # se_zo_ev_clapper_02.sd 5280 # se_zo_ev_clapper_01.sd 89088 # se_zo_ev_cheer_l.sd 90208 # se_zo_ev_cheer_2_l.sd 24960 # se_zo_ev_cannon_set.sd 49888 # se_zo_ev_cannon.sd 12192 # se_zo_ev_break_02.sd 38880 # se_zo_ev_break_01.sd 43904 # se_zo_ev_bomber.sd 11104 # se_zo_ev_bom.sd 41728 # se_zo_ev_attack_shout_02.sd 16224 # se_zo_ev_attack_cage_2.sd 37024 # se_zo_ev_attack_cage.sd 49344 # se_zo_ev_alert.sd 17408 # se_zo_common_01.sd 4704 # me_zo_gn_skill_up.sd 3104 # me_zo_gn_gameover.sd 3392 # me_zo_gn_clear.sd 4320 # me_zo_ev_siren.sd 95168 # bgm_zo_ev_00_prologue_b.sd 11616 # bgm_zo_st_99_last_battle_l.sd 8352 # bgm_zo_st_20_space_l.sd 90784 # bgm_zo_st_18_garden_l.sd 26656 # bgm_zo_st_10_fy_l.sd 26656 # bgm_zo_st_10_fy2_l.sd 8640 # bgm_zo_st_09_mm_l.sd 8640 # bgm_zo_st_09_mm2_l.sd 23456 # bgm_zo_st_08_sp_l.sd 23488 # bgm_zo_st_08_sp2_l.sd 9600 # bgm_zo_st_07_pk_l.sd 10272 # bgm_zo_st_07_pk2_l.sd 6784 # bgm_zo_st_06_ls_l.sd 6784 # bgm_zo_st_06_ls2_l.sd 8160 # bgm_zo_st_05_gd_l.sd 8192 # bgm_zo_st_05_gd2_l.sd 8576 # bgm_zo_st_04_om_l.sd 8576 # bgm_zo_st_04_om2_l.sd 9504 # bgm_zo_st_03_ht_night_l.sd 9568 # bgm_zo_st_03_ht_night2_l.sd 11072 # bgm_zo_st_02_ht_day_l.sd 11072 # bgm_zo_st_02_ht_day2_l.sd 13472 # bgm_zo_st_01_gw_l.sd 13472 # bgm_zo_st_01_gw2_l.sd 20128 # bgm_zo_st_00_home_l.sd 3776 # bgm_zo_gn_swat_go_l.sd 4736 # bgm_zo_gn_swat_arrival_l.sd 2080 # bgm_zo_gn_swat_arrival_2.sd 4000 # bgm_zo_gn_result_l.sd 4000 # bgm_zo_gn_result_2_l.sd 4320 # bgm_zo_gn_briefing_l.sd 13760 # bgm_zo_gn_boss2_l.sd 5728 # bgm_zo_gn_boss1_l.sd 13248 # bgm_zo_gn_boss1_g_l.sd 4320 # bgm_zo_ev_siren_l.sd 67584 # bgm_zo_ev_news_l.sd 77184 # bgm_zo_ev_farm_sad_l.sd 76640 # bgm_zo_ev_co_chara_se_l.sd 76448 # bgm_zo_ev_co_chara_l.sd 25376 # bgm_zo_ev_30_rehome_l.sd 95552 # bgm_zo_ev_29_missile_l.sd 59488 # bgm_zo_ev_28_zreport_l.sd 91232 # bgm_zo_ev_27_president_l.sd 97056 # bgm_zo_ev_22_poison_l.sd 97216 # bgm_zo_ev_18_military_l.sd 82432 # bgm_zo_ev_15_ballad_l.sd 48064 # se_zo_ev_shoot.sd 84288 # bgm_zo_ev_01_start.sd 31328 # se_zo_ev_shining.sd 260 Files # 8659648 bytes BDX Seen in Daigasso Band brothers (and sequel) Another music game with a custom format, reverse engineered and tools made to support it http://www.auby.no/wiki/index.php?title=Band_Brothers_DX#Song_format http://dshack.wikia.com/wiki/Daigasso!_Band_Bros._series deufeufeu also did a fair bit of work but it seems a lot of it was lost. DSB format Seen in Taiko no Tatsujin at least. One of the few games to combine SDAT and custom stuff. various magic stamps in the file DSSB8- 64 bytes followed by 00 0000 hex leading to an ASCII name same as the file name up to 18 hex (00 padded if too short) 0100 0000 next for all files. A file length on occasion but often falls short. 40 and then padded with 00 until the next section for all files. DSST8- 64 bytes followed by 00 0000 hex leading to an ASCII name same as the file name up to 58 hex (00 padded if too short) alternated between ???? FFFF and 0000 0000 for the 0100 0000 section. ???? was usually quite large F6FF and such with many values repeating. Another length value (slightly smaller than the main one above) and all sort of fairly random stuff to make up the rest. BNSF (shortly after this it has sdat), perhaps not as long as the ones before it. Three entries regardless of size- someone mentioned easy and hard modes which could well be it. Between BNSF and S14 there appear to be 4 bytes given over to a size of some form. After BNSF there was usually SDAT but some had loop and then SDAT a line (16 bytes) later (many files with jingle in the name although several jingle files without it). After that came the data but nothing jumped out at me. It was densely packed and did not compress well which is classic digitised wave behaviour although with files ranging from under 10 kilobytes to just shy of 800 kilobytes it could mean several things. SDFDAT Seen in Super princess peach so far (another TOSE game causing fun). http://gbatemp.net/threads/vgmtrans-wont-work-with-super-princess-peach.357428/#post-4824844 An actual custom midi style and wave sporting format. More on the thread linked, fairly basic archive format breaking down into what looks to be self contained song/audio packages. That over onto the thread. Feel free to add things if you want or point us at other interesting sound related formats or troublesome games. OGG/OGM A common, patent free and open source, media format. Seen very often in PC games but no stranger to consoles either, handhelds are less common but an example for the DS can be seen in " WWE SmackDown vs Raw 2010 featuring ECW". http://gbatemp.net/threads/the-various-audio-formats-of-the-ds.305167/page-2#post-4250023 has more. MIDI A common, but so well liked among audio fans, sequenced format. Found in a few games but they might equally be developer leftovers.