Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.
Zero Tolerance for Disrespect

Apex Legends .MSTR

Featured Replies

  • Author
  • Localization

Mages, posted Fri Feb 22, 2019 12:44 am (45105)


Durandal217 wrote:
I took some time to sit down and really read into and examine what you were talking about. I looked at your sample from titanfall 2 and reproduced your success. I then looked at a sample from apex legends, and noticed that the 0x00 are not present at all. However 0x99 is, hex editing the data to begin at that point yields a successful conversion of a single file unlike yours which will convert 5 in a single file.

Sadly I am not sure if that hex value you mentioned is a signature or not.


Could you provide a sample of a apex file pre and post conversion? I've reproduced successful conversions from Titanfall 2, but the Apex tail banks appear to have a different and far larger header after 1FCB (offset 6210 at general_english_patch_1.mstr), which is causing Binka2Wav to fail.
  • Replies 127
  • Views 147
  • Created
  • Last Reply

Top Posters In This Topic

  • Author
  • Localization

xyx0826, posted Fri Feb 22, 2019 2:39 am (45111)


I pushed my tools to the repo here: https://github.com/xyx0826/MilesTools
There are two projects in it:
Mileslice takes a stream bank or a folder of stream banks then slice them into bink audio files.
(WIP) Binkalore (not Bangalore) takes bink audio files and convert them into wavs. MSS binaries required. I'll implement data chunk slicing later.
Mileslice is written on .NET Core for cross-platform but the code is compilable to .NET Framework. Binkalore is strictly ran on .NET Framework 3.5. Any newer version will break MSS calls.
  • Author
  • Localization

Durandal217, posted Fri Feb 22, 2019 3:06 am (45112)


Mages wrote:
Durandal217 wrote:
I took some time to sit down and really read into and examine what you were talking about. I looked at your sample from titanfall 2 and reproduced your success. I then looked at a sample from apex legends, and noticed that the 0x00 are not present at all. However 0x99 is, hex editing the data to begin at that point yields a successful conversion of a single file unlike yours which will convert 5 in a single file.

Sadly I am not sure if that hex value you mentioned is a signature or not.


Could you provide a sample of a apex file pre and post conversion? I've reproduced successful conversions from Titanfall 2, but the Apex tail banks appear to have a different and far larger header after 1FCB (offset 6210 at general_english_patch_1.mstr), which is causing Binka2Wav to fail.


Absolutely.
  • Author
  • Localization

Durandal217, posted Fri Feb 22, 2019 6:00 am (45117)


xyx0826 wrote:
Here's an idea: trim off audio blocks one by one from the beginning of file. Each time feed the remaining data into the converter and look at conversion size. If it's bigger than 44 bytes, save that to disk.

From my current understanding on the format, this "bruteforce" way may work, unless some flags in the BinkA header is messing with MSS on how it recognizes the audio chunks.

I think I've ran into a bug in Visual Studio/.NET SDK where breakpoints on MSS library functions can cause debug session to crash.

Edit: all right, downgrading .NET Framework version works


I am gonna try this tomorrow and i'll report back. Thought I was gonna have some free time to try that but it didn't work out that way i'm also gonna try out the new tools.
  • Author
  • Localization

xyx0826, posted Sat Feb 23, 2019 1:28 am (45177)


Durandal217 wrote:
I am gonna try this tomorrow and i'll report back. Thought I was gonna have some free time to try that but it didn't work out that way i'm also gonna try out the new tools.

Trimming data chunks sometimes produce malformed files causing MSS to stuck and eat CPU power.

There's a way to cancel conversion mid-way but it only applies to conversions that do not go wrong.
  • Author
  • Localization

Durandal217, posted Sat Feb 23, 2019 1:57 am (45178)


xyx0826 wrote:
Durandal217 wrote:
I am gonna try this tomorrow and i'll report back. Thought I was gonna have some free time to try that but it didn't work out that way i'm also gonna try out the new tools.

Trimming data chunks sometimes produce malformed files causing MSS to stuck and eat CPU power.

There's a way to cancel conversion mid-way but it only applies to conversions that do not go wrong.


Yup, that was the problem i kept running into it would not convert or if i got a file to convert it was simply the same audio file just shorten.

Also for some reason when compiling Mileslice the project builds but does not produce a .exe, it will create the dll and everything else but even using VSS command prompt attempting to build program.cs produces this error:

Code:
Program.cs(4,24): error CS0234: The type or namespace name 'Slicing' does not exist in the namespace 'Mileslice' (are you missing an assembly reference?)
Program.cs(5,24): error CS0234: The type or namespace name 'Utilities' does not exist in the namespace 'Mileslice' (are you missing an assembly reference?)


Am I doing something wrong?
  • Author
  • Localization

xyx0826, posted Sat Feb 23, 2019 3:43 pm (45203)


Durandal217 wrote:
Also for some reason when compiling Mileslice the project builds but does not produce a .exe, it will create the dll and everything else but even using VSS command prompt attempting to build program.cs produces this error:

Code:
Program.cs(4,24): error CS0234: The type or namespace name 'Slicing' does not exist in the namespace 'Mileslice' (are you missing an assembly reference?)
Program.cs(5,24): error CS0234: The type or namespace name 'Utilities' does not exist in the namespace 'Mileslice' (are you missing an assembly reference?)


Am I doing something wrong?

It's intended. Mileslice uses .NET Core which compiles it to a dll, then you can use .NET Core runtime to execute it:
Quote:
dotnet Mileslice.dll [parameters]

This allows the tool to be cross-platform. I've heard people playing Apex on other platforms so I decided to make it that way.
Since it seems like people here mostly use Windows... I'll change it to .NET Framework to prevent confusion.
  • Author
  • Localization

Durandal217, posted Mon Feb 25, 2019 12:30 am (45251)


so I downloaded the latest version and split general_stream.mstr, everything looks good so far. Binkalore is working good, just trying to create a batch file to batch convert but what I was able to listen to sounded better, still has the cutoff due to chunk audio but a decent improvment.

I also played around with the larger files, I found many instances of 0x99 in them, I even got one to play. I also tried "stitching" files together through hex editing and see what results I could get, sadly the stitching resulted in corrupted files that would not convert.

That's the latest I have...
  • Author
  • Localization

xyx0826, posted Mon Feb 25, 2019 2:15 am (45256)


Durandal217 wrote:
so I downloaded the latest version and split general_stream.mstr, everything looks good so far. Binkalore is working good, just trying to create a batch file to batch convert but what I was able to listen to sounded better, still has the cutoff due to chunk audio but a decent improvment.

I also played around with the larger files, I found many instances of 0x99 in them, I even got one to play. I also tried "stitching" files together through hex editing and see what results I could get, sadly the stitching resulted in corrupted files that would not convert.

That's the latest I have...

I'll add batch conversion soon. It's weird that the files sounded better... Binkalore literally uses the same method as BinkA2Wav does besides some logic improvements.

BTW if anyone has trouble compiling the tools, here are the binaries.

MilesTools_d90e67c.zip

  • Author
  • Localization

loongers111, posted Mon Feb 25, 2019 8:57 am (45260)


xyx0826 wrote:
Durandal217 wrote:
so I downloaded the latest version and split general_stream.mstr, everything looks good so far. Binkalore is working good, just trying to create a batch file to batch convert but what I was able to listen to sounded better, still has the cutoff due to chunk audio but a decent improvment.

I also played around with the larger files, I found many instances of 0x99 in them, I even got one to play. I also tried "stitching" files together through hex editing and see what results I could get, sadly the stitching resulted in corrupted files that would not convert.

That's the latest I have...

I'll add batch conversion soon. It's weird that the files sounded better... Binkalore literally uses the same method as BinkA2Wav does besides some logic improvements.

BTW if anyone has trouble compiling the tools, here are the binaries.


I can recompile your milestools, because of titan and apex use there 64bit dll, so I don't have mss32.dll and binkawin.asi...
I can successfully find mss32.dll from the internet, but the binawin.asi could not be found...

I have found mss32.dll&binkawin.asi from Civilization V, but it seems that AilDecompressAsi failed, and return 0, don't know why
Or am I use the wrong version of mss32.dll&binkawin.asi?
Which is the right version and file to decompress Apex ?
Thanks.
  • Author
  • Localization

xyx0826, posted Mon Feb 25, 2019 1:19 pm (45265)


loongers111 wrote:
I can recompile your milestools, because of titan and apex use there 64bit dll, so I don't have mss32.dll and binkawin.asi...
I can successfully find mss32.dll from the internet, but the binawin.asi could not be found...

I have found mss32.dll&binkawin.asi from Civilization V, but it seems that AilDecompressAsi failed, and return 0, don't know why
Or am I use the wrong version of mss32.dll&binkawin.asi?
Which is the right version and file to decompress Apex ?
Thanks.

When AilDecompressAsi fails you should check AilLastError() to get the related error message.
I'm using mss32.dll v9.1.3.0, and a binkawin of 55,296 bytes in size with MD5 63151af96072cceb75772a8443213eba.
  • Author
  • Localization

zuronaught, posted Sun Mar 03, 2019 4:53 am (45501)


xyx0826 wrote:
loongers111 wrote:
I can recompile your milestools, because of titan and apex use there 64bit dll, so I don't have mss32.dll and binkawin.asi...
I can successfully find mss32.dll from the internet, but the binawin.asi could not be found...

I have found mss32.dll&binkawin.asi from Civilization V, but it seems that AilDecompressAsi failed, and return 0, don't know why
Or am I use the wrong version of mss32.dll&binkawin.asi?
Which is the right version and file to decompress Apex ?
Thanks.

When AilDecompressAsi fails you should check AilLastError() to get the related error message.
I'm using mss32.dll v9.1.3.0, and a binkawin of 55,296 bytes in size with MD5 63151af96072cceb75772a8443213eba.


I have begun looking through the three audio related dlls from Apex and, on a similar note, the version of bink2w64.dll is 9.9.4.m. This seems to be the Miles Sound System version number as bink is only on version 2. Also, if this is true, it would mean that Apex is not actually using MSS 10 completely. Other parts of binkawin64.dll and mileswin64.dll show a version of 10.0.33.10. So, does anyone know what 9.9.4 is? One other thing: the audio.mprj is definitely necessary somewhere in the process as the dlls reference it. I hope I can help with decoding the audio binaries, but I am fairly new to reverse engineering, so I may not be that helpful :| .
  • Author
  • Localization

xyx0826, posted Mon Mar 04, 2019 2:16 am (45528)


zuronaught wrote:
I have begun looking through the three audio related dlls from Apex and, on a similar note, the version of bink2w64.dll is 9.9.4.m. This seems to be the Miles Sound System version number as bink is only on version 2. Also, if this is true, it would mean that Apex is not actually using MSS 10 completely. Other parts of binkawin64.dll and mileswin64.dll show a version of 10.0.33.10. So, does anyone know what 9.9.4 is? One other thing: the audio.mprj is definitely necessary somewhere in the process as the dlls reference it. I hope I can help with decoding the audio binaries, but I am fairly new to reverse engineering, so I may not be that helpful :| .


I think bink2w64 belongs to Bink Video that plays movie cutscenes. Its file version is 1.999.4.0.
Miles, on the other hand, is completely about playing audio.
  • Author
  • Localization

Durandal217, posted Tue Mar 05, 2019 2:21 am (45540)


zuronaught wrote:
xyx0826 wrote:
loongers111 wrote:
I can recompile your milestools, because of titan and apex use there 64bit dll, so I don't have mss32.dll and binkawin.asi...
I can successfully find mss32.dll from the internet, but the binawin.asi could not be found...

I have found mss32.dll&binkawin.asi from Civilization V, but it seems that AilDecompressAsi failed, and return 0, don't know why
Or am I use the wrong version of mss32.dll&binkawin.asi?
Which is the right version and file to decompress Apex ?
Thanks.

When AilDecompressAsi fails you should check AilLastError() to get the related error message.
I'm using mss32.dll v9.1.3.0, and a binkawin of 55,296 bytes in size with MD5 63151af96072cceb75772a8443213eba.


I have begun looking through the three audio related dlls from Apex and, on a similar note, the version of bink2w64.dll is 9.9.4.m. This seems to be the Miles Sound System version number as bink is only on version 2. Also, if this is true, it would mean that Apex is not actually using MSS 10 completely. Other parts of binkawin64.dll and mileswin64.dll show a version of 10.0.33.10. So, does anyone know what 9.9.4 is? One other thing: the audio.mprj is definitely necessary somewhere in the process as the dlls reference it. I hope I can help with decoding the audio binaries, but I am fairly new to reverse engineering, so I may not be that helpful :| .


As long as you can gleam something that can help someone extract the audio from these games no matter how small the contribution is, is worth it, hell I don't know much, but we've accomplished more here in 1 month then others have in the last three years!

Incredible work to all and please keep it up, I feel continued persistence will leads to a breakthrough.
  • Author
  • Localization

beclet, posted Sun Mar 10, 2019 2:38 am (45650)


Hi guys
Has anyone had anymore luck with this? I'm an animator on youtube and I'm currently working on an Apex Legends cartoon. If anyone comes across a way to export the sounds if you could contact me that would be amazing! Thank you! I have left my socials below as a way to contact:

www.youtube.com/beclet
www.twitter.com/beclet_
www.instagram.com/becletyt
  • Author
  • Localization

Durandal217, posted Wed Mar 13, 2019 7:20 pm (45741)


I haven't and I've tried to ask more experienced people for help but to no reply...

I am kind of puzzled about one thing... There is a modding forum I ran across in my continued quest to get the audio from these games, who said the MSTR files can be opened in Native Instruments Maschine software. I'm 98.9% sure it's a troll post but if anyone has that software by chance can you please verify i'm right.

I'm going to keep pushing this, I mean really the only problem is the big chunk audio how to split it and get it playable, that's the last hurtle.
  • Author
  • Localization

xyx0826, posted Thu Mar 14, 2019 6:12 pm (45771)


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.
  • Author
  • Localization

Durandal217, posted Fri Mar 15, 2019 7:13 am (45785)


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.
  • Author
  • Localization

Luriam, posted Wed Apr 10, 2019 4:28 pm (46765)


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 ?
  • Author
  • Localization

Durandal217, posted Wed Apr 10, 2019 5:09 pm (46769)


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.
  • Author
  • Localization

zuronaught, posted Wed Apr 10, 2019 10:10 pm (46780)


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.
  • Author
  • Localization

xyx0826, posted Thu Apr 11, 2019 1:22 pm (46811)


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.
  • Author
  • Localization

Durandal217, posted Sun Apr 14, 2019 7:04 pm (46935)


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?
  • Author
  • Localization

xyx0826, posted Mon Apr 15, 2019 1:49 am (46946)


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.
  • Author
  • Localization

zuronaught, posted Thu Apr 18, 2019 1:44 am (47045)


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.
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.