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 


memory view addresses as manual offsets from first address

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
YetAnotherHal
How do I cheat?
Reputation: 0

Joined: 26 Feb 2019
Posts: 5

PostPosted: Tue Feb 26, 2019 10:27 pm    Post subject: memory view addresses as manual offsets from first address Reply with quote

Hi. Near as I can tell, I started using Cheat Engine 66 in 2016. What a great product!

I'm just an old fart who's revisiting my ancient games from the early days of the PC. Usually I just enjoy the golden oldies, but sometimes I hit a rough spot and need a little nudge to help me over a speed bump.

I also used ArtMoney for a bit, but I have to say, it's amazing how Cheat Engine has anticipated anything that my limited imagination might desire, so it's been my go-to since 2016.

My games are quite simple, but I have a recurring need I haven't figured out how to solve within Cheat Engine.

Generally, each time a program is loaded, it's code shifts, but the relative distance between addresses remains the same. I've been using Excel to keep track of things, because I can paste in a key address, and Excel will automatically update all the other addresses.

Anyway, these addresses are not dynamic throughout the game: they're static, with absolute addresses varying only game to game.

How can I set up the memory view so that once I've found the key address, all other variables are set their appropriate offsets from that key address?

For example, in Brøderbund's 1989 Dark Heart of Uukrul, you can choose a unique name for your first character, then search for that string. It is at some address. Subtracting 0x7D from that address yields the 2-byte location of Uukrul party food in little-endian format, while subracting 0x7B yields the 2-byte location of Uukrul party cash, in little-endian binary coded decimal format.

For example, in MicroProse's 1993 Master of Orion (MOO), you can choose a unique name for your leader, then search for that string. It is at some address. Subtracting 0x5022 from that address yields the 4-byte location of MOO reserve credits in little endian format.

This is all great information, but (for example) every time I want to play Uukrul, I have to find the key address then manually subtract 0x7B and 0x7D (and others) to access the variables of interest within Cheat Engine.

I wish I could just create each address using offsets from a specified memory view variable. Then I could simply paste the new address over the old one, and then Cheat Engine would update ALL my variables appropriately.

Is this possible?

Thanks!

OBTW, did I say what a great product Cheat Engine is?

v/r YetAnotherHal

_________________
Thanks for your amazing and really well thought out program!
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

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

PostPosted: Tue Feb 26, 2019 11:43 pm    Post subject: Reply with quote

Sre these dosgames running inside dosbox or windows games

if windows you can likely use modulename+offset notations
if dosbox it is more tricky, but there is a pointer to the emulated memory base that can be used
http://fearlessrevolution.com/viewtopic.php?t=7264

_________________
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
YetAnotherHal
How do I cheat?
Reputation: 0

Joined: 26 Feb 2019
Posts: 5

PostPosted: Wed Feb 27, 2019 1:40 am    Post subject: offset: how do I tell Cheat Engine this is what I want to do Reply with quote

Hi! Thanks for the really quick response, and also, thanks for that great information on finding the DOSBox 0.74 base address (DOSBox 0.74 is what I have been using).

I guess my ignorance of Cheat Engine is even greater than I suggested in my original post.

Right now, I need to type each variable's address into Cheat Engine each time I restart DOSBox, because, as you noted, those addresses change each time.

Knowing the pointer to the start of base memory doesn't change this, because with my lack of Cheat Engine knowledge, I would still recompute the new variable addresses from that new base address in Excel, and then I would still have to manually update each variable address in the Cheat Engine memory view section.

But, I already KNOW the new addresses with my current technique, because I paste the base address into my Excel tool, and then it tells me what the new addresses are for each of the variables. Then I still have to type them, one by one, into the Cheat Engine memory view section. That's what I was hoping to avoid.

The offsets never change -- only the base address changes. Once I enter the new base address, Excel calculates all the new addresses using the unchanging offsets. Then I start typing them in, again. I'm just thinking, hey, Excel can do it, probably Cheat Engine can do it as well and I simply don't understand how to represent base+offset in the Cheat Engine memory view section.

Is there some way I can permanently enter those unchanging offsets from the variable base address into Cheat Engine, for each variable, so that with each restart, I only have to paste the one changing base address somewhere?

Thanks!

PS There's a lot of great things about the memory view section, like how it easily recasts from decimal to hexadecimal, how you can lock a variable against changing, how you can quickly and easily edit any variable you can see -- again, you've anticipated my needs and implemented solutions that are better than I would have imagined to do it myself. Thanks again for this amazing dynamic debug tool!

_________________
Thanks for your amazing and really well thought out program!
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

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

PostPosted: Wed Feb 27, 2019 2:16 am    Post subject: Reply with quote

let's say that the address you've found is at 442ab89c
and the dosbox base pointer shows it's at 44280000

then open a calculator , set it to programmer mode with hexadecimal type, and fill in 442ab89c-44280000 (or use excel for that), so that you know what the offset from the base is (in this case 2B89C)

With this base pointer in hand you can then create a memory record entry that is always the same.
Easiest is just add the basepointer to the list, create a new entry, and give it the relative offset with a + in front
Code:

+2b89c

Then drag it into the base pointer memory record and it'll update the address to be the base+2b89c. And it will do that each time the address changes

_________________
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
OldCheatEngineUser
Whateven rank
Reputation: 20

Joined: 01 Feb 2016
Posts: 1586

PostPosted: Wed Feb 27, 2019 3:24 am    Post subject: Reply with quote

that s good stuff db, maybe i should create wolfenstein 3d table based on what you shared lol.
_________________
About Me;
I Use CE Since Version 1.X, And Still Learning How To Use It Well!
Jul 26, 2020
STN wrote:
i am a sweetheart.
Back to top
View user's profile Send private message Visit poster's website
YetAnotherHal
How do I cheat?
Reputation: 0

Joined: 26 Feb 2019
Posts: 5

PostPosted: Fri Mar 01, 2019 2:19 am    Post subject: Brilliant! Reply with quote

Thanks, once I had time to work through it, it went swimmingly! This saves a lot of set-up time for each gaming session. I wish I had taken the time and learned to use this two years ago!

Is there a place where I can upload the dot-CT for Broderbund's Dark Heart of Uukrul?

Thanks again for all the time and effort you've invested in this amazing tool -- you're way ahead of old farts like me, and have already implemented the capabilities we haven't even figured out that we need, yet!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking 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