LZSS in .pxp
The data is compressed with LZSS in different setups.
After you unpacked the compressed files from the .pxp archives (with the quickBMS script from xentax),
the files contain chunks of 65.536 uncompressed bytes (starting with '0d' byte, followed by 3-byte chunksize),
the last chunk start with '0e' byte, followed by 3-byte uncompressed chunksize (add %numberOf0bChunks * 65536% to get the total), then 3-byte chunksize.
These chunks contain "subchunks" of 4096 uncompressed bytes. Every subchunk can have a different setup for the offset/length 16 bit! This is determined by the 0xF0 masked 4 bit in the first 16 bit.
The LZSS compression uses a "flag" byte for the following 8 entries, a '0' is an uncompressed 1-byte literal, a '1' is a 2-byte offset/length pair.
I already figured out 16 modes (but dunno what the other 12 bit are for, so there might be more to it :().
You can extract the file data/configs.pxp and then place the uncompressed files in the directory data/configs The game will then read these files instead of the configs.pxp (u can makes sure it does this correctly by renaming the .pxp).
Currently one can only mess around with the plain text files (.cfg, .lst), because the textures/models are in a proprietary format :(
Attached a quick&dirty php script to uncompress (because i dont know if quickbms supports all the LZSS setups).
Would be nice if someone can figure out the format the textures are stored in (maybe dds with stripped headers?).
EDIT: figured out the last mode, kinda obvious "0" means no compression at all :o i updated the php script