Jump to content

Recommended Posts

Posted

i'm wanting to extract from the amazing spider-man 1 and 2, and all the data files are in pkz format (which i'm unsure how to extract) , i'm assuming the models are too.

If anyone knows how to extract these, this would be great!

I've uploaded some sample pkz files from the game as reference for anyone who needs.

https://gofile.io/d/o11oKY

 

  • Engineers
Posted

Here's decompression code. It creates single file. Not sure where are valid offsets...

###################################
get BaseFileName basename
comtype zlib_noerror

get FileMagic uint32
get DataBaseOffset uint32
get ChunkSize uint32
get Unknown_0 uint32
get Files uint32
get TotalComSize uint32
get TotalDecSize uint32

goto DataBaseOffset

for i = 0 < Files
	savepos ChunkOffset
	getdstring ChunkData ChunkSize 
	string FileName p= "%s.dec" BaseFileName
	append 0
	clog FileName ChunkOffset ChunkSize ChunkSize
next i

 

Posted
On 3/14/2025 at 12:54 PM, shak-otay said:

If it's for PC try this.

(A decompressor for pkz, no extraction of single files, so dunno what that means exactly.)

Tried both of the BMS scripts that were listed in here, both gave me a decomp file. I'm unsure of what to do next.

Posted

edit:

I used the decompressor above which gave me .decomp files with .header files which i then put into Ravioli Game Tools, this gave me multiple wem files and .dds texture files.

I converted the wem files to wav and they seem to be sfx/efforts, as for the .dds textures files, some seem to be okay, other's seem to be corrupted or something like that (i'm new to model/texture extraction)

Still no model files found though, if anyone could help this would be great!

I linked a zip with the wav files and dds texture files for anyone wanting to look, as well with the .decomp file that i extracted them from.

https://gofile.io/d/8jKyD9

  • Engineers
Posted (edited)

For the corrupted dds files - you'll need to find out the source of the problem: is it the bms script or is it Ravioli Game Tools?

Here's an example of two 32 kB dds files, one ok, the other with defect (maybe wrong decompression size?).

 

dds_comp.png

Edited by shak-otay
Posted
On 3/17/2025 at 10:36 PM, shak-otay said:

For the corrupted dds files - you'll need to find out the source of the problem: is it the bms script or is it Ravioli Game Tools?

Here's an example of two 32 kB dds files, one ok, the other with defect (maybe wrong decompression size?).

 

dds_comp.png

I have no idea why the .dds texture files are partly corrupted, it could be the decompressor but i'm unsure. However to verify it's not Ravioli Game Tools, i also used Dragon Unpacker.

Ravioli Game Tools found 175, and Dragon Unpacker found 122 dds texture files. (I tried this with both decompressors in here and the results were the same)

I believe the game was made by Beenox using Goliath Engine so this could be pointers to how to extract.

Opening the .decomp with hxd reveals many file names i assume such as OscorpGasMask_S[Hi], [Hi] meaning HiRez texture as mentioned in the hxd too HiRezWindowsEFIGSR 

(I have attached the .decomp and header file along with the dds textures from both Ravioli Game Tools and Dragon Unpacker)

 

As of now i'm unaware of any tool being able to scrape models or extract models directly, so any help on this project is appreciated!

decomp basement pkz.zip

  • Engineers
Posted

I checked both single decompressed file vs individual decompressed files and they are same in size. So I believe that decompression is fine.

Maybe that chunks are stacked in some order. But it's just guess...

Also i noticed after decompression that some files have pointer on data which actually doesn't exists. See below

img1.thumb.jpg.f8db4e12ca515eb98e2ff34005d769d0.jpgimg0.thumb.jpg.f3308319fa2b3384e5c25f1a409c195f.jpg

  • Like 1
Posted
11 hours ago, h3x3r said:

I checked both single decompressed file vs individual decompressed files and they are same in size. So I believe that decompression is fine.

Maybe that chunks are stacked in some order. But it's just guess...

Also i noticed after decompression that some files have pointer on data which actually doesn't exists. See below

img1.thumb.jpg.f8db4e12ca515eb98e2ff34005d769d0.jpgimg0.thumb.jpg.f3308319fa2b3384e5c25f1a409c195f.jpg

damn i hope we can crack this

  • Engineers
Posted (edited)

Find out something. The last chunk is not decompressed and I don't know why...

Here is struct of compressed pkz. There is also one table but not sure for what is.

uint32 Sign;
uint32 DataBaseOffset;
uint32 ChunkSize;
uint32 Unknown;
uint32 Files;
uint32 TotalComSize;
uint32 TotalDecSize;

struct
{
    uint32 TotalDecompressedSize;
}Table[Files]<optimize=false>;

FSeek(DataBaseOffset);
struct
{
    struct
    {
        byte ChunkData[ChunkSize];
    }Chunk[Files]<optimize=false>;
}Chunks;
Edited by h3x3r
Posted
2 hours ago, h3x3r said:

Find out something. The last chunk is not decompressed and I don't know why...

Here is struct of compressed pkz. There is also one table but not sure for what is.

uint32 Sign;
uint32 DataBaseOffset;
uint32 ChunkSize;
uint32 Unknown;
uint32 Files;
uint32 TotalComSize;
uint32 TotalDecSize;

struct
{
    uint32 TotalDecompressedSize;
}Table[Files]<optimize=false>;

FSeek(DataBaseOffset);
struct
{
    struct
    {
        byte ChunkData[ChunkSize];
    }Chunk[Files]<optimize=false>;
}Chunks;

hmm this is strange, i knew Beenox Engine was meant to be tricky and the only way to get models right now is through Ninja Ripper. I really hope someone smarter than I am can look into this cause i'm unsure of where to start.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...