Asterix Gaming Guild Logo GeneralXXLXXL 2XXL 3XXXLOlympic GamesXXL EditorToolsOff-TopicXXL RomasteredXXL 2 RemasteredOther GamesModsCaesar's ChallengeUnfair XXLPatchesFan ArtPersonal ArtSpeedrunningMediaRandomizerBETA RomeHSKALPresence AdrienPresence SPQRSupport Bot Helpdesk

#general

adrientd
Then, going back to reversing the K files, I noticed that, in the "tree of chunks", the top level of the tree always has exactly 15 chunks
adrientd
This is how I discovered the relation between the first level of chunks and the category of classes.
adrientd
And knowing that it mades things more clear :Obelul:
adrientd
To check if my findings are correct, I always made a simple Python script to parse the file and keeps changing it until it works
adrientd
And this scripts becomes the very first version of "XXL Editor": https://github.com/AdrienTD/elbtools/tree/master/pykedit
spider_
The main issue for me is
spider_
How do I find what the header is, exactly?
spider_
I can make some guesses based on the differences between the different KRV files
adrientd
Yeah, checking for differences is also very helpful
spider_
I'm trying to get some hints from your file, and I think the configuration is in this block
spider_
``` if (this->version >= KVERSION_ARTHUR || (this->version == KVERSION_XXL2 && (this->platform != PLATFORM_PC || this->isRemaster))) uint32_t headerSize = lvlFile.readUint32(); this->numSectors = lvlFile.readUint8(); kuuid lvlGameUuid; lvlFile.read(lvlGameUuid.data(), 16); assert(lvlGameUuid == this->gameManagerUuid); this->lvlUnk2 = lvlFile.readUint32();```
spider_
I think the first if is fired since DotD came out after their Arthur game
spider_
Which would make sense based on file comparisons
adrientd
Yes
adrientd
And yeah, forgot to mention that, but the file begins with a big header that basically says the number of classes used and how many instances of the class there are (and some small info here and there)
spider_
I was about to ask, 0x799f seems like a very, very big header
spider_
So first 4 bytes are the header size in bytes, the next since byte is sector count (what are the sectors? LLC files appear to have more than the normal level file), a 16 byte game UUID, an unknown 4 byte value, and then the sector loop
adrientd
Sectors are the STR files, so a sector count of 5 means there are 5 STR files for this level.
adrientd
And these values are only in the LVL files, LLC files have a different format.
adrientd
LLC contains localized data, so every level has a LLC file for each language