Emulator Issues #8068
Invalidate JIT blocks that are modified by cheats
All Games (tested with The Legend of Zelda: The Wind Waker)
What's the problem? Describe what went wrong in few words.
JIT Blocks are usually not invalidated if they are changed by cheats, so cheats that modify already recompiled code won't work at all.
What did you expect to happen instead?
The cheats should invalidate JIT blocks that are modified by the cheats.
What steps will reproduce the problem?
1. Write a simple cheat that modifies parts of the game loop based on some condition (controller input)
2. Use the cheat to conditionally modify the game loop
Dolphin 3.5 and 3.5-367 are old versions of Dolphin that have
known issues and bugs, so don't report issues about them and test the
latest Dolphin version first.
Which versions of Dolphin did you test on?
Does using an older version of Dolphin solve your issue? If yes, which
versions of Dolphin used to work?
I don't think so
What are your PC specifications? (including, but not limited to: Operating
System, CPU and GPU)
Is there any other relevant information? (e.g. logs, screenshots,
#1 Updated by magumagu9 about 5 years ago
- Status changed from New to Accepted
- Easy set to Yes
It would be nice if you could provide an example cheat which demonstrates this issue.
This is probably a good first patch for someone looking to help improve Dolphin. The relevant code is in PatchEngine.cpp and ActionReplay.cpp; the code needs to call JitInterface::InvalidateICache whenever it writes to memory.
#5 Updated by CryZe92 about 5 years ago
This one is one of them for Wind Waker NTSC-U (GZLE01)
hold A to walk through walls/sail through islands [wiiztec]
the 04 codes write into code area, so the cheat restores the original code in the first two lines and then conditionally overwrites it with NOPs in the fourth and fifth line.