[PSP] Narikiri Dungeon X - .TSS file

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
pnvnd
Posts: 4
Joined: Sat May 08, 2021 1:37 pm

[PSP] Narikiri Dungeon X - .TSS file

Post by pnvnd »

Greetings!

I'm working with a team on gathering as much information as possible about Tales of Phantasia: Narikiri Dungeon X (PSP).
So far, everything is open-source on Github: https://github.com/pnvnd/Narikiri-Dungeon-X.

We've got permission to use an English translated script in our project, as well as permission to continue from an exisiting menu patch. So the next goal is to extract files from all.dat (681 MB) to see if we can insert the English translated text, and create a patch. Based on other "Tales of" games for PSP, I was expecting to find a pointer table in the decrypted EBOOT.BIN file (ULJS00293.BIN) to split up the files in all.dat. However, NDX doesn't appear to follow the same pattern as Tales of Destiny 2 (PSP).

Since I'm stuck at extracting all.dat, I'll be mapping out the hex to Japanese manually so we have something to work with after all.dat is extracted. I'm hoping after extracting all.dat we can re-use the existing tools from the open-source Tales of Destiny DC and Tales of Destiny 2 projects. Any help to get all.dat extracted would be much appreciated!

Feel free to join us on Discord: https://discord.gg/fpK8UvBfy3
Last edited by pnvnd on Wed May 12, 2021 12:31 am, edited 1 time in total.
pnvnd
Posts: 4
Joined: Sat May 08, 2021 1:37 pm

Re: [PSP] Narikiri Dungeon X - all.dat

Post by pnvnd »

After extracting some of the movie files manually in all.dat, we confirmed the offset and size of the file to start searching in the decrypted EBOOT.BIN file. Here's a Python script that can extract all.dat, the only issue with this is the filenames appear to be hash values. There should be 2116 files after extracting.

Code: Select all

import struct

def extract_files(start,size,filename):
    input_file = open('all.dat', 'rb')

    input_file.seek(start, 0)
    data1 = input_file.read(size)
    output_file01 = open(filename, 'wb')
    output_file01.write(data1)
    output_file01.close()

    input_file.close()

def extract_all_dat():
    eboot = open('ULJS00293.BIN', 'rb')
    eboot.seek(0x1FF624)
    while True:
        file_info = struct.unpack('<3I', eboot.read(12))
        if(file_info[2] == 0):
            break
        extract_files(file_info[0],file_info[1],"%4X" % file_info[2])
        #print("%4X" % file_info[2])


We still need help extracting some of the files that came out of unpacking all.dat as we still can't find where the scenario (story) text is.
pnvnd
Posts: 4
Joined: Sat May 08, 2021 1:37 pm

Re: [PSP] Narikiri Dungeon X - TSS file

Post by pnvnd »

We managed to find the story and skit text:
Scenario: all.dat > map\pack\ep_000_010.cab > script.dat > script_0000.tss
Skit: all.dat > chat\ct_001_001.bin > ar.dat > ar_0001.tss

CAB files can be opened natively with Windows. The script.dat inside was extracted with "pakcomposer" to get 3 more files. The first file is the TSS file with story text.
BIN file for skits are actually CAB files, and the resultng ar.dat file can also be unpacked with "pakcomposer" to get another 3 files. THe second file is the TSS file with skit text.
The script.dat and ar.dat are "pak3" files, if that helps.

We need a way to extract and re-insert text into the TSS file to move forward with translating the game.
Note: It looks like the TSS files from Vesperia, Hearts, and Narikiri Dungeon X are different...
pnvnd
Posts: 4
Joined: Sat May 08, 2021 1:37 pm

Re: [PSP] Narikiri Dungeon X - .TSS file

Post by pnvnd »

We've managed to extract text from the TSS files, but are still having trouble figuring out how to re-insert these back into the game. More hacker notes and details have been added on https://github.com/pnvnd/Narikiri-Dungeon-X