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 not 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.
The 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 enough to unpack the data package. After that, we can 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 streams -> 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 it knowing how the compression works. 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:
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 AT3 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 specifying:
[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):
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:
* 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
- The following interventions use 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:
For a Japanese Speaker, it should be straightforward to understand how the text is encoded having all this data.
- Conclusions
* 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 and after a lot of research work. It is not my intention to gather a translation team, but if anyone find these useful, he/she can count on my help for any possible project.
That is all.
Regards:
~Sky
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 not 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.
The 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 enough to unpack the data package. After that, we can 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 streams -> 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 it knowing how the compression works. 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:
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 AT3 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 specifying:
[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):
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:
* 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
- The following interventions use 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:
For a Japanese Speaker, it should be straightforward to understand how the text is encoded having all this data.
- Conclusions
* 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 and after a lot of research work. It is not my intention to gather a translation team, but if anyone find these useful, he/she can count on my help for any possible project.
That is all.
Regards:
~Sky
Last edited by SkyBladeCloud,