forums.PPSSPP.org
PPSSPP debugger issue? - Printable Version

+- forums.PPSSPP.org (https://forums.ppsspp.org)
+-- Forum: PPSSPP - Playstation Portable Simulator Suitable for Playing Portably (/forumdisplay.php?fid=1)
+--- Forum: Development (/forumdisplay.php?fid=3)
+--- Thread: PPSSPP debugger issue? (/showthread.php?tid=22983)



PPSSPP debugger issue? - eatrawmeat391 - 05-16-2017 01:59 PM

Hi there I'm eatrawmeat391,

I have been recently got into ASM hacking, I used PCSX2dis as a disassembler and was able to make useful codes.Because my favorite game,SVR 2011, stores dynamic address in a register so a simple pointer write code won't work(since the address which store that dynamic address is dynamic as well).With PCSX2dis I was able to set a Read and write Breakpoint on the address and change the ASM code that manipulates the data.

Recently I dived into PPSSPP's ASM hacking since they have the same CPU architecture.I opened up PPSSPP disassembler (CTRL-D) and was very surprised.First,most of the registers are shown as "DEADBEEF",and the Memory View are all filled with "??".Also when I stopped the game,the register's value isn't updated until I stepped through it.

I found my address in Cheat Engine as "0x0A4A1D64",I then selected the nearby data and dumped the RAM in the disassembler (since memories are all shown as '??',the only way it could show data is if I press "Go to Memory View" in the instruction addresses but I can't do it for data address).I searched the nearby data in the RAM dump and found the offset in the RAM as "0x008A1D64".The value is 0 whenever you haven't made your selection,and 1 whenever you confirmed your selection so I'm sure the game wrote and read from it.I then set a Breakpoint on "0x008A1D64",size 0x000001 (tried 0x04), during Write.But when the value get rewritten,the game didn't break at the instruction that store it.The data is still shown as '??' on data view.I also tried setting Read Breakpoint but no help.

I found out that instruction that wrote to that address in PCSX2dis by setting a write breakpoint on the dynamic address.Then whenver the value gets updated,it would break and showed me the instruction which I could manipulate as I wish.And also PCSX2dis showed all register and data value.

I tried with version 1.4,1.3,0.9.8 but still had the same issues.It wasn't only I that got the same problem because my friend also had it.Or if we did things the wrong way?


RE: PPSSPP debugger issue? - LunaMoo - 05-16-2017 08:18 PM

PSP ram starts at 0x08000000, with first 8 mb being reserved for kernel. And since psp had only 32 mb of ram you're only interested in 24mb that follows, unless it's HD remaster, prototype or a homebrew using "MEMSIZE" flag since those will get double.
Address you get in PPSSPP using CE is NOT a PSP address, so when you're trying to look that up in PPSSPP disassembly(neither "0x0A4A1D64" nor "0x008A1D64" lies within PSP ram that's for sure;p), it's your problem and definitely not disassembly issue. Also "DEADBEEF" is normal thing to see for example after returning from a syscall or stopping at idle thread or whatever, which randomly pausing will often lead to.


I would recommend checking my cheat table with simple scripts(linked in the signature) that makes using CE with PPSSPP noob friendly, or just use search as you definitely aren't first person making silly assumptions based on past experience with less optimized emulators.