Important information: this site is currently scheduled to go offline indefinitely by end of the year.
FINAL FANTASY TYPE-0 HD PC
-
- Moderator
- Posts: 2602
- Joined: Sun May 18, 2008 3:01 pm
- Has thanked: 57 times
- Been thanked: 1422 times
FINAL FANTASY TYPE-0 HD PC
Here is a quikbms script for this game
You do not have the required permissions to view the files attached to this post.
Re: FINAL FANTASY TYPE-0 HD PC
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.
-
- Moderator
- Posts: 2602
- Joined: Sun May 18, 2008 3:01 pm
- Has thanked: 57 times
- Been thanked: 1422 times
Re: FINAL FANTASY TYPE-0 HD PC
Its a bug in quickbms.
hit r to rename files instead of skipping them.
hit r to rename files instead of skipping them.
Re: FINAL FANTASY TYPE-0 HD PC
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.chrrox wrote:Its a bug in quickbms.
hit r to rename files instead of skipping them.
-
- veteran
- Posts: 88
- Joined: Sat Feb 27, 2010 6:57 pm
- Has thanked: 40 times
- Been thanked: 77 times
Re: FINAL FANTASY TYPE-0 HD PC
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!
Here is the layout I see so far:
[/size]
Ker-schploink!
Here is the layout I see so far:
Code: Select all
//--------------------------------------
// 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;
You do not have the required permissions to view the files attached to this post.
Last edited by EcheloCross on Tue Aug 25, 2015 10:17 pm, edited 1 time in total.
Re: FINAL FANTASY TYPE-0 HD PC
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.
Re: FINAL FANTASY TYPE-0 HD PC
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.
-
- veteran
- Posts: 98
- Joined: Sat Apr 19, 2014 8:02 am
- Has thanked: 46 times
- Been thanked: 13 times
Re: FINAL FANTASY TYPE-0 HD PC
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.
Edit. Didn't notice the edited post above. Haven't been able to test it.
Re: FINAL FANTASY TYPE-0 HD PC
It will extract all files within the .pac file you chose.It will take a long time depending on your computer.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.
Also, does anyone know in which pack.pac the texture files are located and, if so , in which format?
- aagems
- advanced
- Posts: 75
- Joined: Wed May 30, 2012 6:07 pm
- Has thanked: 6 times
- Been thanked: 1 time
Re: FINAL FANTASY TYPE-0 HD PC
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!!
Re: FINAL FANTASY TYPE-0 HD PC
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*
*sorry for bad english, not is my mother language*
Re: FINAL FANTASY TYPE-0 HD PC
The script is buggy. Certain files have completely wrong data. It's not encryption since some files with the same extension name are correct.
Re: FINAL FANTASY TYPE-0 HD PC
Forget about that. It doesn't store screen resolution height/width in the option file.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
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.
Re: FINAL FANTASY TYPE-0 HD PC
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/
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/
You do not have the required permissions to view the files attached to this post.