I noticed that you use READU32 and WRITEU32, it is okay to use C/C++ standard when dealing with pointers? For example (It has been a while since I dealt with pointers, so my example could be wrong):
Code:
u32 *offset = 0x065C528;
if (*offset != nullptr)
{
*(*offset + 0x80) = 0x00000000;
}
yeah, i did it with readu32 and writeu32 to make it simpler for people who dont know as much about c/c++
That was super useful! I don't know how to program in C nor C++ (yet), but as you've said it seems to be a matter of going off one example and figuring out the rest, one question though, how do you get the offsets of the values you want?
for example, the address of the timer (065C528), is there a plugin or an option in luma that points toward one of these values or how exactly do you find what you want to edit or mess with?
Yes, for simple things like this, going off of a few examples is all it takes to learn enough to do a few yourself.
You find addresses by searching for differences in the thing you want to modify in the RAM. For example, let's say we want to give ourselves 100 coins in a game. Search for your current number of coins and that will store all of the addresses that contain that value, which will likely be in the thousands. Gain or lose a few coins, search for that new number, and it'll refine the results. Eventually after enough searches, you should get a few addresses that store your coin amount. Write 0x64 (equal to 100 in decimal) to those address(es) and that's it.
For unknown searches, let's say you're looking for your coordinates in a game to make moonjump or something. Each axis is stored at it's own address, so you're only going to focus on one. Keep in mind which axis you're looking for, so choose X or Y or Z (only X/Y if it's a 2d game) and then do an unknown search. Only focus on that 1D axis. So move a little to one side (X: left is greater and right is less, Y: up is greater and down is less, Z: forward is greater, back is less) and then search for the corresponding condition in parentheses. So if you moved to the left on the X axis, your coordinates will be greater than before, so you'll search greater than. Continue moving and searching and eventually you'll find that axis. All 3 axes are always (from what I've seen) right next to each other. Now to make a moonjump you could do something like this
DD000000 00000800 // If Y is pressed
D6000000 12345678 // load value at 0x12345678. lets pretend this is your Y axis
D4000000 00050000 // add 0x50000 to that value
D9000000 12345678 // store it back
D2000000 00000000 // terminator