Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

The Witcher 3 Wild Hunt(*.cache*.bundle)

Featured Replies

  • Author
  • Localization

happyend, posted Tue May 12, 2015 7:14 am (5223)


very cool,great job,aluigi!!!
  • Author
  • Localization

darkking647, posted Tue May 12, 2015 8:34 am (5230)


aluigi wrote:
http://aluigi.org/papers/bms/others/witcher3.bms


Thanks !! works for .bundle file, any support for .cache files too ?
  • Author
  • Localization

aluigi, posted Tue May 12, 2015 8:39 am (5233)


The script works also with cache file, I tested it against the provided soundspc.cache
  • Author
  • Localization

darkking647, posted Tue May 12, 2015 3:41 pm (5247)


aluigi wrote:
The script works also with cache file, I tested it against the provided soundspc.cache


Yes but it doesn't works with texture.cache file, pls check the sample given by user above.
  • Author
  • Localization

aluigi, posted Tue May 12, 2015 5:19 pm (5248)


The texture one had a different format.
To do things quickly I have updated the script to dump all the data sequentially even if there is a sort of file table at the end (without information about how to find it like an offset or size).
Anyway the data is just headerless image so it's ok as is.
  • Author
  • Localization

Zaxnator, posted Tue May 19, 2015 3:25 pm (5304)


Wow, that was fast. Now just a way to import changed files back to .bundle
EDIT: I did something wrong when i tried to reimport for the first time, now it worked.
  • Author
  • Localization

SLaYeR983, posted Tue May 19, 2015 8:24 pm (5314)


Help for w3strings files. Because we want to add new language to this game.

thanks a lot aluigi, for .cache and .bundle file format. We waiting for w3strings...
  • Author
  • Localization

hhrhhr, posted Wed May 20, 2015 4:48 am (5316)


Code:
char magic[4];      // "RTSW"
int version;        // 162
unsigned short key1;

uint6 count1;       // count of string
{
    int str_id;     // ^key, unique
    int offset;     // relative to start of utf[], must be multiple by 2
    int strlen;     // number of UTF16 chars, without ending zeroes
} // * count1

uint6 count2;       
{
    char unk[4]     // global id? crc? hash?
    int str_id      // ^key, same with first block
} // * count2

uint6 count3;       // count of UTF16 chars (2 byte)
{
    utf[count3 * 2] // \x00\x00 ended UTF16LE strings
}

unsigned short key2;    // key = key1 << 16 | key2


uint6 - this is a strange type (for me):
examples:
Code:
80 (128) => 0 (zero)
2E (46) => 46
71 1D (113 29) => 1905

5B DC 0A (91 220 10) => 87835

             01 011011  91 -> 27    6 bit (1)
       1 1011100|||||| 220 -> 92    7 bit (2)
00 001010|||||||||||||  10 -> 10    6 bit (3)
   |||||||||||||||||||
   0010101011100011011  = 87835

           (1)          (1) (2)         (1) (2) (3)
27 | (92 << 6) | (10 << (6 7)) | 0 << (6 7 6)= 87835 :)

read function in Lua:
Code:
local function bit6()
    local result, shift, b = 0, 0, 0
    repeat
        b = r:uint8()  -- return one byte from stream
        if b == 80 then return 0 end
        local s = 6
        local mask = 255
        if b > 127 then
            mask = 127
            s = 7
        elseif b > 63 then
            mask = 63
        end
        result = result | ((b & mask) << shift)
        shift = shift s
    until b < 64
    return result
end


if key1, key2 == 0, then all the strings are represented in "the nude", see (ar|br|esMX).w3strings. if they are not zero, then all strings "encrypted", but not compressed. encription algo is same as in the Witcher 2.
  • Author
  • Localization

hhrhhr, posted Wed May 20, 2015 4:13 pm (5321)


"flag 4" also means LZ4, try update .bms file with this:
add this:
Code:
...
        elif ZIP == 4
            comtype lz4
            clog NAME OFFSET ZSIZE SIZE
...
  • Author
  • Localization

Zaxnator, posted Wed May 20, 2015 4:17 pm (5322)


hhrhhr wrote:
"flag 4" also means LZ4, try update .bms file with this:
add this:
Code:
...
        elif ZIP == 4
            comtype lz4
            clog NAME OFFSET ZSIZE SIZE
...


Thank you! Works perfectly now.
  • Author
  • Localization

ak2005828, posted Wed May 20, 2015 11:35 pm (5329)


I can unpack the bundle,but have problem reimport it,the file size is the same,don't know where got it wrong.

here is the MSG:

- REIMPORT mode enabled!
- open input file E:\quickbms\patch.bundle
- open script E:\quickbms\witcher3.bms
- set output folder E:\quickbms\gameplay\abilities

offset filesize filename
--------------------------------------

- 0 files reimported in 0 seconds
coverage file 0 1% 2405460 221183826

Press RETURN to quit
  • Author
  • Localization

Zaxnator, posted Thu May 21, 2015 12:56 am (5330)


ak2005828 wrote:
I can unpack the bundle,but have problem reimport it,the file size is the same,don't know where got it wrong.

here is the MSG:

- REIMPORT mode enabled!
- open input file E:\quickbms\patch.bundle
- open script E:\quickbms\witcher3.bms
- set output folder E:\quickbms\gameplay\abilities

offset filesize filename
--------------------------------------

- 0 files reimported in 0 seconds
coverage file 0 1% 2405460 221183826

Press RETURN to quit

In output folder select quickbms folder instead of abilities folder.
  • Author
  • Localization

ak2005828, posted Thu May 21, 2015 2:08 am (5331)


thanks very much,got it,now it works.
  • Author
  • Localization

aluigi, posted Fri May 22, 2015 1:08 pm (5356)


I updated the script by using an AND to check the compression.
  • Author
  • Localization

wimbeam1337, posted Mon Jun 15, 2015 7:44 pm (5743)


Well, I started to write a c# library that is able to open .bundle files.
It's a bit buggy but at least you can:

Handle directories
Delete/Move/Create/Overwrite files (no matter which size)
Compression/Decompression (use ICompression to handle your own compression)

You can find the source code here:

https://github.com/ngoedde/The-Witcher-3-XBundle

Have fun!

PS: feel free to create a pull request or PM me.
  • Author
  • Localization

Fig8man, posted Sat Jun 27, 2015 4:51 am (5952)


i get this error when extracting texture.cache

Quote:
Error: the compressed zlib/deflate input is wrong or incomplete (-3)
Info: algorithm 1
offset 2cf5f008
input size 0x00461500 4592896
output size 0x00800000 8388608
result 0xffffffff -1

Error: the uncompressed data (-1) is bigger than the allocated buffer (8388608)

Last script line before the error or that produced the error:
82 clog "" OFFSET ZSIZE SIZE


all i want to do is see if the gwent card textures are in this file because they aren't in gwint_game.redswf
and gwint_game.redswf seems to be calling .dds files from somewhere.


EDIT: welp seems i was using an older version of quickbms so i got 0.6.4 and then got a different error

Quote:
Error: incomplete input file 0: C:\Users\Ben\Desktop\New folder (3)\witcher 3 bu
ndles\cache files\texture.cache
Can't read 4 bytes from offset dbe576b6.
Anyway don't worry, it's possible that the BMS script has been written
to exit in this way if it's reached the end of the archive so check it
or contact its author or verify that all the files have been extracted.
Please check the following coverage information to know if it's ok.

coverage file 0 0% 89469 3473798781

Last script line before the error or that produced the error:
74 get ZSIZE long

Press RETURN to quit
  • Author
  • Localization

aluigi, posted Sat Jun 27, 2015 1:35 pm (5956)


I don't remember if the cache files are supported (I guess yes) but it's possible that some of them have small differences that avoid their extraction.

Maybe first try to use quickbms_4gb_files.exe because it's a big file.

If it still doesn't work maybe upload the beginning/end of the archive cutting it with this script http://aluigi.org/papers/bms/others/filecutter.bms
  • Author
  • Localization

Fig8man, posted Sat Jun 27, 2015 8:55 pm (5961)


working on uploading the filecutter files, just trying to find a host i can upload to on my sorta crappy (tethered through my phone) internet.

mega.co.nz was loading okay'ish yesterday but now i just get respond timeouts
  • Author
  • Localization

aluigi, posted Sat Jun 27, 2015 9:01 pm (5962)


Why don't you use this forum for the upload?
zip the first file obtained with filecutter (I don't think the ending part is useful at the moment), it should be about 2 megabytes.
  • Author
  • Localization

Fig8man, posted Sat Jun 27, 2015 9:28 pm (5964)


i didn't think of that derp sorry
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.