View Single Post
  #490  
Old 13-05-2022, 02:29
Razor12911's Avatar
Razor12911 Razor12911 is offline
Noob
 
Join Date: Jul 2012
Location: South Africa
Posts: 3,749
Thanks: 2,170
Thanked 11,206 Times in 2,307 Posts
Razor12911 is on a distinguished road
Update available

Changes

- added IO functions (find, extract, patch)
- generate database feature and IO functions now can search for streams larger than chunk size

Notes

More IO functions introduced. Find simply helps you track positions of extracted files from a given input, while extract uses a generated decode file data input to extract streams in case if you wanted another person to extract their very own streams using your own findings and patch, well patch compares two inputs and generates a diff file which can allow you to patch an input to make it similar to the new data.

Find

Code:
xtool find [parameters] extracted_streams original_data [decode_data]
Find can be used to search for streams to then produce decode data which you can upload here on the forum in cases where you wanted to inform people what files should be extracted if they wanted for example to separate audio files per language from a game.

An example where I wanted to make a guide of how to separate english, german, italian, russian and spanish languages from the game would be something like:

Code:
xtool find "extracted\en\*" "game\*" en.xtl
xtool find "extracted\de\*" "game\*" de.xtl
xtool find "extracted\it\*" "game\*" it.xtl
xtool find "extracted\es\*" "game\*" es.xtl
xtool find "extracted\ru\*" "game\*" ru.xtl
These files are then uploaded for people if they wanted to extract the same data by themselves by using xtool via the "extract" function or for later use by yourself.

Extract

Code:
xtool extract decode_data original_data extracted_streams
Extract works mostly hand in hand with with the find function as its job is to use the decode_data to extract the data that was used for its generation.

A use case for it would be similar to the find example but from another user's perspective, so if someone uploaded decode data to use to extract my very own streams from their investigations, rather than them giving me position ranges for languages or the tools to use, we can just use their uploaded decode data to do it ourselves

Code:
xtool extract en.xtl "game\*" "extracted\en\*"
xtool extract de.xtl "game\*" "extracted\de\*"
xtool extract it.xtl "game\*" "extracted\it\*"
xtool extract es.xtl "game\*" "extracted\es\*"
xtool extract ru.xtl "game\*" "extracted\ru\*"
Then from here, we use these extracted files, to even use the erase function introduced in the version prior to blank out the sectors to prepare our own repack

Code:
xtool erase "extracted\*" "game\*" languages.xtl
which we can then restore after installation using

Code:
xtool decode languages.xtl "extracted\*" "game\*"
Patch

Code:
xtool patch [parameters] old_data new_data patch_data
xtool decode patch_data old_data
Patch's use case can be the generation of update patches in cases where you already made a repack but for whatever reason refuse to re-repack the game so instead choose to generate a patch file which can be used to update the old repack with newer files

Code:
xtool patch "Sims4\*" "Sims4_updated\*" sims4_wedding_stories.patch
Then after the installation of the original repack, you can add an additional archive that has sims4_wedding_stories.patch which will be used to update the game

Code:
xtool decode sims4_wedding_stories.patch "Sims4\*"
I noticed after compiling xtool.exe that xdelta is set to compress these patch files which means that they cannot be precompressed nor compressed with something better, however this compression in the next version will be removed.

Last edited by Razor12911; 13-05-2022 at 02:32.
Reply With Quote
The Following 5 Users Say Thank You to Razor12911 For This Useful Post:
Cesar82 (13-05-2022), dixen (13-05-2022), elit (04-07-2022), Gehrman (13-05-2022), L33THAK0R (13-05-2022)