XeNTaX Forum Index
Forum MultiEx Commander Tools Tools Home
It is currently Sun Apr 30, 2017 12:37 am

All times are UTC + 1 hour


Forum rules


Please click here to view the forum rules



Post new topic Reply to topic  [ 24 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: FINAL FANTASY TYPE-0 HD PC
PostPosted: Thu Aug 20, 2015 10:51 pm 
Offline
Moderator
User avatar

Joined: Sun May 18, 2008 3:01 pm
Posts: 2396
Has thanked: 56 times
Have thanks: 1129 times
Here is a quikbms script for this game


Attachments:


You do not have the required permissions to view the files attached to this post. Register to gain access.



Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Fri Aug 21, 2015 5:15 am 
Offline
n00b

Joined: Tue Sep 02, 2014 4:58 pm
Posts: 18
Has thanked: 2 times
Have thanks: 0 time
Great work :) Can you please also create a script for movie files (.hxmf) of this game ? And BTW, why some or many of the files extracted are of 0 bytes ? I have all the pack files at one place.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Fri Aug 21, 2015 10:19 am 
Offline
Moderator
User avatar

Joined: Sun May 18, 2008 3:01 pm
Posts: 2396
Has thanked: 56 times
Have thanks: 1129 times
Its a bug in quickbms.
hit r to rename files instead of skipping them.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Fri Aug 21, 2015 11:40 am 
Offline
n00b

Joined: Tue Sep 02, 2014 4:58 pm
Posts: 18
Has thanked: 2 times
Have thanks: 0 time
chrrox wrote:
Its a bug in quickbms.
hit r to rename files instead of skipping them.


Yes I know but still some files like "alb03_05.bin", "alb07_01.bin", "ale01_02.bin" etc.. inside "JP\bg\bin" folder are extracted as 0 bytes and during extraction there's no option for replace or rename for those files.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Fri Aug 21, 2015 5:41 pm 
Offline
veteran

Joined: Sat Feb 27, 2010 6:57 pm
Posts: 86
Has thanked: 37 times
Have thanks: 67 times
ShivShubh, quite a few entrys in the .fsd file have 0 sizes. Not sure if they are further down in the package under the same name with a valid size, but if they have a 0 size in the fsd, its possible only their name and the blank fsd entry are still there, just not the file data.

Ker-schploink!
Image

Here is the layout I see so far:
Code:
//--------------------------------------
// File: Final Fantasy Type-0 HD Model Binary Template
// Author: Echelo
// Revision: 0.06 info only
//--------------------------------------

local int i;
local int j;
LittleEndian();

struct MODEL_FILE
{
    struct MODEL_HEADER
    {
        uint unknown01 <bgcolor=0x0000FF>;
        uint unknown02 <bgcolor=0x0000FF>;
        uint vertexInfoPointer1 <bgcolor=0x00FF00>;
        uint unknown04 <bgcolor=0x0000FF>;
        ushort count02 <bgcolor=0xFFCC00>;
        ushort count01 <bgcolor=0xFFCC00>;
        ushort materialCount <bgcolor=0xFFCC00>;
        ushort textureCount <bgcolor=0xFFCC00>;
        ushort count06 <bgcolor=0xFFCC00>;
        ushort count05 <bgcolor=0xFFCC00>;
        ushort count07 <bgcolor=0xFFCC00>;
        ushort count08 <bgcolor=0xFFCC00>;
        uint64 address01 <bgcolor=0xFF8800>;
        uint64 materialInfoAddress <bgcolor=0xFF8800>;
        uint64 textureInfoAddress <bgcolor=0xFF8800>;
        uint64 address04 <bgcolor=0xFF8800>;
        uint64 address05 <bgcolor=0xFF8800>;
        uint64 address06 <bgcolor=0xFF8800>;
        uint64 address07 <bgcolor=0xFF8800>;
        uint64 vertexInfoPointer2 <bgcolor=0x00FF00>;
        uint64 address09 <bgcolor=0xFF8800>;
        uint64 address10 <bgcolor=0xFF8800>;
        uint64 address11 <bgcolor=0xFF8800>;
        uint64 address12 <bgcolor=0xFF8800>;
        uint64 address13 <bgcolor=0xFF8800>;
        uint64 address14 <bgcolor=0xFF8800>;
        uint64 address15 <bgcolor=0xFF8800>;
        uint64 address16 <bgcolor=0xFF8800>;
        uint unknown05 <bgcolor=0x0000FF>;
        ushort modelCount <bgcolor=0x00FF00>;
        ushort unknown06 <bgcolor=0x0099FF>;
        uint unknown07 <bgcolor=0x0000FF>;
        ushort unknown08 <bgcolor=0x0000FF>;
        ushort unknown09 <bgcolor=0x0000FF>;
    } modelHeader;

    if (modelHeader.count01 != 0)
    {
       
        FSeek(modelHeader.address01);
        struct TABLE_01
        {
            for (i = 0; i < modelHeader.count01; i++)
            {
                struct TABLE_01_ENTRY
                {
                    uint unknown01;
                    uint unknown02;
                    uint unknown03;
                    uint unknown04;
                } table01Entry;
            }
        } table01 <bgcolor=0x0099FF>;
    }

    if (modelHeader.materialCount != 0)
    {
        FSeek(modelHeader.materialInfoAddress);
        struct MATERIAL_INFO_TABLE
        {
            for (i = 0; i < modelHeader.materialCount; i++)
            {
                struct MATERIAL_INFO_ENTRY
                {
                    ushort diffuseMapIndex;
                    ushort normalMapIndex;
                    ushort specularMapIndex;
                    ushort unknown04;
                    ushort unknown05;
                    ushort unknown06;
                    ushort unknown07;
                    ushort unknown08;
                    ushort unknown09;
                    ushort unknown10;
                    ushort unknown11;
                    ushort unknown12;
                    ushort unknown13;
                    ushort unknown14;
                    ushort unknown15;
                    ushort unknown16;
                    ushort unknown17;
                    ushort specularLevelMapIndex; //not sure what kind of map this is ??
                    ushort unknown19;
                    ushort unknown20;
                    ushort unknown21;
                } materialInfoEntry;
            }
        } materialInfoTable <bgcolor=0x00FF00>;
    }

    if (modelHeader.textureCount != 0)
    {
        FSeek(modelHeader.textureInfoAddress);
        struct TEXTURE_INFO_TABLE
        {
            for (i = 0; i < modelHeader.textureCount; i++)
            {
                struct TEXTURE_INFO_ENTRY
                {
                    ushort textureWidth;
                    ushort textureHeight;
                    uint textureSize;
                    uint textureAddress;
                    uint unknown04;
                } textureInfoEntry;
            }
        } textureInfoTable <bgcolor=0x00FF00>;
    }

    if (modelHeader.count05 != 0)
    {
        FSeek(modelHeader.address05);
        struct TABLE_05
        {
            for (i = 0; i < modelHeader.count05; i++)
            {
                struct TABLE_05_ENTRY
                {
                    float unknown01;
                    float unknown02;
                    float unknown03; //?? not sure if float as only seen null here
                    byte unknown04;
                    byte unknown05;
                    byte unknown06;
                    byte unknown07;
                } table05Entry;
            }
        } table05 <bgcolor=0x0099FF, comment="fvf table?">;
    }

    if (modelHeader.address06 != 0)
    {
        FSeek(modelHeader.address06);
        struct TABLE_06
        {
            uint unknown01;
            float unknown02;
            float unknown03;
            float unknown04;
            ushort unknown05;
            ushort unknown06;
            uint unknown07;
            uint unknown08;
            uint unknown09;
            uint unknown10;
            uint unknown11;
            float boundingBoxCornerA_xPosition;
            float boundingBoxCornerA_yPosition;
            float boundingBoxCornerA_zPosition;
            float boundingBoxCornerB_xPosition;
            float boundingBoxCornerB_yPosition;
            float boundingBoxCornerB_zPosition;
            uint unknown12;
            uint unknown13;
            uint unknown14;
            uint unknown15;
        } table06 <bgcolor=0x0099FF>;
    }

    if (modelHeader.address07 != 0)
    {
        FSeek(modelHeader.address07);
        struct TABLE_07
        {
            uint unknown01;
            uint unknown02;
            uint unknown03;
            uint unknown04;
            uint unknown05;
            uint unknown06;
            uint unknown07;
            ushort unknown08;
        } table07 <bgcolor=0x0000FF>;
    }

    if (modelHeader.address13 != 0)
    {
        FSeek(modelHeader.address13);
        ushort unknownA;
        ushort table13_count;
        struct TABLE_13
        {
            for (i = 0; i < table13_count; i++)
            {
                struct TABLE_13_ENTRY
                {
                    ushort index;
                } table13Entry;
            }
        } table13 <bgcolor=0x00FFFF>;
    }

    if (modelHeader.vertexInfoPointer1 != 0)
    {
        FSeek(modelHeader.vertexInfoPointer1);
        if (modelHeader.modelCount == 0)
        {
            uint vertexInfoAddress;
            uint vertexInfoCount;
            ushort vertexInfoStride;
            ushort unknown01;
            uint unknown02;
            uint unknown03;
            uint unknown04;
            uint unknown05;
            uint unknown06;
            uint unknown07;
            uint unknown08;
            uint unknown09;
            uint unknown10;
            uint meshPartCount;
       
            /*for (i = 0; i < meshPartCount; i++)
            {
                struct FACE_GROUP_INFO
                {
                    uint faceIndexCountA <bgcolor=0xFFCC00>;
                    uint faceIndexCountB <bgcolor=0xFFCC00>;
                    byte unknownF01 <bgcolor=0x0000FF>;
                    byte unknownF02 <bgcolor=0x0000FF>;
                    byte materialIndex <bgcolor=0xFF00AA>;
                    byte unknownF03 <bgcolor=0x0000FF>;
       
                    struct FACE_GROUP
                    {
                        for (j = 0; j < (faceIndexCountA / 3); j++)
                        {
                            struct FACE_ENTRY
                            {
                                uint triangleIndex0;
                                uint triangleIndex1;
                                uint triangleIndex2;
                            } faceEntry;
                        }
                    } faceGroup;
                   
                } faceGroupInfo <bgcolor=0x879E2B>;
            }
       
            FSeek(vertexInfoAddress);
            struct VERTEX_INFO_ENTRYS
            {
                for (i = 0; i < vertexInfoCount; i++)
                {
                    struct VERTEX_INFO_ENTRY
                    {
                        if (vertexInfoStride == 0x44)
                        {
                            float xPosition;
                            float yPosition;
                            float zPosition;
                            byte unknown01;
                            byte unknown02;
                            byte unknown03;
                            byte unknown04;
                            byte unknown05;
                            byte unknown06;
                            byte unknown07;
                            byte unknown08;
                            uint unknown09;
                            uint unknown10;
                            uint unknown11;
                            uint unknown12;
                            uint unknown13;
                            uint unknown14;
                            byte unknown15;
                            byte unknown16;
                            byte unknown17;
                            byte unknown18;
                            float tu;
                            float tv;
                            float tu1;
                            float tv1;
                            float tu2;
                            float tv2;
                        }
                    } vertexInfoEntry;
                }
            } vertexInfoEntrys <bgcolor=0xFF3300>;*/
        }
        else
        {
            struct MODEL_INFO_ADDRESSES
            {
                for (i = 0; i < modelHeader.modelCount; i++)
                {
                    struct MODEL_ADDRESS
                    {
                        uint64 address;
                    } modelAddress;
                }
            } modelInfoAddresses <bgcolor=0x33FF00>;

            struct MODEL_INFO_ENTRYS
            {
                for (i = 0; i < modelHeader.modelCount; i++)
                {
                    FSeek(modelInfoAddresses.modelAddress[i].address);
                    struct MODEL_INFO_ENTRY
                    {
                        uint vertexInfoAddress;
                        uint vertexInfoCount;
                        ushort vertexInfoStride;
                        ushort unknown01;
                        uint unknown02;
                        uint unknown03;
                        uint unknown04;
                        uint unknown05;
                        uint unknown06;
                        uint unknown07;
                        uint unknown08;
                        uint unknown09;
                        uint unknown10;
                        uint meshPartCount;
                    } modelInfoEntry;
                }
            } modelInfoEntrys <bgcolor=0xCC8800>;
        }
    }
} modelFile;


Attachments:


You do not have the required permissions to view the files attached to this post. Register to gain access.



Last edited by EcheloCross on Tue Aug 25, 2015 10:17 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Sun Aug 23, 2015 8:10 am 
Offline
n00b

Joined: Tue Sep 02, 2014 4:58 pm
Posts: 18
Has thanked: 2 times
Have thanks: 0 time
Can anyone tell me what's the differences between normal and 4 GB version of QuickBMS ? cause with 4 GB edition, it gives error at some point while importing, but with normal edition it works fine, this also happened with some other games. So wanted to know if it will cause any problems or not by using normal edition of QuickBMS on this game files, and yes some files are larger than 2 GB in this game.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Wed Aug 26, 2015 1:14 pm 
Offline
ultra-n00b

Joined: Sun Aug 23, 2015 9:04 am
Posts: 1
Has thanked: 1 time
Have thanks: 0 time
Unless I'm seriously misunderstanding (I apologize, I'm new to this) this is a script for extracting models. (people are probably looking at me and saying 'derp' right now, sorry again). Is there any way I can extract textures? I'm not able to find many non-corrupted ones when I extract with this script.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Wed Aug 26, 2015 8:01 pm 
Offline
advanced

Joined: Sat Apr 19, 2014 8:02 am
Posts: 67
Has thanked: 37 times
Have thanks: 7 times
This just unpacks the main packages. Don't have a way to extract usable models or textures afaik.

Edit. Didn't notice the edited post above. Haven't been able to test it.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Wed Aug 26, 2015 8:18 pm 
Offline
ultra-n00b

Joined: Wed Aug 26, 2015 2:28 pm
Posts: 2
Has thanked: 1 time
Have thanks: 0 time
Aegrus wrote:
Unless I'm seriously misunderstanding (I apologize, I'm new to this) this is a script for extracting models. (people are probably looking at me and saying 'derp' right now, sorry again). Is there any way I can extract textures? I'm not able to find many non-corrupted ones when I extract with this script.


It will extract all files within the .pac file you chose.It will take a long time depending on your computer.

Also, does anyone know in which pack.pac the texture files are located and, if so , in which format?


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Fri Aug 28, 2015 7:26 pm 
Offline
advanced
User avatar

Joined: Wed May 30, 2012 6:07 pm
Posts: 74
Has thanked: 6 times
Have thanks: 1 time
Is there any way to decrypt option file?I think the *.bin file is encrypted and it's not using usual *.ini or *.cfg to change custom resolution manually

_________________
Great things require hard work!!


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Sun Aug 30, 2015 4:54 am 
Offline
ultra-n00b

Joined: Sun Aug 30, 2015 4:43 am
Posts: 1
Has thanked: 0 time
Have thanks: 0 time
any way to compress back after change any model? in this script i can change doors style and compress back to game? =o


*sorry for bad english, not is my mother language*


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Sat Sep 12, 2015 12:51 pm 
Offline
ultra-n00b

Joined: Mon Oct 13, 2014 12:23 pm
Posts: 6
Has thanked: 0 time
Have thanks: 8 times
The script is buggy. Certain files have completely wrong data. It's not encryption since some files with the same extension name are correct.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Sat Sep 12, 2015 12:58 pm 
Offline
ultra-n00b

Joined: Mon Oct 13, 2014 12:23 pm
Posts: 6
Has thanked: 0 time
Have thanks: 8 times
aagems wrote:
Is there any way to decrypt option file?I think the *.bin file is encrypted and it's not using usual *.ini or *.cfg to change custom resolution manually


Forget about that. It doesn't store screen resolution height/width in the option file.
There is only a template value in option file for screen resolution: 0 for 1280x720; 1 for 1920x1080.
You can't customize resolution by modifying option file.


Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Sun Sep 13, 2015 5:00 pm 
Offline
ultra-n00b

Joined: Mon Oct 13, 2014 12:23 pm
Posts: 6
Has thanked: 0 time
Have thanks: 8 times
Final Fantasy Type-0 HD PC Decryptor + Encryptor
By AyuanX, v1.0, 2015-09-14

Usage: FFType0HD_Cryptor.exe [-d] [-e] INPUT_FILE [OUTPUT_FILE]
-d (Decryption)
-e (Encryption)
OUTPUT_FILE (Optional, can be omitted)

Examples:
FFType0HD_Cryptor.exe -d EPSC01.hxmf
FFType0HD_Cryptor.exe -e TYPE0SYS.BIN

PS:
There are two kinds of files that are encrypted in FFType-0 HD PC:
A) All save data files (e.g. TYPE0SYS.BIN / TYPE0DAT.BIN)
They are meaningful binary files after decryption.

B) All pre-rendered movie files (e.g. *.hxmf)
They are standard MP4/H264 files after decryption.

PPS:
This tool is capable to encrypt modified files back to the game.
This is a command-line tool.
Both x86 and x64 versions are provided.
Minimum operating system: Windows Vista and later, up to Windows 10.

Alternative download:
https://ayuanx.wordpress.com/2015/09/14 ... d-cryptor/


Attachments:


You do not have the required permissions to view the files attached to this post. Register to gain access.



Top
 Profile  
 
 Post subject: Re: FINAL FANTASY TYPE-0 HD PC
PostPosted: Sat Sep 26, 2015 9:31 am 
Offline
advanced
User avatar

Joined: Wed May 30, 2012 6:07 pm
Posts: 74
Has thanked: 6 times
Have thanks: 1 time
Wonderful, thanks for the tools :)

_________________
Great things require hard work!!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 24 posts ]  Go to page 1, 2  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: bouvrie, Google [Bot] and 13 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group