Geordan9 wrote: ↑Sun Jan 13, 2019 8:03 pm
Exeter wrote: ↑Sun Jan 13, 2019 6:03 pm
Exeter, in regards to your table, you are registering symbols based off static addresses. I would suggest you do it with an AoB scan at the location accessing the static address. Use wild cards on unique offsets and addresses since they can possibly change. This way if the game were to be modified in anyway for an update, the likelihood of your table continuing to work would be much higher. I would also suggest, purely from preference, to give the multiple sections of addresses their own parent node containing their base address in order to use relative positioning. This is so if anything gets added in between them or something of the sort, making changes would be easier.
Here is a modified table I made to show you what I mean and to help you learn what I'm talking about.
In this scenario, there was a generic static address being accessed at
TOV_DE.Scaleform::Render::Matrix4x4<float>::Transpose+FA3C0
and was called from
TOV_DE.Scaleform::Render::Matrix4x4<float>::Transpose+1A627
The main script in the table does an AoB scan to find the call and stores it in a variable named "address". It then calculates the address its calling which leads to the instruction using the generic address and gives the new value to "address". It then calculates what the address is and then modifies "address" again and offsets it by 0x30 for "GaldEtcPtr" and 0x3C for "InventoryBasePtr".
(Also, "Play Time (Total)" is suppose to be 4 bytes):
Ah cool, thanks for the AoB method. I'm not very good with those yet, that's why I was using the 'simpler' version basically, but it'd still be somewhat easy to change at least.
By nodes you mean the way I labeled the items? (Weapons, Armor, etc)?
If so, the reason I didn't make even more of those is because there'd be too many and it'd become a hot mess.
The base items are usually stored together, but later on during the more rarer items, or upgraded items, it gets a jumbled mess. In terms of an array of byte example:
Code: Select all
[63 00 00 00] [01 00 00 00] [0F 00 00 00] [0F 00 00 00] [63 00 00 00]
What we have here is a random synthesis material, a key item, a weapon, an armor, and a Food material. However, beyond that section it'll be in a completely different order again, where it starts with .. say a Fell Arms, or an accessory instead. There's no real logic in the addresses anymore once you get further down the list. Some items are just stored in a completely different memory region, while others are mixed in with key items.