Talk:Bugs, Issues and Support/@comment-26393217-20170122164445/@comment-26393217-20170127171506

I took time to redo some actions before answering.

Tested accentuated characters (diacritics) are [éèêëàâîïôöùç].

1/ XML files:

\English\Campaign\Episode1.xml [Video subtitles] \English\Credits.xml \English\History.xml [Battle loading screen] \English\Journal.xml [1st journal log entry] \English\TipsOfTheDay.xml [Optional loading window]

-> diacritics: OK         apostroph:   OK if escaped as ['] = &apos;    ligatures: not tested (need to get some on Windows, then copy and paste)

2/ TXT & CFG files:

\English\Game.txt \English\ScreenHelp.txt \English\Spells.txt \English\XCIStrings.txt \English\Help.cfg \English\Tutorial.cfg \English\Victory.cfg

-> diacritics: OK              apostroph: not escaped OK          ligatures: not tested

3/ XCR archives:

/English/Campaign.xcr /English/Items.xcr /English/Mercenaries.xcr

Mercenaries.xcr is one big coded Mercenaries.xml file -> Opened and decoded with xcr.exe (XCR Explorer v1.0 by Dark Angel) -> diacritics: none          apostroph: OK if escaped as ['] = &_apos;         ligatures: not tested (very unlikely to work)

Upon saving the archive (hitting the save button), changed characters are now displayed as follow (the same when the archive is closed and opened again): [âôöîïûëç] -> ? (question mark)

or as two characters: [à] -> ¨¤ (currency mark) [é] -> ¨| (vertical bar) [è] -> ¨¨ (umlaut) [ê] -> ¨° (degree) [ù] -> ¨' [ending simple quote]

It's no wonder, then, why the game can't display the intended characters. Now, although I installed Microsoft .NET API, I can't use the new MFC archiver (I see a loading bar, then nothing happens).

Campaign.xcr is several coded xml files -> Opened and decoded with xcr.exe (XCR Explorer v1.0 by Dark Angel) -> same as Mercenaries.xcr

Only difference is that xcr.exe seems to corrupt the archive when you touch more than one file inside (perhaps, it looses some archive offset). I'll take no chance and exit the program each time I edit one single file and as soon as I hit the save button once (even with Mercenaries.xcr).

Items.xcr used to be like Mercenaries.xcr. Now, it's one big plain Items.xml file -> Can't opened it with xcr.exe anymore. I thus can't have it decoded or undecoded. -> I can read it however with notepad.exe, or better readers when I change the file type into .xml. -> As editing Items.xml and renaming it as Items.xcr don't work (the xcr header on top of the xml structure isn't changed), I mean that the game won't start, I can't play and test it. So, I didn't try diacritics yet, and having a French-readable version would be a nice first step. For now, I play with the new Items.xcr, of course, that is in English.

-> I tried to hexedit Items.xcr. Even with reverting the create date file's attribut back to the original one, changing but one byte in a text string(e.g. 'Gnarled Staff' -> 'Gnarled Btaff') (not adding any byte) prevents the game from launching. The Startup.log ends with a "Item Manager failed" line.

However, the structure of Items.xcr looks pretty simple, as only 10 bytes (in the header section) seem to be non xml (text) data. Of them, there might be the length in bytes of the xml data itself. The entries are only separated by constant code, hence there is no way for the game to know how long an entry is (and there is no need of this). I doubt there's some hash code inserted there, but who knows. Length is 0x02245a bytes (hexadecimal) for 345 items and 25 sets. 0x0018 [3e][24][02] <- probably a data length coded with 3 bytes, LSB first (#02243e = #02245a - #00001c). 0x021c [30][02][00][00] [2a][22][02] <- probably a data length coded with 3 bytes, LSB first (#02222a = #02245a - #000030). [00]... until the items'list proper. Only constant code is used between items : [0d][0a] or [0d][0a][09] or [0d][0a][09][09] [0d][0a][09][0d][0a][09]Gnarled Staff[0d][0a][09][09].......... [0d][0a][09][0d][0a][0d][0a] [Od][0a][09][0d][0a][09][09].................................... [0d][0a][09][09][0d][0a][09][0d][0a] [0d][0a][0d][0a][0d][0a][0d][0a][0d][0a] <- eof