Project Unification

The Cheat Solution for PCSX2

Project Unification – FAQ
The Cheat Solution for PCSX2
Michael Freitag
Scholar Technology Solutions, LLC.
Version 1.2 BETA
April 27th, 2020

What is Project Unification?


Project Unification is intended to be a comprehensive cheat solution for PCSX2 with a strong focus on user-friendliness.

How does Project Unification work?

Project Unification actually does a lot work behind the scenes in order to function.  Basically, Project Unification pulls data from the included Microsoft Access database file.  This database contains information used to cheat with PCSX2 - the name of the game, the game's CRC value, comments, the name of the cheats, and the PNACH values of those cheats.  This information is then presented to the user in a form of a list of games.  Once the user selects the game, you are presented with a list of cheats that the database contains.  After you pick the cheats, the program compiles a list of the associated PNACH values that are needed for those cheats (along with other needed data) and generates a PNACH file.  The PNACH file is then written to your PCSX2 cheats directory.  At this point, you need only enable cheats in PCSX2, and you are done!

(Keep in mind, the written PNACH file will replace the PNACH file for that game, if one is already in the cheats folder.  So, make sure to back those up if they contain data that you want.)

Why does Project Unification use a Microsoft Access database as opposed to another type of database?

A lot of thought actually went into the type of database to use for Project Unification.  There are pros and cons of every solution, and I decided that a Microsoft Access database was best to use for this purpose for the following reasons:

*It can be used for Project Unification for free by all users.

*It is easy for end-users to add/remove/change data from, even without Project Unification, and this is going to be a big need of the project.

*The support files needed for the database are extremely easy to install for end-users.

*From a technical perspective, MS Access databases are a good "fit" for the type and amount of data being stored for our purpose.

*I have more personal experience as a developer with MS Access databases.

The downsides of using this type of database are as follows:

*In order for end users to add/remove/change data from the database, without Project Unification, this requires that the user acquire Microsoft Access.

*I considered using a database that would be server based, meaning that Project Unification would read/write from the server and there would be no database stored on the user's computer.  Although this would be ideal to have one central repository of all game cheats, I felt that it removed too much control from users and the ability to add/change/modify/contribute to or share the database as they see fit.

Can/should I modify the database using Microsoft Access to add/remove/change codes/games?

Yes and no.  The database is highly user accessible for anyone with Microsoft Access.  It is my hope that the community will find Project Unification worthwhile and thus contribute to the database as much as possible.  With that said, directly modifying the database using Microsoft Access comes with risks to the stability/functionality of Project Unification.  Project Unification makes certain assumptions about the format of the database; if these assumptions aren't met, Project Unification may crash or behave in other undesired ways. 

However, directly modifying the database with Microsoft Access does allow for a diverse and more efficient editing experience in some situations.

If you are not comfortable directly changing the database with Microsoft Access, I recommend using the Project Unification program's abilities to add/delete from the database.

Ok, I still want to modify the database with Microsoft Access.  What do I need to know?

You should make sure to preserve the following conditions:

*Each table in the database serves as one game record and the table name should have the name of the game, the SLUS, and the region code. (U) for USA, (E) for Europe, and (J) for Japan – in that order. 

*Row zero (the first row) in a table (game record) should have the game's CRC value in the CRC value field.  It does not matter and it is not important if it is/is not on any other row.

*Any comments for the game that you want to appear in the PNACH file MUST be in the row zero (the first row) comment field.  It does not matter and it is not important if they are/are not on any other row. However, comments that are added to the database for each code will appear when users select said codes to enable.

*The columns in each table (game record) MUST be verbatim “ID” (the primary key), “Effect”, “Code”, “Game CRC Value”, “Comment” - IN THAT ORDER - VERBATIM.

*The "Code" field should be of the type "Long Text".  "ID" should be of the type "AutoNumber".  All other fields should be of the type "Short Text".

*ALL of the PNACH codes applicable for each cheat MUST be in the same field as one long text string separated ONLY by the "~" symbol without the quotation marks.  

Be aware that tables (games) will appear in Project Unification in alphabetical order, while the individual cheats themselves will appear in the order that they were added to the database.

Does Project Unification make any changes to my registry or system?

Project Unification does not make any changes to the existing Windows registry keys.  However, it does create some new Project Unification registry keys in its own folder in the registry for configuration purposes.

Project Unification will also create text files that contain values needed for saved cheat profiles in the Project Unification directory.

Project Unification makes no other changes to the system.

Do I need anything to run Project Unification?

YES!  Because Project Unification makes certain read/write operations to a Microsoft Access database, you will need you will need to install the Microsoft Access Database Engine 2010.  This software is free and requires almost no interaction to install.  You should download and install the 32-bit file called "AccessDatabaseEngine.exe" from here: https://www.microsoft.com/en-us/download/details.aspx?id=54920 if you are using the 32-bit version of Project Unification or the "AccessDatabaseEngine_X64.exe" file if you are using the 64-bit version of Project Unification. 

(Please note that both versions of Project Unification are the same, and for technical reasons, if one does not work on your system, you will likely need to use the other with the corresponding Access Database Engine.)

Also, Project Unification is a .NET application.  This means that you need the .NET Framework 4.5.2 or higher installed on your computer.  If you have one of the more recent versions of Windows, and you have kept it up to date, you probably already have this installed.

Project Unification should work on Windows 7, 8, 8.1, and 10 so long as the above software is installed.

Is Project Unification free?

Yes!  Project Unification is a non-commercial application and is therefore free to use.  Project Unification will never be sold for profit nor will it ever utilize advertisements.  With that said, Project Unification took a great deal of time and effort to develop, and, if you find it to be a useful app, donations are always appreciated! You can donate using PayPal at https://www.paypal.me/MAFreitag.

What features do you plan to add and are there any that you have ruled out?

I have basically ruled out adding any functionality to convert Codebreaker/Action Replay/etc. codes into PNACH codes for two reasons.  First, the purpose of Project Unification is to have a massive database of PNACH codes so that no one needs to convert such codes anymore.  Secondly, there are already lots of resources out there to do this, and it seems like it would just be duplicating what other apps already do.

Does Project Unification modify PCSX2 in any way?

No!  Project Unification makes no changes to any PCSX2 program files nor does it interact with them in any way.  The only PCSX2 modifications it makes are to the PNACH files in the PCSX2 cheats directory.

Why is Project Unification named Project Unification?

Prior to Project Unification, when I used cheats with PCSX2 the same way everyone else did, I always felt like I was hunting down resources from various places and bringing them all together.  First, I had to go and hunt for already existing PNACH files.  If they didn’t have the codes that I wanted, I had to go and look for Action Replay codes.  If I couldn’t find those, I had to go and look for Codebreaker codes, etc.  Then, I had to go and find the tools to convert Codebreaker/Action Replay/etc. codes to raw format.  Finally, I had to go and find the tool to convert the raw codes to PNACH codes and construct the PNACH file manually.

Project Unification is intended to “unify” this whole process into one solution.  The idea is that you won’t have to hunt for codes anymore, convert them, hunt for PNACH files, manually create PNACH files, etc.  All of this is going to be done for you with one program.  You need only select the game and codes you want, and you are ready to go.

Why did you make Project Unification?

Like most people reading this, I really enjoy the PCSX2 emulator.  It’s a great and convenient way to play PS2 games without having to pull the old PS2 out of storage.

When I wanted to use cheats with some of my PS2 games, I found the process to be (at first) somewhat confusing, clunky, time consuming, and not user friendly.  I knew that there had to be a better way to use cheats with PCSX2.  I came to the conclusion that a companion program dedicated solely to streamlining and making this process quick and easy would be the best solution to this problem.

I have a beta or alpha build of Project Unification.  What does this mean?

In software development lingo, saying that software is in an “alpha” state refers to its location in the development process.  Typically, alpha software is not yet feature complete and often lacks at least some planned functionality.  It often will have bugs; some of them of a serious nature that may cause the software to crash or behave in other unexpected manners. 

Project Unification is now a beta release, which means that it is now more stable than it was when it was an alpha release (as well having most of the planned features), but likely still has bugs.

How can I report bugs, suggest new features, or otherwise communicate with you?

For now, I think the best way to do this will be to post in the main announcement thread for Project Unification on the PCSX2 forum.  I expect to be reading that periodically for the long term. 

I am definitely interested in bug reports and feedback in general!

What is next for Project Unification development?

The addition of some new features and bug fixes is definitely on the roadmap.  Beta release(s) will be coming at some point in the future, followed by a stable non-beta release.  Further, the growth of the Project Unification code database will be a major long term project.

Will you ever make Project Unification open source?

I am strongly interested in making Project Unification open source at some point in the distant future.  This will likely occur when I can no longer maintain Project Unification or have reached the point that I feel I will not be able to advance it further.  I expect to be able to maintain Project Unification for the foreseeable future.

How long did it take you to make Project Unification?

More hours than I can count at this point.  Actually, as of version 1.1, development has been ongoing periodically for over a year.  I expect to continue to build onto it over time.

What were the hardest and easiest parts of creating Project Unification?

There were actually a lot of unexpected challenges.  For one thing, Project Unification uses a LOT of variables and actually is written so as to (hopefully) be able to handle different usage scenarios from many different users trying to do many different things.

Furthermore, getting Project Unification to "fit" into the current PCSX2 cheat system in a reliable and consistent manner took some clever coding at times.  Behind the scenes, a lot of conversion takes place from the Project Unification way of handling data to getting that data in a form that PCSX2 can use.

I never expected Project Unification to get as complex as it has gotten (I've added features that I never even conceived of at the time I started development), and, as a result, the code is not as organized as it could be.  For instance, I would have started modularizing code a lot earlier in the development process.  Currently, a lot of code is not modularized that should be from an elegant source code perspective.  This makes ongoing revisions of Project Unification a little more complex than they should be.

The easiest part is that I, fortunately, started learning SQL and using databases from a development standpoint soon after learning to code.  Project Unification is heavily dependent on this.  This still wasn't easy, but it made a lot of things possible in the code. 

How can I support Project Unification?

One of the best ways you can support Project Unification is to add games to the database and send the entire database file to me to be combined into a master database.  (Or, share larger databases with others.)  This is so that, hopefully, one day everyone can have a database of codes for all games without having to hunt for them or create them.

Although Project Unification is free and non-commercial, if you like using it, and want to donate, you can do so using PayPal at https://www.paypal.me/MAFreitag .

How do I submit codes for inclusion in the master database?

First, please make sure that the codes you submit work.  If they cause any issues (i.e. "this code gives infinite life but also makes the character fall through the floor sometimes"), please note that. 

Secondly, it is ***highly*** preferable that you send me the database with the codes already added.  This makes it a lot faster (and more likely) that they will be added to the master database quickly.  The database (by default) is located in the Project Unification install directory - likely C:\Program Files (x86)\Project Unification - and is named "PUCodeDB.accb".

Third, if you cannot send the database, you can send PNACH files.

Fourth, the codes submitted (both in PNACH or database form) should clearly list what game they are for, the cheat effect, the CRC of the game, the region of the game, and any needed comments

You can then e-mail the database (or PNACH) to me at [email protected] for inclusion in the master database.

Does it matter what region my game is?

More than likely, yes.  Attempting to use codes that are made for one region game with the same game of another region are unlikely to work.  (This is because the memory values that the codes modify are likely to be different in a different version of the game.)  Accordingly, game entries in the Project Unification database should be clearly labelled as either (U) – for USA region games, (E) – for European region games, or (J) – for Japanese region games. 

Why is my games CRC value in the database different than what PCSX2 is saying it is?

A CRC value is basically a type of hash that is used to determine whether or not a given piece of data is bit for bit identical to another piece of data.  In other words, the game data is run through a mathematical algorithm that creates a “value” based on the data of the game.  Therefore, one PS2 disc of the US version of Shadow Hearts, for example, should (in theory) have the same CRC value as another PS2 disc of the US version of Shadow Hearts.  This is how PCSX2 identifies a game as being the game that the corresponding PNACH file belongs to; as no other game should derive the same CRC value.

With that said, there are a couple different reasons the CRC value could be different.  One, the game data could be corrupted in some way.  Two, you have a copy of the game, and the copy isn’t a perfect copy as is, and is therefore at least different by one bit.  Three, it is possible that the developer released a different version(s) of the game with minor changes but never announced this or labelled the game versions any differently.  Four, you may have a game from a different region.  Five, it is possible that the CRC value in the Project Unification database is just wrong all together.

If for some reason your games CRC value is different, you can try using the “Override CRC Value” option in Project Unification and putting in the CRC value that PCSX2 is giving you.  Be aware, however, that the game is still likely different than the one in the database in some way… and therefore the codes may not work at all regardless. 

Will you maintain a master database in the long run or will the community/users?

My plan currently is to maintain a master database that will be periodically distributed along with updated versions of Project Unification; hopefully, with each database having more data than the previous.  However, it may be that the community finds it better just to create/modify their own databases and to share those among themselves.  I designed Project Unification from the ground up so that either scenario could happen.  So, I suppose the "free market" will decide this question.

Why can't/won't you just make a database with every game and all the codes?

There are over 3,874 games that have been released for the PS2.  While I wish I had the resources (time, money, etc.) to acquire, create, and test codes for all of these games, it simply is not practical.  I feel that a collective effort in this regard is the best bet to build a complete and comprehensive database of cheats.  With that said, I will be adding my own codes overtime as well.

Are there bugs?

Yes!  Currently, adding a new game to the database results in the first item listed in the cheat box being blank.  (This is largely cosmetic, is a workaround for a technical issue, and should not affect anything else.)

Sometimes you may need to completely close and re-open Project Unification when you change the program settings or add/change/delete database entries for Project Unification to detect the changes.

Also, some of the GUI elements may not render correctly (i.e. Project Unification may appear blurry/fuzzy/disproportionate) unless you go into compatibility properties and disable display scaling. (by right clicking on the ProjectUnification.exe file/shortcut, choosing "properties", clicking "compatibility", and choosing "Disable display scaling on high DPI settings".)  This may or may not address the issue depending on the resolution of your monitor.  (This is because of DPI scaling being off on 1080p vs 4k, etc. monitors.  It is totally cosmetic.)  Only try this if the Project Unification GUI appears to be scaled incorrectly/blurry/fuzzy on your monitor.

Please report bugs on the main Project Unification announcement thread on the forums.  My goal is to, hopefully, fix them all in time.

How often will you update Project Unification?

I have a full time professional job (outside of the tech industry) and am a part time college student.  Therefore, unfortunately, I can only work on Project Unification during my free time, which is very limited.  It may be weeks/months before updates come out.  (This is why I hope that I chose a database type that the community can contribute to and work on themselves for their needs whenever they want to.)  Just because there haven’t been updates in a while does not mean the project is “dead”.  Most of the updates will come between college semesters.  (So, summer breaks, winter break, spring break.)  I attend college during the summer semester as well, so that won’t be a super productive time for the project either except during the weeks leading into the summer semester and out of it.

Did you make the artwork used in Project Unification?

No!  The artwork in Project Unification is from artists who made their art available for the use of developers like myself for non-commercial purposes.  Special thanks to these talented artists!