Important information: this site is currently scheduled to go offline indefinitely by end of the year.

Compressed Watch Dogs Localization Files

Read or post about compression. And decompression. Or ask questions how to decompress your files.
Post Reply
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Compressed Watch Dogs Localization Files

Post by rengareng »

Hi,
I think .loc files of the Watch Dogs uses similar compression used in the Assassins Creed series.
Anyone has any idea with these files? I added a sample of file.

<link removed due forum rules violation>
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Re: Compressed Watch Dogs Localization Files

Post by rengareng »

I found that
Image
I hope someone helps to investigate further.
You do not have the required permissions to view the files attached to this post.
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Re: Compressed Watch Dogs Localization Files

Post by rengareng »

Hi people, I made a good progress.

I finally build string fragments table. But, I do not know how this fragment table is indexed from the file.

I successfuly build string fragments table for both small file provided in previous entry and main_english.loc file.
However, I do not know how indexing works. I tried 1 byte indexing to this string fragment table in small file, meaningful texts are appeared.
However, in main_english.loc file, we need more advanced indexing since there is more than 255 entries in the string fragments table.

Here the output for DBD82924.loc(small file)

Code: Select all

looe *[24]* ew C.e  xe_*[34]*c atch_.c :*[42]*s estall*[46]*oe *[49]*EgerYou You Watch_Dogs® Bad BloodT-Bone Grady ContinueAiden Pearce New Game Aiden Pearce Continuee .*[98]*er ine treet SwYou have been invited to play the Bad Blood DLC. Accept the invite and the game will start automatically.You cannot join the DLC session, since the Bad Blood DLC is not installed.other *[173]**[174]*o*[176]*thlayfentreet zis DLC efrS*[189]*to uPp
- d enESinthf*[202]*onthe ai*[206]*vis ine is pitayIBloo a*[217]*.Bloos : playoois Bad Blooy*[226]*atchother tr*[230]**[231]*/pear_®*[237]**[238]*re*[240]*T-Bone playf a *[245]*WE*[248]*f*[250]*loothew ®f*[256]*A savegame for the Bad Blood DLC has been detected but the DLC is not installed. Install the DLC to use this savegame.*[305]*gYou must complete [CSS_BLUE]FADING SIGNAL[CSS_END] to access Bad Blood online features.:C Car qOnline Street Sweep: The GPS destination of the other player [GPSGWICON] is displayed on your map.gamethT-BontA*[422]*o*[424]* MBad Blood inoWce f*[432]*aisioner z*[437]* atch_Dunline Street Sweep: en*[443]*R/C Car othea Mear the R/C Car  s : *[454]*D*[456]*oanplayll e atT-Bone e playother E*[469]*trll*[472]*ear*[474]**[475]*with R/C Car is earine T-Bone dE*[484]*llth*[487]**[488]*c*[490]*NR/C Car *[493]**[494]*l.Gl- T-Bone Campaign : Play as T-Bone in his own story campaign.
- Street Sweep Missions : Weaken Chicago’s gangs to earn new rewards.
- Co-op Mode : Play Street Sweep missions with other players.
- 10 new Perks : Discover 10 new exclusive Perks to deal with 
Here the string fragments for DBD82924.loc(small file)

Code: Select all

""
" "
"e"
"e "
"c"
"t"
"s"
"n "
"s "
"in"
"u"
"i"
"C"
"o"
"P"
"a"
" the "
"f"
"."
"l"
"d"
"S"
"m"
"g"
"to"
"on"
"A"
"G"
"n"
"ea"
"r"
"h"
". "
"is "
"re"
"play"
"I"
"p"
"b"
"N"
"us"
" M"
"is"
"er"
"y "
"de"
"to "
"You "
"ur"
"R/C Car "
"ll"
" a"
"am"
"d "
"1"
"k"
","
"v"
"D"
"av"
"re "
"ce "
"ai"
"t the "
"ep"
"ear"
"s : "
" a "
"Bad Blood DLC "
"Watch_Dog"
"an"
"it"
"ted "
"en"
"game"
"tin"
"cannot join"
"s.{\n}- "
"stall"
" new "
"trac"
"T-Bone "
"sion"
"Online Street Sweep: "
"with "
"other play"
"er "
"ca"
"at"
"DLC "
"Bad Blood "
"ou"
"r "
"the "
"t "
"]"
"["
"y"
"W"
"wi"
"s."
"not "
"gam"
"Street Sweep"
"te"
"You"
"ew"
"DL"
": "
"lay"
"ee"
"0"
"O"
"E"
"M"
"L"
"w"
"_"
"oth"
"line "
"ion"
"T-Bon"
"ac"
"new "
"sta"
"{\n}- "
"- "
"ar "
"st"
"ew "
"Bad Bloo"
"loo"
"ay"
"th"
"R"
"q"
"‘"
"z"
"x"
"’"
"{\n}"
"F"
"U"
"-"
"T"
"B"
"®"
"atch_Dog"
"atch_Do"
"atch_D"
"atch_"
"atch"
"atc"
"nnot join"
"not join"
"not jo"
"not j"
"nline Street Sweep: "
"line Street Sweep: "
"line Street Sweep"
"th "
"other "
"ine "
"-Bon"
"Bon"
"/C Car "
"C Car "
"Car "
"ot "
"treet Sweep"
"treet Swee"
"treet Sw"
"treet S"
"treet "
"tree"
"ad Bloo"
"d Bloo"
"Bloo"
"tr"
"oo"
"C "
"/"
":"
"j"
"Y"
I hope there are people who can help me.

I just simply run the C# code in the attachment. It prints stringFragmentsTable entries, and output using 1 byte indexing.
My code is based on DerPlaya's code for Assassins Creed game.

Also, here my guess for loc file structure as template.

Code: Select all

//--------------------------------------
//--- 010 Editor v5.0.2 Binary Template
//--------------------------------------

uint magic;
ushort languageCode;
ushort count1;
uint stringFragmentsOffset;
struct{
uint a,b;
}t[count1];
FSeek(stringFragmentsOffset);
int count2;//includes zero-zero node,but it is not written here
struct{
    short right,left;
}nodes[count2-1];
You do not have the required permissions to view the files attached to this post.
WRS
ultra-veteran
ultra-veteran
Posts: 603
Joined: Fri Nov 06, 2009 12:13 am
Has thanked: 74 times
Been thanked: 137 times

Re: Compressed Watch Dogs Localization Files

Post by WRS »

had a few minutes to look at this quickly.

the bit ops are already quite confusing - but the c# is very easy to follow.

i've modified the loop to spit out the string chunks:

Code: Select all

            while (numConsumedCodes < endOffset)
            {
                byte b = r.ReadByte();
                ++numConsumedCodes;

                if( b == 0 )
                {
                    Console.WriteLine("Line: '{0}'", sb.ToString());
                    sb.Clear();
                   // sb.Append("\n");
                }

                else if (b < maxStringFragmentIndex)
                {
                    string val = stringFragments[b+1].ToString() ;

                    Console.WriteLine("{0} '{1}'", (int)(b), val);
                    sb.Append(val);
                }
                else
                {
                    Console.WriteLine("UNKNOWN: {0}", (int)b);
                }
but there doesn't seem to be much data left for string sizes or offsets.

any idea what the 1x 8 byte tables does? are the string chunks split across multiple tables?


pm me another sample file if you can :)
Useful tool links:
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Re: Compressed Watch Dogs Localization Files

Post by rengareng »

I do not know what those bytes mean. Probably, ID of string block.
Yes, there should be offsets somewhere. Because, when I look at the memory of the game, stings are loaded when needed.
Hence, game should be able to seek the needed string.
defult06
ultra-n00b
Posts: 8
Joined: Mon May 29, 2017 5:58 am

Re: Compressed Watch Dogs Localization Files

Post by defult06 »

+up
Requizm
ultra-n00b
Posts: 5
Joined: Mon May 29, 2017 2:32 pm
Location: Turkey

Re: Compressed Watch Dogs Localization Files

Post by Requizm »

Up+
Omris
ultra-n00b
Posts: 8
Joined: Thu Feb 01, 2018 4:04 pm
Has thanked: 1 time

Re: Compressed Watch Dogs Localization Files

Post by Omris »

up.
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Re: Compressed Watch Dogs Localization Files

Post by rengareng »

Hi everyone,

I finally managed to unpack loc files. Unfortunately, the loc file does not have ids, therefore you have to give min and max ids.

I attached unpacker with Watch_Dogs 1 main_english.loc file and unpacked main_english.txt file.

I won't spend time on writing tool to repack.

Unpacked main_english.txt here
You do not have the required permissions to view the files attached to this post.
Taner038
mega-veteran
mega-veteran
Posts: 179
Joined: Fri Aug 22, 2014 6:14 pm
Has thanked: 16 times
Been thanked: 6 times

Re: Compressed Watch Dogs Localization Files

Post by Taner038 »

rengareng wrote:Hi everyone,

I finally managed to unpack loc files. Unfortunately, the loc file does not have ids, therefore you have to give min and max ids.

I attached unpacker with Watch_Dogs 1 main_english.loc file and unpacked main_english.txt file.

I won't spend time on writing tool to repack.

Unpacked main_english.txt here
Thanks a lot :keke: :keke:
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Re: Compressed Watch Dogs Localization Files

Post by rengareng »

You can find source code of the tool below:
Source Code
DeathScreen213
ultra-n00b
Posts: 6
Joined: Fri Mar 15, 2019 10:38 am
Has thanked: 5 times

Re: Compressed Watch Dogs Localization Files

Post by DeathScreen213 »

rengareng wrote: Wed May 29, 2019 5:02 am You can find source code of the tool below:
Source Code
Can you reup your source code ?
Lord Vaako
advanced
Posts: 56
Joined: Sun Jul 14, 2013 10:28 pm
Has thanked: 7 times
Been thanked: 15 times

Re: Compressed Watch Dogs Localization Files

Post by Lord Vaako »

Does anyone know min/max ids for Watch Dogs: Legion?
"wd_loc.exe main_english.loc 4555 234124" works quite well but some of the texts are incorrect.

i.e.

there is:

Infiltrate I want a revenge on the thug that killed my brother.and shut down Project THEMIS.

it should be:

Infiltrate Tidis and shut down Project THEMIS.


Could someone reup source code please?
rengareng
veteran
Posts: 131
Joined: Fri Feb 18, 2011 10:23 am
Has thanked: 7 times
Been thanked: 49 times

Re: Compressed Watch Dogs Localization Files

Post by rengareng »

I tried that file with the tool, and it extracted fine. Source code should be accessible, but there would not be anyone who can write packer for this file. It's very complex.
Post Reply