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 


Finding unknown bigints (/bigdecimals)

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

Joined: 12 Jan 2021
Posts: 4

PostPosted: Wed Jan 13, 2021 11:30 am    Post subject: Finding unknown bigints (/bigdecimals) Reply with quote

Basically the game is one of those stereotypical idle games where your money output increases exponentially over time, but you need to wait for days and days to get it up. Of course they provide convenient "time warps" to skip days ahead, but they're paid. Because there is a paid alternative, they think they get a free pass to make the non-paid part of the game absolutely torturous. (Plus it's a mobile port.)

I'm trying to change the money value, but I don't know what type it is! It's not an 8-byte int because it can go into the novemtrigintillions (and much farther beyond), and it's not a float or a double because it doesn't lose precision as it gets larger. I've tried speedhack, but it doesn't work because it doesn't know what realGetTimeOfDay means.

How should I go about identifying this?
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 138

Joined: 06 Jul 2014
Posts: 4275

PostPosted: Wed Jan 13, 2021 12:29 pm    Post subject: Reply with quote

LoganDark wrote:
it's not a float or a double because it doesn't lose precision as it gets larger
Floats/doubles don't lose precision as they get larger. e.g. doubles always have 53 base-2 (15.95 base-10) digits of precision. Denormal numbers are an exception.

Anyway... most web idle games I've seen store big numbers as two doubles: a mantissa and an exponent. e.g. mantissa 5.99329, exponent 10.0 = 59932900000. Try letting the number go up a few orders of magnitude (at least 3) and scan for increased value to find the exponent.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
LoganDark
How do I cheat?
Reputation: 0

Joined: 12 Jan 2021
Posts: 4

PostPosted: Wed Jan 13, 2021 12:54 pm    Post subject: Reply with quote

ParkourPenguin wrote:
LoganDark wrote:
it's not a float or a double because it doesn't lose precision as it gets larger
Floats/doubles don't lose precision as they get larger. e.g. doubles always have 53 base-2 (15.95 base-10) digits of precision. Denormal numbers are an exception.


See these two sections on single-precision floating-point to understand what I mean by "lose precision":

(Actually, scratch that, I'm not allowed to post URLs yet. Thanks DB. Look up the Wikipedia article "Single-precision floating-point format" and check out the two sections titled "Precision limitations on decimal values in [1, 16777216]" and "Precision limitations on integer values".)

Doubles have the same issues, but they have more precision so the cutoff points are bigger.

ParkourPenguin wrote:
Anyway... most web idle games I've seen store big numbers as two doubles: a mantissa and an exponent. e.g. mantissa 5.99329, exponent 10.0 = 59932900000. Try letting the number go up a few orders of magnitude (at least 3) and scan for increased value to find the exponent.


So it's like a magnified version of IEEE 754 - you use two doubles to make a bigger double. Hmm.

I'll check it out and report back.

Edit: Alright, I've checked it out. There are, in fact, doubles that are used to represent money. I seem to have found a crap-ton of them. And not a single one controls the money value.

Yes, they all instantly update when I update my money. But setting them all to active does not prevent my money from changing.

Curiously, it doesn't even look like they are part of big doubles, because they contain the full money value. Curious...
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 138

Joined: 06 Jul 2014
Posts: 4275

PostPosted: Wed Jan 13, 2021 1:43 pm    Post subject: Reply with quote

The use of the word "precision" in the two headers in your referred article, while correct, is misleading. Those sections refer to the mapping from the infinite precision of integers and reals (decimals) to that of the single-precision floating-point format.
For more information, precision usually correlates with significant figures in many academic fields, including computer science.

I very strongly doubt an idle game is working with infinite precision integers. Floating point numbers, while not infinitely precise, are far faster in higher orders of magnitude while being precise enough that users won't notice the difference.

Broaden your scanning approach until you find something. Unknown initial value and changed/unchanged value would be ideal if you can control your money to that extent.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
LoganDark
How do I cheat?
Reputation: 0

Joined: 12 Jan 2021
Posts: 4

PostPosted: Wed Jan 13, 2021 1:48 pm    Post subject: Reply with quote

ParkourPenguin wrote:
The use of the word "precision" in the two headers in your referred article, while correct, is misleading. Those sections refer to the mapping from the infinite precision of integers and reals (decimals) to that of the single-precision floating-point format.
For more information, precision usually correlates with [url snipped] in many academic fields, including [url snipped].


I assumed that's what you meant, because you said that they always have x bits of precision. I don't suppose that matters considering they only show 4 decimal digits of precision once you get into the trillions.

ParkourPenguin wrote:
I very strongly doubt an idle game is working with infinite precision integers. Floating point numbers, while not infinitely precise, are far faster in higher orders of magnitude while being precise enough that users won't notice the difference.


To be fair, if I were making an idle game with very large numbers, the fact that doubles lose precision as they get larger would prompt me to use a big decimal, or at least rational arithmetic with biginteger components (like what my calculator uses). Although, that last one is inefficient in many ways, two doubles like you described would probably be way better.

Anyway, the topic of this post is pretty much dealt with - it ended up being a single double, yay. Now to figure out how to find the source of truth for all those memory addresses with the same value. Sigh...
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 MacOS 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 cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites