void tRrLM(); //Void Terrarium (music files)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Lansam
Posts: 3
Joined: Wed Jul 13, 2022 10:24 am

void tRrLM(); //Void Terrarium (music files)

Post by Lansam »

Hello,

Somehow I ended up in a situation that while I was checking files for Switch version of Void Terrarium, I tried to play music files, which are implied to be AT9/ATRAC, but obviously couldn't be played as is.

All music is stored in a single PS_FS_V1 file which can be split into separate at9 files easily. Resulting files, assuming they are really ATRAC, are missing header and likes. As far I can guess, there might be some compression (in header of that files there are values which are roughly match 2x of original file size, and good chances that LZ4, because there is data for that), or/and maybe some encryption (maybe XOR like it was implied in bms file for Yomawari - one of games from same developer).

In particular, I'm currently checking data for the sequel game. Would appreciate if anyone has ideas on the matter.

Original archive music file, if needed - BGM_0.dat.
Samples - 01.at9, 02.at9, 03.at9.

Update: managed to get corresponding file from PS4 version. To my surprise, PS4 doesn't use any encryption for music, you just remove first 24 bytes of individual at9 music file and done, you can play it. Filesize, they are roughly same size (69.7 for PS4 vs 70.9 for Switch) so it might be still at9 with some minor compression/encryption for Switch, and there is some visual similarity of same blocks in files between versions (like, you can see blocks of 0x00 in Switch and blocks of 0x01 in similar places for PS4, of different size). So, honestly not sure what's the deal with Switch version, doesn't feel like it was obfuscated on purpose. I might try to fiddle with files a bit more but otherwise will just try to grab playable music file from PS4 version of VT2 if/when I spot it. It's rather difficult to investigate with static disasm.

In case, music files from original game (links above are from sequel on Switch) - Switch Sound_BGM_0.dat and PS4 Sound_BGM_0.dat.

Update #2: alright, figured out after spending (a lot) more time. Cutting long story short, the music was actually in "libopus Opus" format. Cutting first 24 bytes of music files and naming as *.lopus, I could play them with vgmstream (for example, in Foobar).

Crappy sample script (based on existing PS_FS_V1 one):

Code: Select all

idstring "PS_FS_V1"
get FILES longlong
for i = 0 < FILES
    getdstring NAME 0x30
    get SIZE longlong
    get OFFSET longlong
    math OFFSET + 0x18
    string NAME + ".lopus"
    log NAME OFFSET SIZE
next i
Last edited by Lansam on Wed Jul 27, 2022 10:26 am, edited 2 times in total.
Lansam
Posts: 3
Joined: Wed Jul 13, 2022 10:24 am

Re: void tRrLM(); //Void Terrarium (music files)

Post by Lansam »

Updated original post.
Lansam
Posts: 3
Joined: Wed Jul 13, 2022 10:24 am

Re: void tRrLM(); //Void Terrarium (music files)

Post by Lansam »

Final update, matter was resolved.