Tales of Xillia .TLDAT file
Posted: Sat Sep 10, 2011 4:13 am
The contents of this post was deleted because of possible forum rules violation.
Code: Select all
Open FDSE "FILEHEADER.TOFHDB" 0
Open FDSE "TLFILE.TLDAT" 1
endian big
comtype MSF
goto 0xC
get files long
goto 0x1248D8
set counter 0
for j = 0 < files
get size longlong
get zsize longlong
get offset longlong
get hash long
getdstring ext 8
get six long
if ext == "TOHRCB"
elif ext == "TOSHPB"
elif ext == "TOSHPS"
elif ext == "TOSHPP"
elif ext == "TOMDLB"
elif ext == "TOHRCB"
elif ext == "TOTEXP"
else
math counter + 1
endif
if zsize == size
set name counter
string name + .
string name + ext
log name offset size 1
else
set name counter
string name + .
string name + ext
endian little
log MEMORY_FILE4 offset zsize 1
get TLZC long MEMORY_FILE4
get version long MEMORY_FILE4
get Tzsize long MEMORY_FILE4
get Tsize long MEMORY_FILE4
getdstring null 9 MEMORY_FILE4
get ChunkSize long MEMORY_FILE4
set files2 Tsize
math files2 / ChunkSize
set test files2
math test * chunksize
if test != Tsize
math files2 + 1
endif
for i = 0 < files2
get zsize2 short MEMORY_FILE4
putarray 0 i zsize2
next i
comtype msf
savepos offset MEMORY_FILE4
for i = 0 < files2
getarray zsize2 0 i
append
clog MEMORY_FILE5 offset zsize2 0x10000 MEMORY_FILE4
append
math offset + zsize2
goto offset MEMORY_FILE4
next i
append
log name 0 Tsize MEMORY_FILE5
append
set MEMORY_FILE4 ""
set MEMORY_FILE5 ""
endian big
endif
next j

Code: Select all
open FDDE TOTEXP 0
open FDDE TOTEXB 1
endian big
get name basename
string name + .dds
get MTEX long 1
get unk01 long 1
get unk02 long 1
get unk03 short 1
get width short 1
get height short 1
get null short 1
get type byte 1
get mips byte 1
get null short 1
get null long 1
get size asize
math size - 0x100
endian little
set MEMORY_FILE2 binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x0A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x05\x00\x00\x00\x44\x58\x54\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
if type == 0xA5
set MEMORY_FILE2 binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x00\x00\x00\x04\x00\x00\x08\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\xFF\x00\x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFF\x02\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
endif
putVarChr MEMORY_FILE2 0x10 width long
putVarChr MEMORY_FILE2 0xC height long
if type == 0x88
putVarChr MEMORY_FILE2 0x57 0x35 byte
endif
if type == 0xA8
putVarChr MEMORY_FILE2 0x57 0x35 byte
endif
if type == 0x86
putVarChr MEMORY_FILE2 0x57 0x31 byte
endif
putVarChr
append
goto 0xF4
get test1 longlong
goto 0
if type == 0xA5
if test1 != 0
math size + 0x100
set tmp size
math tmp / 4
else
set tmp size
math tmp / 4
goto 0x100
endif
for i = 0 < tmp
set a i
math a * 4
endian little
get test long
endian big
putVarChr MEMORY_FILE3 a test long
next i
for i = 0 < 64
set a i
math a * 4
math a + size
putVarChr MEMORY_FILE3 a 0 long
next i
math size + 0x100
log MEMORY_FILE2 0 size MEMORY_FILE3
else if test1 != 0
math size + 0x100
log MEMORY_FILE2 0 size
else
log MEMORY_FILE2 0x100 size
endif
append
math size + 0x80
log name 0 size MEMORY_FILE2