Client mod that shows past 9,999 hours in a game?

Yooo_Its_King

Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
16
Trophies
0
Age
23
Location
The World
XP
73
Country
United States
Is it possible to mod a console/ come out with a mod that it shows past 9,999 hours in a game (only on the client side)? The closest content to what I am trying to do, that I was referred to (Smash Modding also told to check out a modding server instead of a Smash one), is the NX Activity Log, by tallbl0nde (whom I've messaged). Thank you for your time =].
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
It is a subject usually covered in older consoles but I suppose it could be a thing here. https://www.dropbox.com/s/b2kuma6zs89di8n/Metroid.lua is for a Lua script to run on top of a NES Metroid game but details some of the workarounds and ideas that might be in play.

You would first want to investigate what the time played is stored as, and what the time is counted in. When learning programming you will be introduced to sizes of variables -- 8 bits being able to store numbers between 0 and 255, 16 being 2^16 or 65536 or 0 through 65535 or some offset from that.
If counting in milliseconds (maybe it is time to beat a track in a race) then those are not very large numbers at all, seconds (rather imprecise for a lot of purposes but acceptable for most time played counters) is not all that much better (3600 seconds in an hour).
This says nothing of things like unix time either, though doubtful it is used in this (far more useful in general computing than logging time durations of play).


9999 is likely a standard decimal conversion value being used as a limit so whatever the underlying value is probably could go a bit higher. 9999 hours is 35996400 seconds, rather less than 2^32 which is 4294967296, though again start measuring in milliseconds or hundredths of a second, or indeed CPU cycles and that is a rather smaller relative difference in value.
You will see similar things in cheats where stats might be limited to 99 for the sake of screen display and internal logic but cheats can force things to be crazy higher. Though sometimes those upper values are used to indicate other things, doubtful here though.

If the number continues to count upwards you might be able to read that out with a cheat/debugger quite happily if it is just for your internal purposes. Getting it to display is more involved. Assuming you found the value (timers like this are usually easy enough to find -- unlike other cheat searches you most of the time can legitimately do nothing and still search to find it, or indeed save, dump the save, wait a few frames, save and dump again if going for the save game approach*) you will then want to set a breakpoint on it (possibly write** but most would go for break on read). Whatever references it (possibly when you view the menu or whatever has the time played stat) will possibly have to contain the bounds checking/sanity checking and that is where you come in.

*I presume it is an internal save game state that is being sought here, if it is some kind of external menu driven affair then broadly similar ideas to everything above and below but instead you are attacking the menu. This does however mean you need to replicate this with every firmware update.

**whatever writes it might contain the sanity checking or some limiter. Likewise a read might happen before that to see if the value about to be added to is suitable.

There are two general schools of thought here on things you can do to expand a timer.
1) You expand the value and all associated logic for it. 32 bit value in this hypothetical to 64, possibly also the display logic for it as well (99999 hours is about 11 and a half years pure time and you are not going to do it 24/7 so becomes less tricky).
2) You do a secondary indicator (think broadly similar to marks next to a name to indicate someone has beaten the game). 9999/24 is some 416 or indeed rounds to 417 days, even 12 hours a day is going to mean better part of 3 years to get there. Certainly possible to do in some games, possibly even more so if you have turbo in an emulator***, but it is up there for most purposes. Anyway so find a bit of unused memory (also possibly included in the save) and when it gets to 9999 you set a value somewhere to 1 and then reset the timer to 0 to start over. Now you doubled the value but as you are not going to be limited to one single unused bit (this is not the commodore 64 or NES where wasting bits got the company hitman after you to waste you) and are least are going to have 32 bits to play with then... yeah this is going to have to be the game of all games to get there. Getting this extra value to display can be done, possibly even within existing display parameters but more likely some other indicator somewhere as to the value. This can also be kinder to those that might receive data for whatever reason (network/link play, save exporter...).

***marginally related video but amusing


I should also note the minor possibility that some crack smoker of a dev decided to use a signed value or something equally pointless to store time played (not like you get negative time****) and in that case converting to a signed value would double the range on the spot, at least without any sanity checks built in.


****if you have ever had a cheat/game/exploit give you so much money, health or whatever you get negative values then you are dealing with signed values or floats. There are some valid reasons to be using such data types (usually more modern languages that won't allow you to mix types, his is the hard/strong/strict typed vs weakly typed idea you might have encountered when comparing programming languages***** lest something strange happen)

***** more videos still



Anyway I see the asterisks getting ever larger which usually means I am waffling so I will tie it off there. Short version is yeah it is usually possible but how much effort you care to expend for a minor result for most purposes means it is a questionable effort. The only "simple" way might be to find the timer within the game and force it back to 0 with a cheat, first having noted what the original value was such that you can add it up for your purposes. You could even do some kind of automated cheat on top of things (if [timer location] greater than [some value] copy [timer location data] to [some location] set timer to 0 (or some valid value that is not going to flag anti cheat or bans), maybe layer another or instead of copy data then add data to value (hopefully a large one), or you instead do the flag thing discussed above and note how many times it has gone above [some value]). You can then read the timer and the additional/flag aspects and calculate things accordingly.
 

Yooo_Its_King

Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
16
Trophies
0
Age
23
Location
The World
XP
73
Country
United States
I am working on this idea with someone very intelligent, so I trust it should be doable, but, I appreciate the effort put into both of your replies!
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    OctoAori20 @ OctoAori20: Nice nice-