Jump to content

Recommended Posts

  • Engineers
Posted (edited)

I've stumbled upon archive from racing game (Street Racing Syndicate that runs on Eutechnyx engine) for GameCube.
Basically the entire archive contents are compressed as a single chunk of data.
I wasn't able to detect algo, but it looks like some form of LZ.
Maybe someone seen something similar or same?

Thanks.

Fields:
0x78 Compressed size
0x7C Uncompressed size
0x80 Data start

 

To admins: If you have problems with samples, please let me know what is ok.

archive.zip

Edited by Maxwell
Posted (edited)

Trash

Edited by wssdude
  • Engineers
Posted

I've edited my initial post.

I don't expect it's an engine, but rather platform thing, compression algo used from GC SDK perhaps?

All other platforms (PS2 and Win) are using regular zlib.

Posted (edited)

Trash

Edited by wssdude
Posted (edited)

Trash

Edited by wssdude
Posted (edited)

Trash

Edited by wssdude
Posted (edited)

Trash

Edited by wssdude
  • Engineers
Posted

I am sending header structure

struct Header {
    u32 id;
    u32 numEntries;
    u16 numTextures;
    u16 numModels;
    u16 numAttachments;
    u16 numAttachedModels;
    u16 numSkeletons;
    u16 numCameras;
    u16 unk1;
    u16 numRigNodes;
    u16 numMaterials;
    u16 numMeshes;
    u16 unk2;
    u16 numReferencedTextures;
    u16 unk22[4];
    u16 numIndexBuffers;
    u16 numVertexBuffers;
    u16 unk20[2];
    u16 numSkinnedMeshes;
    u16 numDeformedMeshes;
    u16 numAnimations;
    u16 unk3;
    u16 numAnimatedNodes;
    u16 unk4;
    u16 numUnkNodes;
    padding[58];
    u32 compressedSize;
    u32 uncompressedSize;
};

 

Hopefully this will clear things up.

 

1 hour ago, wssdude said:

Apparently, PC version has one giant archive.ar (it has over a gigabyte and probably contains all the data so obviously won't upload it I suppose... could share some chunk of it if someone wants it).

Oh, yeah, I forgot about that, I was looking at it like a year ago. All platforms are using those big ar archives. Those acts like regular generic game archive. I had fully researched those.

Arc acts like a package, holding various data structures. And after looking on my old research, it looks like only GC version is using compression, so there is a possibility the compression is not GC related. I guess I assumed it's platform compression, due to being the only one using it.

Posted (edited)

Trash

Edited by wssdude
Posted (edited)

The compressed data does indeed start at offset 0x80.  It uses lzo1x compression, and you get a decompressed file of 25991 (0x6587) bytes.  Taking into account the compressed size, there are also an extra 0x1e bytes at the end of the file for some reason.

I'm not sure if other files have multiple compressed blocks, but this just has 1.

 

Edited by DKDave
  • Thanks 1
  • Engineers
Posted
9 hours ago, DKDave said:

It uses lzo1x compression

Thank you, this is exactly what I was looking for

 

9 hours ago, DKDave said:

there are also an extra 0x1e bytes at the end of the file for some reason.

Yes, those can have variable length, data seem same across arcs. Possibly dictionary for lzo?

 

10 hours ago, wssdude said:

Is the file using mix of big endian and little endian?

It uses big endian as a whole, but for some reason only those two u32 (and possibly footer) are in little. My guess is that they use little endian decompressor abi.

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...