Here's my latest version of the script. I changed the resS process a little bit so the script opens the file only one time and not each time it encounters an *.snd with 0x18 bytes. Else, I've changed the warning message at the end so you can see how many bytes of data from the resS stays unextracted. Sometimes it's just a few bytes of zeros between the files, so everything went fine. I also added my type of naming as comments so everybody can decide which way they want to name the files. Explanation of my naming system: As I'm after the music I want to see from which source file the track comes from. As the files are opened consecutively in the game, I get a pseudo playing order.
Also, I selfishly raised the version to 0.2.0 because the step with the resS extraction is quite big.
AlphaTwentyThree wrote:Here's my latest version of the script. I changed the resS process a little bit so the script opens the file only one time and not each time it encounters an *.snd with 0x18 bytes. Else, I've changed the warning message at the end so you can see how many bytes of data from the resS stays unextracted. Sometimes it's just a few bytes of zeros between the files, so everything went fine. I also added my type of naming as comments so everybody can decide which way they want to name the files. Explanation of my naming system: As I'm after the music I want to see from which source file the track comes from. As the files are opened consecutively in the game, I get a pseudo playing order.
Also, I selfishly raised the version to 0.2.0 because the step with the resS extraction is quite big.
Can you help me, i'm translating Gangster Vegas for ios
I've just implemented the residual files extraction. However, the script extracts files in the post-processing that have already been extracted. I don't know why this is the case because I only write the spaces in-between the already-written files from the resS to disk. I know that there's an error because "[size of resS] - [size of extracted files by .assets index]" doesn't match "[size of residual files extracted in post-processing]". If somebody wants to take a look at the beta script, I've attached it. The function "retrieve" is new. It simply sorts the offset-size-pairs from the extraction process, tests if it is consistent and writes the data in-between. Don't be irritated by the function "diff_type", that's just so I wouldn't need to duplicate code when testing for sound type from the resS (needs to run during the main extraction as well as the post-processing). Here's a sample pair where you can test the script on: http://*USE_ANOTHER_FILEHOSTING*/4411283 ... st_pair.7z Any help?
Time for another update! I didn't resolve the little problem above. I haven't encountered any other resS files that contained residual data and I've checked about 15 other games. So I'll leave it at that. Else, I've enhanced the script to support *.resource files that contain fsb5 archives. These are from newer Unity3D games. I've changed the code for the resS retrieval a bit to have everything in one place. You can certainly update your script to 0.2.x
For all of you who are after the music, here's a batch that deletes everything but the music and videos. You'll have to use the second naming scheme for this to work ([basename~filename.extension])
aluigi wrote:I see a '~' char while building FNAME, is it correct or a typo?
No, I made that on pupose because of my naming scheme. It's basically the only pseudo-good-looking character that normally isn't used in file names. This way I can see where I made changes to the name. Same with a folder structure: I replace every "\" with a tilde so I can track the folder structure afterwards. You can change it back to your naming scheme if you want to.
Neverdmind. I was using unity asset explorer earlier which converts .tex to .dds, so I tought that type 28 are .dds too. So now the question is, there is any way to convert .tex extracted by .bms script to some commone image extension?
Another update: the script now supports file retrieval from *.resource files from the newer games that hold fsb5 archives. I've also changed the heuristics from "file size of *.snd" to "if *.resS or *.resource exists" as I got errors in one case.
Are you sure that file is complete? In my opinion there is a missing byte at the beginning, in fact if you add a 0x00 at offset 0 everything works perfectly.