Home →
Extract Data →
Update Data →
Customize Characters →
Convert Songs →
|
Updating Voice SamplesThis process is Dreamcast only and does not work for any other version. You cannot modify the NAOMI/Arcade ROM with these steps. You can make limited modifications to PS2 and Xbox OG with this process: those possibilities are noted below in the Filenames section.Get Ready
The Dreamcast version of MvC2 uses DTPK (Digital Track PacKage) files to hold banks of voice samples and sound effects. These banks can contain 8bit PCM (raw uncompressed audio), 16bit PCM, or 4bit Yamaha ADPCM (compressed) samples. No clips in MvC2-DC use 16bit PCM due to space constraints. Most sound effects use 4bit YADPCM. Most voice samples, where the character says something, use 8bit PCM. For reference, we have rips of the audio available here. These are the composited tracks as played within the game. That doesn't usually matter, but for Sentinel a few of its tracks (00, 02, and 15) are composed of multiple samples played together. That shouldn't matter but if it's confusing to you LMK and I should be able to sort you out. Warning: One important but usually forgotten aspect of MvC2-DC technical design is the limitations of Dreamcast hardware. The Dreamcast has 2MB available for audio. A single match needs to load 6 character audio files plus the common audio effects. The common audio effects file (SE_COMN) is 931k. The character files are limited to about 156k. (Apparently the Capcom devs were trying for a maximum of 936k used for all loaded characters.) Please stay within that file size limit to avoid potential issues. Yes, this is a challenge: you may need to downsample further in order to avoid issues. It is indeed possible to blow past that file limit, but consider that if you do this for more than one character you are going to have issues. 220kb is about the largest possible: once you hit 240kb you will start experiencing audio glitching and failures. Filenames
Note that MvC2-PS2 uses the exact same SE_COMN, SE_SYUK, and SE_STAF DTPK files. MvC2-XboxOG uses those three as well but they are named differently: Xbox file_860 is the Dreamcast's SE_COMN, Xbox file_123 is the Dreamcast's SE_STAF, and Xbox file_124 is the Dreamcast's SE_SYUK. The individual character voice files are not the same format on PS2 or Xbox. Convert your audio to WAVThe best downloadable conversion software is Audacity, an up-to-date open source audio editor that imports most popular audio formats. Once you've imported your voice clip into Audacity, you can export it to WAV using File : Export Audio ... : Export to computer. You want to select Channels : Mono, Sample Rate: 11025 Hz, Encoding: Unsigned 8-bit PCM. (Note that Audacity doesn't save the Mono/Stereo preference, so remember to swap back to Mono each time.) Awave Studio will let you create 4bit Yamaha ADPCM files ("YADPCM" in that UI) if you want to try using YADPCM chunks. At some Future Point I might update DTPKDump to handle conversion to YADPCM, but I haven't written that code yet. Use DTPKDump to splice that indtpkdump.py -wavconv PL00_VOI.binThat will extract out the 23 audio samples to WAV. (DTPKDump here is converting the 22 YADPCM chunks to PCM WAV, and then we have the 1 native PCM WAV sample too.) We can now play those files back in any WAV player. Let's say we wanted to update the "Hadouken!" sound. We play the WAV files until we find what we need, which just so happens to be the file "PL00_VOI_00_21_SPD_15_Sample_03_Rate_E9.wav". The filename syntax is "Original_filename Group_ID Track_ID SamplePlaybackdef SampleId DTPK_Rate". All we care about here, though is "Sample_03". That indicates that we will need to update sample 3 with our new audio. dtpkdump.py -splicepcm 3 MyWavSample PL00_VOI.BIN -o PL00_NEW.BINDTPKDump automatically handles everything else: that command line says to inject MyWavSample as the new sample 3, and to create PL00_NEW.BIN as the output file. If we also want to update the "Shinkuu!" sound, which we note is filename "PL00_VOI_00_20_SPD_14_Sample_08_Rate_E9.wav", then our command line would be: dtpkdump.py -splicepcm 3 MyWavSample -splicepcm 8 MyOtherWavSample PL00_VOI.BIN -o PL00_NEW.BIN, and so forth. You can create a monstrous command line splicing in all the samples at one time, or you can do it one at a time, each time updating the file you created with the previous step. Note again that MvC2 character audio files have a fairly low size limit, which DTPKDump will warn you about. If you are using 11kHz 8bit PCM audio, you probably won't bloat the file too much. 22kHz clips or longer clips might cause problems, though. Note that in some situations longer audio is going to be clipped by the game, so long voice clips are usually not ideal. Verifying DTPK playback You can test your DTPK files by using DSFDTPK.py and foobar2000. First we need to convert the DTPK to DSF (Dreamcast Sound Format) by running the command line:dsfdtpk.py aicadrv.bin -a pl00_new.binThis will produce a DSFLib containing the AICA driver and all the audio samples. The miniDSF files contain links to entries in that DSFLib. Now we play those miniDSFs back in foobar2000 to make sure everything sounds correct. You can play back all the files, or you can just check the files we touched. If you remember we have touched the samples used in "PL00_VOI_00_21_SPD_15_Sample_03_Rate_E9.wav" and "PL00_VOI_00_20_SPD_14_Sample_08_Rate_E9.wav". Those are miniDSF files "PL00_VOI_00_20.minidsf" and "PL00_VOI_00_21.minidsf" - everything before the "SPD" is the miniDSF identifier. (You can also play DSFs in Kodi Media Center, BZR Player, and WinAMP, but foobar works really well for me.) Finishing UpCopy your updated DTPKs to your mix Copy your updated DTPKs to the appropriate filename on the mix now. So if we have a PL00_NEW.BIN, copy that to PL00_VOI.bin on the disc image, and so forth. That's it - this should be pretty easy once you've done it a couple times. |