Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Group... Address Type or not?

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Tutorials
View previous topic :: View next topic  
Author Message
oddgamer
Advanced Cheater
Reputation: 0

Joined: 19 Jan 2013
Posts: 58

PostPosted: Tue Aug 11, 2020 9:54 am    Post subject: Group... Address Type or not? Reply with quote

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
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 457

Joined: 09 May 2003
Posts: 25262
Location: The netherlands

PostPosted: Tue Aug 11, 2020 12:56 pm    Post subject: Reply with quote

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
View user's profile Send private message MSN Messenger
kveldolf
How do I cheat?
Reputation: 0

Joined: 21 Aug 2021
Posts: 2

PostPosted: Sat Aug 21, 2021 12:55 pm    Post subject: Quick further question on the topic Reply with quote

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
View user's profile Send private message
LeFiXER
Grandmaster Cheater Supreme
Reputation: 20

Joined: 02 Sep 2011
Posts: 1053
Location: 0x90

PostPosted: Sat Aug 21, 2021 1:18 pm    Post subject: Reply with quote

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
View user's profile Send private message
kveldolf
How do I cheat?
Reputation: 0

Joined: 21 Aug 2021
Posts: 2

PostPosted: Sat Aug 21, 2021 1:38 pm    Post subject: Reply with quote

"...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
View user's profile Send private message
LeFiXER
Grandmaster Cheater Supreme
Reputation: 20

Joined: 02 Sep 2011
Posts: 1053
Location: 0x90

PostPosted: Sat Aug 21, 2021 2:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Tutorials All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites