How would one convert .xrp.lzx files to .prp?

Useful_Mistake

Fire Nation sympathizer
Forum Staff
Global Moderator
True & Honest Fan
kiwifarms.net
Joined
May 4, 2020
I lack significant knowledge, and Google/Yandex didn't provide a solution either. .xrp.lzx is some sort of an Xbox360 file (models, I would assume) that has gone through LZ77 family compression algorithm. How would one take that and make it into .prp. The data in those files are essentially the same, but I need the former to become the later.

If anyone has experience dealing with these obscure (circa 2007, though could be much older) file extensions about which there is close to no information, I'd appreciate the help.
 
  • Thunk-Provoking
Reactions: Vecr
Some guys trying to port a Xbox360 DLC to Steam claim to have at least solved the compression issue. Maybe that's a starting point?

Bit of a old discussion, but I'm currently working with the files of Overlord 2 and Battle Rock & have found a way to decompress the LZX files. https://en.wikipedia.org/wiki/LZX it seems that LZX was used frequently by Microsoft during the 360 days for compression for the Xbox Live Store. Fortunately there are couple tools that can decompress these files https://www.cabextract.org.uk is one of a few tools capable of reading and decompressing Xbox Live files. Hope this helps in some way!

 
Some guys trying to port a Xbox360 DLC to Steam claim to have at least solved the compression issue. Maybe that's a starting point?



That's helpful but I can't actually figure out how to make cabe actually read those files, much less anything else

Edit: WHY THE FUCK DO I HAVE TO FUCKING USE TWO SEPARATE FUCKING NIGGER PROGRAMS AND LEARN HOW THEY WORK TOGETHER FOR ONE SIMPLE PROGRAM TO FUCKING LET ME USE IT? Why can't these people just make a simple fucking program that is fucking usable? I need Cygwin to use cabextract, I got that. I installed cabextract and I have no fucking clue how to make those two programs work together, and I can't not use Cygwin because of dependencies.
 
Last edited:
That's helpful but I can't actually figure out how to make cabe actually read those files, much less anything else

Edit: WHY THE FUCK DO I HAVE TO FUCKING USE TWO SEPARATE FUCKING NIGGER PROGRAMS AND LEARN HOW THEY WORK TOGETHER FOR ONE SIMPLE PROGRAM TO FUCKING LET ME USE IT? Why can't these people just make a simple fucking program that is fucking usable? I need Cygwin to use cabextract, I got that. I installed cabextract and I have no fucking clue how to make those two programs work together, and I can't not use Cygwin because of dependencies.

That sucks, I use Debian as my primary OS and it's pretty straightforward to run cabextract from the terminal. Maybe try a linux VM? Just your standard Ubuntu ISO should work. It has been a while since I have had to use Cygwin, but I recall it being a pain in the ass.
 
  • Informative
Reactions: Useful_Mistake
That sucks, I use Debian as my primary OS and it's pretty straightforward to run cabextract from the terminal. Maybe try a linux VM? Just your standard Ubuntu ISO should work. It has been a while since I have had to use Cygwin, but I recall it being a pain in the ass.
Sorry to be a bother, but the virtual machine is giving me more problems. Could I just send you the files and maybe you could run them through cabextract yourself? That'd help me a lot.
 
Sorry to be a bother, but the virtual machine is giving me more problems. Could I just send you the files and maybe you could run them through cabextract yourself? That'd help me a lot.
Sure, just DM me a link to Google Drive or something.
 
I didn't even know cygwin was still around.

Use WSL. Cabextract is in the Ubuntu repos. Alternatively just boot up a cheap AWS server and SFTP the file over and do it there. Many ways you can solve this.
 
I didn't even know cygwin was still around.

Use WSL. Cabextract is in the Ubuntu repos. Alternatively just boot up a cheap AWS server and SFTP the file over and do it there. Many ways you can solve this.
Cabextraxt tactic didn't work.
 
So if you pop them open with a hex editor to look at the headers you'll notice a pattern.

0x0F 0xF5 0x12 0xEE

Those are XNA files. Or at least it's the compression algorithm MS used for them.

e: this might work to decompress it and then you'd be on step two of figuring out what the hell to do with whatever's inside
 
  • Informative
Reactions: Useful_Mistake
So if you pop them open with a hex editor to look at the headers you'll notice a pattern.

0x0F 0xF5 0x12 0xEE

Those are XNA files. Or at least it's the compression algorithm MS used for them.

e: this might work to decompress it and then you'd be on step two of figuring out what the hell to do with whatever's inside
Stumbled upon this ancient discussion after searching those magic numbers. They were using some tool (quickbms) and a script (xcompress_file.bms) to decompress.
xcompress_file.bms modified by adding a line to eat extra 32 bits before he 0x0FF512EE header.
Code:
...
endian big
get dummy long
get Identifier long             # XCOMPRESS_FILE_HEADER
get Version short
get Reserved short
...

Code:
Z:\>quickbms xcompress_file.bms g.xrp.lzx

QuickBMS generic files extractor and reimporter 0.12.0
by Luigi Auriemma
e-mail: me@aluigi.org
web:    aluigi.org
        (Aug 24 2022 - 10:55:28)

                          quickbms.com  Homepage
                            zenhax.com  ZenHAX Forum
                     @zenhax @quickbms  Twitter & Scripts

- open input file Z:\g.xrp.lzx
- open script xcompress_file.bms
- set output folder .

  offset   filesize   filename
--------------------------------------
  00000000 6242341    g.xrp.unpacked

- 1 files found in 0 seconds
  coverage file 0    99%   3382458    3382474    . offset 00339cba
  coverage file -1  100%   6242341    6242341    . offset 005f4025

Z:\>

It decompresses something and it looks correct somewhat? Dunno about the format, looks like an archive of some files.
Code:
00000000: 52 50 4b 00 06 00 46 00 eb 01 00 00 75 3f 5f 00  RPK...F.....u?_.
00000010: 45 78 70 20 2d 20 43 68 61 72 61 63 74 65 72 20  Exp - Character 
00000020: 50 68 6f 65 6e 69 78 00 00 00 00 00 00 00 00 00  Phoenix.........
...
00000170: 00 0a 36 00 00 00 01 00 00 00 39 74 72 69 75 6d  ..6.......9trium
00000180: 70 68 73 74 75 64 69 6f 73 5c 50 72 6f 67 72 61  phstudios\Progra
00000190: 6d 6d 65 72 20 6f 6e 20 62 75 69 6c 64 65 72 2e  mmer on builder.
000001a0: 74 72 69 75 6d 70 68 73 74 75 64 69 6f 73 2e 6c  triumphstudios.l
000001b0: 6f 63 61 6c 4a 29 17 6f 00 00 00 00 00 00 50 41  ocalJ).o......PA
000001c0: 00 00 01 eb 00 00 00 17 45 78 70 20 2d 20 43 68  ........Exp - Ch
000001d0: 61 72 61 63 74 65 72 20 50 68 6f 65 6e 69 78 82  aracter Phoenix.
...
000c6b50: 01 36 00 00 00 13 5b 45 58 50 20 2d 20 50 48 4f  .6....[EXP - PHO
000c6b60: 45 4e 49 58 5d 54 58 5c 33 00 00 00 17 50 68 6f  ENIX]TX\3....Pho
000c6b70: 65 6e 69 78 5f 42 6f 64 79 5f 4e 6f 72 6d 61 6c  enix_Body_Normal
000c6b80: 2e 64 64 73 ff ff ff ff 81 03 00 00 00 09 00 14  .dds............
 
Wood got it on the first go. The resulting unpacked file is, from what I am seeing, an "Overlord - Game Data Archive" contents matching "PRP/PVP/VPK" file types.

If extraction is all that was needed you are good to go.

Of course, if you want to modify the files contents and put them back you will need to recompress the files. Normally decompression and compression are handled by the XDK (Xbox Development Kit) utilities XBDecompress & XBCompress. Fortunately, QuickBMS has implemented the XCompress algorithm, you just need to use a BMS script that is the inverse of what the first one did.
 
Last edited:
  • Thunk-Provoking
Reactions: Useful_Mistake
Of course, if you want to modify the files contents and put them back you will need to recompress the files. Normally decompression and compression are handled by the XDK (Xbox Development Kit) utilities XBDecompress & XBCompress. Fortunately, QuickBMS has implemented the XCompress algorithm, you just need to use a BMS script that is the inverse of what the first one did.
How would I go about making a BMS script that would recompress them into PRP format?
 
How would I go about making a BMS script that would recompress them into PRP format?

Hey UM, sorry it took so long for me to get back to you, I totally blanked on this thread.

As per your question, I was assuming the utility you were using to extract/manipulate material from the PRP file would allow you to put it all back together in the proper PRP format. I could certainly see if I can find something that can recreate a PRP file once it has been dismantled.

As far as recompressing the PRP file back into the proper XRP.LZX file, you could do that using a BMS script, essentially the inverse of the decompression script you ran to decompress the XRP.LZX in the first place, invoking the compression function instead. You could also use the XBCompress utility from the XDK, which is likely to be much easier, since all you need to do is feed it a command line argument. If you need any assistance locating the XBCompress utility, as the XDK from that era isn't exactly easy to come by any longer, let me know.
 
  • Thunk-Provoking
Reactions: Useful_Mistake
It would appear that this is a problem that others have had before, decompression without problem, but recompression being an issue:

https://forum.xentax.com/viewtopic.php?f=10&t=23884
File stripper didn't work to even extract anything out of the files (though it seems it might have worked for one person?). The bms tutorials seem heavily reliant on images that no longer work.

Regardless, thanks for everyone in this thread. You're the only lifeblood of this operation, and I appreciate you all
 
Back