I still kinda do want to try to make an AoB scanner so that we can FINALLY do away with pointer scanning.... It's a tricky beast and I'll have to sit down for a while and ACTUALLY code something...... but I've got a basic idea written down and I've already made a code that MOVs large amounts of data at a time... Now I just need to make a way to compare large amounts of data at a time... which, let's be fair, should be easy at this point and I've just been being lazy.... So here's the basic idea in only a few steps:
Part 0: Setup code, by placing desired AoB values at specific address. (needs 2x the space, 1 time to write values, 2nd to write discovered values and check) ((I could PROBABLY do this with only 1x space and a 4 extra bytes, but I'm lazy, okay))
Part 1: Repeatedly MOV 4bytes at a time into a specific address. (a holding space, I guess)
Part 2: Check if that held value matches the first 4 bytes of the AoB (yes: goto 3, no: continue step 1) ((no sense running full check on EVERY address if the first address fails))
Part 3: MOV current address from Vitacheat and store it. (don't want to lose this address in case it's right... and we need it to continue later if wrong)
Part 4: MOV the rest of the data from the game to holding area and check if they match. (Yes: goto 5, No: continue step 1)
Part 5: Disable scanner and activate cheat code.
Code:
_V1 Array of Bytes Scanner [WIP]
### MOV data from 8100xxxx to 8400xxxx
$5200 00000000 00000000
### B20E to select VitaCheat Code list
$B20E 00000001 00000000
### Lock if 84010000 is next address
$D206 000006D4 8100FFFC # Last address to be copied
### Write next address to Line 1
$0200 000006D0 00000000
$0200 000006D4 00000000
### Inc ln4 and self
$4200 00000704 84000000 # Pasting address
$0002 00000020 00000004
### Inc ln5 and self
$4200 00000714 81000000 # Copying address
$0002 00000030 00000004
#END
This current code is simply the part of code that will do the copying. It is currently set up to copy everything from 81000000-8100FFFC to 84000000-8400FFFC. That's WAY more data than we need to use to check for an AoB scan, but it's a proof of concept. In reality, we probably only need about 20 bytes of data or so. to get a good match... that's 5x 32bit values.
If I can get this set up, THEN we'll no longer need a PC to find pointers.... We can simply locate a place in RAM close to the values we need to hack... A place that might move around, but is always the same values and is always X amount of spaces away from our HP or w/e needs hacked.... If we just input that string of values as the input to an AoB scanner, it will find that string of values and we can instantly know where HP is, without needing a pointer.