NOTICE
in_cube is no longer under development, please do not use it or seek support for it.
Work has moved on to vgmstream.
in_cube
in_cube is a Winamp plugin intended to play streamed audio formats found in video games.
For info on what games are supported, check out the publicly-editable GC Stream DB
Currently it supports all their formats, yea unto the seventh generation. (TODO: make a list)
in_cube started as a modification to Destop's GC DSP decoder to support Star Fox Assault. Over time hcs has added support for new decoders and formats. FastElbja's later work more than doubled the number of supported formats.
A complete rewrite of in_cube is underway in the form of vgmstream. While vgmstream is not yet complete, it is usable for an ever-growing number of formats, and in_cube development has been halted.
Ask for help and discuss stuff at the HCS Forum or on IRC, #usf on irc.freenode.net.
Download
Current version (April 20 2008):
- 0.38 source - Finally catching up the page with FastElbja's latest work. New since 0.36:
0.38 - 04/20/08
- Added Support for PS2 variants:
- .I400 (0x4000 Interleaved)
- .GMS (Grandia)
- .AUS (from Markgrass)
- .FIL (from Markgrass - unfinished)
- .STER (Can't remember :( )
- .LEG (Legend of Legaia 2)
- .ILD (Battle of Sunrise)
- .VAS (Konami)
- .DXH (Tokobot)
- Added support for .iSWS (Super Star Tennis - Wii)
- Fixed loop for as much formats as i can.
- Complete rewrite of the PS2 interleave management
- other bug fixes
0.37 - 02/23/08
- Fixed MIB which was broken with MIC support
- Added CFN support (Baten Kaitos)
- fixed some stuff with mono ea/xa
- modified ea/xa handle code to manage file with more than 2 channels
- fixed warning issues
- added support for GSP & GSB (Super Swing Golf Season 2)
- added support for MUSX (Spyro - A Hero's Tail - NGC)
Recent builds may require that you install the
Microsoft Visual C++ 2005 SP1 Redistributable Package (formerly the
Microsoft Visual C++ 2005 Redistributable Package worked, too)
Old versions:
- 0.36 source - fixed PS2 ADPCM (VAG) decoding, trying a different way to handle the Winamp 5.52 crash, removed broken .rsf support
- 0.35 source - new support (for .fsb with IMA, MIC, SWAV, .I100, EA_PSX, KNON (PCM & DSP)), fixed EA/XA, maybe fixed Winamp 5.52 crash?
- 0.34 source - new accurate ADX decoder (filter coefficients calculated properly, old fixed ones were only correct for 44.1 kHz files and 500 Hz cutoff, now the file sample rate is used and cutoff is adjustible (though 500 Hz is standard)), fix EAM track length
- 0.33 source - fix NDS .strm looping (in IMA ADPCM type, looping now sample-accurate) and stereo (in 8-bit and 16-bit type, same channel was just used twice)
- 0.32 source - add 8-bit and IMA ADPCM NDS .strm support, rewrite Xbox decoder to use new IMA decoder, fix Wii .fsb length for unlooped files
- 0.31 source - fix some file handle leaks, add kRAW (Geometry Wars) and Wii Lego Star Wars GCM support, fix crash on info window with THP
- 0.30 source - added THP and .zwdsp support
- 0.29 source - fixed broken last chunk of files affected by the Super Paper Mario hack
- 0.28 source - Special-case handling for Super Paper Mario, fixed ADX volume change when editing configuration
- 0.27 source - fixed crash on MIH detection fail
- 0.26 source - hopefully fixed the 44/22khz rstm issue, fixed standard DSP decoding which had mysteriously broken between 0.23b4 and 0.24...
- 0.25 source - rstm improvements (fixed 22khz playing too fast, better header format tolerance, added PCM type for Wii Sports), added GCA (Wii) and STRM (NDS) formats
- 0.24 source - 29 formats added! Including some Wii-specific DSP! Numerous bug fixes! Code still a mess!
- 0.23 beta 4 source - fixed string buffer overflow in info window (adding sample count to the loop info a few versions back broke it)
- 0.23 beta 3 source - YuanHongYe added NPSF support
- 0.23 beta 2 source - fixed RSF configuration breaking ADX
- 0.23 beta 1 source - experimental support for RSF
- 0.22 source - AFC and DSP support working!
- 0.21 source - AFC support working!
- 0.20 beta 8 source - identify nonlooped ADSs
- 0.20 beta 7 source - fixed ADS looping
- 0.20 beta 6 source - added ADS, improved VAG detection
- 0.20 beta 5 source - added VAG.
- 0.20 beta 4 source - added Metal Arms WVS support.
- 0.20 beta 3 source - added Beyond Good & Evil WAA/WAC/WAD/WAM support, fixed looping
- 0.20 beta 1 source - added Hitman 2 WAV (unpacked via WHD) support
- 0.19 source - added GCub (DSP, files are called .wav) support
- 0.18 source - added AST (PCM) support, experimenting with AFC support, fixed ADX checking a little more
- 0.17 source - added RSD support, support for IDSP in Harvest Moon, fixed ADX checking bug
- 0.16 source - YMF support added (works on most files, which are DSP-based)
option to play single channel from ADX (which may have > 2 channels)
thread priority adjustible
loop points now reported in time instead of file offset
optional delay before fade
ISH/ISD looping fixed
- 0.15 source - ISH/ISD support added, though looping is a weird hack
- 0.14 source - ADX decoder volume reduction (to prevent clipping in Silent Hill ADXs) now optional (disabled by default)
stereo header detection now a little looser (fixes an IDSP)
dual-file stereo detected for files ending with "right" and "left"
support for Disney's Magical Mirror nonstandard loop
- 0.13 source - files with equal loop points will be treated as nonlooping, slightly improved ADX decoder (less clipping)
It is possible that this version has the volume lower than you'd like (I know it's sort of bothering me).
- 0.12 source - fixed IDSP (interleave now read from header), added support for Monopoly Party (files must be renamed .MPDSP)
- 0.11 source - fixed ADX failure on files < 4K, support for ADX header 0x20 bytes into file (Sonic Mega Collection)
- 0.10 source - better spt support: looping where supported, won't attempt to play multi-stream archives
- 0.9 source - won't attempt to play files with obviously bad samplerates (<=0, >96000), fixed looping in tsutaBGM.dsp (Donkey Konga)
- 0.8 source - fixed stupid bug from 0.7, ADXs only played in mono
- 0.7 source - fixed bug where some short ADXs fail to play
- 0.6 source - fixed minor looping issue in noninterleaved DSPs
- 0.5 source - fixed bug with spd/spt. Support for Bomberman Jetters, which might break others...
- 0.4 source - fixed bug introduced between in_dsp 1.9 and in_cube 0.0 which broke Metroid Prime 2 looping, clarified credits
- 0.3 source - added MSS support, stereo playback for Wario World's dual-file stereo (files ending in _0.dsp and _1.dsp)
- 0.2 source - new devkit-accurate ADP decoder by hcs, better ADP check (won't catch anything but ADP files, even with .ADP extension), cleaned up code (fixed compiler warnings, comments)
- 0.1 source - ADPs play back at 48KHz (which the DTK spec states is standard)
- 0.0 source
Ripping tools
dkdsp
I've put together, on request, a program to convert the standard mono DSP files created by the devkit DSPADPCM.exe into stereo (either by doubling a mono file or using one mono file for each channel) files for Donkey Konga or Star Fox Assault. It's been tested on a Gamecube with Japanese Donkey Konga 2.
dkdsp v0.4
Notice thatat the point of this program is to generate new DSP files for use in Donkey Konga. It is not necessary to combine right and left channel DSPs for playback with in_dsp or in_cube, if you choose either it will load the other as well.
SSMEx
Several games (specifically those HAL had a hand in) contain SSM files, which are collections of DSP files. SSMEx (v0.1) will extract those files. I don't have the algorithm exactly right yet, but this produces usable files.
adXtract
adXtract (0.2) extracts ADX files from any archive (uncompressed, that is) containing them. Note that it will also attempt to extract the audio stream from Sofdec video (SFD), but it doesn't work (it should produce a warning message). bero has a tool that does that well, sfd2mpg.
TMNT3:MN extractor
Teenage Mutant Ninja Turtles 3: Mutant Nightmare has a file called strbgm.bin which contains all the DSPs. I wrote an extractor (0.1) which converts them to standard dual-file stereo DSPs.
bigfat
bigfat extracts the files from the "soundgc.big" and "soundgc.fat" files in Prince of Persia: The Two Thrones. I don't know how to play these files yet, though.
bbegex
bbegex extracts the files from "Filelist.000" and "Filelist.txt" in Batman Begins.
sfxtract 0.0 will extract DSPs from SFX files that contain them, but it looks like most of the music in Batman Begins is stored in another format.
MOOd
Extract DSPs from the MOO files in Robotech: Battlecry with MOOd 0.0 (MOO depacker).
gcfsysd
gcfsysd 0.1 extracts files from the .fsys files found in Pokemon XD Gale of Darkness. Rename .000 files to .dsp or .ish to (possibly) get them to work with in_cube 0.16 (or higher, 0.15 had looping problems).
0.1 now works with Pokemon Colosseum, but I don't know how to play the extracted files.
SPTex
SPTex 0.0 extracts DSPs from SPT/SPD pairs, Nintendo's official packed DSP format.
PAKthis
PAKthis 0.0 extracts files from the .bin files in Megaman X Collection. The audio seems to be mostly OGG Vorbis.
Game Extractor plugins
Game Extractor is a nice Java program that unpacks a huge variety of files. I've modified two plugins to work with the variants of RCF found in some Gamecube games.
GE RCF plugins
You install these by adding the .class files to the GameExtractor.jar file included with Game Extractor. The .jar is simply a .zip.
CDEU
CDEU is a program by PokéParadox to extract Cstr DSP file from DSP bundles, tested with R:Racing.
aix2adx
aix2adx 0.1 extracts ADXs from interleaved AIX files. Now continues reading additional sections past AIXE marker.
adxloop
adxloop 0.1 will force an ADX to loop from end to beginning. Optionally you can add an "intro" which is played first and not looped. Now with proper loop start points for in_cube.
jbc
(0.0) Just an extractor for jbc files, such as found in NHL Hitz Pro
whdread
whdread 0.2 extracts the individual WAVs (PCM and DSP) from streams.wav in Hitman 2, using the WHD files which contain the header information.
bfbs
bfbs 0.0 extracts the filesystem from sally.bf in Beyond Good & Evil (sally_clean.bf in the PC version)
wwdumpsnd
wwdumpsnd 0.3 extracts the sound effects and instrument samples from The Legend of Zelda: The Wind Waker. They are dumped as plain WAVs. To use, all the .aw files from /Audiores/Banks and JaiInit.aaf from /Audiores must be in the current directory when wwdumpsnd is run. 100 MB of WAVs are created.
0.3 fixes some issues with the format of the WAV.
Note that there are some samples that sound quite off, such as in mboss_0.aw. I suspect that these are stereo (the vast majority are mono and that is all I handle) but I haven't worked it out yet.
degod
degod 0.5 decrypts ADX files. It has support for God Hand, Okami, Killer7, Samurai Champloo, Blood+, Raiden III, Phantasy Star Universe (and the expansion), Senko no Ronde, NiGHTS: Journey of Dreams, and possibly others.
In case you come across a game that uses a different encryption key, degod has brute force key guessing functionality built in, but I recommend using guessadx 0.1 now, as it has a much better algorithm.
lafs
lafs 0.2 extracts from AFS filesystems. It is missing many features but works OK in many cases.
xtract360
I've continued PI and Redline99's work on xtract360 (now at version 1.2) to fix some bugs. It extracts files from XBOX 360 disc images.
ast_multi
Similar to aix2adx, ast_multi 0.0 splits out multiple stereo streams from an AST (typically wth a filename ending in _multi.ast, found in Super Mario Galaxy).
thp audio ripper
FastElbja's thp audio ripper extract the audio track from .thp video files for playback in in_cube 0.30. The videos themselves work also, but this produces a smaller file (without the video).
And here's a standards compliant version, for those who want to build with something besides MSVC.
zwsrt
zwsrt 0.0 combines the header data from .srt files with the sample data from .ssd files to produce .zwdsp files which are playable in in_cube. srt and ssd files are found in Zack & Wiki
adx2wavmod3
adx2wavmod3v2 is a modification to bero's adx2wav which is much more accurate, especially with frequencies other than 44.1 kHz. Doesn't handle loops, just a straight decoder.
brsar_unpack
brsar_unpack finds sounds in .brsar files and decodes them. This is particular works moderately well with files it reports as "Version 1.3"., those around the vintage of Super Smash Bros Brawl. For "Version 1.4" .brsars, you'll have better luck with ripping_mama, below.
Stereo sounds are skipped, and looping is ignored. Nothing is done with sequences.
fsbii
fsbii 0.5 converts a multi-stream .fsb into a set of single-stream .fsbs, suitable for use with vgmstream. This is sometimes necessary for Wii games, thus the name. As of 0.5 it can also extract embedded FSBs from within (uncompressed) archives.
letsdump
letsdump 0.0 dumps the FILE chunk of a .brsar file. This is useful for games like Let's Tap, in which each streamed track is wrapped in a single .brsar. In this situation, running it like:
letsdump song.brsar song.rwsd
will generate a song.rwsd file that can be used in vgmstream.
dumplarc
dumplarc 0.0 extracts files from the simple LARC archive (.la) found in some doujin games.
strip_silence and strip_wav
strip_silence 0.1 removes silence at the end of .wav files, and prints a command to re-add the silence (with the included add_silence). It's intended for use with 44100 Hz 16-bit stereo PCM files, such as CD Audio. A nice feature is that it leaves a little silence at the end (1 second by default). This can be used to strip trailing silence from odd files, but retain the ability to re-add it and get the original file back.
strip_wav 0.1 is useful in some situations where strip_silence isn't, such as when the silence at the end of the file isn't entirely zeroes. It strips a number of bytes from the end of a .wav, by default 10 seconds worth of 44100 Hz 16-bit stereo PCM, regardless of whether they are perfectly silent. It also prints a command to restore the file; if the stripped bytes were all zero the command is add_silence (included), otherwise it backs up the original file and prints a copy command.
ripping_mama
ripping_mama 0.0 finds sounds in .brsar files and decodes them. It is effective with "Version 1.4" .brsars, such as those in the 2nd Cooking Mama (despite the name, the 1st Cooking Mama's .brsar doesn't work with ripping_mama, but it works with brsar_unpack).
As with brsar_unpack, only mono sounds are decoded, looping is ignored, and nothing is done with sequences.
utf_tab suite
utf_tab 0.2 is a set of tools for dealing with CRI's @UTF-table-based formats. utf_view shows the overall structure of such files, csb_extract extracts the contents of .csb files (often .aax audio), and cpk_unpack unpacks .cpk files (which also often contain .aax or .adx).
end