Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

How to translate the files of a game
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by LolHacksRule »

I want to view the XLC file from Angry Birds: Transformers (I don't have a sample from ABGO), but it's mostly binary with plaintext values, how to edit and/or convert to plaintext and back?
Last edited by LolHacksRule on Thu Aug 15, 2019 4:21 am, edited 2 times in total.
swuforce
Posts: 233
Joined: Thu Oct 16, 2014 4:39 pm

Re: Angry Birds: Transformers/GO! (*.XLC, Locale Database?)

Post by swuforce »

You can unpack it with this Quickbms script.

Code: Select all

goto 8
get unk long
get files long
xmath pos "24 + unk * 4"
goto pos
xmath offset "files * 8 + 24 + unk * 4"
for i = 1 to files
get size long
get unk long
log "" offset size
math offset += size
next i


Text are null terminated, so replace 0x00 with 0x0d0a, then back if you finish.
For unicode files 0x0000 with 0x0d000a00.
Keep size same or less, so you can reimport.
Last edited by swuforce on Sun Jun 09, 2019 2:56 pm, edited 2 times in total.
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Angry Birds: Transformers/GO! (*.XLC, Locale Database?)

Post by LolHacksRule »

THANK YOU SO MUCH! That makes it more easier to be able to datamine these files! I'll also credit you for the script on my Angry Birds Modding Hub Discord when it eventually comes out! I'll try ABGO's XLC later and see if that works. I analyzed this file's binary data before, I already knew the nulls split data. UPDATE: ABGO's works fine too!, next is ABT (China), there's an issue with that one, the files outputted are incomplete or wrongfully split and QuickBMS threw this error:

Code: Select all

  offset   filesize   filename
--------------------------------------
  00000070 240526     00000000.dat
  0003abfe 97580      00000001.dat
  0005292a 269542     00000002.dat
  00094610 277392     00000003.dat
  000d81a0 263742     00000004.dat
  001187de 133806     00000005.dat
  0013928c 260982     00000006.dat
  00178e02 250242     00000007.dat
  001b5f84 271090     00000008.dat
  001f8276 4522070    00000009.dat

Error: incomplete input file 0: abtchina\locdb.xlc
       Can't read 396926 bytes from offset 002173f8.
       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    99%   2192348    2192376    . offset 002173f8

Last script line before the error or that produced the error:
  8   log "" offset size


When looking at the file, it has null bytes after a single text character meaning it is a Unicode version of the file!
swuforce
Posts: 233
Joined: Thu Oct 16, 2014 4:39 pm

Re: Angry Birds: Transformers/GO! (*.XLC, Locale Database?)

Post by swuforce »

Try now.
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Angry Birds: Transformers/GO! (*.XLC, Locale Database?)

Post by LolHacksRule »

00000002.dat, 00000008.dat, 00000006.dat have garbage outputted, the new script kinda worked though...
swuforce
Posts: 233
Joined: Thu Oct 16, 2014 4:39 pm

Re: Angry Birds: Transformers/GO! (*.XLC, Locale Database?)

Post by swuforce »

If you can't force unicode encoding to them, just insert 0xFFFE before these files.
But don't forget to remove, when reimport.
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Angry Birds: Transformers/GO! (*.XLC, Locale Database?)

Post by LolHacksRule »

Ok then, thanks so much.
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by LolHacksRule »

Support for conversion to XML and back? ABT has a file like that but not used by the game... (dev leftover?), it would make modifying and reading strings much easier.
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by LolHacksRule »

Doesn't work on ABGO v1.13.9's localization file. Its not Unicode, specifically, the files from the script output meaningless data or minimal chunks of the localization data, my guess is it's a V1 XLC.
Last edited by LolHacksRule on Tue Feb 16, 2021 3:19 am, edited 1 time in total.
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by LolHacksRule »

Bump?
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by LolHacksRule »

For a mod that works with the said file, replace 24 on lines 4 and 6 to 20.
mtktz
Posts: 2
Joined: Mon Apr 18, 2022 12:31 pm

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by mtktz »

I also had the same problem when extracting the .xlc f1 2016 android file, the output description appears coverage file 0 99%
I did the same step, but after reimport the error appears cant read 4 bytes in the first file, Even though I didn't edit it at all
LolHacksRule
Posts: 865
Joined: Fri Apr 20, 2018 12:41 am

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by LolHacksRule »

mtktz wrote:I also had the same problem when extracting the .xlc f1 2016 android file, the output description appears coverage file 0 99%
I did the same step, but after reimport the error appears cant read 4 bytes in the first file, Even though I didn't edit it at all

The reason why QuickBMS doing that is you're trying to make it write to the first listed chunk instead of the files while the chunks don't have the information on sizes. The command for repacking XLC should be something like (examples are used):
quickbms -r -w -r -r ExientXGSEngineLangDatabase.bms modifiedfortest.xlc modding/modifiedtextstringsdirectory

To be honest, I never really repacked XLC yet, so I don't blame you. I however wrote this template for 010 Editor if it helps.

https://raw.githubusercontent.com/LolHacksRule/GameFileFormatsRE/main/Exient/ExientXGSEngineLangDatabase.bt
Last edited by LolHacksRule on Sun May 29, 2022 12:25 am, edited 2 times in total.
mtktz
Posts: 2
Joined: Mon Apr 18, 2022 12:31 pm

Re: Exient XGS Engine: Angry Birds: Transformers/GO! (*.XLC, Locale Database)

Post by mtktz »

Now I know the reason
That's cool, i'll try what i can do with that template
Thank u so much for helping explain to me and also that template :)