Wanted to say thx, took me a couple tries but it worked in the end!!!! Joined just to get this!
Wanted to say thx, took me a couple tries but it worked in the end!!!! Joined just to get this!
works fine :)
fantastic work, fairchild!!
thx again

same with me :(
Cant seem to compress it back in ,do i do same steps for decompressing but instead of .d i use .c??
Hi,
I was just wondering is it possible to use this tool for PC version saves, I've tried and it says Unsupported file detected. Is it possible to fix this so it works for PC saves also? I know this is XBOX forum, sorry if it's inappropriate to ask for this.
Thanks
Thank you.
To make this work I had to compress the save in the same folder where I had decompressed.
Great job!

I'm eager to have that too! And, actually, was SO eager, that even did some work dissecting this format myself. Here's what I was able to discover:
First 1024 bytes of the save file are a constant-length block with descriptional strings and stuff. Not interesting for us and may be ignored.
Then, up to the end of the file goes an array of big blocks having the following format ([x] is a field length in bytes):
1. [4] Magic number: C1 83 2A 9E (or 0x9E2A83C1 in little-endian int32 format)
2. [4] A number, which was usually 00 00 02 00 for me (I think it is a buffer length used by the game to compress data).
3. [4] Length of a compressed block, which goes later (at field 7).
4. [4] Length of the decompressed data.
5. [4] A copy of field 3.
6. [4] A copy of field 4.
7. [Length from field 3] Compressed data. Looks like some kinda variation of LZ algorithm. Probably, LZO.
Fairchild, if you read this, please patch your program to work with this format!
Added: I did it! Turned out that the only difference between PC saves and XBOX saves were that the first one is little-endian, and the latter is big-endian. So I've reversed the byte order in fields 1-6 and used Fairchild's toolkit to decompress it!
The algorithm seems to be called LZX and is used in Xbox compression SDK. Finding the proper implementation of this one was a real pain in the ass and I didn't succeed so far, but there's no need for it now. I'll publish the source code of the PC<->XBox interconversion utility after a while.
Added 2: Too bad, but although it does the job on decompressing and recompressing the save, the rebuilt variant does not work in the game (and looks 40% smaller than the original). Maybe algorithms are different after all on Xbox and PC, but Fairchild's decompressor can understand both.
Anyway, here's the converter's code, as promised: http://pastebin.com/x7U9rAAx
Last edited by ogurets; 10-20-2012 at 12:39 AM.
Hi,
Thank you for dissecting the file, I've made a c# program to decompress save file (I'm using lzo.dll). I do get same result as fairchilds tool (except I add 1024 byte header at the top).
But I've bumped into same problem as you, I cannot find a proper algorithm to pack the file back, and the game always says the file is corrupted.
I cannot seem to find proper c# class library for LZX compression.
lzo.dll has dozens of compression functions, and all of them give bit different result, none of them pack exactly the same as original saved game.
So I'm stuck here for a time being.
Thanks again ogurets