PCSX2 1.7+ Cheat Engine Script Compatibility
#31
The fixed version is the one I uploaded. The original one that was mentioned in this tutorial was FILLED to the brim with typos that made everything not work. As for making the emurpm settings automatically apply, that's probably possible to do with LUA, I just don't know how to do it.
Reply

Sponsored links

#32
(11-19-2022, 03:28 AM)goody_fyre11 Wrote: It has been figured out!  A talented Sly modder figured out that the emurpm.lua and emurpm.frm files had lots of typos and incorrect lines, fixing them completely resolved the issue, here's a fixed copy of those you won't find anywhere else:

https://drive.google.com/file/d/10x7XA3F...share_link

These are open-source Cheat Engine files before anyone questions why I'd dare put a download link in these forums, these just have typos and mistakes fixed.

Is it possible to convince the person to create a Pull Request to CE's Github to update both emurpm?
Nevermind... on my Windows 10 PC, CE's Github version works better than the sly one.
Reply
#33
Updated my first post for avoiding confusion over the number of digits; the upper two bytes are now Red and an explanation about it has been added.
Reply
#34
Ok, I am having a WEIRD time with this.
None of this is making any sense. I simply cannot get cheat engine to even scan the REAL EEmem memory region.
The REAL EEmem region is logged by pcsx2 in the console.


   

Cheat Engine is SAYING the eemem is here

   

but in order to get the the real ps2 memory, I have to search the regions pcsx2 logged into the console, but I can't. Cheat Engine says this when I try to scan that region
   

I can ADD individual addresses of that region, as you can see, the 8672 value is the amount of Gil I have in the FFX iso running in pcsx2, so I KNOW what is the right region to look at. But Cheat Engine simply cannot search it with the basic scanner (it can browse the region just fine in memory viewer), even though the region is not protected, as seen here.
   
See? Perfectly Read/Writeable memory, but it can't search it.

Can anyone tell me why
pcsx2-qt.eemem is not what the pcsx2 console log says it is?
cheat engine cant scan this region?


Holy hell I am at a total loss. So thank you to anyone who can help me.
Reply
#35
(07-22-2023, 07:44 AM)mercuito Wrote: Ok, I am having a WEIRD time with this.
None of this is making any sense. I simply cannot get cheat engine to even scan the REAL EEmem memory region.
The REAL EEmem region is logged by pcsx2 in the console.




Cheat Engine is SAYING the eemem is here



but in order to get the the real ps2 memory, I have to search the regions pcsx2 logged into the console, but I can't. Cheat Engine says this when I try to scan that region


I can ADD individual addresses of that region, as you can see, the 8672 value is the amount of Gil I have in the FFX iso running in pcsx2, so I KNOW what is the right region to look at. But Cheat Engine simply cannot search it with the basic scanner (it can browse the region just fine in memory viewer), even though the region is not protected, as seen here.

See? Perfectly Read/Writeable memory, but it can't search it.

Can anyone tell me why
pcsx2-qt.eemem is not what the pcsx2 console log says it is?
cheat engine cant scan this region?


Holy hell I am at a total loss. So thank you to anyone who can help me.

I think I know how to help you. The problem is that while you have [eemem] enabled in Emulator Memory > Set Base Address, you are unable to search for codes no matter what range you set in Memory Scan Options (Start/Stop). This seems to be the part you were confused about. It seems that you were trying to search for 1.7 codes with [eemem] still enabled under Set Base Address. You have to go back into Set Base Address delete that and hit (Re) Set - Address again if you want to search for 1.7 codes.

As we've learned, putting [eemem] in Set Base Address (with 0x02000000 in size of memory) and clicking (Re) Set - Address is what allows you to load your previous 1.6 codes (after you subtract 20000000 from them, so they're 00000000 - 02000000 instead of 20000000 - 22000000) while running 1.7. But when that [eemem] is enabled in Set Base Address, it seems that you cannot search for codes at all in 1.7 no matter what the range is.

So what you need to do when you want to search for codes in 1.7 is either restart Cheat Engine so that Set Base Address returns to default, or you can switch back and forth if you go back into Emulator memory > Set Base Address and delete [eemem] from there, then hit (Re) Set Address again. When you do that, any 1.6 codes you have in your list will naturally stop working (they can remain in your list of codes but they'll all turn to ???s) but then you'll be able to search for codes in 1.7.

Now, when you search for codes in 1.7, you'll want to specify a range that captures only the useful codes for the PS2 game you are playing. On 1.6 it was 20000000 - 22000000, on 1.7 with [eemem] enabled in Set Base Address, that 20000000- 22000000 range from 1.6 became 00000000 - 02000000 in 1.7. But with [eemem] disabled in Set Base Address, when searching for new 1.7 codes on 1.7, you need to find that 0 - 2000000 range within the new 1.7 addresses so you can narrow your search results to what you were used to when searching for PS2 codes on 1.6. But of course that range won't work when searching for new codes in 1.7. So you need to find the new address that the eemem, or the normal 1.6 range starts and ends in 1.7. This is the hard part, and it can be confusing, but I'll explain how I did it.

So how I do this is (with [eemem] once again enabled in Set Base Address so your 1.6 codes are working again) I find the 4-byte value (in hex) of the first code of the 1.6 range, so anotherwords the 1.6 address "00000000" with the game running. So anotherwords, the first 4-byte value that exists in the eemem can be found by having [eemem] enabled in Set base address (while on 1.7) by adding 00000000 to your list as a 4-byte address (in hex). This signals the beginning of the normal 1.6 range that we were used to before 1.7. That value of the 1.6 address 00000000 can be used to find the beginning of your 1.7 range when you're back searching for 1.7 codes. So copy that value of 00000000 with [eemem] enabled in Set Base Address and then search for that value after you delete [eemem] from Set Base Address and click (Re) Set Address (which turns your 1.6 codes off again) and allows you to search for codes on 1.7, then you'll use the 4-byte value (in hex) from the 1.6 00000000 address, and you search that specific 4-byte value (in hex) and find it in your list of 1.7 address. (and make sure it starts with 7FF....they may be some before it, it's usually the first or only 7FF address that comes up that signals the start of your normal 1.6 range in 1.7)

So when you find the 1.7 address of that value, you'll have that's the beginning of your 1.7 "eemem" range. So you'll have your "1.6" "00000000" code for the game you're running, it'll be 7FF....something that you found when you searched its value and then you can specify your range as "7FF....something" to "7FF...something+02000000". Then you have your Start Stop ranges, and you can start searching for codes that way in 1.7.

So with your newly found "00000000" - "02000000" range of 1.7 codes ("7FF...something" to "7FF...something+02000000") you can put that new range into the Start / Stop ranges (with [eemem] still disabled in Set Base Address so you can search for 1.7 codes) and when you find new codes starting with your newly found 7FF range, you can either convert your newly found codes to the new 1.6 format by subtracting them by "7FF...something" (your newly found Start address) which would put them back into the 00000000 - 02000000 format for use if you re-enable [eemem] in Set Base Address, and then you can add the converted codes your 1.6 list and load them all at once with [eemem] in Set Base address enabled OR you can try to convert any 1.6 codes you have to the newly found 1.7 range by adding "7FF...something" (your newly found Start address) to them. Either way should work, depending on if [eemem] is enabled or not in Set Base Address.

Note that the 1.7 codes for a specific game on a specific PCSX2 QT build probably won't change every time you load up PCSX2 and Cheat Engine once you've found them, but if you switch to a different PCSX2-qt build or if you play a different game, the 1.7 ranges might change. But in my experience, while playing the same game on the same PCSX2-qt build, my recently found 1.7 code addresses did seem to stay the same each time. So that was a relief.

I hope this explanation helps you or anyone else confused by this process. Because it can be confusing, as searching for 1.7 codes after you got your 1.6 working doesn't seem to work, and that wasn't really explained by anyone that you had to then disable [eemem] to search for new 1.7 codes. And then you can confirm your 1.6 codes to 1.7 by adding or subtracting the Start address of your newly found 1.7 range. Finding a way to locate the new 1.7 range based on the first 4-byte value from the 1.6 range, then searching for it on 1.7, was the key for me to complete the process. So now I'm up to speed on how to load my 1.6 codes on the recent qt builds and how to find new 1.7 codes with the 1.6 / eemem range by finding the first 4-byte value based on the 1.6 address 00000000. This may or may not be how other people search for codes in 1.7, but I haven't heard anyone explain how they discovered the new 1.7 range, so I had to learn how to do it myself.

And by the way, on the latest versions of Cheat Engine, emurpm.lua and emurpm.frm are not included, and when I tried using the latest git hub versions of emurpm.lua and emurpm.frm as suggested by someone, I got an error. They did not work. The only way I've got the Set Base Address process to work was by using the versions of emurpm.lua and emurpm.frm uploaded by goody_fyre11.

So thanks again to goody_fyre11 for posting those and for everyone who has investigated this issue. I really hope this post helps anyone like yourself still struggling with the process so you can not only load 1.6 codes on 1.7, but also find the correct range to search for codes on 1.7, so that from there you can convert your 1.6 to 1.7 and back to 1.6. It can be very confusing, but I think I finally figured out how to do it. If anyone is still having trouble with this or has questions about my instructions, please let me know and I'll be glad to help.
Reply
#36
I just want to add a note to my previous post. In my above post, I explained that you are unable to search for codes on 1.7 while you have your 1.6 codes loaded (-20000000) on 1.7 by having [eemem] enabled in Emulator Memory > Set Base Address.

To search for codes on 1.7, you would have to either re-start Cheat Engine or go back into Emulator Memory > Set Base Address, then delete [eemem], then click (Re) Set - Address again. And then the problem becomes that you're no longer on the 1.6 range so you would have to (as I tried to explain) establish a 1.6-like range on the new 1.7 addresses.

And even if you find codes on 1.7, you then would have to try to either convert them back to your 1.6 code list (-20000000) that you're using on 1.7, or trying to use the new 1.7 address permanently and convert your 1.6 codes to that. Well, in my experience, I found it more confusing than originally thought to not only establish a 1.6-like range on 1.7 codes, but then to retain the 1.7 addresses that you found and have a reliable set of permanent 1.7 codes. At times it seemed like the 7FF addresses stayed the same (when on the same build while playing the same game) but other times they seemed to change randomly.

So long story short, I have come to the conclusion that it's probably better to avoid searching for codes on PCSX2 1.7 at all, as it can be very confusing to find or retain codes while searching on 1.7.

After much consideration, my recommendation at this point is to use an older build (with the traditional 20000000 - 22000000 range) to search for codes and then once you find new codes, then simply subtract -20000000 from your newly found codes and add it to your 1.6 list (-20000000) that you're able to load on 1.7 via Emulator Memory > Set Base Address / [eemem].

So, I'm not even trying to find new codes while running 1.7 anymore. It seems to me that it's just too confusing and time consuming to try and do it that way. I'm simply using the procedure outlined in this topic to load my 1.6 codes while 1.7 is running, after subtracting 20000000 from them. And when wanting to find new codes, I'm using an older widget build from 2020 (I'm using 1.5.0-dev-3400) to search for codes with the traditional memory range of 22000000 - 20000000.

It may seem counter productive to use an older build to search for codes, but this seems to be the easiest and most efficient way to manage your code lists given the situation. So I would recommend to anyone to use an older build like 1.5.0-dev-3400 to search for codes, subtract them by 20000000 then load them up on the current QT builds by the procedure outlined in this topic. I hope this helps anyone trying to find the best and most efficient way to code search and get them to work on 1.7.

I would be interested to know if some of you are able to search for codes effectively on 1.7. I'm just letting you know what seems to work best for me, by using an older build to search for codes, in case anyone is having issues trying to search for codes in 1.7.
Reply
#37
is this process necessary for just using the CE to search any value at all on PCSX2 nightly version?
Reply
#38
(10-24-2023, 07:38 PM)jamesbai03 Wrote: is this process necessary for just using the CE to search any value at all on PCSX2 nightly version?

This process, in my experience at least, actually prevents you from being able to search any value, as it gives an error when trying to search for values once you enable this process. And when you search for a value on the PCSX2 nightly version without this process enabled, then you end up with different code addresses that, in my experience at least, aren't usable as "permanent" code addresses like they were on 1.6.

So if you just want to search for values on the PCSX2 nightly version, you can do so freely. And you may find some useful codes. But the problem is, once you find those codes, those newly found addresses may not work after you close PCSX2 and then re-open it, or if you update to a new nightly version. The other problem is that it's a challenge to search for codes within the narrow (20000000 - 22000000) specific range that was standard on 1.6.

So if you do search for codes on the PCSX2 nightly version, without knowing exactly where the normal 1.6 range (20000000 - 22000000) starts and ends in the new codes, it's a longer more tedious process to actually narrow down your code lists. And the codes you find may not stay permament.

So in my experience, and which was what I was getting at in my previous post, is that it seems that the best way to manage codes on 1.7 is to actually use an older PCSX2 1.6 build to search for new codes, and to add those codes to your 1.6 list, then subtract those codes found on 1.6 by 20000000 then use this process to load your 1.6-adjusted codes on 1.7.
Reply
#39
UPDATE : For some reason, I am now able to search for codes on PCSX2 1.7 with [eemem] and 0x02000000 enabled in "Set Base Address". When I tried to search for codes previously with those enabled, it wouldn't work (I would get an error). I'm not sure exactly why it works now and didn't before, but I seem to have done something to make it work. With this working, I no longer need to use an old version of PCSX2 to search for codes. I can now search for new codes within the 00000000 - 02000000 range on PCSX2 1.7.
Reply
#40
All you have to do is enable an option in Cheat Engine that is disabled by default -> Edit -> Settings -> Scan
Settings -> MEM_MAPPED. And for debugging you have to use DBVM-level debugger -> Edit -> Settings -> Debugger Options -> Use DBVM-level debugger, which may be dangerous for the system so proceed with caution
Reply




Users browsing this thread: 3 Guest(s)