Search Methods
This article covers all common search methods and what to consider. The tool MungPlex is being used since it supports many different emulators.
Choosing the right datatype and search settings
Picking the right datatype
Before you start searching for certain memory addresses/cheats you have to be aware of what kind of datatype the address might hold. Integers can
be used to search for all types, even floats but this might not be always practicable. If you have integers indicating the amount of items,
lap count etc. you have to distinguish the size first. First of all, check whether the amount can become negative? If yes, you are looking
for an unsigned integer. But most likely you will be looking for positive ones since negative item counts rarely appear in games.
You can read more about integer types
here.
If you are looking for the value of some health bar, coordinate, timer etc. you are looking for a float or even double. You can search for a
32-bit integer instead (64-bit integer for doubles) but only do this if you are aware of what floats look like in hexadecimal. But you should be
aware of this being possible since many cheat search tools don't support float types.
You can read more about floats here.
Booleans can be found by searching for an 8-bit integer and distinguishing between 0 (false) and 1 (true) depending on the state of a certain
event or action (for instance whether a race is over or a level is completed).
You can read more about floats here.
Datatype | Entity |
---|---|
8-bit Integer | Item count, Lap count, Lives, IDs, single color channels (of RGB or RGBA), single letter/symbol (Text) |
16-bit Integer | Item count, Money, Points, Lives, IDs, Rotation, single letter/symbol (Text) |
32-bit Integer | Item count, Money, Points, IDs, Rotation, Colors (RGB, RGBA), Text (utf-8, Emoji), Speed, Gravity |
64-bit Integer | Item count, Points, IDs |
Booleans | Event/action (race/level cleared) |
32-bit Float | Size, Rotation, Coordinate, Opacity/Transparency, Colors, Intensity of effects, Engine-related properties, audio volume, audio speed, timer, time speed |
64-bit Float (Double) | Engine-related properties, Intensity of effects |
Search Settings
After distinguishing the datatype you should think of the right search settings.
- Endiannes
- Little Endian: Least significant byte first (Switch, PJ64)
- Big Endian: Most significant byte first (GameCube, Wii, Wii U, N64)
- Signess: Use this option corresponding to the signess of the target value
- Known/Unknown: Whether a comparision should be done by a specific value
- Alignment: Whether the search should only consider addresses dividable by 4 (or all even addresses if int16). An aligned search can speed up the search process and reduce memory usage by the factor of 4 (or 2 if 16-bit search); but at the risk of skipping the value you are looking for.
- Hex values: Wheather to show all values as decimal or hexidecimal
Known value search
If you are looking for a specific value such as like as your life count this search method has you covered!
A known value search is performed by doing comparisions according to a specific, known value. If the correct amount is already
given on-screen an Equal to comparision is what you need.
Here's a step-by-step instuction:
- Pick the right datatype and search settings
- Check the current value and type it into the corresponding text field of the search manager
- Select Eaqual as comparision type
- Start the search
- Refine your results by increasing or decreasing the target value in-game until you are left with only a few results
- Test certain addresses by writing/poking a value that is different to the current one to the selected address
- If the value updates in-game you found the right address!
In the following example demonstrates exactly this procedure. I have chosen to hack the life count in Super Mario 64!
- The maximum amount of lifes we can get it 100. Therefore the life count never exceeds 255 and we are good to go with an 8-bit value type.
In order to miss no possible result we do an unaligned search.
- The current amount of lives is 4 and can be entered into the search manager.
- Select Eaqual to as comparision type
- Start the search
- Refine your results by increasing or decreasing the target value in-game until you are left with only a few results.
Here I lost another life and searched for the new value.
- Test certain addresses by writing/poking a value that is different to the current one to the selected address
- If the value updates in-game you found the right address!
Unknown value search