Jump to content

Timesplitters: Future Perfect [Xbox][.pak]


Crusader

Recommended Posts

Wanted to extract TSFP .pak files, so later can use Noesis to convert the 3D models.

What I currently know so far:

Header = P5CK
Next 4bytes little endian = indexOffset(0x01eed800)
Num of files = based of rows at indexOffset
First file begins at 0x800

What I currently don't know:

Where the filesize hexdata is located at indexOffset?
What filetype(xbr xbt?)?
Where do other file data begin and end?

Here is sample:

...
0x01eed800  10bd b2b9 0008 0000 1c90 0000 0000 0000
0x01eed810  c022 3423 00a0 0000 8010 0000 0000 0000
0x01eed820  7d78 14a2 00b8 0000 c055 0500 0000 0000
0x01eed830  691e 27b9 0010 0600 d055 0100 0000 0000
0x01eed840  1374 861f 0068 0700 c055 0500 0000 0000
0x01eed850  c1e5 b3c6 00c0 0c00 c055 0000 0000 0000
0x01eed860  f14d 2de8 0018 0d00 d055 0100 0000 0000
0x01eed870  5b14 eba5 0070 0e00 9c15 0000 0000 0000
0x01eed880  2dbe d1d8 0088 0e00 28ab 0000 0000 0000
0x01eed890  6852 7249 0038 0f00 00ab 0000 0000 0000
...


Help would much be appreciate. :classic_biggrin:

 

Edited by Crusader
removed tsfpGun.7zip
Link to comment
Share on other sites

27 minutes ago, Crusader said:

Wanted to extract TSFP .pak files, so later can use Noesis to convert the 3D models.

What I currently know so far:

Header = P5CK
Next 4bytes little endian = indexOffset(0x01eed800)
Num of files = based of rows at indexOffset
First file begins at 0x800

What I currently don't know:

Where the filesize hexdata is located at indexOffset?
What filetype(xbr xbt?)?
Where do other file data begin and end?

Here is sample:

...
0x01eed800  10bd b2b9 0008 0000 1c90 0000 0000 0000
0x01eed810  c022 3423 00a0 0000 8010 0000 0000 0000
0x01eed820  7d78 14a2 00b8 0000 c055 0500 0000 0000
0x01eed830  691e 27b9 0010 0600 d055 0100 0000 0000
0x01eed840  1374 861f 0068 0700 c055 0500 0000 0000
0x01eed850  c1e5 b3c6 00c0 0c00 c055 0000 0000 0000
0x01eed860  f14d 2de8 0018 0d00 d055 0100 0000 0000
0x01eed870  5b14 eba5 0070 0e00 9c15 0000 0000 0000
0x01eed880  2dbe d1d8 0088 0e00 28ab 0000 0000 0000
0x01eed890  6852 7249 0038 0f00 00ab 0000 0000 0000
...


Help would much be appreciate. :classic_biggrin:

tsfpGun.7zip 9.97 MB · 2 downloads

Each index entry is 0x10 bytes, so basically you've got a value which could be a filename hash (0xb9b2bd10), then the file offset (0x800 for the first one), file size (0x901c), then a blank entry which may be uncompressed size which isn't used in this archive.

 

 

  • Thanks 1
Link to comment
Share on other sites

  • 5 months later...

Hey Crusader, what program are using to extract the .pak files? Could you share the script you used?

I've been trying to extract using quick BMS using a zenhax script but I'm getting a broken output - i think my offset or something is off

This is the script I've been trying to use:

<bms games="'Time Splitters Future Perfect'" platforms="'PC'" ext="PAK">
IDString 0 P5CK ;
SavePos TailOffOff 0 ;
Get TailOff Long 0 ;
Get TailSize Long 0 ;
Set J Long 2048 ;
GoTo J 0 ;
Get FileNum Int 0 ;
SavePos D 0 ;
Get B Byte 0 ;
GoTo D 0 ;
Set FNT String file ;
Set TJ Long TailOff ;
For T = 1 To FileNum ;
If B > 0 ;
GoTo D 0 ;
Get FNS Byte 0 ;
GetDString FN FNS 0 ;
SavePos D 0 ;
Else ;
Set FN String FNT ;
String FN += T ;
EndIf ;
GoTo TJ 0 ;
Get DUM Long 0 ;
SavePos FOO 0 ;
Get FO Long 0 ;
SavePos FSO 0 ;
Get FS Long 0 ;
Get DUM Long 0 ;
SavePos TJ 0 ;
Log FN FO FS #FOO FSO ;
Next T ;
</bms>

Would really appreciate your help :)

Link to comment
Share on other sites

6 minutes ago, DigDugDoug said:

Hey Crusader, what program are using to extract the .pak files? Could you share the script you used?

I've been trying to extract using quick BMS using a zenhax script but I'm getting a broken output - i think my offset or something is off

This is the script I've been trying to use:

<bms games="'Time Splitters Future Perfect'" platforms="'PC'" ext="PAK">
IDString 0 P5CK ;
SavePos TailOffOff 0 ;
Get TailOff Long 0 ;
Get TailSize Long 0 ;
Set J Long 2048 ;
GoTo J 0 ;
Get FileNum Int 0 ;
SavePos D 0 ;
Get B Byte 0 ;
GoTo D 0 ;
Set FNT String file ;
Set TJ Long TailOff ;
For T = 1 To FileNum ;
If B > 0 ;
GoTo D 0 ;
Get FNS Byte 0 ;
GetDString FN FNS 0 ;
SavePos D 0 ;
Else ;
Set FN String FNT ;
String FN += T ;
EndIf ;
GoTo TJ 0 ;
Get DUM Long 0 ;
SavePos FOO 0 ;
Get FO Long 0 ;
SavePos FSO 0 ;
Get FS Long 0 ;
Get DUM Long 0 ;
SavePos TJ 0 ;
Log FN FO FS #FOO FSO ;
Next T ;
</bms>

Would really appreciate your help 🙂

Yeah, that one you've been using doesn't seem to work.  Try this one attached.

 

ts_xbox.zip

Link to comment
Share on other sites

Ah amazing, thanks Dave! That seems to run successfully and actually extracts files with names which is a big step 😄

Crusader mentioned that he could read texture files with Noesis, I wonder if he had anything additional to his script to open the unknown filetypes within the pak files..

Edited by DigDugDoug
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...