Apex Legends .MSTR

Codecs, formats, encoding/decoding of game audio, video and music
xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

If the audio is in fact binka encoded I don't know why Maschine would be able to read it... I don't have the software though, so that's up to someone else to verify.

I'm looking into the dll files and the way Titanfall 2 call the dlls (Apex is packed). I don't have much knowledge in audio encoding though, so I'm not making a fast progress.
Durandal217
Posts: 31
Joined: Sun Apr 10, 2016 3:54 pm

Re: Apex Legends .MSTR

Post by Durandal217 »

I agree, i'm certain its a troll post.

I appreciate all the work you've put into this, regardless of time as long as some or any progress is made is good enough for me and any other people looking for the audio of these games.

and like I said we're so close, we just need that AH HA! moment. I just wish there was more that I could do.
Luriam
Posts: 14
Joined: Sat Feb 09, 2019 4:07 pm

Re: Apex Legends .MSTR

Post by Luriam »

I'm still checking this thread every day :< I tried a couple things myself, but I didn't get very far. Anybody have an update on this ?
Durandal217
Posts: 31
Joined: Sun Apr 10, 2016 3:54 pm

Re: Apex Legends .MSTR

Post by Durandal217 »

Not that I can find, I keep trying. With no results. It's frustrating, it makes me want to learn how to code and in my free time I'm trying to understand the basic's by reading the guide to exploring file types. I've been messing around with the big chunk of Patch_1.mstr can be mostly extracted with the header present in that file which is what baffles me. My attempts at seeing if that head would extract other files yielded no results.

What i'm trying to understand is this: Is each header for each chunk specifically coded for that particular chunk? is that what variable size means? I want to understand why the header works for one piece of data but not another.

If brute forcing is a no go the last resort is still relying on someone to make a script or program. I reached out to Daemon1, he doesn't have time to do it, but said audio extraction wasn't difficult. I Also tried to reach out to DZT Porter the maker of Legion, I never got a reply back... xyx0826 have you made any progress on your end?

It's tough because as much as I want to do it myself, with what I can learn and what I know, it's obvious a script or program is needed to get the full audio. It's a field I do not know or fully understand. I hate begging, I get it that those who do know how to code are constantly bombarded with stuff and are busy with their jobs, but i'll take anything that gets this one step closer to being solved.
zuronaught
Posts: 12
Joined: Sun Mar 03, 2019 4:17 am

Re: Apex Legends .MSTR

Post by zuronaught »

Durandal217 wrote:it's obvious a script or program is needed to get the full audio. It's a field I do not know or fully understand. I hate begging, I get it that those who do know how to code are constantly bombarded with stuff and are busy with their jobs, but i'll take anything that gets this one step closer to being solved.


I'm basically in the opposite boat. I'm new to file formats and its hard for me to understand them. On the other hand, I'm really good at coding. If you are able to explain how the format works and how it's structured, I can turn that into a program for you. If there is any other coding help you need to get to a level where you understand the files, I can also help with that.
xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

So for the last weeks I looked into MSS and TF|2's binaries. It seems like...

(1) MSS10 does not provide an audio decoder API like previous MSS versions did. (?)
(2) TF|2 engine creates a MSS queue at startup then, when a Source script requests to play an audio, adds some sort of "play event" to the queue for MSS to handle it.

I have other projects I had to work on so I wasn't able to dig much. I've put some preliminary findings up on my repo https://github.com/xyx0826/MilesTools. I'll definitely take a closer look when I have time, but like zuronaught - I'll be quite happy to implement if any of you come up with ideas.
Durandal217
Posts: 31
Joined: Sun Apr 10, 2016 3:54 pm

Re: Apex Legends .MSTR

Post by Durandal217 »

zuronaught wrote:I'm basically in the opposite boat. I'm new to file formats and its hard for me to understand them. On the other hand, I'm really good at coding. If you are able to explain how the format works and how it's structured, I can turn that into a program for you. If there is any other coding help you need to get to a level where you understand the files, I can also help with that.


This is the best I was able to find about bink audio in general, I don't know if the same thing applies to .binka https://wiki.multimedia.cx/index.php/Bink_Audio

Other than that all the other information I have is in the first post.

xyx0826 wrote:So for the last weeks I looked into MSS and TF|2's binaries. It seems like...

(1) MSS10 does not provide an audio decoder API like previous MSS versions did. (?)
(2) TF|2 engine creates a MSS queue at startup then, when a Source script requests to play an audio, adds some sort of "play event" to the queue for MSS to handle it.


Fascinating on number 2. However number 1 confuses the hell out of me too, if there is no decoder how is it decoding the audio?
xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

Durandal217 wrote:Fascinating on number 2. However number 1 confuses the hell out of me too, if there is no decoder how is it decoding the audio?


Ah, I should've made it clearer.

Original MSS provides an API, `AIL_decompress_ASI`, that takes a Bink audio file and directly converts it into a wav file. You can then simply take the file from memory and save it to disk.

I haven't seen a similar API in MSS10 yet. Surely the dll knows how to decode the audio, but it uses the decoder internally to feed the decoded waveform into playback device/audio driver etc. without giving it to you in its data form.
zuronaught
Posts: 12
Joined: Sun Mar 03, 2019 4:17 am

Re: Apex Legends .MSTR

Post by zuronaught »

Durandal217 wrote:Original MSS provides an API, `AIL_decompress_ASI`, that takes a Bink audio file and directly converts it into a wav file. You can then simply take the file from memory and save it to disk.

I haven't seen a similar API in MSS10 yet.


I swear I remember seeing AIL_decompress_ASI in one of the dlls. I unfortunately had to reinstall windows so my game installation is gone right now and I can't check.
superdave3k
Posts: 3
Joined: Thu Jun 13, 2019 5:41 pm

Re: Apex Legends .MSTR

Post by superdave3k »

xyx0826 wrote:
Durandal217 wrote:Fascinating on number 2. However number 1 confuses the hell out of me too, if there is no decoder how is it decoding the audio?


Ah, I should've made it clearer.

Original MSS provides an API, `AIL_decompress_ASI`, that takes a Bink audio file and directly converts it into a wav file. You can then simply take the file from memory and save it to disk.

I haven't seen a similar API in MSS10 yet. Surely the dll knows how to decode the audio, but it uses the decoder internally to feed the decoded waveform into playback device/audio driver etc. without giving it to you in its data form.



Hey if you're still working on this, I was able to dump the 64 bit miles DLL and get pretty usable code back, can shoot you what I have, if not that's cool too, just thought I'd offer. Know this is an old thread, sorry for necroing it.
Durandal217
Posts: 31
Joined: Sun Apr 10, 2016 3:54 pm

Re: Apex Legends .MSTR

Post by Durandal217 »

superdave3k wrote:
xyx0826 wrote:
Durandal217 wrote:Fascinating on number 2. However number 1 confuses the hell out of me too, if there is no decoder how is it decoding the audio?


Ah, I should've made it clearer.

Original MSS provides an API, `AIL_decompress_ASI`, that takes a Bink audio file and directly converts it into a wav file. You can then simply take the file from memory and save it to disk.

I haven't seen a similar API in MSS10 yet. Surely the dll knows how to decode the audio, but it uses the decoder internally to feed the decoded waveform into playback device/audio driver etc. without giving it to you in its data form.



Hey if you're still working on this, I was able to dump the 64 bit miles DLL and get pretty usable code back, can shoot you what I have, if not that's cool too, just thought I'd offer. Know this is an old thread, sorry for necroing it.


I don't know if he is still active but please post what you have and what you've learned anything is valuable at this point. Still dying to get the audio from this game!
StrefaPD
Posts: 2
Joined: Wed Jul 03, 2019 3:09 pm

Re: Apex Legends .MSTR

Post by StrefaPD »

can someone tell me how i can extract polish sounds files? ;) pls tutuorial
xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

superdave3k wrote:Hey if you're still working on this, I was able to dump the 64 bit miles DLL and get pretty usable code back, can shoot you what I have, if not that's cool too, just thought I'd offer. Know this is an old thread, sorry for necroing it.

Sorry for the late reply. Haven't checked the thread in a while but yes I'm still very interested in this. Thanks.
zuronaught
Posts: 12
Joined: Sun Mar 03, 2019 4:17 am

Re: Apex Legends .MSTR

Post by zuronaught »

xyx0826 wrote:
superdave3k wrote:Hey if you're still working on this, I was able to dump the 64 bit miles DLL and get pretty usable code back, can shoot you what I have, if not that's cool too, just thought I'd offer. Know this is an old thread, sorry for necroing it.

Sorry for the late reply. Haven't checked the thread in a while but yes I'm still very interested in this. Thanks.

Same.

zuronaught wrote:I swear I remember seeing AIL_decompress_ASI in one of the dlls. I unfortunately had to reinstall windows so my game installation is gone right now and I can't check.

I looked through the files again and I must misremembered. I must have been thinking about some missing dependencies from mss64 in bink2w64 named AIL_mem_alloc_lock_info, AIL_release_sample_handle, AIL_minimum_sample_buffer_size, etc.
fax1ty
Posts: 1
Joined: Fri Jul 05, 2019 4:43 am

Re: Apex Legends .MSTR

Post by fax1ty »

Any progress? I was able to get these files
Image
thanks to the following tool
But I can't convert the received files to the playable format
Image
xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

fax1ty wrote:But I can't convert the received files to the playable format

"No codec". You'll need a binkawin.asi file to work with Binkalore in order to decode those files.
Actually even if you manage to do that those file pieces are of no use right now, since they're basically audio fragments and we currently don't have a way to put them back together.
xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

zuronaught wrote:I looked through the files again and I must misremembered. I must have been thinking about some missing dependencies from mss64 in bink2w64 named AIL_mem_alloc_lock_info, AIL_release_sample_handle, AIL_minimum_sample_buffer_size, etc.


That's okay... Apparently they've done a complete rewrite of their API in MSS10.
I took a peek at other forums hoping to find more people looking into the sound system. However it seems like most people are only interested in vpaks and starpaks.
Lyxi
Posts: 23
Joined: Mon Jun 24, 2019 11:10 pm

Re: Apex Legends .MSTR

Post by Lyxi »

xyx0826
Posts: 26
Joined: Sat Feb 16, 2019 10:29 pm

Re: Apex Legends .MSTR

Post by xyx0826 »

Lyxi wrote:soon

This looks awesome. Seems like you figured out how the APIs work? Hoping to see more details/progress on it!!
Lyxi
Posts: 23
Joined: Mon Jun 24, 2019 11:10 pm

Re: Apex Legends .MSTR

Post by Lyxi »

xyx0826 wrote:
Lyxi wrote:soon

This looks awesome. Seems like you figured out how the APIs work? Hoping to see more details/progress on it!!

yes sir! been spending about a month on it, got a lot of internal structures documented at this point and i found a path last night that leads to a directsoundbuffer->lock()