

For example, some games don't have the constant addresses of objects' coordinates, but calculate them from screen and sprite positions. This is dependent on the programming convention of the game, and may not always be true. Generally moving right introduces a value 'greater than' the previous value, and moving left introduces a value 'less than' the previous value. These memory addresses can be placed in Tools -> Memory Watch for convenient observation while playing.

The subpixel is Mario's x position decimal value out of 256. Further investigation may find the x subpixel position at 0086. Observing these bytes while playing in real time one could conclude that the x position is located at 0400. While standing at this location, one could press ‘equal’ a few more times to again get rid of bytes that are changing while you are standing still.įollowing this method further, it should narrow the possibilities to about 20 bytes. This will eliminate values that did not change when Mario moved, and it should leave you with about 20 values. Move to the right, stop walking, and press ‘not equal’ exactly one time.This gets rid all bytes that change when standing still (timers, random numbers). While standing at the original location, hit ‘equal’ numerous times while the game is playing.This initializes the value to be compared with. Click Reset to start a new search of all bytes.Another option is to compare the value to a known value. It should be noted that the search by default always compares to the previous value, not the original value. Once moved to a different location, the x position is ‘not equal’ to the previous value. When standing still the x position should stay ‘equal’. The emulator sorts bytes based on how the value is changing. Tools -> RAM Search (Sometimes also labeled Cheat Search).The following would be a procedure applicable to most games where x position would need to be found. By monitoring x position one can be sure to maximize the distance covered in a given period of time. The simplest yet most useful value one can often find is the x position of a character. Play the game, and the correct address or addresses should stand out. When you have found the address or there are a few addresses left and you can't figure out which one it is, watch the addresses in memory. Sometimes there may be two or more addresses which are similar to the one you're trying to find. Keep doing this until you have narrowed down the possibilities and you can easily guess which one it is. Click "Update values" if the emulator doesn't do this automatically. If trying to find addresses with a specific value, enter the value, select "equal to", and click search. If comparing to the previous value, select "previous value" and click search. Select one of "less than", "equal to", "not equal to" and so on. Now play the game until the value has presumably changed. If you want to find addresses with a specific value now, enter the value, select "equal to", and click search. This initializes the memory addresses to those currently in the game. Don't search anything yet, but click "Start" or "Reset". There are more memory addresses than one can imagine, so to find what we are looking for, we must filter the memory addresses using the search box.įirst, go to some relevant point in the game, one where you are about to change the value of what you want to find. See Default Settings for per platform recommended settings One of the most important first steps is to use the right settings to find addresses (for instance, 2-byte is not a good idea on 8 bit systems).
