Replies: 1 comment
-
See here #1076 (comment). You can make a bp callback that simply prints PC and resumes execution. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
A logpoint is like a breakpoint BUT instead of pausing the game the value of the PC is printed and can be seen in the Logs window.
There are situations where logpoints are better than breakpoints.
For example if there is a
lw
instruction that reads some address every 1 millisecond then adding a read breakpoint at this address will cause the game to pause every 1 millisecond and this make the game unplayable and I won't be able to find anotherlw
instructions that read from this same address on certain conditions.In this example I will prefer to use a read logpoint instead that doesn't pause the game when triggered, do what I want to do to make another
lw
instructions read the address and find them in the Logs window.For example if the system of a game reads the elapsed time every 1 millisecond to be used with some function that I am not interested to hack and the value of the elapsed time is used again when finishing a level to display it on my screen and calculate my final score then there is another
lw
instruction that reads the elapsed time but only when finishing a level.I can use the memory observer to find the address of this elapsed time but adding a read breakpoint will cause the game to pause every 1 millisecond and I can't finish the level because of this.
In this example I will prefer to add a read logpoint instead just before I finish the level, then finish the level, either disable or remove the read logpoint and find the
lw
instruction that read the elapsed time when finishing the level in the Logs window and assemble it to ali
ormove
instruction to make the game think that I finished the level in 0 seconds and get a very high score!Cheat Engine's "Find out what accesses this address" is very similar to this feature request but unlike "Find out what accesses this address" read logpoint should NOT print any
sb
,sh
orsw
instructions that write to the address but onlylb
,lbu
,lh
,lhu
orlw
instructions that read from this address.A write logpoint should be used to print any
sb
,sh
orsw
instructions that write to the address and it is more similar to Cheat Engine's "Find out what writes to this address".Meanwhile a workaround for this problem is to assemble the problematic
lb
,lbu
,lh
,lhu
orlw
instruction with ali
ormove
instruction so the game won't pause again 1 millisecond after it was resumed but this instruction change might have bad consequences that could break the game and a load state will be necessary to fix this or even worse either soft reset or hard reset if save state was not used at all.Another possible, better and even right solution to this problem is to add an execute NoBreakpoint on this problematic
lw
instruction to prevent the read breakpoint from pausing the game but only when this specificlw
instruction is executed as discussed on the "Event Finder" feature request https://github.com/grumpycoders/pcsx-redux/discussions/1056 but NoBreakpoints are not implemented in PCSX-Redux unfortunately.For advanced users you can also add "Log on execution map", "Log on byte read map", "Log on half read map", "Log on word read map", "Log on byte write map", "Log on half write map" and "Log on word write map" buttons to the Breakpoints window.
"Log on ... map" is like "Break on ... map" BUT the value of PC is printed to the Logs window instead of pausing the game.
Beta Was this translation helpful? Give feedback.
All reactions