Because it's fun looking for ways to cheat the games other then already made cheats, and besides it opens up the possibility for altering virtually any aspect of the game and ability to write trainers. ArtMoney has lots of cheat tables for games in PCSX2, I just couldn't find GTA San Andreas. Mar 27, 2019 Select pcsx2 in the process list I'm not the creator of this table and I have a very minimum experience with CE credits goes to the maker, oyyzj Persona 3: added Persona Customization slot to 10. Click the PC icon in Cheat Engine in order to select the game process. Keep the list.
PS2 Patch Engine is a tool designed to embed both static (ELF) and run-time (memory) patches directly into PS2 disc images.
Patches can provide widescreen support as well as controller remapping
PS2 Widescreen Patch Archive
PS2 Controller Remapper
Images may be in .iso, .img or .bin format, .bin images can also be converted to .iso.
Not all games will work but, based on analysis, compatibility should be better than 95%.
Patched images are compatible with both PS2 emulators and real PS2 hardware and have been tested with PCSX2, OPL, ESR discs and the PS3's PS2 Classics emulator.
How to use it
Opening an image
- Drag and drop the .iso/.img/.bin file or click 'Browse'
- Drag and drop, copy and paste or click 'Browse' to add patches
- Patches can be in either RAW (unencrypted) or PNACH (PCSX2 cheat file) cheat code format
- Not all cheat code types are supported!
For RAW: Code types 0, 1, 2 are supported
For PNACH: 'word, 'short', 'byte' as well as 'extended' types 0, 1, 2 are supported
- Selecting the 'RAW Code' radio button interprets patches in RAW format
- Selecting the 'PNACH' radio button interprets patches in PNACH format
- Selecting the 'Autohook' check box enables automatic Mastercode determination
Unless patches are not working for a particular game this option should be left enabled
If 'Autohook' is disabled the following dialog will appear when applying memory patches to a game
- Mastercodes must be in RAW format and must begin with '9' (9 type 'hook' Mastercode)
- Enter one or more Mastercodes and press 'OK' to continue
- In case of an error one of the following error messages will appear- 'No valid Mastercodes'
No valid RAW codes were entered - 'Unsupported Mastercode type'
A RAW code with a type other than '9' was entered - 'Unable to validate Mastercode'
One or more of the Mastercodes provided is either incorrect or the address referenced by the hook cannot be found in any executable (ELF) on disc.
Some Mastercodes which will work on CodeBreaker or ps2rd may still report this error.
- 'No valid Mastercodes'
- Click the 'Patch' button to create a new patched image
- If a game contains multiple executables (ELFs) and a patch can be applied to more than one executable then one of following dialogs will appear
Clicking 'Remember selection' will supress future prompts where the selected options are available - A 'Save As' dialog will appear asking for the file name of the new patched image
- If the image format is .bin selecting 'ISO image' in the 'Save as type' drop down or changing the extension to .iso or .img will convert the image from .bin to .iso format
- The following dialog will appear and a new (patched) image will be created, press 'cancel' or close the window to cancel the operation
- This was a ton of work (10,000+ lines of C) so I'm hopeful that it finds some use.
General FAQ
- 'It's asked me a question..what do I do?'
- If no patch format is selected or no valid patches were found then one of the following dialogs will appear
Clicking 'Yes' will create an unmodified copy of the image (although the image format can still be converted from .bin to .iso)
- If no patch format is selected or no valid patches were found then one of the following dialogs will appear
- 'I got an error..what does it mean?'
One of the following errors may occur immediately after clicking 'Patch' or after selecting executables to apply patches to- 'Unable to embed engine'
Either no Mastercode was found (with 'Autohook' enabled) or PS2 Patch Engine was unable to locate the resources neccessary to embed a real-time patch engine - 'Too many patches to embed'
PS2 Patch Engine can embed more than 100 patches per-executable into most games (the actual limit varies from game to game but the absolute maximum is 160), this error indicates that the number of memory patches exceeds the game's patch limit.
Note: While there is no explicit limit on the number of ELF patches that can be applied the total number of applied patches is limited to 1024; patches after 1024 will be ignored. - 'Patch list contains unsupported cheat types'
Not all cheat types are supported - see the Using patches section above - 'Patch list contains misaligned writes'
Patches can only be applied to addresses which are aligned to their data size - this is a restriction imposed by the Emotion Engine (and nearly all CPUs)
- Patch type 0 (byte) can use any address
- Patch type 1 (short) can use any even address
- Patch type 2 (word) can use any address which is a multiple of four
- 'Unable to embed engine'
- 'What's the compatibility like?'
PS2 Patch Engine should work for the vast majority of PS2 titles, but there are some that are known to be incompatible- Metal Gear Solid 3Apparently loads executable code from somewhere on disc that is not in an ELF file..maybe
- Red Dead RevolverThe executable uncompresses and/or unencrypts itself when it loads which makes offline analysis impossible
- Destroy All Humans 1 & 2
- Metal Gear Solid 3
- 'This patch works perfectly in PCSX2 and/or ps2rd but it doesn't work with this!'
Some patches are meant to be applied at run-time (rewritten constantly) while others can be written once directly into the game's executable.
If the address specified by a patch falls into the memory range that an executable occupies then the patch will, by default, be applied there instead of at run-time.
In order to force a patch to be applied at run-time add the word 'memory' to the end of the line the patch is written on, for example
This may be applied as either an ELF or memory patch depending on the address:patch=1,EE,20836500,extended,3FE3838 //3FAAAAABThis will always be applied as a memory patch:patch=1,EE,20836500,extended,3FE3838 //3FAAAAAB memory - 'Why can't I use other cheat types?'
'Why can't it apply more memory patches?'
Embedding a real-time cheat engine requires exactly that, embedding data into an executable - there is only so much space that can be made available and the code required to support all cheat types would greatly reduce the maximum number of patches that could be applied - 'The program doesn't work for hack XXXXX on game XXXXX!!!'
First try marking patches as 'memory' (as described above), next try disabling 'Autohook' and entering a Mastercode.
If all else fails report it here and I'll add it the list of incompatible games
Technical FAQ
- 'How can you embed code into an executable without breaking it?'
- By knowing that PS2 games are written in C - in this case by exploiting string.h.
- string.h functions compiled into PS2 games are stand-alone and vector optimized to take advantage of the PS2's 128-bit registers and vector instruction set, this can make them very fast for very large data sets but it also makes the implementations very long.
- It is possible to write much shorter but identically functional versions of these routines - this is how PS2 Patch Engine creates usable space in the executable where the code for the patch engine and the patch tables reside.
- The following functions can be replaced by PS2 Patch Engine: memcpy, strncpy, strlen, strcpy, memchr, memset (replaced in that order as patch table size requires), in the case of memcpy, memmove must also be located in the executable so that the memcpy function can be replaced by a single jump instruction.
- In order to verify the shorter implementations of these functions I used Red Hat's string.h test for embedded systems, compiled with PS2SDK and tested in PCSX2.
- Interesting side note - the implementation of strcat produced by PS2SDK actually fails this test (I used a reference implementation in C when testing to avoid false errors). - 'What is the performance impact of running an embedded patch engine?'
That's a tricky question - on the one hand the replaced string.h functions should be much slower for large data sets, but for very small (possibly more commmon) data sets they may actually be the same or even faster.
One thing is for sure - the performance will not be identical but given the speed of the Emotion Engine (290+ Mhz) the differences *should* be effectively unnoticable. - 'Do modified .bin files have correct error coding?'
Yes! EDC (Error Detection Code) and ECC (Error Correcting Code) are recalculated for each modified sector in .bin files, I have verified correct calculation for Mode 1 and Mode 2 Form 1 sectors. - 'Are multi-track images supported?'
Yes! PS2 Patch Engine does not modify any part of an image that would break a multi-track image, it will also automatically create a matching .cue file when patching a .bin image if one already exists in the same directory as the .bin.
Update 1.03 includes the following
- Added ELF file size sanity check (fixes Shin Megami Tensei: Digital Devil Saga)
- Fixed potential crash when cancelling a write operation
-Releases-
Read before download: Cheat engine is for private and educational purposes only. Before you attach Cheat Engine to a process, please make sure that you are not violating the EULA/TOS of the specific game/application. cheatengine.org does not condone the illegal use of Cheat Engine
April 22 2020:Cheat Engine 7.1 Released for Windows and Mac:
Hereby the new release of CE 7.1. Just click the big download button above
Also, check out my patreon for progress updates and prerelease binaries (which you can also get if you where to compile ce yourself)
and to add, from now on, the Mac version and Windows version will have equal release dates and features(Excluding mac/windows only stuff) as the sourcecode of the both have been merged into one
Additions and changes:
Also, check out my patreon for progress updates and prerelease binaries (which you can also get if you where to compile ce yourself)
and to add, from now on, the Mac version and Windows version will have equal release dates and features(Excluding mac/windows only stuff) as the sourcecode of the both have been merged into one
Additions and changes:
Changes:
Fixes:
Pcsx2 Cheat Engine
God Hand Cheat Table Pcsx2
New functions:Please report bugs and give suggestions for an even better version next time
Post patch releases (This is the reason why your 7.1 version says there is a newer version):
04/26/2020: Fixed slow loading and deleting huge tables
April 8 2020:Cheat Engine 7.1 Released for patrons:
Just a small notification that CE 7.1 has been released for my patrons. The official public version will come out as soon as a third party has given the green light (sometimes takes a few days and with this current pandemic who knows how long that will take. Will take a while)
August 20 2019:Cheat Engine 7.0 Released:
New major version released. Many improvements and features to make your gaming better
Download: Cheat Engine 7.0 for windows
Please report bugs and give suggestions for improvements in the bug tracker or forum
And you can of course contribute yourself by adding to the source on GitHub or become a patreon
Additions and changes:
Download: Cheat Engine 7.0 for windows
Please report bugs and give suggestions for improvements in the bug tracker or forum
And you can of course contribute yourself by adding to the source on GitHub or become a patreon
Additions and changes:
![Pcsx2 Cheat Engine Pcsx2 Cheat Engine](https://i.ytimg.com/vi/u0W1tHMH0qI/maxresdefault.jpg)
Fixes:
lua:New functions:
![Pcsx2 cheat engine Pcsx2 cheat engine](https://wiki.pcsx2.net/images/thumb/d/d4/Memoryeditor2.png/200px-Memoryeditor2.png)
- compareMemory
- encodeFunctionEx
- enableKernelSymbols
- waitForExports
- waitForDotNet
- waitForPDB
- waitforsymbols
- searchPDBWhileLoading
- duplicateHandle
- getScreenDPI
- extendedToByteTable
- byteTableToExtended
- executeCodeLocalEx
- executeMethod
- allocateSharedMemoryLocal
- (un)registerCreateCallback
- (un)registerFirstShowCallback
- (un)registerCreateCallback
- dbk_usePhysicalMemoryAccess
- dbk_setSaferPhysicalMemoryScanning
- dbk_readPhysicalMemory
- dbk_writePhysicalMemory
- dbvm_addMemory
- dbvm_removechangeregonbp
- dbvm_speedhack_setSpeed
- dbvm_setTSCAdjust
changes:
- getWindowList now returns the results just like ce's window list
- documented OnChangeBounds for the Control class (was already there, now documented as well)
- executeCodeEx can now also taker just parameters without typedefs
- added Data field to ListItem's
- added description field to memrec.createHotkey method
- added clear method to the menuItem class
- readStringEx() can now deal with partial memory reads
- executeCodeEx: Fixed more than 4 parameters
- added Point type
- fixed editbox selstart/sellength types, and added CaretPos
- added HeaderSection class and document HeaderSections
- added roundRect, drawFocusRect and textRect to the Canvas.
- added ansicode character support for textRect
- added loadFromStream and saveToStream to the RasterImage class
- added readAnsiString and writeAnsiString to the Stream class
- Better document the mode field of createFileStream
- Expose the handle of the LuaPipeServer
- Publish frmTracer
- Publish frmUltimap2
- Publish frmCodeFilter
- Publish imagelist
- Added the DrawItemEvent general GUI property to Lua's callback system
- Added the MenuDrawItemEvent general GUI property to Lua's callback system
- Added the ContextPopupEvent general GUI property to Lua's callback system
- Created a new Diagram class group which can allow you to create graphs and diagrams
- Memoryrecord.DropDownValue and DropDownDescription work now (still RO)
Post release patches:
8/21/2019: Fixed when scripts load other scripts using files in non ascii language encodings