|
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
oddgamer Advanced Cheater Reputation: 0
Joined: 19 Jan 2013 Posts: 58
|
Posted: Tue Aug 11, 2020 9:54 am Post subject: Group... Address Type or not? |
|
|
I make huge tables because I don't know LUA or Assembler (and, honestly, just to cheat at a few games I can't be bothered to learn). As such, I get to things like 'stats for every character' and 'inventory' and so on, so I make groups so I don't have to look through all that junk while trying to figure out where the money is in my table.
Now, though, CE is asking if I want my groups to be "address type"... and I honestly have no idea what it's talking about, what the difference is, and why I would prefer one over the other. I've tried looking through the help, but couldn't find anything on groups at all, suggesting my search-fu needs work, so can some kind person either explain what the heck this means or point me to a spot where it's written down so I can read up on it?
Sorry for being so verbose. I'm in a strange mood.[/i]
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25296 Location: The netherlands
|
Posted: Tue Aug 11, 2020 12:56 pm Post subject: |
|
|
a group entry with an address is the same as a group, except it has an address.
There is no type associated with it so it still has no value
You can use this for relative entries.
e.g the groupheader can contain a pointer to the start of a player structure. The first entry of a player structure is usually not that handy (vtable) so no value should be associated with it. (And freezing won't have an effect)
then you can have a child address with address set to `+100` which means to give it the address of the parent, and add 100 to it.
So if the groupheader pointer would point to 12340000 then the child would be 12340100
A groupheader without address can not do such a thing, which is why you may want one with an address
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
kveldolf How do I cheat? Reputation: 0
Joined: 21 Aug 2021 Posts: 2
|
Posted: Sat Aug 21, 2021 12:55 pm Post subject: Quick further question on the topic |
|
|
So, I was playing with address groups and they have been quite helpful, but I just ran into a thing where the address offset isn't consistently interpreting decimal vs. hex. Is there a way to specify when typing in the offset as "+11" that you want hex or, alternately, decimal? In C land, "0x" is a valid prefix but I can't think of one for decimal. (since that's assumed)
What's happening seems to be that it assumes decimal in offsets until a clear hex value is encountered, at which point it then starts assuming hex. (even retroactively) This is inconvenient. Sometimes the math is easier in one or the other and I'd like to declare which is which.
I'm not finding where the help files address this so I was hoping someone could tell me the trick to specifying which you mean unambiguously.
Last edited by kveldolf on Sat Aug 21, 2021 1:27 pm; edited 1 time in total |
|
Back to top |
|
|
LeFiXER Grandmaster Cheater Supreme Reputation: 20
Joined: 02 Sep 2011 Posts: 1055 Location: 0x90
|
Posted: Sat Aug 21, 2021 1:18 pm Post subject: |
|
|
Offsets and addresses are implicitly hexadecimal notation. You won't need to specify as decimal because memory doesn't work that way. Data can, however, be either decimal or hexadecimal.
Any plain number you type in the address/offset field is assumed hexadecimal there is no requirement to specify in decimal.
|
|
Back to top |
|
|
kveldolf How do I cheat? Reputation: 0
Joined: 21 Aug 2021 Posts: 2
|
Posted: Sat Aug 21, 2021 1:38 pm Post subject: |
|
|
"...because memory doesn't work that way."
Of course it does. We're just talking about representations of addresses, anyhow. The numbers mean the same things in hex/dex/oct; base is irrelevant to meaning, just to the ciphering and mnemonic side of things... and to interpreters.
CE absolutely *does* recognize base 10 notation for offsets from a group address list. My problem is inconsistency about it. If it isn't supposed to, that could explain the instability.
Heck, working with this further, I switched to trying out 0x notation to be explicit on THAT side of things, and about a minute ago, it automatically converted it back into decimal notation (for offsets from a group base) when I pasted into a new group. It did it correctly, too. I'm just trying to work out the rules it operates under for this.
(Example: It converted a +0x0B into a +11 in the address field, but, interestingly, it seems to have returned it to hex on a save and reload and stripped off the 0x. At least it's not dancing between modes, which was mangling previously working values that I wasn't even editing.)
Edit: Since I don't want to fill up with pointless talking past each other:
Binary is base 2 and actually is essentially linked to storage. No other base is.
Other bases are simply available to make reading and writing easier for a human. Most computer languages permit arbitrary use of any of a number of bases, from hex, dec, oct, and bin. Heck, some even permit more exotic choices.
Hex is quite nice when dealing with 8 bits and multiples thereof, so it remains a popular choice. For other tasks, using decimal is more pleasant. Ultimately, though, either is still converted into a binary internal representation. (BCD being a potential caveat on that, but it's irrelevant to discussions involving x86 chips)
Addresses and offsets are not "in hex" any more than they are in any other base, in computing, it's just one of the more popular display and, yes, input formats.
Last edited by kveldolf on Sat Aug 21, 2021 6:31 pm; edited 2 times in total |
|
Back to top |
|
|
LeFiXER Grandmaster Cheater Supreme Reputation: 20
Joined: 02 Sep 2011 Posts: 1055 Location: 0x90
|
Posted: Sat Aug 21, 2021 2:16 pm Post subject: |
|
|
Well, in digital computing base-2 was the preferred notation and as a result Intel/AMD used this for simplicity and efficiency that's why I stated that memory doesn't work that way because it doesn't with the average computer. In no way was I implying that computers can't use base-10 because they can albeit very inefficiently. That said, my point still stands. Cheat Engine does not use base-10 as a representation for memory addresses or offsets.
You can select to view the address field as hexadecimal or decimal. I believe this serves the purpose of determining the difference between a data value, and an address value where hexadecimal would be the preferred method of use since when you load modules they're not addressed as 1,2,3,4,5,6,7 and so on. They are from 000000..FFFFFF (32-bit) and 00000000..FFFFFFFF (64-bit). Addresses are represented in hexadecimal because it's easier that way.
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|