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

#editor

adrientd
It's old and limited, but also fast (and even has a debugger!)
adrientd
adrientd
I should honestly move to Ghidra, but I'm a bit lazy to import everything I found
adrientd
because doing structs in IDA is a bit painful
adrientd
There's also another more recent free version, but it lacks the debugger
deathhound246
Ah interesting. Ty! I'll have to install it
adrientd
In the assembly code, after it reads ckgtUnk79, it reads an array of 16 event nodes, so I guess ckgtUnk95 is part of the array as well.
pegperegogaucho
That is true
pegperegogaucho
However you cannot trigger the last event node using the squad
adrientd
Weird, is that a bug or intended?
adrientd
Also this time they start with 0, right?
pegperegogaucho
Indeed!
pegperegogaucho
I don't know honestly, although squads without any music to play when fighting enemies will have this index set to 15
pegperegogaucho
Also, Adrien, is there any reason why object reference selector widgets display the memory address of the object? This has been a huge issue for me the past years because it is hard to trace it back to the specific object, for example in pykedit, or to reselect it when reloading the level. Why not just display the full id like so:
adrientd
Yeah this is a bit of an unfortunate thing, especially in XXL1 when there are no names. I show the pointer as it is serves as a (temporary) unique ID for the object, when it has no name or there are multiple objects having the same name. But the big disadvantage of the pointers are that they are not persistent, they will indeed change when you reload the level. And I admit they are large and waste space in the combo box (especially when using a 64-bit version), so I do have thoughts about whether to move the pointer to the end or maybe just remove it. I did intentionally decide to not show the instance number, as I think that it shouldn't be relied on neither, because it can change while editing. For example if you remove an object, the next instances decrease their instance number by 1. So it can be used as a way to identify an object (only if you don't do any changes). This is not the case with pointers. Imagine you identified an object CKLine 45, you remove some line object you no longer need, then suddenly CKLine 45 is a totally different object.
adrientd
However you do mention the use case of using pykedit / hex editing. This is something that hopefully we would no longer need it (even that would take time unfortunately). But indeed for now that might be a valid reason. But maybe an alternative would be to give names to the objects? The old pykedit doesn't support reading the XEADD file that contains the names for XXL1, but I think the hex editor built-in to the new XXL Editor does? Though the latter might be lacking.
pegperegogaucho
Of course you are right, I'm totally aware of the issue, but usually you do not have the option to delete an object and it's also something that is rarely done. Because at least with the id you can identify objects at all, while with pointers it's very hard to keep track off and probably incomprehensible to any newbie
pegperegogaucho
Oh I did not even think about that, of course we could just name all the stuff on level load and the names will stay unchanged when removing stuff! :FrogThinking:
pegperegogaucho
The names could then just be the original full id or whatever
pegperegogaucho
But what I've also seen is just assigning random words from the dictionary to objects, like "CKHkDoor 0 : Banana", "CKHkDoor 1 : Apple"