Jump to content

Final Fantasy XVI Demo (.pac and .nxd, .pzd)


N o o B
Go to solution Solved by Nenkai,

Recommended Posts

  • Engineer
Posted (edited)

still working on nxd files but for pzd here is structure:

enum StrType{
Subtitle,
UI_Text,
Detailed_Subtitle   
};

char Magic[4];
int FileVersion;
FSkip(28);
int64 StrCount;
FSkip(4); //Always 0

struct{
    int id;
    int StrOffset;
    FSkip(4); //Always 224
    int TextGroupID;
    int VoicePathOffset;
    StrType Type;
    int64 UnknownStrOffset;
    local int base = FTell();
    FSeek(base + StrOffset - 32);
    string Str;
    FSeek(base + VoicePathOffset - 32);
    string VoicePath;
    FSeek(base + UnknownStrOffset - 32);
    string UnknownStr;
    FSeek(base);
}texts[StrCount]<optimize=false>;

(you can run it in 010Editor)

Edited by NoobInCoding
  • Like 2
Link to comment
Share on other sites

  • Engineer

I'm working on nxds myself. The header is relatively pretty simple compared to row data itself which can also use pointers to arbitrary other data.

Properly supporting these files requires mapping out every single field type across each of the 700+ tables.

  • Like 1
Link to comment
Share on other sites

14 hours ago, NoobInCoding said:

still working on nxd files but for pzd here is structure:

enum StrType{
Subtitle,
UI_Text,
Detailed_Subtitle   
};

char Magic[4];
int FileVersion;
FSkip(28);
int64 StrCount;
FSkip(4); //Always 0

struct{
    int id;
    int StrOffset;
    FSkip(4); //Always 224
    int TextGroupID;
    int VoicePathOffset;
    StrType Type;
    int64 UnknownStrOffset;
    local int base = FTell();
    FSeek(base + StrOffset - 32);
    string Str;
    FSeek(base + VoicePathOffset - 32);
    string VoicePath;
    FSeek(base + UnknownStrOffset - 32);
    string UnknownStr;
    FSeek(base);
}texts[StrCount]<optimize=false>;

(you can run it in 010Editor)

Thanks,

I'm new to use 101Editor. But the tools looks straightforward. I also tried your template. It seems every 2 row or 32bytes stores info. of one subtitle line?

Link to comment
Share on other sites

2 hours ago, EmptyMan said:

*.pzd text tool

Usage:

Export text:
Run ExportText.exe, select folder with *.pzd files
Import text:
Run ImportText.exe, select translated file & folder with the original *.pzd files

Please test the tool.
I'm not sure if the files that contain empty lines are working correctly.

FF16[pzdTextTool]ByGier.7z 559.31 kB · 3 downloads

Thank You! 🙂

Link to comment
Share on other sites

14 hours ago, EmptyMan said:

*.pzd text tool

Usage:

Export text:
Run ExportText.exe, select folder with *.pzd files
Import text:
Run ImportText.exe, select translated file & folder with the original *.pzd files

Please test the tool.
I'm not sure if the files that contain empty lines are working correctly.

FF16[pzdTextTool]ByGier.7z 559.31 kB · 7 downloads

That's a great job.

My I know if this tool works on *.nxd file?

For example, the "loredictionary.nxd" or "item.nxd" files. They contain several paragraphs of lores/item description. How to replace one original string in it with a different length string?

Thanks,

Link to comment
Share on other sites

On 9/5/2024 at 6:55 PM, EmptyMan said:

*.pzd text tool

Usage:

Export text:
Run ExportText.exe, select folder with *.pzd files
Import text:
Run ImportText.exe, select translated file & folder with the original *.pzd files

Please test the tool.
I'm not sure if the files that contain empty lines are working correctly.

FF16[pzdTextTool]ByGier.7z 559.31 kB · 10 downloads

system detected virus , is false positive?

Trojan:Script/Wacatac.H!ml
|FF16[pzdTextTool]ByGier.7z|https://reshax.com/applications/core/interface/file/attachment.php?id=3218&key=a096a6d37512861b56ac7edbb033644b|pid:15308,ProcessStart:133701158675936693

Link to comment
Share on other sites

On 9/6/2024 at 8:07 PM, Diablo12 said:

system detected virus , is false positive?

You can always check almost any application on the virustotal site.

Signature Verification:
File is not signed

ff16pzd.thumb.png.24223add4a7046bf66734fe90d9f519a.png

On 9/6/2024 at 9:54 AM, whateat said:

My I know if this tool works on *.nxd file?

On 9/5/2024 at 6:55 PM, EmptyMan said:

*.pzd text tool

Maybe I'll make a tool to unpack and pack some *.nxd files.

Link to comment
Share on other sites

On 9/7/2024 at 11:44 AM, EmptyMan said:

You can always check almost any application on the virustotal site.

Signature Verification:
File is not signed

ff16pzd.thumb.png.24223add4a7046bf66734fe90d9f519a.png

Maybe I'll make a tool to unpack and pack some *.nxd files.

Much Appreciated!

Link to comment
Share on other sites

Can anyone help me on this. I thought I found the trick to crack the "loredictionary.nxd", but I was wrong.

By comparing loredictionary.nxd from two different language, I found there are always 4 of 4-bytes in a group as below. For each 4 bytes like below green one, if I join them as 3E2C. Then the offset 2F6A+3E2C=6D96. And offset=6D96, Column=F is just a starting byte after '00'. Same for the red, blue and yellow 4-bytes.

But if I try to apply this method to other 4 of 4-bytes groups, it is always a few bytes off the target (the first byte after '00').

I don't get it.

Will be appreciated if anyone can help on this "loredictionary.nxd" file.

image.thumb.png.5e4ffdb8a0a3078b6bd1403953060473.png

Link to comment
Share on other sites

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...