Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Questions about using Debug Disassembly
11-03-2014, 01:53 PM (This post was last modified: 11-03-2014 01:53 PM by LunaMoo.)
Post: #8
RE: Questions about using Debug Disassembly
Let's look at this example:
   
As you can see before 0x8804000 there are only 0's, you'll not make any pattern for aob scan from there, so that's why I'm using pattern from 0x8804000, I then set a label where the result of aob scan points in my script, when I add any entry to cheat table, I want it then to look like "label+CW cheat address", so I don't have to convert anything, but just use the second part of the address as CW cheat if I ever would need it and add 0x8800000 to it, to get psp address for the debugger.


.7z  Example AOB Scan Script.7z (Size: 728 bytes / Downloads: 575)
In that example cheat table, you'll see a simple aob scan script which sets the label, and entries which uses this label as a pointer, example cheat address there is "memoryS+5B155C" which in CW cheat would be just 0x5B155C. Also to remember when creating cw cheat, you also have to keep it's own format, in all cw cheats(except next lines of multi-line cheats), first number before the address is used to point into cheat type, in case of 32 bit write it would be 0x2, so in cw cheat the line with that cheat would look like "_L 0x205B155C 0x*value*".
It's real psp address, which is used in debugger(and also some other cheat formats used in some plugins for real psp) would be 0x5B155C + 0x8800000 = 0x8DB155C.
   
I could directly edit it in disassembly, using it's memory viewer at the bottom(which is also usefull for modifying opcodes slightly when we don't want to replace them completely).

Or add new memory breakpoint for it to check what functions read, write or both into that address(for writing, you can also check "On change"), which is really usefull for most common cheats like god mode, but pretty much any other ones as well which aren't just "edit once and forget" since you can basically change how the game works.
   
To set it you either right click in an empty space under "Breakpoints" tab and add new which get's the window from above or which I often do, double click on it in disassembly above, then right click on it in breakpoints and choose "edit" to change it to memory
   
since double clicking sets an execute breakpoint and at this point we don't actually look at game code yet.

From things worth mentioning about breakpoints, you can set much bigger size of a memory breakpoint, which is usefull for some things, like maybe finding code that reads or writes some graphic address you got from GE debugger or bigger table of items in game memory, and when using execute breakpoints, you can also set a condition, very usefull when the same function is used for lots of other things and stops all the time when you want it to only stop when for example a0==0 etc.

http://forums.ppsspp.org/showthread.php?tid=6594 - Custom PPSSPP Shaders!
http://forums.ppsspp.org/showthread.php?tid=3590&pid=117172#pid117172 - simple CE scripts to help creating CWCheats,
https://github.com/LunaMoo/PPSSPP_workarounds - CWCheat workarounds.
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: Questions about using Debug Disassembly - LunaMoo - 11-03-2014 01:53 PM

Forum Jump: