Going into this I knew there were already a lot of attempts to RE this game's file formats, but nobody succeeded(maybe someone did, but didn't post any info). So I tried poking around myself.
1. data and dict files
Data contains actual data and dict files are like archive headers and contain some basic info about the files.
So the basic structure of a dict file is(there's alot of things missing from here tho):
- byte[4] Signature //0x0 Looks like a section signature, always "X$у©" in ASCII
- byte[2] idk //0x4 Two bytes, seem to usually have same values between different files(but I might be wrong on that)
- byte isCompressed //0x6 Compression flag, if 0x0 - no compression, 0x1 - ZLib
And pretty much nothing else I could understand. There also seems to be another signature "ђ%Ѕx", but I couldn't find out what values in it do either.
That section is followed by the file content table. The items seem to be layed out strangely and most of the values are unknown to me, but each item contains uncompressed length of the file it corresponds to.
The data file can contain other sections, which seem to have some more file info
2. 0x01130002, 0x20700212 and PУwй
These sections seem like containers inside the .data files.
A decompressed data file usually starts with 0x01130002 sections. Their size is const 0x18. Purpose unknown. Then there's usually "PУwй"(the string might be different in some other text encoding) sections, size is const 0x38. Both seem to contain something related to the actual files, because there's always the same count of both of these sections(e.g. if there're 31 0x01130002 sections, then there will be 31 PУwй sections) in any data file they exist in.
0x20700212 seems to be just a simple container, containing a single file. Has a signature followed by the contained file size in bytes. Then there's 0 padding to the next 16 byte boundary where the actual file starts.
3. NLOC
NLOC - Next-level LOCalization(?) files contain text strings. You can extract these with RoadrunnerWMC's python script(look for it in his gihub gist)
4. NMLB
NMLB - Binary Luigi's Mansion N-something (reversed because little endian). IDK what it is, but I just simply came across this signature while browsing some of the files in the hex editor
4. Audio
The audio is stored in wwiseaudio folder. You might thing that wwise-unpacker might extract these, but it fails. The reason is that despite there files being the standard .bnk and .pck variety. The reason wwise-unpacker fails is that these contain audio compressed with the same compression as BCSTM files (PCM-8/PCM-16/DSP ADPCM/IMA ADPCM).
So, that's all I could find myself. I think there might be another layer of encryption/compression applied to some data files, but I might be wrong.
P.S. Bonus: in the code.bin there is a string referring to "DS Horror". Seems like they didn't have ideas on how to name the thing or just used this name as a placeholder until they came up with "DualScream"