View Single Post
  #9  
Old 25-01-2024, 12:28
KaktoR's Avatar
KaktoR KaktoR is offline
Lame User
 
Join Date: Jan 2012
Location: From outer space
Posts: 4,688
Thanks: 1,106
Thanked 7,334 Times in 2,837 Posts
KaktoR is on a distinguished road
A bit out of scope here in this thread, but I don't want to open a new thread just for this...

How to know what library to use for oodle/zstd precompression?

In the following example I will take the game Monster Hunter Rise, which should be a good example of how to find out which library to use. Here again I will use XTool in UI mode (xtool.exe + xtoolui.dll which you can get from latest xtool packages).

Just taking the file "re_chunk_000.pak.patch_001.pak" to test with, we set our settings as follows.

https://i.imgur.com/zn3Xu0V.png


Set "Stop after [10] streams" should be enough in most cases to see if it's the correct library.

In the following output I have already marked all libraries which work as of now.

Code:
Library loaded: zstd_114\libzstd.dll

Streams: 10 / 17
Time: 00:00:00 (CPU 00:00:00)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_120\libzstd.dll

Streams: 10 / 17
Time: 00:00:00 (CPU 00:00:00)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_130\libzstd.dll

Streams: 0 / 17
Time: 00:00:08 (CPU 00:00:09)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_132\libzstd.dll

Streams: 0 / 17
Time: 00:00:09 (CPU 00:00:09)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_133\libzstd.dll

Streams: 10 / 17
Time: 00:00:00 (CPU 00:00:00)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_134\libzstd.dll

Streams: 10 / 17
Time: 00:00:00 (CPU 00:00:00)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_135\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_136\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_137\libzstd.dll

Streams: 0 / 17
Time: 00:00:07 (CPU 00:00:07)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_138\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:07)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_140\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_141\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:07)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_142\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_143\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_144\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_145\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_147\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_148\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_149\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_150\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_151\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_152\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_154\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Library loaded: zstd_155\libzstd.dll

Streams: 0 / 17
Time: 00:00:06 (CPU 00:00:06)

Size: 0.00 MB >> 0.00 MB

Done!!!
With library versions 1.1.4, 1.2.0, 1.3.3 and 1.3.4, xtool can process zstd streams at least, were with all other libraries we get 0 streams. Out of 24 libraries, we now have 4 libraries which we can test with further. Things get clearer here.

One would say, just use the newer library, but in this case it is not a good idea. Here is why.

Code:
1.3.3 / 1.3.4
Streams: 6949 / 15223
Time: 00:10:01 (CPU 00:41:07)

Size: 4.09 GB >> 5.70 GB

Done!!!
Code:
1.1.4 / 1.2.0
Streams: 15223 / 15223
Time: 00:00:41 (CPU 00:03:34)

Size: 4.09 GB >> 6.79 GB

Done!!!
So this is the evidence we need to decide what library to use.

The same principle applies to oodle codecs and LZ4F.

As for LZ4/LZ4HC, things will get a bit complicated, because this codecs cannot be used directly without a plugin.
__________________
Haters gonna hate
Reply With Quote
The Following 5 Users Say Thank You to KaktoR For This Useful Post:
Cesar82 (25-01-2024), Lord.Freddy (25-01-2024), mausschieber (25-01-2024), mykhydro (31-01-2024), sajmon83 (16-06-2024)