View Single Post
  #1  
Old 31-03-2018, 12:15
elit elit is offline
Registered User
 
Join Date: Jun 2017
Location: sun
Posts: 265
Thanks: 190
Thanked 325 Times in 119 Posts
elit is on a distinguished road
oodle chunk (de)compressor - oodle64chcmp

Here is a chunk (de)compressor for quickbms's dumped files packed with oodle. This is based on Ramiro Cruzo's noodle, big thanks to Ramiro for sources.

This program is intended to pack files(chunks) that were previously dumped with quickbms and decompressed(possibly also with this tool). This is NOT general purpose compressor for FA as noodle, it is designed for game repacking only.

Oodle64chcmp does not write any header(or tail) during compression except for optional uncompressed size that is injected at the beginning of file, which can be specified as either 4 or 8 byte(32/64bit). You are then supposed to "log" such compressed chunks back into game's data file using quickbms.

For decompression, uncompressed size header must be present(and its proper width selected during decompression or it will fail) following raw compressed chunk data(and nothing more). You are supposed to dump such files (again) using quickbms. Basically this is FGpack.exe/fgnoodle.exe with ability to also decompress and extra options to select width of size header.

I also included example .bms file for XCOM2 WotCh which can be used to dump such raw file chunks or log them back. Keep in mind that script is highly experimental and only for tutorial purpose. Although it should work with .upk files correctly, .tfc's for sure dont work 100% yet. And it was tested only on very few files. I also am not 100% sure yet about certain direction of this, at least in .tfc's some chunks were multi-layered. What I mean is normally you should get chunk offset with its preceding size header but in one tfc file sometimes I got multi-size header followed by multi continuous chunks. I am not sure if the solution should be to dump each as individual file through BMS or if its supposed to go through oodle all together. Thats why I am releasing it already as next stage is uncertain in time.

Finally, unlike fgpack or noodle, I was not able to reproduce output from dll into program. When you try to decompress the chunk with fgnoodle exe for example, even though it doesnt work it still output important info into console, such as parameters that were used during compression originally. This is very important information to have when re-compressing back. I spent whole day figuring out but was unable to do it(in std 'C' using mingw). If anyone have an idea, including code example, please let me know. Dll is outputting important info but I am unable to see/capture it in console window yet. Other than that, this tool should work as expected. I also included fgnoodle file that you can use to see such info during decompression(it can only read 8 byte header size).

Finally, this is for advanced repackers and people who understand all this. If you have no idea at this point what I was talking about, its not for you and you can safely skip this.

oodle64chcmp.zip
xcom2_unreal3.zip
fgnoodle252.zip
Reply With Quote
The Following 10 Users Say Thank You to elit For This Useful Post:
78372 (31-03-2018), EzzEldin16 (02-04-2018), Gupta (31-03-2018), Jiva newstone (31-03-2018), Mini (31-03-2018), nickwazhere2012 (31-03-2018), oltjon (31-03-2018), PsYcHo_RaGE (10-05-2018), Razor12911 (13-05-2018), Simorq (31-03-2018)
Sponsored Links