Ram Search is a windows dialog for rerecording emulators designed to find useful ram values. It was originally developed for Gens rerecording by Upthorn and Nitsuja. Since then it has been ported to most rerecording emulators supported by the site. Therefore, it is documented here.
Emulators with Ram Search:
Documentation
Ram Search is a memory searching dialog to aid in finding useful RAM values. Like any RAM searching dialog, it is designed to start with the entire RAM contents and then the user weeds out values that aren't what the user is looking for. For more information regarding how to find RAM Values see Memory Search. For a video tutorial on RAM Search, see http://www.ustream.tv/recorded/8547343 .
To make a search, the first step is to press the
Reset
button. This will put all RAM Values into the available search. The next step is to advance the game (either by frame advance, or by letting the game play unpaused). Then a search must be done. This requires setting the Comparison Operator
and Compare To/By
then clicking the Search
button.
Comparison Operators
Whenever the
Search
button is clicked, RAM Search compares the current RAM values with a value based on the Compare To/By
. It compares the contents based on which comparison operator is selected. Any RAM values that don't match the comparison criteria are discarded. RAM Search offers a variety of searching filters.
- Less Than - Keeps values that are smaller than the Compare value
- Greater Than - Keeps values that are greater than the Compare value
- Less than or equal - Keeps values smaller or equal
- Greater than or equal - Keeps values larger or equal
(be careful of signed vs unsigned with these)
- Equal to - Keeps only values that are the same (not a good one to use as your first search)
- Not Equal to - Keeps values that are different
- Different By []: - Keeps values that are less then or greater than the compare value by the amount typed into the edit box. (This can be useful, for instance, if you know the amount of damage a weapon does and you are looking for an enemy HP value).
- Modulo [] Is - The modulus operator. Will divide the current and previous and keep any that have a remainder equal to the value typed in the edit box. (Useful for finding timers).
Compare To/By
- Previous Value - compares to the value from the last time the
Search
button was pressed or from the pointReset
was pressed if no search has yet been made. - Specific Value - "Known value". Compares to the value typed into the edit box (useful when you know what value the address should be).
- Specific Address - Compares to another RAM address based on the address typed in the edit box.
- Number of Changes - A handy feature. Compares the number of changes of each address with the value in the edit box.
Data Size/Type/Display
Data size
A very important value to set and depends on knowledge about the platform being used. NES for instance will almost always be 1 byte (8-bit) values whereas SNES and GENS will often be 2 byte values. DS and GBA are typically 4 byte.
Data Type/Display
Signed/Unsigned can make a significant different on the search criteria so knowledge of this property is important. Speed address, for instance, will usually be signed whereas x,y coordinates and subpixel values will be unsigned.
Hexadecimal display can be useful, especially for values that tend to be base 16 anyway (NES subpixel values for instance are almost always 1 byte with 1/16th precision. Hexadecimal display will show these values as 10, 20, 30, A0, etc).
Advanced features
Changes
RAM search keeps track of values every frame. Each time they change, the change counter increases. It is reset after every search. This knowledge can be used in conjunction with the
Number of Changes
comparison operator. For instance, one could move the character right for 6 frames, and then do a Number of Changes = 6 search to find the characters x position. Timers could be found by search for Changes = 1 every frame.
Changes can be reset to 0 at any time with the
Clear Change Counts
button.
Preview
Whenever a search criteria is set, RAM Search will display in red the values that will be removed if the
Search
button is clicked. This allows you to preview the results of the search.
Autosearch
This allows you to automate the search process. When checked, RAM Search will click the
Search
button for you every frame. This could be useful for finding x position for instance. Set the search to Greater than
Previous Value
, click Autosearch, the press the Frame Advance key repeatedly.
Undo
This allows you to clear the last search. Useful for mis-clicks or to revert to a previous state should the search criteria not give desirable results.
Eliminate
Allows you to manually highlight one or more addresses in the address list and remove them without having to do a search. This is especially useful when the list is narrowed down to just a few values that the user can visually monitor and eliminate.
Watch
When clicked, an address will be added to the Ram Watch dialog.
Add Cheat
Take the highlighted address and freeze it to its current value.