Cheating, the easy way
#1
Cheat Engine guide

Click here for conversion tutorial

what you need:
cheatengine (the one in the pictures is 5.6, but 6.0 works just as well)
PCSX2 0.9.8 (or newer)
game CRC

This template:
Code:
gametitle=(name here)
comment=(something that shows up in the console)
patch=1,EE,address,(byte/short/word),value

Quick Cheat Engine overview:
First scan: Starting value to scan for, as stated in scan type (exact,bigger than, smaller than, unknown, between two values)
Hex (checkbox): search a value in hex (you won't need this most likely)

Value type:
Quote:binary = not used with pcsx2
byte = 0-255 (byte)
2 bytes = 0-65535 (short)
4 bytes = 0-4294967295 (word)
8 bytes = 0-? (above squared, not used?)
scan options: usermode should be fine, personally have come across no issues with it. use ALL if you feel you need to

First things first, you need a goal. For this guide I've used FFX-International, and I'm looking for gil

Right now, I have 973939518 gil so the first thing I am going to do is put that number in cheat engine. it's 4 bytes, and I know the exact number so I am going to search that. (yes I made a mistake when I searched it, end result is still correct you can search more, but not less)

   

As you can see, only 2 values showed up, this is because of the amount that I currently have, it's very high, and very specific HOWEVER, we are going to continue like it is not, so we'll change out gil count somewhere (I'm going to pay off Yojimbo, quickest way to lose money) Again, I have only 2 values, so the one that changed is easy to see. Type in the new value (in my case: 773841892) and hit "next scan"

Voila, my address is found:

   

Now that we have our address, let's test it:

Double-click the address in the search you get a new small list of options for that address and value:

   

quick explination:
Quote:frozen: make this value never change
address: the location of the cheat (you'll need this in a minute or two)
type: Don't touch this (I however made a slight mistake, and shoud have used 4, not 8. but this will not usually harm your searches)
value: self explanitory

ok, so let's change that value, and make sure our code works:

   

sure enough, it does, we have out location. now it's time to make our patch

This shows up if there's no file to cheat with in PCSX2 and cheats are enabled: No longer appears in newer SVNs
Code:
[wx] can't open file 'cheats\658597e2.pnach' (error 2: the system cannot find the file specified.)
Cheats not enabled? it's still easy to find. Look in the console when you start the game:
Quote:(IsoFS) Block 0x10: Primary partition info.
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLPS_250.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
(IsoFS) Block 0x10: Primary partition info.
Initializing Elf: 4730008 bytes
ELF (cdrom0:\SLPS_250.88;1) CRC=0x658597E2, EntryPoint=0x00100008
(IsoFS) Block 0x10: Primary partition info.
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLPS_250.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
Well, now we have our CRC (658597e2) so it's time to make our patch. This is what it should look like:
Code:
gametitle=Final Fantasy 10 International
comment=Infinate Gil
patch=1,EE,2031CE98,word,1DCD6500
This is a great place to make use of the "Hex" checkbox, input the value you wish to convert, check "Hex" and cheat engine will do the rest, paste the value into your patch file.

name this file 658597e2.pnach and put it in the CHEATS folder of pcsx2 (also be sure to enable cheats in PCSX2's Gui)

lastly all you have to do is run your game, and the cheats will apply on their own.

In QUICK review:
Quote:1: set your goal
2: find out what it is at the current time (don't know? search unknown)
3: change value to narrow down options
4: search the change
5: repeat 3 and 4 as needed
6: test code
7a: worked? make a patch of it
7b: failed? start over again or test another address that shows up.
8: save to PCSX2/cheats/
Happy Cheating!
____________________________________________________________________________________

Conversion Tutorial:



What you need:
cheats you want to convert
a common code between 2 regions (MUST work for its respective region)
a hex calculator (for windows users: ALT + 3 when calulator is open. also choose HEX, not DEC)

NOTE: if the address exceeds FFFFFFFF, or below 00000000; Give up, and search it yourself

Games that are ported usually do NOT work. Find another region, not another system (in fact the one I started using does not work as I remember it working.)

There are some special instances, here are some PERSONAL notes I made for the .hack games (I'm sharing them for the first time here):
Code:
//Conversion Values: infection > mutation: mutation(h)DC400  (mutation is higher)
//conversion factor inf > out(h)= 43100 (Outbreak is higher)
//conversion out(h) > qua= 103480 (Outbreak is higher)
This game is special, in itself it has a conversion factor to let you continue through the games. what I did here was simply find that value. It's special, but the method we are about to apply still exists.

Ok, so on to the Tutorial:

First thing you need is a game and some values that match up. I'm going to use 3 games: FFX-NTSC U/C, FFX- PAL-E, and FFX International - NTSC J

I'm not going to go through explaining how to find these, I have done so above so here are the addresses for Gil for each game:

Quote:NTSC U/C: 0031A028
PAL-E: 0031D218
ITL: 0031CE98 (yes, I knocked off the 2 and replaced it, it works either way)


an old note of mine you can find on the forum:
"NTSC U/C + 31f0 = PAL?" (posted before testing, DOES work)
and here's a new one:
"NTSC U/C + 2E70 = ITL"

Now to start converting some codes:

I pulled a US patch for FFX form the forum, credit to aznboix for these codes. (I trust they work, I have not tested them)
Quote://Max HP/MP/Limit Break (All Characters)
patch=1,EE,001BE130,word,AFC60004
patch=1,EE,001BE170,word,AFC60008

//Max All Items (Upon Usage/Buying)
patch=1,EE,001BEC38,word,0806EFFE
There are more, but I'm not converting all of them.

So first PAL-E version:
Quote://Max HP/MP/Limit Break (All Characters)
patch=1,EE,001C1320,word,AFC60004
patch=1,EE,001C1360,word,AFC60008

//Max All Items (Upon Usage/Buying)
patch=1,EE,001C1E28,word,0806EFFE
And the ITL version:
Quote://Max HP/MP/Limit Break (All Characters)
patch=1,EE,001C0FA0,word,AFC60004
patch=1,EE,001C0FE0,word,AFC60008

//Max All Items (Upon Usage/Buying)
patch=1,EE,001C1AA8,word,0806EFFE
Now what did I do? it's simple:

001BE130 + 31F0 = 001C1320
001BE130 + 2E70 = 001C0FA0

Windows calculator will show "1C1320" for example. this is because the opening "00" is seen by windows as useless, add it in yourself.

That's all there really is to it.

If you have any questions on EITHER of these, post below your question and on what topic it is.(you can put simply Search or convert, it will help me and others help you better)
Reply

Sponsored links

#2
small correction

byte = 0-255 (byte)
2 bytes = 0-65535 (short)
4 bytes = 0-4294967295 (word)

byte = 8 bits, max 8 bit number is 255 (128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255)
[Image: ref-sig-anim.gif]

Reply
#3
yea, you're right there, I do have to fix that lol

fixed Smile
Reply
#4
btw. I was wondering about Debugging PS2 games.

Is there a way to translate back the PCSX2's recompiled code into corresponding PS2 (ELF) code?
I'd like to hack PS2 games by the same way as I usually do with PC games.
For example, by modifying opcodes:

Code:
"MOV DWORD PTR[???+??], EDX" to "CMP DWORD PTR [???+??], EDX"
Reply
#5
this is the wrong thread (possibly section) for that kind of question
Reply
#6
Oh, sorry. I just thought Cheat Engine also includes a built-in Debugger.
Reply
#7
it does, but it's not i the scope of this thread. And I have no clue how to use it properly lol
Reply
#8
does it matter if u point it at the process or window?

im asking as i may be initiating my searches wrong
"A celestial descends onto Earth to give advice.
Buuuut, for me they're all advice that can't be put to action."  -Tenshi Hinanawi

R5 5600x @ 3.8 GHz; 32GB 2666MHz; GA AX370-Gaming K5-CF; EVGA GTX 1070


Reply
#9
ce loads a list with all processes running, just choose the PCSX2 on the list and you'll be fine
Reply
#10
Window or process should be the same, window list will just show each individual window open by the process (main window, console log, game window) but they all point to the same process anyway.
Core i5 3570k -- Geforce GTX 670  --  Windows 7 x64
Reply




Users browsing this thread: 2 Guest(s)