hey, props on completing the FF Type-0 project, that's a huge game. my bandwidth service is too crappy to be downloading huge files, only 25 GB a month, gone in the first two days.
hopefully I'll be able to get the whole game downloaded soon, I can't do much without it.
I have a pretty decent internet connection, but until today I hadn't had time to download the game and have a look at it...
So I've started looking at the filesystem. I don't really consider it THAT complex, it's not the easiest one I've hacked (for one thing, it is recursive... and many simple ones aren't...), but it's definitely not the hardest that I've seen. I already have some results and theories:
It starts by reading the file "system.res", which I guess could be considered the root/highest level directory. Now, for each entry, the index contain:
-Decompressed file size.
-Metadata registry offset and number of entries in this registry (it contains at least one entry, in the form of a pointer to the filename. In many cases it also has a pointer to the extension).
-File data position.
-File size and "position mode".
The "position mode" specifies how the data offset is calculated:
-0xc0 -> Local file -> the position is the offset relative to the current file (in the root case, it's system.res).
-0x40 -> Package file -> the position is the LBA (UMD sector) in the file package.rdp.
-0x50 -> Data file -> the position is the LBA (UMD sector) in the file data.rdp.
Now, the interesting part is that, every time the game needs a file inside a RDP package, instead of reading it as usual data, it's opened as a "virtual file", using sceIoOpen with a route like "disc0:/sce_lbn0x49235_size0x47d". My idea is that recursively processing "system.res" (it points to other packages with the same format), both RDP's would be completely extracted.
Of course this is not necessarily true: since the game can open any ISO section just from the LBA and a size, in theory any file within any RDP can be referenced from the Eboot and not be part of the "system.res" tree. This is actually done already at boot time to check for the RDP header before opening "system.res", but I don't think its gonna be an usual practice since it requires hardcoding LBA's and sizes in the game's code. It's something to have into account, though.
During boot, the game also checks if it was previously installed, that's the reason why there is an extra position mode: the game only install data.rdp, so when installed, it reads all file with the 0x50 position mode from the memory stick. We could in theory change this, and install the game completely (this is just the opposite to what I did to prevent Type-0 from being installed xD).
As for the rest, many extracted files are compressed with the "blz2" signature, which looks like the usual deflate compression (I tried inflating one and worked).
There are also those "tr2" files, which IIRC is the text, and of course, many usual GIM, AT3, VAG, PMF's... and all kinda stuff you'd expect on a PSP game xD
So any way, any news about the state of the current project?
~Sky
UPDATE: So I went ahead and looked for the very first tr2 in the file system. It's called common_text.tr2 and uses that blz2 deflate compression. Then I decompressed it and came out with this
Code:
未設定のテキストです
キャンセル
はい
いいえ
もどる
OK
新規データ
破損データ
セーブデータを上書きしますか?
セーブしました
ロードしました
セーブ中です
記録メディアを抜かないでください
セーブデータとPSP® (PlayStation®Portable)情報が一致しません
再度「GOD EATER」をお持ちであることを確認する必要があります
「GOD EATER BURST アペンド版」は
「GOD EATER」をお持ちであることを確認する必要があります
「GOD EATER」のUMD®に入れ換えてください
「GOD EATER」のUMD®を確認しました
「GOD EATER BURST アペンド版」のUMD®に入れ換えて、○ボタンを押してください
「GOD EATER」の確認が終了しました
PSP® (PlayStation®Portable)を変更した場合には
再度確認が必要になります
ディスクが違います
「GOD EATER」のUMD®に入れ換えてください
「GOD EATER BURST アペンド版」のUMD®に入れ換えてください
ディスクが違います
「GOD EATER BURST アペンド版」のUMD®に入れ換えて、○ボタンを押してください
「GOD EATER」のUMD®を確認しています
「GOD EATER BURST アペンド版」のUMD®を確認しています
ロード中です
記録メディアを抜かないでください
記録メディアを確認中です
アバターカードの情報が壊れています
修復処理を行います
アバターカード情報を修復中です(ア/イ)
記録メディアを抜かないでください
アバターカード情報の修復が終わりました
次回のセーブで情報が保存されます
セーブスロットを選んでください
セーブデータを確認中です
記録メディアを抜かないでください
セーブデータを上書きしますか?
既存のセーブデータの全ての情報は失われます
アバターカードをセーブ中です
記録メディアを抜かないでください
ロードに失敗しました
セーブデータがありません
記録メディアを入れて下さい
アバターカードを削除中です(ア/イ)
記録メディアを抜かないでください
交換したアバターカードがあります
セーブデータを上書きしますか?
交換したアバターカードは失われますが
セーブせずに終了してもよろしいですか?
前回のセーブ以降のプレイが失われますが
セーブせずに終了してもよろしいですか?
「GOD EATER」の確認を中止しますか?
記録メディアの空き容量が不足しています
データをセーブするには空き容量があとア以上必要です
セーブデータ削除ユーティリティを起動しますか?
記録メディアが抜かれたため
ロード処理が中止されました
スリープモードに切り替わったため
ロード処理が中止されました
セーブデータがありませんでした
新規にセーブしますか?
既存のアバターカードは失われます
セーブデータが壊れています
セーブデータを上書きしますか?
既存のセーブデータの全ての情報は失われます
ロードに失敗しました
セーブデータが壊れています
記録メディアが抜かれたため
セーブ処理が中止されました
スリープモードに切り替わったため
セーブ処理が中止されました
セーブスロットは固定になります
アバターカードのロードに失敗しました
データが壊れています
アバターカードのロードに失敗しました
記録メディアが入っていません
アバターカードのロードに失敗しました
記録メディアが抜かれました
アバターカードのロードに失敗しました
セーブデータがありません
スリープモードに切り替わったため
アバターカードのロードに失敗しました
アバターカードのロードに失敗しました
アバターカードのロードに失敗しました
カードリストと記録メディアの情報が一致しません
「GOD EATER BURST アペンド版」のUMD®に
戻っていることを確認しました
記録メディアが抜かれたため
追加データパック確認処理が中止されました
スリープモードに切り替わったため
追加データパック確認処理が中止されました
ダウンロードコンテンツミッションには
追加データパックが必要です
追加データパックを確認しています
記録メディアを抜いたり
本体の電源を切ったりしないで下さい
★使用してないはずのメッセージです
このメッセージが表示されたらバグです★
追加データパックをロードできなかったため
ゲームを続行できません
タイトルに戻ります
追加データパックが壊れているため
ゲームを続行できません
タイトルに戻ります
★使用してないはずのメッセージです
このメッセージが表示されたらバグです★
★使用してないはずのメッセージです
このメッセージが表示されたらバグです★
★使用してないはずのメッセージです
このメッセージが表示されたらバグです★
追加データパックをロードしました
ゲーム中は記録メディアを抜き替えないで下さい
ダウンロードコンテンツを
利用できない場合があります
プレミアムキャラ解除キーをロードしました
追加データパックの認証に失敗しました
PlayStation®Storeで再ダウンロードして下さい
プレミアムキャラ解除キーの認証に失敗しました
失敗したプレミアムキャラはメンバーに加えられません
PlayStation®Storeで再ダウンロードして下さい
追加データパックの認証に失敗しました
プレミアムキャラ解除キーの認証に失敗しました
失敗したプレミアムキャラはメンバーに加えられません
PlayStation®Storeで再ダウンロードして下さい
追加データパックが正しく読み込めなかったため
代替データの装備・髪型・BGMをロードしました
このメッセージが繰り返される場合は、追加データパックを
PlayStation®Storeで再ダウンロードして下さい
GOD EATER 2
名前 : ア <イ>
総プレイ時間 : ア
ストーリー進行 : イ ウ
所持金 : エfc
階級 : オ
NEW DATA
GOD EATER BURST 体験版
GOD EATER 2 ゲームデータ
GOD EATER 2 の
ゲームデータです
GOD EATER 2 ゲームデータ
★
★★
★★★
ア㌦
It should be very possible to replace this with the translated version and see how it look, but the next obvious step would be checking the PSV and PC versions, as they might even share the tr2 format, which could speed things up A LOT.
~Sky