Author Topic: Skillster or anyone who knows how Game Shark or Action Replay works Help  (Read 5194 times)

ARMs

  • *
  • Posts: 164
    • View Profile
Can someone tell me how the game shark or action replay work for the PSX.  I'd like to create custom codes and it could help me in other ways like hacking.

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Man I dont know why you would think I know about GS or AR on the PSx.

Only think I can think of is that it patches memory locations much like a trainer does for a pc game. You need to watch the memory to find the values you want to freeze or edit - ie keep an eye out for the hp counter for player 1 etc, but i dont know how you would do that for psx

ARMs

  • *
  • Posts: 164
    • View Profile
Sorry I assumed you knew casue I thought I saw you made some codes for kingdom hearts 2 a while back in some other forums.    I'm sure thats what game shark does but I can't figure out what memory location it starts at.    I looked up some codes and when i try to compare it to memory loactions I can't find a match.   So i was hoping you can tell me how it worked.

Micky

  • *
  • Posts: 300
    • View Profile
The codes are just address+data, though obfuscated or encrypted.
I found one forum with FAQs, but there was another bigger one I can't find right now...
http://arcentral.net/

ARMs

  • *
  • Posts: 164
    • View Profile
I didn't have many codes and i just took a quick glimps.  I'll try looking harder later on but hopefully someone give me an answer incase i can't figure it out.   Now i just need to find a site or soemthing with more codes.

Cyberman

  • *
  • Posts: 1572
    • View Profile
The codes change locations in the PS1 PS2 memory using a program that inserts itself in a small unused portion of memory.  It pirates the vertical sync ussually.  The vertical sync or FRAME interrupt happens each time a new screen is to be sent to the video display.  This is used by games often to know when it can update the display or swap viewed areas and update the next frame. 

The code cheater program adjusts the memory location as 'needed'  the series of codes perform different specialized actions.
DXXXXXXX watches a memory location (watches) and compares it to the value
8XXXXXXX sets a word sized memory location to a value
BXXXXXXX set a byte sized memory location to a value
etc.  there are also repeat count codes that auto increment a memory location.

It's a very simple "HACK" program to allow one to do things.  For example I played with Tomb Raider 4's vertical velocity value to make laura levitate (with rapid pushes of the jump button that is ;) ).  Many games have added code to prevent cheating.  One of which is thousand arms.  There is a common cheat of infinite health in combat, however this code is actually incomplete.  Thousand Arms also keeps track of how much damage you received during combat and subtracts that after a battle.  So you can survive a battle and DIE immediately thereafter.
Chrono Cross, Star Ocean 2 are two other games that do this as well.   The next problem with this kind of cheat code system is that in some games it doesn't keep a single set of values.  You have combat values and global values.  The combat values location changes depending on what battle you are in.  (This is because the game's stack changes depending on the battle I guess).  These are temporary values.  Vandel Heart's 1 and 2 have this issue. 
The cheat systems are very dependent on bad programming practice (IE heavy use of global variables), so if the game used standard programming practice THAT could make things very difficult to cheat with.

Cheat codes are also used to trick the game into debug modes (Chrono Cross and Final Fantasy 7 both have these).

Cyb

Micky

  • *
  • Posts: 300
    • View Profile
Quote
The cheat systems are very dependent on bad programming practice (IE heavy use of global variables), so if the game used standard programming practice THAT could make things very difficult to cheat with.
Well, the structures containing persistent player data are normally allocated very early after a game starts, or at least when the first level starts. Additionally, on consoles there can be a maximum of 2 or 4 players, so there is not much wrong in making them global. So even if you used "standard" programming practices, the memory location data may end up at can be fixed.