• Hey, guest user. Hope you're enjoying GameParadise! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Hacking Final Fantasy Type-0 RomHacking

 
 

admin

Chad
Staff member
85%
Joined
Jan 25, 2024
Messages
3,636
Points
38
Age
38
Location
USA
Website
gameparadise.org
Credits
64,920
Well, well, what can I say about this game? Being a very good title released at the end on the life of its platform made it impossible for the development team to release it outside Japan.

So many "operations", "movements", and "projects"; and after more than a year, the situation is exactly the same. Even so, I still don't see the interest of a fan translation of this game, which surprises me a lot.

Having worked myself on a lot of Spanish fan translations for the PSP (and many other platforms) for many Square Enix games, I had a look at Final Fantasy Type-0. As I said, due to the lack of interest there is no translation available, and as I don't speak Japanese, there is no much more I can do.

Still, I opened this thread to show how the game works internally: as a programmer, I reverse-engineered most of the game engine, making a perfect fan translation *almost possible* (of course, it will never be possible without Japanese translators xD).

-About the game's file system:

Right after opening the ISO, we can clearly see that all the game's data is stored in 2 files:

*yellow.pkg -> The data package, which contains all the game files together
*yellow.fsd -> The file system descriptor, which contains information on how the files are stored in the pkg.

Thew file system descriptor is basically a data base, having:

[Number of stored files in the pkg]
-Then, for each stored file:
[Sector of the pkg where the file start (file offset = sector * 0x800)]
[Implied file sized]

That is en to unpack the data pack. After that, we will find all the game resources including images, audio, video, text, and system data.

-About audio:

We can find 2 types of audio files:
*AT3(+) sound files -> very well known audio format in PSP. Not much to say here.
*ADPCM-encoded stream -> Using the "SSCF" header, this audio format encodes each 16 bit, mono sample in 4 bit data, reducing the size by ¼. It's pretty easy to decode them knowing how the compression works. Here is an example of a decoded SSCF stream pack:



You guessed right, this is enough to dub the game.

-About graphics


As usual in PSP, all images are encoded in ARGB8888 indexed to 8 bit: so we have 8 bit pixels and a 256 color CLUT (each one 32 bit). This is more than enough to extract, decode, edit and reinsert any image in the game, for example, here is the title menu:

menu1sk.png



Of course, this is needed as many in-game banners are actually graphic files.

-About video files:


Video files are PMF (MPEG2 stream video files with AT3 audio), very common in PSP. Just like with AY3 audio, not much to say here, as everything is known, and many tools exist.

-About system files:

These files are mostly text, event script and 3D model data. They are usually packed in a similar way as the main yellow package. Each package includes a table at the beginning specifiyin:
[Number of packed files]
[A sequential index]
[The package file name]
-Then, for each packed file:
[A file identifier]
[The position in the package]
[The file size]

Unpacking all system files we will find 3D models (they have been mapped and can be previewed like in the following example):

4eb1ea1c_Final-Fantasy-Type-0-Cater-Model.png



And, using the identifier "lang" we can find text files. These text files always use the "ATELY" header, and I've mapped the file structure in the following image:

capturepdp.png



*In black -> ATELY constant header
*In grey -> Absolute pointer to the text event script file
*In pink -> Text event script size
-Then, the text data always start at 0x20
*In green -> number of text interventions
*In blue -> Entire text block size
-Then, for each intervention:
*In red -> Intervention index
*In purple -> Intervention size
*In light blue -> intervention text using a custom 16 bit encoding
-Then the next intervention following the same scheme…

In order to decode the custom 16 bit encoding, both the font and Japanese knowledge are needed, as I'm able to extract images, I have full access to the font, shown here:

fnt0.png


fnt1v.png



For a Japanese Speaker, it should be straightforward to understand how the text is encoding
having all this data.

-Conclussions

*As you can see, the game is neither compressed, nor encrypted; it's just amazing how nobody has actually worked deeply on this game to realize that a fan translation is actually possible.

*I'm posting everything after finding no interest in translating this game after a lot of researching work. It is not my intention to form a translation team, but if anyone find these useful, he/she can count with my help for any possile project.

UPDATE: Tool to extract images like the bitmaps shown in this post:

http://www.mediafire.com/download.php?gdxup2r4t7y4mgm

That is all.
 
 

Recent Content

Newest Downloads

Tutorials

Back
Top