
Originally Posted by
bungholio
You don't need to do a dump to get the address.
Here's a run through what I just finished doing about 30 minutes ago (I finally got the thing to work perfectly):
I chose Twisted Metal Black, I wanted to find infinite lives. You start the level with 3 lives.
1. I did a first scan for 1 unsigned bytes that had the value "03".
2. Next, I did an extra scan for values that didn't change.
3. After doing that a few times, I switched the extra scan to keep results that decreased. I got myself killed, so my lives decreased by 1. I scanned, and the game paused for about 30 seconds and then resumed.
4. I switched the extra scan back to "keep if the value didn't change". I did a few more scans like that.
5. I got myself killed again, then changed the scan to keep results that decreased and then I scanned.
6. I quit and restarted the game.
7. I used my function "Reset Currently Selected Result".
8. I tried the function "Apply Old Value". No effect, so I used the function "Cycle Through Results".
9. I applied an old value again, no effect and I cycled through the results again.
10. I applied old value, and my lives shrunk from 3 to 1.
11. I started changing the value of the LUI and ORI in my "Get Address" function. I turned on 1 bit at a time, and then tried the function. If I didn't get a pause, the bit was off, and if it paused the bit was on. I kept doing that and got the address "00426030".
12. I did a save dump for the heck of it, and there were only 3 remaining results and all had the value "01".
I then restarted the game and entered this with codebreaker:
00426030 00000004
I tried it, and infinite lives. I found the ASM to change how many lives I started with before, and it was different depending on whether it was store mode or those other few. I don't know if this infinite lives code only affects story mode, I'm not checking at the moment. I only want to make the scanner work perfect and then I'll get to that.
A method of dumping the game can make things go faster.
There isn't a method discovered yet to dump data to the memory card for every game, so I use the pause method that works for all games.
This is all I have tried so far that works perfectly:
1. First bytes scan, equal to scan type. I didn't try the other ones, but they should work perfect.
2. Extra bytes scan, "keep if value didn't change, keep if value decreased, keep if value increased". I didn't try the other ones, but they should be perfect.
3. Reset Currently Selected Result
4. Cycle Through Results
5. Apply Old Value
6. Get Address
I am setting this up so you can change the value to compare to for the first scan (including the extra value for the range scan), can change the value for the extra scan for the increased/decreased by X amount scan, and the get address value to AND with the address of your result. You can also change the scan types while playing.
These are the few things that change from game to game:
1. enable code. I use the JAL in the scesifsendcmd function for every game, it looks identical for every game. Many enable codes are already that address. You can find it easy with PS2Dis and labelmates.
2. the jump to my function (Add "0c" to the JAL in scesifsendcmd to replace the jump return)
3. 2 lines for the joker.
4. 2 lines to switch between the 2 scan types for extra bit scans.
That's only 6 lines you change from game to game. You can change where you want to start scanning with the game too. The only problem is you can't turn everything on at the same time, even the you can still turn on a lot and get what you need to done.
At the moment, I'm wondering if I should make it a little less friendly on buttons to change scans. I can definitely save many lines if I change it so people would need to change 1 line to change to a scan.
I feel proud, it worked. After nearly a whole day of yelling at my TV, which had no effect on making things work, I finally fixed it and I found the lives address for Twisted Metal Black.
Now I need to test the bit scans tomorrow, and if they work, rewrite the thing to make it completely compact, test again, and give it to everyone else with instructions.