Jamestown (PC)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
puggsoy
Posts: 161
Joined: Sat Dec 13, 2014 1:01 am

Jamestown (PC)

Post by puggsoy »

This is a really cool looking game, but unfortunately its FFG archives are really weird and annoying. There are a number of files but I'm most interested in the sprites ("textures") and sound effects. I'm pretty sure they're not compressed, I could see OGG headers in the music archive. Honestly have no idea where to begin though, all I can tell is that there are two longs at 0x0A and 0x0E that seem to have something to do with the filesize (although I don't know what).

Here are the files:

Sounds
Textures
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Jamestown (PC)

Post by aluigi »

puggsoy
Posts: 161
Joined: Sat Dec 13, 2014 1:01 am

Re: Jamestown (PC)

Post by puggsoy »

Awesome, thanks so much aluigi! I really appreciate it :) I have some more archives, it looks like the graphics need a palette so PaletteSets.ffg is the one I need most. The rest might be interesting to check out as well.

They're all pretty small so I've just attached them. This is all except for the music one, that's pretty big and fairly easy to extract from anyway (just uncompressed OGG).
puggsoy
Posts: 161
Joined: Sat Dec 13, 2014 1:01 am

Re: Jamestown (PC)

Post by puggsoy »

OK, I've sort of figured out PaletteSets.ffg. It's similar to Textures.ffg, the decompression is unzip_dynamic, but instead of jumping ahead 0x1c bytes you jump ahead 0x2c bytes... at first. After the first couple of files, you instead jump ahead 0x3c. And then after a couple of those, it's 0x2c again. It's weird.

There must be a more reliable way of detecting the space between files, I'm just not sure what it could be.

EDIT: Got it. For each file after you read in the DUMMY long, there's another long to read. Multiply this by 8, then add 0x20, and that's how far it is until the next length. Here's the elif block I added to support the palette file:

Code: Select all

elif FFG_NAME == "palettesets.ffg"
      get SKIP_NUM long
      set SKIP_SIZE 8
      math SKIP_SIZE *= SKIP_NUM
      math SKIP_SIZE += 0x20
      getdstring DUMMY SKIP_SIZE
      get SIZE long
      savepos OFFSET
      clog NAME OFFSET SIZE SIZE
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Jamestown (PC)

Post by aluigi »

Thanks, script updated with your code.