PS2+Hacking+Tutorials

This page is a work in progress. This page uses a lot of images.

You can use the free program "Cheat Engine" to modify games. To play PS2 games on the computer, you use the program called "PCSX2". For all of these tutorials, you will need a new version (made within the last year), of PCSX2. This is a requirement.

On modern versions of PCSX2 the memory region we will be modifying is the main 32MB section of memory, that is loaded into PCSX2 as offsets: 0x20000000 to 0x21FFFFFF So offset 0x20000000 would corespond the to raw PS2 of 0x00000000 Offset 0x21234567 would be PS2 offset 0x01234567 A simple trick to go from CE to PS2 is to turn the first 2 into a 0 0x21212345 0x01212345 A simple trick to go from PS2 to CE is to change the first 0 in to 2 0x015AF123 0x215AF123

Here is a picture from the PS2 game "Barnyard". I used cheat engine to make the mule much bigger as seen in this picture: Here is the image showing what I changed in Cheat Engine:

The numbers hilighted in read were the values "00 00 80 3F 00 00 80 3F 00 00 80 3F" But I had changed them to "00 00 80 40 00 00 80 40 00 00 80 40" This made the gray mule leaning against the barn bigger.

Notice that before the change we notice there are the following bytes near the top: 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 80 3F 50 01 CC 01 3F 00 00 00

This appears to be a pattern, however the bytes "50 01 CC 01" look like there are pointing to an address (PS2 address 0x01CC0150 Cheat Engine address 0x21CC0150), when can guess that a 4byte integer is an offset (though this is sometimes false, and also does not give us all addresses) if the offset that the address is contained on, begins on a multiple of 4, and the address itself is also a multiple of 4, Further more since PS2 addresses take at most (at least for the main memory) the value 0x01FFFFFF be can ignore ones that take a value higher then that.

So it looks like 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 80 3F "Address" 3F 00 00 00 is a pattern. We can test this out by doing a "Array of Byte" search for the following: 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 80 3F * * * * 3F 00 00 00

In my case this returns 229 results. So we have a lower bound of 229 different objects. We can confirm this by using cheat engine to add to search results to the code list, then we change the type of all of the results to "12 Array of Byte" because we are only seeing if the size of characters is affected. When then change all of the 229 results of 00 00 80 3F 00 00 80 3F 00 00 80 3F Into 00 00 80 40 00 00 80 40 00 00 80 40

Here are the before and after pictures (ignore the fact that the background is a little glitchly)

Before:

After:

As we can see it made the pig character bigger (and also several other characters not seen in the picture) but the gray cow, on the left is still regular size. Thus while searching for the string: 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 80 3F * * * * 3F 00 00 00 Leads us to addresses that change the size of many characters, it does not change all of them. However this is still a very good start because it allows us to easily determine at least one location of memory for some characters which will be helpful to find more patterns, and other types of data to edit.