Emulator Issues #13686
open[JIT] Register values are stale when evaluating conditional MBP
0%
Description
Game Name?
Mario Golf: Toadstool Tour
Game ID?
GFTE01
MD5 Hash?
5fd9909e73df7fb704d2e443e17346b5
What's the problem? Describe what went wrong.
A memory breakpoint is breaking when the condition is false.
What steps will reproduce the problem?
Proceed past the main intro sequence and to the title screen. Place a write breakpoint on memory address 802D7C8C with the condition: "r3 != 0". The breakpoint will then break on the next frame, despite the value of r3 being 0 when the instruction writing to the memory location is executed.
The instruction it breaks on will be 8001E910 stw r3, -0x7BD4 (r13). The value of r3 will be 0.
Inspecting logs displays a contradiction:
59:36:711 Core\PowerPC\Expression.cpp:491 N[MI]: Breakpoint condition returned: 1. Vars: r3=1
59:36:711 Core\PowerPC\BreakPoints.cpp:395 N[MI]: MBP 8001e910 ( --- ) Write32 0 at 802d7e8c ( --- )
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Yes. 2412-8
Is the issue present in the latest release? For future reference, please also write down the version number of the latest release.
Yes. 2412
If the issue isn't present in the latest release, which is the first broken version?
Bug has been present ever since conditional MBPs were implemented (5.0-18019).
What are your PC specifications? (CPU, GPU, Operating System, more)
Core i9 12900h, RTX 3070 Ti Laptop GPU, 40GB Ram, Windows 11 23H2.
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
Dual core was disabled for all testing.
I tested using the Interpreter (slowest) option for CPU emulation engine, and encountered the same behavior.
Files