Page 2 of 12

Re: All things XMA

Posted: Tue Jul 03, 2012 6:06 pm
by AlphaTwentyThree
UPDATE

1. Introduced the option to skip the parsing of files. This needs to be applied when the stream already has the appropriate form, only the header needs changing. And yes, this will also be implemented into the automated identifier later. ;)
2. Added support for both *.res variants from the Battlefield Engine. :)

TIP: When all files from the test run only consist of the XMA header, try to set XMAVERSION to 1. If that doesn't help, set SKIPPARSE to 1. If that doesn't help either: PM ME! ;)

Re: All things XMA

Posted: Wed Jul 04, 2012 9:47 pm
by AlphaTwentyThree
UPDATE

Added support for xma streams with "XWV " identifier (encountered in Bloody Good Time XBLA as *.360.wav but I guess there are more games with this format).

How many more variants can there possibly be out there.... But hey, that's what I'm here for. ;)

To be honest, those *.res files don't properly work yet (only that one variant) - I'll need to implement the ea_multi_xma functionality, too. Nothing too special but unfortunately I don't have a multilayered EA XMA file here, so if anybody can provide me with one, I'll be happy to include the complete heuristics. :)

Remember: A little thanks doesn't hurt. :)

Re: All things XMA

Posted: Wed Jul 04, 2012 10:46 pm
by AlphaTwentyThree
UPDATE

Coincidentially stumbled upon another variant and added support: Microsoft XNA Framework *.xnb files (encountered in Boulder Dash XL XBLA). :)

Remember: A little thanks doesn't hurt. :)

Re: All things XMA

Posted: Wed Jul 04, 2012 10:52 pm
by OrangeC
Thanks!

Re: All things XMA

Posted: Fri Jul 06, 2012 1:05 pm
by AlphaTwentyThree
MAJOR UPDATE!

Ok, this is the biggest update so far and I've worked several hours at this one. The then already big script with 250 lines now has more than 700.

First of all, I've given the whole script a more comprehensive structure: I've sorted the functions to where they are used and given each one a header. To find what you're searching, I've added a table of contents to copy and search for the needed paragraph.

And then there are the internal updates and additions:
1. introduction of a more sophisticated test mode for the first run (very useful):
- always writes two unparsed files to disk, one with header (if the file doesn't need to be parsed at all), one without header for manual testing with xma_parse (if the test mode doesn't produce any usable results)
- tests various block sizes and both xma versions in the parsing and writes files to disk with names according to the xma_parse function call
- if the file is multichannel, only the first channel pair is parsed in test mode to speed it up
- the test mode can additionally be sped up a great deal by only testing for the most common block sizes and skip the XMA1 tests
2. new file supports/corrections:
- option to skip file parsing and just add a manipulated header in the final run
- EA XMA multilayer variant working for single layer (multi_ea_xma functionality implemented)
- support for headerless streams - now the script can also function as a normal header adder!
- support for RIFF files with XMA2 identifier after the data stream
- corrected the processing for big endian RIFX files
3. some major internal changes regarding processing order and option processing (basically, everything is better than before ;) ).

This is a really big step forward. It accelerates XMA transformation processes by far and is much easier to use and understand!
So, try out the new script and if you like it, click the "Thank" button of this post (and for the first one if you haven't done so already) :)

Re: All things XMA

Posted: Fri Jul 06, 2012 6:15 pm
by OrangeC
WOW WOW WOW!! alpha your work on xma transformation is just phenomenal!! I cannot wait for the other features such as blocksize detection.

EDIT: Strange your zip file says: no files to extract.

Re: All things XMA

Posted: Fri Jul 06, 2012 6:35 pm
by Gh0stBlade
What about Resident Evil 6 XMA??

Re: All things XMA

Posted: Sat Jul 07, 2012 2:23 am
by AlphaTwentyThree
OrangeC wrote:WOW WOW WOW!! alpha your work on xma transformation is just phenomenal!! I cannot wait for the other features such as blocksize detection.
Glad you like it. :)
OrangeC wrote:EDIT: Strange your zip file says: no files to extract.
fixed ;)

Re: All things XMA

Posted: Sat Jul 07, 2012 2:24 am
by AlphaTwentyThree
C00L12345 wrote:What about Resident Evil 6 XMA??
Try my script and PM me if it doesn't work. :)

Re: All things XMA

Posted: Sat Jul 07, 2012 12:18 pm
by Gh0stBlade
AlphaTwentyThree wrote:
C00L12345 wrote:What about Resident Evil 6 XMA??
Try my script and PM me if it doesn't work. :)
Thanks alot :D

Re: All things XMA

Posted: Sat Jul 07, 2012 8:03 pm
by AlphaTwentyThree
UPDATE

Added support for reversed-header RIFF xma, used in Resident Evil 6.
Note that the decoded wave files may play with the exact double frequency, so you'll need to change that, e.g. with this script (only apply on the decoded wave files!):

Code: Select all

goto 0x18
get FREQ long
math FREQ /= 2
get SIZE asize
putVarChr MEMORY_FILE SIZE 0
log MEMORY_FILE 0 0
append
log MEMORY_FILE 0 SIZE
append
putVarChr MEMORY_FILE 0x18 FREQ long
get NAME basename
string NAME += "_new.wav"
log NAME 0 SIZE MEMORY_FILE

Re: All things XMA

Posted: Sun Jul 08, 2012 12:41 am
by AlphaTwentyThree
UPDATE

After some tests and undecodable multichannel SoundNodeWave, I made some corrections and improved and expanded the XMA stream start detection.
Unless you encounter some special files, you won't notice any difference. Still I thought it's enough for an update. ;)

Re: All things XMA

Posted: Wed Jul 25, 2012 7:19 pm
by AlphaTwentyThree
Some *.soundnodewave files didn't work, so I made another little update a week ago - added a much more sophisticated way to detect xma starts.
Process has been slow recently, but I'll update the script frequently as soon as I've overcome the motivational blockade for another update. ;)
Next update will include the scanning of some miscalleneous format that may or may not include an XMA stream. So you'll be at least able to tell if the file contains an XMA start or not and can send me the file.
Another thing: Including automatic blocksize detection isn't economical at all because the script would check all possibilities for each file, even of run in batch mode. Thus, it will take much too long - it's faster to run the test mode for one file and set the variables accordingly. And checking for the biggest file from the test mode shouldn't be the problem here. ;)

Re: All things XMA

Posted: Mon Sep 10, 2012 11:38 am
by nitoiviorel
I made extract some files without name and extension from chuncksaudio.toc .sb.
I start demux that 774 files using ea multi xma.
All was fine but i meet a problem:not exactly but i demux only 60%.ea_multi_xma skipped many files and i cant demux.

I open quickbms,select ur script then select file wich result from chuncksaudio.toc and nothing hapening.
Need for Speed The Run xbox file

Re: All things XMA

Posted: Mon Sep 10, 2012 12:49 pm
by AlphaTwentyThree
Please remove the links first and PM them to me!
I haven't finished my research on the EA XMA variant yet. But just one variant missing, the others seem to work fine. But until everything works, I won't add it to the transforming script. ;)
Anyway, it's always practical to have more examples to look for other variants and to test the script.