Update DS1R talk docs - #13
Conversation
Based on reverse engineering of DS1R, uploading mostly for posterity and feedback
|
Thanks for these changes, I do want to get to them in more depth. I'll note some of the function names come from translating fromsoft's own names for them, which are always preferred for consistency even if they don't make as much sense in English. It's been a while since I've looked at those so I'll want to compare it against the list here before making any hasty conclusions! |
|
yeah i sort of figured that the function names must've been derived from official names, but wasn't sure if they were preferred simply for being semi-official or if no one had bothered to name them differently. |
Update talk documentation based on reverse engineering of DS1R, uploading as is mostly for posterity and feedback since there's still several to-dos and extremely technical documentation that probably will help no one.
Notes:
MenuTypeenum is nightmarishly long because theIsMenuOpendoesn't seem to have any limitations, and can read from any of the (~500 allocated in DS1R) values that they use to store basically anything menu related in MenuMan. The ones I've added/changed in the enum are just ones that i'm about 99% certain of, there's so many more that I either don't know or am not super sure of.IsMenuOpendoesn't just return the value, it just returns true if the value is non-zero, which I don't think even means the menu is necessarily open for some of the later ones. They store all sorts of data in those values. Honestly the function is probably another way to arbitrarily read memory, but being limited to checking if a 4 byte value is or is not 0 is pretty limitingDidYouDoSomethingInTheMenuis basicallyIsMenuOpen-lite, it can only read very specific menus from its own list (theInteractMenuTypeenum is complete, it is that small), but ends up essentially just checking if one of the values in MenuMan is non-zero or not.ShuffleRNGSeedactually works despite looking at it quite a bit, but it does seem to allow values of 0-255 rather than 0-100.TalkInterruptReasonenum value names are taken from debug strings for the feature.AddTalkListDatainto a version for DS1R and a version for every other game, but I see no reason to mention the functionality of setting the input to 69696969 outside of DS1R because its something that Q-LOC added for their terrible hardcoded functionality of the covenant menu.GetRelativeAngleBetweenSelfAndPlayerWithAxisworks either, but I do know that it uses the exact same code path asGetRelativeAngleBetweenSelfAndPlayer, so its not about getting the able between 2 players like the previous name suggested. I assume the function just takes into account another axis, since its used to show the talk prompt for Quelaag's Sister, I haven't checked but I wouldn't be surprised if the point it uses to determine the angle check is off the ground or something.