but I also understand that you are not omnipotent...
anyway. thank you for everything u have done so far.
but if find out a another method for this game.
a lot of people will be very happy

Code: Select all
putvarchr MEMORY_FILE TSIZE 0
log MEMORY_FILE 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog MEMORY_FILE OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
log NAME 0 TSIZE MEMORY_FILE
Code: Select all
log NAME 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog NAME OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
aluigi wrote:Let's try to convert the script to the second category, open the script with a text editor and replace the following:with:Code: Select all
putvarchr MEMORY_FILE TSIZE 0
log MEMORY_FILE 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog MEMORY_FILE OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
log NAME 0 TSIZE MEMORY_FILECode: Select all
log NAME 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog NAME OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
You don't need to reextract, just use it in reimport mode and let me know if it works (both reimporting and in-game)
# Tales of Xillia / Zestiria / Tales of the Abyss (script 0.1.1)
# script from Chrrox http://forum.xentax.com/viewtopic.php?p=59251#p59251
# updated and rewritten by aluigi
# script for QuickBMS http://quickbms.aluigi.org
get EXT extension
string TMP p "FILEHEADER.%s" EXT
open FDSE TMP 0 EXISTS
if EXISTS == 0
string TMP p "FILEHEADER.%s" "TOFHDB"
open FDSE TMP 0
set EXT string "TLDAT"
endif
string TMP p "TLFILE.%s" EXT
open FDSE TMP 1
endian big
get DUMMY long # 0x9ae71c1a
get DUMMY long
get DUMMY long
get HASHES long
endian guess HASHES
get HASH_SIZE long
get ZERO long
get DUMMY long
get FILES long
get DUMMY_SIZE long
get ZERO long
for i = 0 < HASHES
get HASH_KEY long
get HASH_VALUE long
next i
for i = 0 < FILES
get SIZE longlong
get ZSIZE longlong
get OFFSET longlong
get HASH long
getdstring EXT 8
get DUMMY long
string NAME p= "%s/." EXT # autoguess
if ZSIZE == SIZE
log NAME OFFSET SIZE 1
else
endian save CURRENT_ENDIAN
endian little
goto OFFSET 1
get TLZC long 1
get TVER long 1
get TZSIZE long 1
get TSIZE long 1
if TVER == 0x0201 # Tales of the Abyss
comtype deflate
getdstring DUMMY 8 1
savepos OFFSET 1
clog NAME OFFSET TZSIZE TSIZE 1
else
comtype MSF # lzma_0
getdstring DUMMY 9 1
get CHUNK_SIZE long 1
xmath CHUNKS "TSIZE / CHUNK_SIZE"
xmath TMP "CHUNKS * CHUNK_SIZE"
if TMP != TSIZE
math CHUNKS + 1
endif
for x = 0 < CHUNKS
get CHUNK_ZSIZE short 1
putarray 0 x CHUNK_ZSIZE
next x
savepos OFFSET 1
log NAME 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog NAME OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
endif
if CURRENT_ENDIAN != 0
endian big
endif
endif
next i
Code: Select all
QuickBMS generic files extractor and reimporter 0.5.3 (64bit test)
by Luigi Auriemma
e-mail: aluigi@autistici.org
web: aluigi.org
- GUI mode activated, remember that the tool works also from command-line
where are available various options like folder scanning, filters and so on
- select the BMS script or plugin to use
- select the input archives/files to extract, type "" for whole folder and subfolders
- select the output folder where extracting the files
- open input file PK0\WIN\TLFILE.TLDAT
- open script G:\tales_of_xillia_zes.bms
Error: invalid endian value guess
Error: invalid endian value save
Error: invalid command "xmath" or arguments -1 at line 66
Press RETURN to quit
Nameless32 wrote:aluigi wrote:Let's try to convert the script to the second category, open the script with a text editor and replace the following:with:Code: Select all
putvarchr MEMORY_FILE TSIZE 0
log MEMORY_FILE 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog MEMORY_FILE OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
log NAME 0 TSIZE MEMORY_FILECode: Select all
log NAME 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog NAME OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
You don't need to reextract, just use it in reimport mode and let me know if it works (both reimporting and in-game)
Thank You Very much, now it's working reimport and in-game...
you made again a new " miracle "
\o/# Tales of Xillia / Zestiria / Tales of the Abyss (script 0.1.1)
# script from Chrrox http://forum.xentax.com/viewtopic.php?p=59251#p59251
# updated and rewritten by aluigi
# script for QuickBMS http://quickbms.aluigi.org
get EXT extension
string TMP p "FILEHEADER.%s" EXT
open FDSE TMP 0 EXISTS
if EXISTS == 0
string TMP p "FILEHEADER.%s" "TOFHDB"
open FDSE TMP 0
set EXT string "TLDAT"
endif
string TMP p "TLFILE.%s" EXT
open FDSE TMP 1
endian big
get DUMMY long # 0x9ae71c1a
get DUMMY long
get DUMMY long
get HASHES long
endian guess HASHES
get HASH_SIZE long
get ZERO long
get DUMMY long
get FILES long
get DUMMY_SIZE long
get ZERO long
for i = 0 < HASHES
get HASH_KEY long
get HASH_VALUE long
next i
for i = 0 < FILES
get SIZE longlong
get ZSIZE longlong
get OFFSET longlong
get HASH long
getdstring EXT 8
get DUMMY long
string NAME p= "%s/." EXT # autoguess
if ZSIZE == SIZE
log NAME OFFSET SIZE 1
else
endian save CURRENT_ENDIAN
endian little
goto OFFSET 1
get TLZC long 1
get TVER long 1
get TZSIZE long 1
get TSIZE long 1
if TVER == 0x0201 # Tales of the Abyss
comtype deflate
getdstring DUMMY 8 1
savepos OFFSET 1
clog NAME OFFSET TZSIZE TSIZE 1
else
comtype MSF # lzma_0
getdstring DUMMY 9 1
get CHUNK_SIZE long 1
xmath CHUNKS "TSIZE / CHUNK_SIZE"
xmath TMP "CHUNKS * CHUNK_SIZE"
if TMP != TSIZE
math CHUNKS + 1
endif
for x = 0 < CHUNKS
get CHUNK_ZSIZE short 1
putarray 0 x CHUNK_ZSIZE
next x
savepos OFFSET 1
log NAME 0 0
append
for x = 0 < CHUNKS
getarray CHUNK_ZSIZE 0 x
clog NAME OFFSET CHUNK_ZSIZE CHUNK_SIZE 1
math OFFSET + CHUNK_ZSIZE
next x
append
endif
if CURRENT_ENDIAN != 0
endian big
endif
endif
next i