Heavy Rain PS3 .d##

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Miles2345
Posts: 76
Joined: Thu Oct 16, 2014 3:05 am

Heavy Rain PS3 .d##

Post by Miles2345 »

Hi. I've recently picked up and played through this game and I figured I'd take a look at it, but of course I'm not having too much luck. The game has 10 files, all with the filenames BigFile_PS3.dat and BigFile_PS3.d01-d09.

There are tools written to extract these files online however the links are all dead and the projects have been ceased for years.

I can extract the data with offzip however it will come out in 64kb chunks. If I set offzip to extract it to a single file rather than multiple, I can view this file in TextureFinder and the data is viewable.

The command I used was offzip -a -1 -z -15 BigFile_PS3.d01 . 0

Image

If possible, I'd like a script that takes all these textures etc and outputs them to separate files. Similar to the first 1.0 version of the Little Big Planet 3 script which extracted everything with generic filenames. I don't even know if an index file exists in this game or what, because if so I can't seem to find it anywhere.

Thanks in advance if there's any help you can provide.
https://mega.nz/#!Fohz0R7Z!UU-ddjQ9s2M2 ... x3Tye7OX58
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Heavy Rain PS3 .d##

Post by aluigi »

I think that a very good solution in this case, considering that there are just "segs" files, is:
http://aluigi.org/bms/segs_dumper2.bms

And then using the following script on the extracted files:
http://aluigi.org/bms/arcsys.bms
Note that this script has been updated to version 0.1.3 just now because the segs files of this game used relative offsets instead of the absolute ones.

It's just an idea because I don't see a table with information for extracting the files.
Ekey
Posts: 1383
Joined: Sat Aug 09, 2014 2:34 pm

Re: Heavy Rain PS3 .d##

Post by Ekey »

Game from Quantic Dream. In addition BIG files should be an with index file. For this game, index files with extension .*DEP also there no file names, only hashes.
Miles2345
Posts: 76
Joined: Thu Oct 16, 2014 3:05 am

Re: Heavy Rain PS3 .d##

Post by Miles2345 »

Ekey wrote:Game from Quantic Dream. In addition BIG files should be an with index file. For this game, index files with extension .*DEP also there no file names, only hashes.


Oh, so this file?: http://puu.sh/kxahi.dep
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Heavy Rain PS3 .d##

Post by aluigi »

It seems not very easy.
Isn't the segs dumper+arcsys script enough? I don't think the result will change so much with a proper information table with offset/size
Miles2345
Posts: 76
Joined: Thu Oct 16, 2014 3:05 am

Re: Heavy Rain PS3 .d##

Post by Miles2345 »

Yeah, the segs dumper and arcsys scripts work perfectly fine anyway. It sucks that there are no filenames, but at least I can sort out what's what by looking at the file sizes (Textures are 64, 128, 256, 512, 1024 KB dds files without headers)
Renderman
Posts: 1
Joined: Wed Oct 07, 2015 1:36 am

Re: Heavy Rain PS3 .d##

Post by Renderman »

First of all, I thank you Miles and everyone else who is and have been looking into the complex files of Heavy Rain in hopes of finding a way to extract anything out of them, mainly the character models.

Speaking personally, I've been looking for a rigged character model of Scott Shelby for quite a while and when I look at the wonderful work done with extracting elements from Beyond Two Souls, I can't help but think "I wish Heavy Rain would have been given this same treatment.".

I'm sure it's possible to extract elements from Heavy Rain with the right techniques and tools and while I don't really have the know-how to do any of that, I am grateful for the efforts of the people who do.

Miles, do you think you could tell us the progress you've made so far?
Miles2345
Posts: 76
Joined: Thu Oct 16, 2014 3:05 am

Re: Heavy Rain PS3 .d##

Post by Miles2345 »

Hiya. I'm not exactly the brightest when it comes to reverse engineering - typically I just like to tool around with the end result as opposed to actually getting there. But for this case I'm looking at how the game works.

From what I've seen, heavy rain and BTS run almost exactly the same way. Quote:

Okay, first a little explanation about how Beyond works.
Beyond (and Heavy Rain) store its data in blocks called Communicators.

A Communicator is a table containing data for a certain function in the game. These are formatted as precompiled Lua "function chunks". The values of these "settings" are stored either compressed (as a segs entry, which is a split up ZLIB archive), or uncompressed (as a QZIP entry, which is funny, because "ZIP" normally indicates a compressed file entry). Aside from storing just values as Lua functions, modified versions of Communicators are also used for storing the "actual" scene scripts, model data, animation data, (very small amounts of) audio, video (like the sport scenes and cartoons on the in-game TVs), textures, dialog sequence text, and more.


I don't know too much else as I've just began looking at this game. Like I said I'm not exactly the brightest and I'm in the process of learning more as I look at each script I receive.

Sadly the one tool somebody wrote to extract the chunked data together to complete entire models/textures has been gone from the internet with no mirrors.

An interesting thread: http://forum.xentax.com/viewtopic.php?f=32&t=11411 Though it is about BTS I'm certain heavy rain behaves almost exactly the same way.

In terms of getting models and textures, I've found the best way to get textures is to extract them from the .segs data, and the best way to get models is straight from making a memory dump in-game (I have not seen ANY model data whatsoever in the .segs files, not sure how that works)

Right now (and I know this is probably a horrible way to do it) I have done this, basically:
1. Combined every .d## file into a single file. (copy *.d* out.bin)
2. Ran the segs dumper script on it, giving me a good 40k+ .segs files.
3. Decompressed every segs file.
4. Combined every decompressed segs file into one data file. (copy *.seg_unp allsegs.bin)

This lets me view everything uncompressed at once in one file via a hex editor. It's really counter-productive but it lets me search for what I want.