Page 1 of 2

Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Wed May 15, 2019 9:46 pm
by SteamyJ
Hello all. I've been struggling with this for a while and could use some help. I extracted the files from the iso using Dolphin and it seems the voice clips are in the .MDT files. Is there anyway to extract these or explore them further? I've tried just about everything I can think of.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Thu May 16, 2019 6:18 am
by Pingu
Can you upload some sample MDT? We may be able to help. :)

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Thu May 16, 2019 7:53 am
by SteamyJ
Sure thing. This link has all the MDT files I found.

https://mega.nz/#F!uWh2BYAY!yx9KYjjiAWZhs8sCpH8VgA

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Thu May 16, 2019 6:20 pm
by DKDave
I'm not sure if the .mdt files contain any audio. As far as I can tell, the .seb files are the ones that contain the voices.

I've tried experimenting with various GENH audio formats, but can only get very crackly and barely audible voices at best. I can't find the correct audio format for these files, which would make things much easier!

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Thu May 16, 2019 9:14 pm
by Pingu
I have a slight feeling that these are headerless DSP files, as just scrolling through the files I can see sample rates, and possibly a coefficient table for it. I just need to figure out how to parse it, as there seems to be several tables before the data starts (Still can't find the data start :P).

Looking at "1000.seb" here are the values I've found thus far:

Code: Select all

0x4 uint32 file size
0xA uint16 # of samples in file (?)
0x1c uint32 Start offset of sample data (probably acts as a base-offset)
EDIT: Was able to manually extract one sample from the SEB and have figured out it is DSP. Now that I know how to convert the data, I have to figure out how to link it all together in order to create a cohesive script.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Thu May 16, 2019 11:50 pm
by DKDave
Also what I've worked out in combination with yours:

0x04 - size of file (maybe used for calculating the size of the final entry in table 3, as it doesn't seem to store file lengths)
0x0A - number of entries in table 1
0x0C - offset to 'table 1' (8 bytes per entry)
0x10 - offset to 'table 2' (first entry in this table is the size of the data)
0x14 - offset to 'table 3' (32 bytes per entry) + a chunk of other data, see below
0x18 - offset to 'table 4'
0x1C - offset to start of sample data

What I've managed to work out of table 3 is as follows:

Offset 0x00 - not sure, but if 0xFFFF, this signifies the end of the entries in this table.
Offset 0x04 - offset to the start of this entry's audio data (relative to the start of the audio offset at 0x1C), so first file is at 0x2EC60.
Offset 0x0E - sample rate.
Offset 0x1C - this is an offset to some other data for each entry, relative to start of table 3 - so first entry is at 0x1464 (0x7C0 + 0xCA4).

That should be enough to at least extract the raw data files.

Pingu - did you manage to get your extracted data to play correctly? If so, what did you use? Thanks.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Fri May 17, 2019 3:46 am
by Pingu
I utilized vgmstream. The problem with GENH is that it doesn't provide the ability to provide decoding coefficients. Currently working on a BMS implementation for this. The pointer at address 0x1C of table 3 points to each set of decoding coefficients, which usually is seen as 16 sets of uint16s. They are necessary to implement with the stream for decoding. You are correct with the file offsets, but obviously you can just subtract the current offset from the next offset to get the size, and if it's a case where its the last element , itll utilize EOF as the endpoint.

As well, the uint16 at 0x8 seems to be constant through other SEB so I assume it's some type of version ID. Since there's seems to be no entry count for table three, I guess I'd just read up to the next offset value, and if the next read offset = the 0xFFFFFFFF then break the script...

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Fri May 17, 2019 5:22 am
by Pingu
Script is complete. So, here's how to extract and convert these files:

Firstly. download QuickBMS:
http://aluigi.altervista.org/quickbms.htm

Next, download Foobar2000 + the latest vgmstream component (you can find this under "Components" on the main website):
https://www.foobar2000.org/

Finally download this pack of tools, which has a .bms , .vgmstream.txth and an example picture:
SEB.zip
(NOTE! Sometimes windows can be temperamental and rename the txth to "vgmstream.txth" you need to have the dot in front of it so it stays named ".vgmstream.txth")

Firstly, run the BMS script on the SEB archive, which should extract custom .vgmstream files (The GUI can show you how if you're confused)

Next, once you extracted the files to the folder of your choice, place the TXTH in the same folder as the .vgmstream files (See example photo please!!!)

Finally, open up foobar, and from that folder just drag and drop the .vgmstream 's from the folder to the foobar program, and they should be able to play fine and you can convert them.

Cheers!

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Fri May 17, 2019 10:31 am
by SteamyJ
Sorry for the trouble but I've never used QuickBMS before. I'm trying different combination of files but I can't seem to get it to extract. I'm sure it's something simple but here's what I have so far.

https://imgur.com/vN5P5s8

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Fri May 17, 2019 3:45 pm
by Pingu
You’re opening the input archive wrong. You should first select the *.bms, and then a *.seb (not the vgmstream.txth file!) and then an output folder.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Fri May 17, 2019 4:44 pm
by DKDave
Good work, Pingu :-)

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Fri May 17, 2019 11:39 pm
by DKDave
Just an update:

I have discovered that the MDT files do in fact contain voice samples, contrary to my initial assumption. The normal .seb files seem to be just sound effects.

The MDT files contain various file types, but there is definitely a .seb file structure within each one - I've managed to extract them manually as there doesn't seem to be an easy way to do it. They're in exactly the same format as the stand-alone .seb files, so they're easy to recognise.

For example, in 1110.mdt, the .seb file is at location 0x217C0.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Sat May 18, 2019 2:28 pm
by SteamyJ
Ah good news! I tried the steps again and got it working this time. This has been invaluable to me and I thank you both for your hard work.

While some voices are here, there are still quite a few that are not contained in these .seb files. Many of the game's bosses and villain voices are still out there. I'm thinking they're still hiding in the .MDT files as DKDave pointed out.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Sat May 18, 2019 8:23 pm
by DKDave
I have now extracted all of the voice files from the MDT archives, and all the dialogue seems to be there.

I'm not sure if I'm allowed to attach the .seb files here that are contained within the MDT files - but all you need to do is find them within the MDT files and use the same procedure to convert them as previously.

Let me know if you need any help on getting to them.

Re: Trying To Rip Voice Clips from Bomberman Generation (GC)

Posted: Sun May 19, 2019 2:14 pm
by SteamyJ
How do I extract the .seb files from the .MDT files? I'm not sure how to explore it.