Jump to content

Disney Speedstorm - extracting music/sfx/voice


Go to solution Solved by DKDave,

Recommended Posts

first off, apologies, i know VERY little about this sort of stuff, and a lot of this will probably seem pretty basic. i'd literally never heard of quickbms until maybe an hour ago lol

tl;dr:

  • trying to get music/sfx/voice files from Disney Speedstorm.
  • opened .pack files and extracted ~40k files, most with no file extension.
  • tried opening some at random in MPC-HC.
    • one file gave me an error saying "failed to find a connectable filter" as well as tons of audio codec information.
    • error log and file are attached.
  • i feel like i'm getting close. i just need help turning this into something readable by audio playback apps, and a quick means to identify which extracted files contain audio.

known game details:

  • game: Disney Speedstorm
  • developer: Gameloft
  • engine: Jet Engine (shared with Asphalt 9, possibly modified/forked?)
  • file type: .pack
  • file list (as of 2024-07-11):
    image.thumb.png.3b6dd2727d82aec4d843d46f6200b0e9.png

my goals are to extract the following from Disney Speedstorm in a playable format by contemporary media players:

  • music
  • sound effects
  • voice lines

so far, using quickbms and the "Zip64Unpacker_A9_1.6.2.bms" script (which i found on this post by @ksg22 and this post by @Pige123), i've managed to extract around 40,000 files from all of the .pack files. their file extensions include:

  • <none> (11,447 files)
  • .json.jmodel (7,651 files)
  • .tga.jtex (21,332 files)

i'm guessing the files i want are somewhere in the 11.5k files with no file extension. at random i tried dumping a few into Media Player Classic. most come up "invalid", but occasionally i'll get something like this:

image.png.04133310dfeb4ce3dfca05648df7c4d6.png

i'll include the full log here, as i barely know what any of this means.

LAV Splitter Source (internal)::Audio

Media Type 0:
--------------------------
Audio: 0xffff 44100Hz stereo 94kbps

AM_MEDIA_TYPE: 
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {0000FFFF-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 256000
cbFormat: 66

WAVEFORMATEX:
wFormatTag: 0xffff
nChannels: 2
nSamplesPerSec: 44100
nAvgBytesPerSec: 11779
nBlockAlign: 0
wBitsPerSample: 0
cbSize: 48 (extra bytes)

pbFormat:
0000: ff ff 02 00 44 ac 00 00 03 2e 00 00 00 00 00 00 ÿÿ..D¬..........
0010: 30 00|00 00 02 31 00 00 a0 f6 95 00 ba 00 00 00 0....1.. ö.º...
0020: 12 0e 28 00 00 00 20 00 28 09 00 00 e2 09 00 00 ..(... .(...â...
0030: 24 01 20 00 f4 33 00 00 94 35 00 00 6f ce 50 a9 $. 3..5..oÎP©
0040: 08 0b                                           ..


Media Type 1:
--------------------------
Audio

AM_MEDIA_TYPE: 
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {AFBC2343-3DCB-4047-9655-E1E62A61B1C5}
formattype: Unknown GUID Name {35189950-CAC9-4C8D-819D-B6FAEE15DD9D}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 256000
cbFormat: 72

WAVEFORMATEXFFMPEG:
nCodecId: 0x0000

WAVEFORMATEX:
wFormatTag: 0xffff
nChannels: 2
nSamplesPerSec: 44100
nAvgBytesPerSec: 11779
nBlockAlign: 0
wBitsPerSample: 0
cbSize: 48 (extra bytes)

pbFormat:
0000: 00 00 00 00 ff ff 02 00 44 ac 00 00 03 2e 00 00 ....ÿÿ..D¬......
0010: 00 00 00 00 30 00 00 00|02 31 00 00 a0 f6 95 00 ....0....1.. ö.
0020: ba 00 00 00 12 0e 28 00 00 00 20 00 28 09 00 00 º.....(... .(...
0030: e2 09 00 00 24 01 20 00 f4 33 00 00 94 35 00 00 â...$. 3..5..
0040: 6f ce 50 a9 08 0b 00 00                         oÎP©....

i'll include a sample file, the one that gave me that error and thus presumably has some audio data in it:

2DCC76A86C2974BF.zip

if anyone can help a gal decipher all this and squeeze something playable out of it, i'd really appreciate it! ^-^

Link to comment
Share on other sites

You can add the .wav extension to your sample file and it'll play in Foobar with vgmstream.  Unfortunately, the files in the .pack archives don't seem to have extensions to identify them.  If you can maybe upload an example .pack file that contains audio (such as the one from your sample), I might be able to adapt my zip QuickBMS script to identify them

 

 

Link to comment
Share on other sites

  • ikskoks changed the title to Disney Speedstorm - extracting music/sfx/voice
2 hours ago, DKDave said:

You can add the .wav extension to your sample file and it'll play in Foobar with vgmstream.  Unfortunately, the files in the .pack archives don't seem to have extensions to identify them.  If you can maybe upload an example .pack file that contains audio (such as the one from your sample), I might be able to adapt my zip QuickBMS script to identify them

 

 

here we go @DKDavehttps://mega.nz/file/NVoDRIRb#gHF5EDKLRV_BDT-Xh4kzM41AScyct6U_DnyX9gnPkk0

this is pack_sd.pack, the file with the most working sound files (sd for "sound", ugh, it's so obvious...)

there's some in here that i can't open with vgstream, but a bunch of others that i definitely can. i wonder if they're encoded differently, or perhaps they're their own archives full of sfx and voice lines?

thanks so much for your help so far!

Link to comment
Share on other sites

Posted (edited)

update: i did a mass rename to add .wav to all of the files, then ran them through vgmstream-cli.exe, and they all seem to have been converted successfully! this is an absolute treasure trove.

here are my remaining questions:

  • any faster way to identify these files?
    is there an index or metadata we can use to identify what each file is without playing it back?
     
  • what about the ones that won't convert?
    there's about ~160 files that won't open. any ideas on how we can identify and get into 'em?
     
  • how likely will game updates affect the integrity of these files and their names?
    i'm planning on indexing these in a database. but to do that, each file needs a static identifier. right now, that's the file name. how likely is the name to be preserved across updates in a frequently-patched live service game? i'm sure the answer differs from engine to engine, and since Jet Engine is proprietary, we probably don't have much insight into how exactly it works. but i'm hoping that these stay pretty fixed. i know some databases and indexes will muck around with file names while using a constantly-updated manifest to keep them identified... (if that's the case maybe i'll just use a hash instead lol)
     
  • will you still be adapting your quickBMS script now that we've gotten this far?
    i know it's still useful to do just so we can skip the rename and vgmstream steps on future runs, but do you think it's possible it might help with any of the outstanding problems i mentioned above?
     

edit: actually, yeah, the quickBMS script might come in handy, this has a LOT of files but it seems far from comprehensive. i can only guess that the rest of the sounds are spread out throughout the rest of the .pack files.

Edited by SgtSweetieBelle
Link to comment
Share on other sites

  • Solution
18 hours ago, SgtSweetieBelle said:

update: i did a mass rename to add .wav to all of the files, then ran them through vgmstream-cli.exe, and they all seem to have been converted successfully! this is an absolute treasure trove.

here are my remaining questions:

  • any faster way to identify these files?
    is there an index or metadata we can use to identify what each file is without playing it back?
     
  • what about the ones that won't convert?
    there's about ~160 files that won't open. any ideas on how we can identify and get into 'em?
     
  • how likely will game updates affect the integrity of these files and their names?
    i'm planning on indexing these in a database. but to do that, each file needs a static identifier. right now, that's the file name. how likely is the name to be preserved across updates in a frequently-patched live service game? i'm sure the answer differs from engine to engine, and since Jet Engine is proprietary, we probably don't have much insight into how exactly it works. but i'm hoping that these stay pretty fixed. i know some databases and indexes will muck around with file names while using a constantly-updated manifest to keep them identified... (if that's the case maybe i'll just use a hash instead lol)
     
  • will you still be adapting your quickBMS script now that we've gotten this far?
    i know it's still useful to do just so we can skip the rename and vgmstream steps on future runs, but do you think it's possible it might help with any of the outstanding problems i mentioned above?
     

edit: actually, yeah, the quickBMS script might come in handy, this has a LOT of files but it seems far from comprehensive. i can only guess that the rest of the sounds are spread out throughout the rest of the .pack files.

 

I've attached my QuickBMS script for these .pack files.  It's a bit hacked together due to the way the zip file structure works, but it seems ok.  It identifies the .wav and .bnk files and adds the appropriate extension to them.

.wav is normal audio files containing music

.bnk is WWise sound banks containing dialogue.

Both can be played in Foobar/vgmstream, hopefully that should be all of the audio files.

 

As for your other queries, I'm not sure.

 

ss_zip.zip

  • Like 1
Link to comment
Share on other sites

Posted (edited)

understood all good! This has been an incredible help so far. Thank you so much for everything.

do you have any tips and best practices for quickly identifying/organizing files? Any tools that that you like to use or workflows that help the process go by faster?

edit: found an app called Eagle that shows tons of metadata and lets you build a database with tags, folders/subfolders, and most importantly lets you playback/scrub through simply by highlighting a file's thumbnail (which is a generated waveform). really incredible for previewing and basic tagging. it isn't perfect but it's really nice and i'm making it work!

Edited by SgtSweetieBelle
Link to comment
Share on other sites

  • 2 weeks later...

I've been looking for a way to extract sounds from this game for ages. Thanks so much for this thread! I'm wondering though, have you found any music yet? If so, in which .pack file? The 'sd' one only seems to contain sfx and voice lines, right? I think I went through all the packs, but no other pack than the 'sd' one extracts .wav files.

Edited by MDGX
Link to comment
Share on other sites

  • 1 month later...

Thank you for your work! I was also looking into this game. I noticed that some of the files in some of these packs look like they are further compressed or possibly encrypted. Unsure.

I included a BT template based on the quickbms script and a small pack with 2 files. One file has a compression flag and the other says it does not (based on the quickbms script) but the files extracted seem to have more packed data, as the files don't have headers like the _sd pack does.

Any thoughts?

dz_pack.bt pack5.zip

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...