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.