That should work some of the time but I don't think it always works exactly like that. I'll use the frame rate address from this game as the example. I set address 803988a0 as a memory breakpoint and in the log, I get MBP 80048174 (waitRetrace__11DGXGraphicsFv sysDolphin.a dgxGraphics.cpp) Read32 00000001 at 803988a0. We see that the function waitRetrace__11DGXGraphicsFv is reading the value at that particular address and it's that same value you change to 00000002 to get 30fps. Address 803988a0 is not an address we will find in the .map file. Let's say we only knew that the frame rate had something to do with function waitRetrace__11DGXGraphicsFv and we didn't know about address 803988a0. Would we be able to find that address by checking out just this function? I would say yes, but I don't know how to do it aside from setting a memory breakpoint range of 80000000-817FFFFF and searching for a value that traces back to that function. I'm not so sure you could mess with the frame rate by changing values in waitRetrace__11DGXGraphicsFv. The JIT Block Viewer could be useful if you understand the information it gives, which I don't. In Pikmin 2, the frame rate code is from one of the values in the list of functions and doesn't read from some other address like the Pikmin 1 example I used here.
As for using Virtual or not, I really don't know for sure. I just use the regular address.
Note that I only explain this as I see it. Some of what was said could be a little off.
As for using Virtual or not, I really don't know for sure. I just use the regular address.
Note that I only explain this as I see it. Some of what was said could be a little off.
