FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   XTool - Successor of ZTool (https://fileforums.com/showthread.php?t=101729)

yasitha 05-03-2019 18:48

Quote:

Originally Posted by FitGirl (Post 480036)
Delzorec

Oky.

Razor12911 06-03-2019 02:15

Quote:

Originally Posted by FitGirl (Post 480020)
It's a known bug with FC5 files, it's discussed above many times. Until Razor takes a look at it, nothing can be done.

xtool is broken, it has to be rewritten from scratch :D

yasitha 06-03-2019 02:19

Quote:

Originally Posted by Razor12911 (Post 480043)
xtool is broken, it has to be rewritten from scratch :D

Can you Do it? :D any soon?

doofoo24 06-03-2019 05:58

Quote:

Originally Posted by Razor12911 (Post 480043)
xtool is broken, it has to be rewritten from scratch :D

isn't better to just separate xtool to pzlib/plzo/plz4, less headache to keep updating xtool every time new game comes...
just release separate tools for any new game like you been doing for zstd/oddle...

Razor12911 06-03-2019 08:51

Quote:

Originally Posted by doofoo24 (Post 480047)
isn't better to just separate xtool to pzlib/plzo/plz4, less headache to keep updating xtool every time new game comes...
just release separate tools for any new game like you been doing for zstd/oddle...

no it isn't because if there is an issue that I haven't come across before then it means when I try to fix it for that particular codec or source in what you want me to try and do, I will have to fix it on all of them, the reason I combined them in the first place is that when I add a feature or fix an issue, all receive the same treatment. 90% of the code will be repeated in all the separate sources, it's actually this 90% that requires fixing because bugs related to multi threading, threads getting stuck on some loop or them not responding because of some error they couldn't handle or when a user cancels setup and it doesn't respond. The 10% is actually the code that gives precompression capabilities, this one isn't affected at all. Since it is 10%, it means it is small code, I didn't see the reason not to combine everything.

doofoo24 06-03-2019 08:54

good to know :)

yasitha 08-03-2019 05:57

Waiting for the new Release of Xtool_012 :D with bug fixed

KaktoR 09-03-2019 08:27

@Razor12911
Could you add support for DOS2DE? It use lz4hc but doesn't work with latest xtool version unfortunatelly.

yasitha 09-03-2019 09:48

Spoiler Alert. Xtool 012 will be release soon... :D

Razor12911 09-03-2019 14:06

Quote:

Originally Posted by KaktoR (Post 480095)
@Razor12911
Could you add support for DOS2DE? It use lz4hc but doesn't work with latest xtool version unfortunatelly.

tf is DOS2DE? :confused:

KaktoR 09-03-2019 14:36

Divinity Original Sin 2 Devinitive Edition :D

Razor12911 10-03-2019 00:58

Quote:

Originally Posted by KaktoR (Post 480103)
Divinity Original Sin 2 Devinitive Edition :D

sample?

yasitha 10-03-2019 00:59

Quote:

Originally Posted by Razor12911 (Post 480107)
sample?

Hi Razor can u do Metro Exodus!?

Razor12911 10-03-2019 01:22

Quote:

Originally Posted by yasitha (Post 480108)
Hi Razor can u do Metro Exodus!?

I know 0% about this game and I don't even have it

Simorq 10-03-2019 03:06

Hi Razor12911
Could you add support for Traveller's Tales games DAT files?

QuickBMS Script
Code:

# Traveller's Tales games DAT files extractor (script 0.9.11a)
#  Lego Movie: The Video Game
#  LEGO Batman 1
#  LEGO Batman 2
#  LEGO Star Wars
#  LEGO Star Wars III
#  LEGO Indiana Jones
#  LEGO Harry Potter
#  LEGO Pirates of the Caribbean
#  LEGO Lord of the Rings
#  Transformers
#  LEGO Worlds
#  LEGO MARVELs Avengers
#  LEGO Dimensions
#  Lego Marvel Super Heroes
#  Lego Star Wars: The Force Awakens
#  Lego NinjaGO
#  others, check them on http://www.ttgames.com
#
# In case of problems with the extraction try setting NAMELESS to 1
# thanx to who fixed the handling of the names!
#
# Note that the script may not work with the compressed files of
# Lego Movie for PS3, in case of crashes or other issues you can
# extract only the non compressed files by setting
# EXTRACT_COMPRESSED to 0.
#
# script for QuickBMS http://quickbms.aluigi.org

math FORCE_CRC_BITS = 0        # use 32, 64 or 0 for auto-guess, just in case auto-guess fails

quickbmsver "0.8.0"
set NAMELESS long 0            # set to 1 to extract the files without names
set EXTRACT_COMPRESSED long 1  # set to 0 to extract ONLY the non-compressed files
math HAVE_CRCS = 0

math CRC_FNV_OFFSET = 0x811c9dc5
math CRC_FNV_PRIME  = 0x199933

set SIGN_1234567a binary "\x7a\x56\x34\x12"

getdstring SIGN 4
goto 0

if SIGN u== SIGN_1234567a
    goto 0
    callfunction EXTRACT_1234567a 1
    cleanexit
endif

string SIGN f SIGN
math ONE_FILE = 0
  if SIGN == "LZ2K"
    math ONE_FILE = 1
elif SIGN == "DFLT"
    math ONE_FILE = 1
elif SIGN == "ZLIB" # currently doesn't exist
    math ONE_FILE = 1
elif SIGN == "LZMA" # currently doesn't exist
    math ONE_FILE = 1
elif SIGN == "ZIPX"
    math ONE_FILE = 1
elif SIGN == "RFPK"
    math ONE_FILE = 1
elif SIGN == "RNC_"
    math ONE_FILE = 1
elif SIGN == "Defl" # "Deflate_v1.0"
    goto 0
    math OFFSET = 0
    get SIZE asize
    get NAME basename
    get EXT extension
    string NAME + "_unpack."
    string NAME + EXT
    callfunction DEFLATE_UNPACK 1
    cleanexit
endif
if ONE_FILE != 0
    math OFFSET = 0
    get ZSIZE asize
    math SIZE = ZSIZE
    callfunction UNPACK
    log "" 0 SIZE MEMORY_FILE2
    cleanexit
endif

get HDR_NAME basename
string HDR_NAME += ".hdr"
open FDSE HDR_NAME 1 EXISTS

if EXISTS != 0
    get NAME filename
    if NAME == HDR_NAME
        get NAME basename
        string NAME += ".dat"
        open FDSE NAME
    endif
    callfunction HANDLE_COMPRESSED_DAT 1
    get HDR_SIZE asize 1
    log MEMORY_FILE 0 HDR_SIZE 1
    get DUMMY long MEMORY_FILE
else
    callfunction HANDLE_COMPRESSED_DAT 1
    get INFO_OFF long
    if INFO_OFF & 0x80000000
        math INFO_OFF ^= 0xffffffff
        math INFO_OFF <<= 8
        math INFO_OFF += 0x100
    endif
    get INFO_SIZE long
    log MEMORY_FILE INFO_OFF INFO_SIZE
endif

get TYPE_BOH signed_long MEMORY_FILE
get FILES long MEMORY_FILE

math NEW_FORMAT = 1
if TYPE_BOH != 0x3443432e  # game.hdr
if TYPE_BOH != 0x2e434334
if FILES    != 0x3443432e  # game.dat
if FILES    != 0x2e434334
    math NEW_FORMAT = 0
endif
endif
endif
endif

if NEW_FORMAT == 1  # ".CC400TAD"

    goto 0 MEMORY_FILE
    endian big
    get HDR_SIZE long MEMORY_FILE
    idstring MEMORY_FILE ".CC4"
    idstring MEMORY_FILE "0TAD"
    get TYPE_BOH signed_long MEMORY_FILE    # -8
    get NEW_FORMAT_VER long MEMORY_FILE  # 1
    get FILES long MEMORY_FILE
    get NAMES long MEMORY_FILE
    get NAMES_SIZE long MEMORY_FILE
    savepos NAMES_OFF MEMORY_FILE

    math OFFSET = NAMES_OFF
    math OFFSET + NAMES_SIZE
    goto OFFSET MEMORY_FILE

    putarray 10 NAMES ""    # necessary and useful
    putarray 1  NAMES ""    # necessary and useful
    get DUMMY long MEMORY_FILE
    math MYID = 0
    xmath LAST_NAME_WORKAROUND "NAMES - 1"
    for i = 0 < NAMES
        get NAME_OFF long MEMORY_FILE
        get FOLDER_ID short MEMORY_FILE
        if NEW_FORMAT_VER >= 2
            get DUMMY_ID short MEMORY_FILE
        endif
        get SOME_ID signed_short MEMORY_FILE
        get FILE_ID short MEMORY_FILE

        if NAME_OFF != 0xffffffff
            savepos TMP MEMORY_FILE
            math NAME_OFF + NAMES_OFF
            goto NAME_OFF MEMORY_FILE
            get NAME string MEMORY_FILE
            goto TMP MEMORY_FILE

            # I will find a solution another day maybe...
            if i == LAST_NAME_WORKAROUND
                math FILE_ID = MYID
            endif

            getarray PATH 1 FOLDER_ID
            string NAME p "%s\%s" PATH NAME
            if FILE_ID != 0
                putarray 10 MYID NAME
                math MYID + 1
            else
                putarray 1 i NAME
            endif
        endif
    next i

    get TYPE_BOH signed_long MEMORY_FILE    # -8
    get FILES long MEMORY_FILE

    # performance
        putarray 2 FILES 0
        putarray 3 FILES 0
        putarray 4 FILES 0
        putarray 5 FILES 0

    for i = 0 < FILES
        if TYPE_BOH <= -11
            get OFFSET longlong MEMORY_FILE
        else
            get OFFSET long MEMORY_FILE
        endif
        get ZSIZE long MEMORY_FILE
        get SIZE long MEMORY_FILE
        if TYPE_BOH <= -10
            math PACKED = SIZE
            math SIZE & 0x7fffffff
            math PACKED u>> 31
            if PACKED != 0
                math PACKED = 2 # useless, but we need & 2
            endif
        else
            get PACKED byte MEMORY_FILE
            get ZERO short MEMORY_FILE
            get OFFSET2 byte MEMORY_FILE
            math OFFSET u<< 8
            math OFFSET | OFFSET2
        endif
        putarray 2 i OFFSET
        putarray 3 i ZSIZE
        putarray 4 i SIZE
        putarray 5 i PACKED
    next i

    callfunction GET_CRCS 1

    get EXT extension
    if EXT & "DAT"  # both DAT and DAT2
    else
        open FDDE "DAT" # in case HDR has been opened
    endif
    for i = 0 < FILES
        getarray FULLNAME 10 i
        callfunction GET_NAME 1

        getarray OFFSET 2 IDX
        getarray ZSIZE  3 IDX
        getarray SIZE  4 IDX
        getarray PACKED 5 IDX

        callfunction EXTRACT_FILE 1
    next i

else

    savepos INFO_OFF MEMORY_FILE

    math TMP = FILES
    math TMP *= 16
    math NAME_INFO = INFO_OFF
    math NAME_INFO += TMP

    goto NAME_INFO MEMORY_FILE
    get NAMES long MEMORY_FILE
    savepos NAME_INFO MEMORY_FILE

    math NAME_FIELD_SIZE = 8
    if TYPE_BOH <= -5
        math NAME_FIELD_SIZE = 12
    endif

    math TMP = NAMES
    math TMP *= NAME_FIELD_SIZE
    math NAME_OFF = NAME_INFO
    math NAME_OFF += TMP

    goto NAME_OFF MEMORY_FILE
    get NAMECRC_OFF long MEMORY_FILE
    savepos NAME_OFF MEMORY_FILE

    math NAMECRC_OFF += NAME_OFF
    goto NAMECRC_OFF MEMORY_FILE
    callfunction GET_CRCS 1

    if TYPE_BOH <= -2
        get DUMMY1 signed_long MEMORY_FILE
        get DUMMY2 long MEMORY_FILE
    endif

    # print "files:      %FILES%"
    # print "names:      %NAMES%"
    # print "info_off:    %INFO_OFF%"
    # print "info_size:  %INFO_SIZE%"
    # print "name_info:  %NAME_INFO%"
    # print "name_off:    %NAME_OFF%"
    # print "namecrc_off: %NAMECRC_OFF%"

    set NAMEZ long 0
    set FULLNAME string ""
    set FULLPATH string ""

    for i = 0 < FILES
        callfunction SET_NAME 1
        callfunction GET_NAME 1

        math IDX *= 16
        math IDX += INFO_OFF
        goto IDX MEMORY_FILE
        get OFFSET long MEMORY_FILE
        get ZSIZE long MEMORY_FILE
        get SIZE long MEMORY_FILE
        get PACKED threebyte MEMORY_FILE
        get OFFSET2 byte MEMORY_FILE
        if TYPE_BOH == -1
            # do nothing
        else
            math OFFSET <<= 8
        endif
        math OFFSET += OFFSET2

        callfunction EXTRACT_FILE 1
    next i

endif

startfunction GET_CRCS
    math HAVE_CRCS = 0
    putarray 0  FILES 0
    putarray 11 FILES 0
    get TMP1 asize MEMORY_FILE
    savepos TMP2 MEMORY_FILE
    if TMP2 u< TMP1
        xmath TMP4 "TMP2 + (FILES * 4)"
        xmath TMP8 "TMP2 + (FILES * 8)"
        savepos TMP MEMORY_FILE
        goto TMP4 MEMORY_FILE
        get ZERO long MEMORY_FILE
        if ZERO == 0            # this is just a test because there is no good way to guess if it's 64 or 32bit
            math TMP8 = TMP1    # disable 64bit false positives
        endif
        goto TMP MEMORY_FILE
        math CRC_BITS = 32
        if TMP8 u< TMP1 && NEW_FORMAT_VER >= 2  # Lego NinjaGo
            math CRC_BITS = 64
        endif
        if FORCE_CRC_BITS >= 32
            math CRC_BITS = FORCE_CRC_BITS
        endif

        if CRC_BITS == 64
            callfunction QUICKBMS_4GB_CHECK 1
            math CRC_FNV_OFFSET = 0xcbf29ce484222325
            math CRC_FNV_PRIME  = 1099511628211
            math HAVE_CRCS = 2
            for i = 0 < FILES
                get CRC longlong MEMORY_FILE
                putarray 0  i CRC
                putarray 11 i 0 # file has been extracted?
            next i
        elif TMP4 u< TMP1  # no need to check CRC_BITS == 32
            math HAVE_CRCS = 1
            for i = 0 < FILES
                get CRC long MEMORY_FILE
                putarray 0  i CRC
                putarray 11 i 0 # file has been extracted?
            next i
        endif
    endif
    if HAVE_CRCS == 0
            for i = 0 < FILES
                putarray 0  i 0
                putarray 11 i 0 # file has been extracted?
            next i
    endif
endfunction

startfunction EXTRACT_FILE
    endian little  # necessary, they are little endian on big endian archives too
    goto OFFSET
    getdstring SIGN 4
    string SIGN f SIGN
      if SIGN == "LZ2K"
        set PACKED long 2
    elif SIGN == "DFLT"
        set PACKED long 3
    elif SIGN == "ZLIB"
        set PACKED long 3
    elif SIGN == "LZMA"
        set PACKED long 3
    elif SIGN == "ZIPX"
        set PACKED long 3
    elif SIGN == "RFPK"
        set PACKED long 3
    elif SIGN == "RNC_"
        set PACKED long 3
    else
        set PACKED long 0
    endif

    if PACKED & 2  # includes both 2 and 3
        if EXTRACT_COMPRESSED != 0
        callfunction UNPACK
        log FULLNAME 0 SIZE MEMORY_FILE2
        endif
    else
        if SIZE  != 0
        if ZSIZE != 0
        if SIZE  != ZSIZE
            print "SIZE (%SIZE%) and ZSIZE (%ZSIZE%) differ at offset %OFFSET|x%, contact me"
            cleanexit
        endif
        endif
        endif
        log FULLNAME OFFSET SIZE
    endif
endfunction

startfunction SET_NAME
    do
        goto NAME_INFO MEMORY_FILE
        get NEXT signed_short MEMORY_FILE
        get PREV signed_short MEMORY_FILE
        get OFF signed_long MEMORY_FILE
        if TYPE_BOH <= -5  # if NAME_FIELD_SIZE >= 12
            get DUMMY long MEMORY_FILE
        endif
        savepos NAME_INFO MEMORY_FILE

        if OFF < 0
            set NAME string ""
        else
            math OFF += NAME_OFF
            goto OFF MEMORY_FILE
            get NAME string MEMORY_FILE
        endif

        # used only for LEGO the game if you don't use the hdr file
        getvarchr TMP0 NAME 0
        if TMP0 >= 0xf0
            set NAME string ""
        endif
        #string NAME u= NAME # needed for the crc check, but doesn't improve performances so much

        if PREV != 0
            getarray FULLPATH 1 PREV
        endif
        putarray 1 NAMEZ FULLPATH  # putarray 1 NAMEZ NAME
        if NEXT > 0 # folder
            getarray TMP 1 PREV
            if TMP != ""    # long story to avoid things like 2foldername that gives problems to QuickBMS
                set OLDNAME string \    # do not use /
                string OLDNAME += TMP
                string OLDNAME += \    # do not use /
                string FULLPATH >>= OLDNAME
            endif
            if NAME != ""
                #string FULLPATH += \    # do not use /
                string FULLPATH += NAME
                string FULLPATH += \    # do not use /
            endif
        endif
        math NAMEZ += 1
    while NEXT > 0
    set FULLNAME string FULLPATH
    string FULLNAME += NAME
endfunction

startfunction GET_CURRENT_NAME
    for j = 0 < FILES
        getarray TMP 11 j
        if TMP == 0    # the first file not extracted yet
            math IDX = j
            break
        endif
    next j
endfunction

startfunction GET_NAME
    if HAVE_CRCS == 0
        callfunction GET_CURRENT_NAME 1
    else
        getvarchr TMP0 FULLNAME 0
        if TMP0 == '\\'
            string FULLNAME <<= 1
        endif

        math IDX = i
        if NAMELESS == 0
            strlen NAMESZ FULLNAME
            string FULLNAME u= FULLNAME
            string FULLNAME R= / \

            math CRC = CRC_FNV_OFFSET
            for j = 0 < NAMESZ
                getvarchr CHR FULLNAME j
                math CRC ^= CHR
                math CRC *= CRC_FNV_PRIME
            next j
            if HAVE_CRCS <= 1
                math CRC &= 0xffffffff  # quickbms_4gb_files
            endif

            for j = 0 < FILES
                getarray TMP 0 j    # CRC database
                if CRC == TMP
                    math IDX = j
                    break
                endif
            next j
            if j >= FILES
                print "Alert: the crc of the file %FULLNAME% has not been found, I extract the current file"
                callfunction GET_CURRENT_NAME 1
            endif
        else
            set FULLNAME string ""
        endif
    endif
    putarray 11 IDX 1  # the file has been extracted
endfunction

startfunction UNPACK
    putvarchr MEMORY_FILE2 SIZE 0
    log MEMORY_FILE2 0 0
    append
    for TMPSZ = 0 < ZSIZE
        goto OFFSET
        getdstring SIGN 4
        string SIGN f SIGN
          if SIGN == "LZ2K"
            comtype lz2k
            get CHUNK_SIZE long
            get CHUNK_ZSIZE long
        elif SIGN == "DFLT"
            comtype dflt
            get CHUNK_ZSIZE long
            get CHUNK_SIZE long
        elif SIGN == "ZLIB" # currently doesn't exist
            comtype zlib
            get CHUNK_ZSIZE long
            get CHUNK_SIZE long
        elif SIGN == "LZMA" # currently doesn't exist
            comtype lzma
            get CHUNK_ZSIZE long
            get CHUNK_SIZE long
        elif SIGN == "ZIPX"
            comtype deflate # ??? not tested
            get CHUNK_ZSIZE long
            get CHUNK_SIZE long
            string TMP = CHUNK_ZSIZE
            encryption rc4 TMP "" 0 4
        elif SIGN == "RFPK"
            comtype rfpk
            get CHUNK_ZSIZE long
            get CHUNK_SIZE long
        elif SIGN == "RNC_"
            comtype rnc
            math CHUNK_SIZE  = SIZE
            math CHUNK_ZSIZE = ZSIZE
            goto OFFSET
        else
            print "Error: the compressing signature at offset %OFFSET% (%SIGN%) is not known, contact me"
            cleanexit
        endif
        savepos OFFSET
        if CHUNK_ZSIZE == CHUNK_SIZE
            log MEMORY_FILE2 OFFSET CHUNK_SIZE
        else
            clog MEMORY_FILE2 OFFSET CHUNK_ZSIZE CHUNK_SIZE
        endif
        encryption "" ""
        math OFFSET += CHUNK_ZSIZE
        savepos TMP MEMORY_FILE2
        math TMPSZ += 12
        math TMPSZ += CHUNK_ZSIZE
    next
    append
endfunction

startfunction HANDLE_COMPRESSED_DAT
    goto 0
    getdstring TMP 16
    if TMP == "CMP2CMP2CMP2CMP2"
        comtype lzma
        getdstring DAT_HASH 16
        get DAT_SIZE longlong
        savepos DAT_OFFSET
        get DAT_ZSIZE asize
        math DAT_ZSIZE - DAT_OFFSET
        clog TEMPORARY_FILE DAT_OFFSET DAT_ZSIZE DAT_SIZE
        open "." TEMPORARY_FILE
    endif
    goto 0
endfunction

startfunction EXTRACT_1234567a
    idstring "\x7a\x56\x34\x12" # 0x1234567a
    get FILES long
    get PAK_SIZE long
    get CRC long
    get ZERO long
    get ZERO long
    for i = 0 < FILES
        get NAME_OFF long
        get OFFSET long
        get SIZE long
        get DUMMY long  # it's ever 4 in any case
        get ZERO long
        get CRC long
        get ZERO long

        savepos TMP_OFF
        goto NAME_OFF
        get NAME string
        goto OFFSET
        callfunction DEFLATE_UNPACK 1
        goto TMP_OFF
    next i
endfunction

startfunction DEFLATE_UNPACK
    getdstring SIGN 0x20
    if SIGN == "Deflate_v1.0"
        comtype dflt
        get XSIZE long
        math OFFSET + 0x24
        math SIZE  - 0x24
        clog NAME OFFSET SIZE XSIZE
    else
        log NAME OFFSET SIZE
    endif
endfunction

startfunction QUICKBMS_4GB_CHECK
    math TMP64 = 0x10000000
    math TMP64 * 16
    if TMP64 == 0
        print "you must use quickbms_4gb_files.exe with this archive"
        cleanexit
    endif
endfunction


KaktoR 10-03-2019 03:28

1 Attachment(s)
Quote:

Originally Posted by Razor12911 (Post 480107)
sample?

Here are two samples

Snake288 10-03-2019 03:44

Hi Razor can u do Metro Exodus!?
 
1 Attachment(s)
https://i.hizliresim.com/jgDn9W.jpg

Hi Razor can u do Metro Exodus!?

Here are two samples

FitGirl 10-03-2019 04:24

Quote:

Originally Posted by Simorq (Post 480110)
Hi Razor12911
Could you add support for Traveller's Tales games DAT files?[/CODE]

All compressors used in TT games are custom ones and have only decompressors available. So there is no way to pack them back.

oltjon 10-03-2019 04:37

hey razor you should get paid for all the work you do:D:D;)

yasitha 10-03-2019 05:44

Quote:

Originally Posted by oltjon (Post 480115)
hey razor you should get paid for all the work you do:D:D;)

I have told about that long ago same thing :D

Razor12911 10-03-2019 14:10

1 Attachment(s)
Quote:

Originally Posted by KaktoR (Post 480111)
Here are two samples

These don't seem to follow, the 16-byte header which is this part Attachment 24320


Quote:

Originally Posted by oltjon (Post 480115)
hey razor you should get paid for all the work you do:D:D;)

yea I thought about that before but then you should also pay guys like ProFrager, Edison007 and etc. None of those guys get anything so I don't want to differ ;)

KaktoR 10-03-2019 15:36

^Strange because export tool unpack and pack with lz4hc (byte perfect). At least this is not a Unity Engine game at all.
Thanks for your efforts anyway ;)

Razor12911 10-03-2019 16:54

1 Attachment(s)
the headers are placed elsewhere bro. The files you gave me do have signs of lz4hc being used but there are no headers for me to reference for information as to where streams start and where they end. This will be a job for a universal lz4 precompressor but not at the moment because lz4 is a piece of shit when it comes to that department, as you can see in the screenshot I uploaded.

gives two byte header "F2 00" that I have no idea what it means then followed by parts of the original data, "44 44 53 20" which is a header for a dds texture which means lz4hc was indeed used but that's it. no game engine headers located or anything that could help for me to be able to add support.

ShivShubh 10-03-2019 21:47

Quote:

Originally Posted by yasitha (Post 480108)
Hi Razor can u do Metro Exodus!?

I don't think Metro Exodus has any compression. It just uses a type of texture encoding that can't be further compressed that much.

yasitha 10-03-2019 22:19

Quote:

Originally Posted by ShivShubh (Post 480128)
I don't think Metro Exodus has any compression. It just uses a type of texture encoding that can't be further compressed that much.

Metro Exodus use, Zlib but encrypted,
Try game scanner with Dynamic enabled you'll see...

and i have able to get
47GB (51,323MB)
to
29.3 (31,541MB)
Using srep + lolz

KaktoR 11-03-2019 01:29

@yasitha
Even if you scan a TXT file you will get dynamic streams. It means nothing.

@Razor12911
Thanks bro!

yasitha 11-03-2019 03:12

Quote:

Originally Posted by KaktoR (Post 480134)
@yasitha
Even if you scan a TXT file you will get dynamic streams. It means nothing.

@Razor12911
Thanks bro!

So you mean no compressor used on Metro Exodus at all?

ShivShubh 11-03-2019 08:17

Quote:

Originally Posted by yasitha (Post 480136)
So you mean no compressor used on Metro Exodus at all?

Nope unless FitGirl has something else to say here. As I said before, its textures can't be compressed that much when compared to normal DXT textures.

IgorKolesnik 14-03-2019 00:04

help please solve the problem. When using xtool for large files, this error occurs during installation.
I use this method: xtool+srep+delta+lolz
options xtool:
[External compressor:xtool]
header = 0
packcmd = xtool e:precomp:t2:zlib - - <stdin> <stdout>

bat file:
arc.exe a -w.\ -ep1 -dses --dirs -s; -lc- -di -i2 -r -mxtool+srep+delta+lolz data1.bin "packeddata2\*"

xtool v011

https://i1.imageban.ru/out/2019/03/1...b3b81b57d7.jpg

yasitha 14-03-2019 00:29

Quote:

Originally Posted by IgorKolesnik (Post 480181)
help please solve the problem. When using xtool for large files, this error occurs during installation.
I use this method: xtool+srep+delta+lolz
options xtool:
[External compressor:xtool]
header = 0
packcmd = xtool e:precomp:t2:zlib - - <stdin> <stdout>

bat file:
arc.exe a -w.\ -ep1 -dses --dirs -s; -lc- -di -i2 -r -mxtool+srep+delta+lolz data1.bin "packeddata2\*"

xtool v011

https://i1.imageban.ru/out/2019/03/1...b3b81b57d7.jpg

Use xtool+srep+lolz don't use delta.

Try xtool e:precomp:c32mb,t75p:zlib

srep:m3f:l512:c512:a4+lolz:dtb1:d128m:mtt1:mt4

Mt4 need 4 threads. If you have 8 threads use 8 instead of 4

Tip: try single larger file and try decompress. If it works try full game...

KaktoR 14-03-2019 02:00

Try change chunk size to 128 (worked for all games until now)

xprecomp:t2,c128m:zlib

IgorKolesnik 14-03-2019 03:58

Thanks guys, the problem seems to be gone. I will test.

By the way, I noticed that xtool needs vcc 2013 to work, vcc 2015 and newer for some reason does not work.

bunti_o4u 14-03-2019 23:01

Quote:

Originally Posted by KaktoR (Post 480183)
Try change chunk size to 128 (worked for all games until now)

xprecomp:t2,c128m:zlib

Tested but it's not working..

yasitha 14-03-2019 23:43

I have compress single 35GB file with c32mb,
It's not the problem. You get Decompressing error right?
If you have any other PC. try decompressing on that pc.
Maybe your compression is fine your pc is the problem...

doofoo24 15-03-2019 00:36

nah!
i'm guessing that he use different version of xtool for install...
just use the same one if you compress with 0.9 use 0.9 for install...

bunti_o4u 15-03-2019 00:58

Quote:

Originally Posted by yasitha (Post 480197)
I have compress single 35GB file with c32mb,
It's not the problem. You get Decompressing error right?
If you have any other PC. try decompressing on that pc.
Maybe your compression is fine your pc is the problem...

It's not working means the setting has no effect and files are not getting deflated..

yasitha 02-05-2019 11:59

Xtool abandoned?

where's the Update?

oltjon 02-05-2019 13:02

Quote:

Originally Posted by yasitha (Post 480855)
Xtool abandoned?

where's the Update?

I don't think xtool has anything else to offer

Cesar82 07-05-2019 17:02

You may only need to fix some bugs and fully reconcile old ZTool items so ZTool can be removed from CIU.

Before I asked KaktoR:
Why keep ZTool and XTool in CIU, if XTool is ZTool's successor? Does XTool have bugs to keep both in CIU?

Kaktor replied:
No XTool is better (only bug is that big data input does not get unpacked with oodle and lzo codec. All other codecs work).
ZTool for example don't support crilayla codec (which is mostly used in the "anime-like" games like DragonBall, OnePiece, Sonic and etc).
So if you like to remove one of them, then remove ZTool.

L0v3craft 10-05-2019 13:15

Hi guys, someone knows how to pre-compress ...\Content\Paks\*.pak files when they are crypted in games developed with unreal engine ? Usually we can use ztool or xtool/zlib to pre compress the pak files, but when they are crypted ? What to do :confused:

Edit: i found the way to get the decryption key(a man from zenhax is able to get it), but how to use the key with xtool ?


All times are GMT -7. The time now is 08:27.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com