SgtSweetieBelle Posted July 11 Share Posted July 11 (edited) PROGRESS updated 9/23/2024 THINGS WE'VE FIGURED OUT pack_sd.pack contains all the sound files! all filenames are a randomized 16-character alphanumeric string, with no obvious ordering and no metadata. filenames are consistent across patches... except for the Season 6 update, which renames all of the files >_< the following file types can be found within: WAV files (mostly music, must be converted with vgmstream) BNK packages (must be extracted with bnkextr) WEM files (mosty sound and voices) a single unidentifiable file called 397F9F6720B1625D that grows larger with each update to the game THINGS TO FIGURE OUT what is 397F9F6720B1625D?! is it an index of metadata?! WE MUST KNOW!!! file attached to this post here: INSTRUCTIONS what you need a copy of the game. the specific file for the music: (speedstorm directory)\Windows-Desktop\PC\pack_sd.pack quickbms by Luigi Auriemma to extract the files the BMS script by @DKDave so that QuickBMS can identify the filetypes of the extracted files. you can get it from this post: to convert the music: vgmstream-cli, download the relevant "Command Line" file for your OS to get the sound/voices: WWise *.BNK File Extractor how-to use QuickBMS to extract the files open quickbms.exe first prompt: select DKDave's BMS script second prompt: navigate to (speedstorm directory)\Windows-Desktop\PC\ and select pack_sd.pack, which contains all the sound files third prompt: choose whatever directory you want to extract all the files this will create a bajillion WAV and BNK files. the WAV files are music, the BNK files are packages containing sound and voice effects. use VGMStream to convert the music select ~400 of the WAV files at a time. any more and the command will fail. (my advice: if you start from the bottom of the file list and go up, then it'll prevent your window from autoscrolling.) drag and drop them onto vgmstream-cli.exe. you can do multiple batches at a time! repeat until all files are converted. the converted files will double-up the filename extension into .wav.wav. feel free to delete the rest. use BNK Extract to further extract the vox/sfx select a .bnk file drag and drop it onto bnkextr.exe repeat for each .bnk file (i'm pretty sure i figured out a way to do this in big batches but i forgot exactly how, will update when i can) ORIGINAL POST 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): 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: 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! ^-^ Edited September 24 by SgtSweetieBelle updated with instructions and most recent findings Link to comment Share on other sites More sharing options...
DKDave Posted July 11 Share Posted July 11 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 More sharing options...
SgtSweetieBelle Posted July 11 Author Share Posted July 11 (edited) oh wow, you're right, it worked! let me get that file uploaded for you... Edited July 11 by SgtSweetieBelle Link to comment Share on other sites More sharing options...
SgtSweetieBelle Posted July 11 Author Share Posted July 11 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 @DKDave! https://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 More sharing options...
SgtSweetieBelle Posted July 12 Author Share Posted July 12 (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 July 12 by SgtSweetieBelle Link to comment Share on other sites More sharing options...
Solution DKDave Posted July 12 Solution Share Posted July 12 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 1 Link to comment Share on other sites More sharing options...
SgtSweetieBelle Posted July 14 Author Share Posted July 14 (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 July 15 by SgtSweetieBelle Link to comment Share on other sites More sharing options...
MDGX Posted July 27 Share Posted July 27 (edited) 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 July 27 by MDGX Link to comment Share on other sites More sharing options...
Hearhellacopters Posted August 29 Share Posted August 29 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 More sharing options...
SgtSweetieBelle Posted September 23 Author Share Posted September 23 (edited) On 7/27/2024 at 10:10 AM, MDGX said: 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. hi there! yeah, the music is in pack_sd, maybe they changed it in the newest updates? lemme check rq edit: yep it's all still in there! you're using DKDave's quickBMS script, right? the one in this post here: that'll get you all the music! On 8/29/2024 at 2:37 PM, Hearhellacopters said: 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 1.24 kB · 3 downloads pack5.zip 2.14 MB · 2 downloads i think i might have gotten lost a bit here, how are you able to see compression flags with that quickbms script? (sorry i'm new to all this! xD) also, where'd you nab that pack5 file from? all of the pack5 files i've seen so far have had filesizes in the hundreds of megabytes, but this one's tiny! edit: did some research, i see that these BT files are templates for 010 hex editor. never knew you could do that before. neat! might play around with this myself, though i barely know what i'm looking at, so you'll probably not get too much useful info from me ahahaha ^^; Edited September 24 by SgtSweetieBelle Link to comment Share on other sites More sharing options...
SgtSweetieBelle Posted September 24 Author Share Posted September 24 (edited) i went through all of the depots and manifests of the game on steamdb.info, used that to download a bunch of old versions of the game, and ran some comparisons to identify what was added or removed in each release. i've found the following: the game does, indeed, preserve filenames across versions! (WITH ONE EXCEPTION.) i can see all the new and changed tracks with a diff checker, which is great for continued archival. ...except for one big instance. will elaborate further below. the early access releases, starting from release #1 (18 April 2023) contains no pack_sd.pack file. instead, there's just a big main.pack file. presumably the sound files are in here, but @DKDave's BMS script wasn't able to identify them. i haven't figured out how to get anything usable out of this yet. the first release to contain a pack_sd.pack file is release #7 (28 September 2023) this is the pre-patch for Season 4 (Cave of Wonders, ft. Aladdin), and is also when the game left early access and became free-to-play. in release #11 (28 November 2023), a shit-ton of files were added. the package ballooned from 780 to 1503 wav files. i think someone forgot to .bnk a lot of the sfx/vox files. this is the pre-patch for Season 5 (Let It Go, ft. Frozen). in release #13 (6 February 2024), the file count went back to normal, but all of them had their names changed! because of this, it's hard to see what songs actually got added or removed. may have to do a CRC32 compare of every file in the directory or something... very annoying. this is the patch for Season 6 (Under the Sea, ft. The Little Mermaid). everything after #13 is business as usual. edit: I noticed something else that i think we should prioritize if possible: every single pack_sd.pack has an unidentifiable file in common that gets bigger with each release. this file is 397F9F6720B1625D. the growing filesize makes me think that this might be some kind of manifest/index with metadata for all of the sound files! anyone have any ideas on how to crack this open or decode it? i'll attach a zip with all of the files from every version of the game if anyone wants to take a crack at it: 397F9F6720B1625D.zip Edited September 24 by SgtSweetieBelle Link to comment Share on other sites More sharing options...
Hearhellacopters Posted November 21 Share Posted November 21 (edited) So I looked into this again and I'm still stumped. I managed to get a decrypted lib from the iOS version of the game via ArmConverter. I did find a few more hints but nothing I can make sense of. First, the devs refer to the pack files as "pegasus packs". Not sure if they were used in other Jet engine games. The file you're referring to is likely an encrypted SoundbanksInfo.xml file. Also the file names look like Murmur hashes by the const but the function has a that weird 0x61C88647 value use in a way that it is here. . I also have no idea what that string format they are using. Looks like Python but letters in the brackets don't make sense to me. Anyways. here is the lib if you want to play around and spend more time on it. You might get lucky but that's all I got in this sitting. https://drive.google.com/file/d/1Lzuinw7cys6_xgkOiu6Wkc0i8BhRe4Ft/view?usp=drive_link Next steps would be to find a way to attach a debugger to the game but that can be easier said then done. Edited November 21 by Hearhellacopters Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now