RetroArch can apply cheat codes through two distinct paths, and the official documentation describes both along with a built-in search workflow for finding new codes. This guide restates that documentation so you can follow the steps without jumping back to the source page. The instructions have not been hands-on tested for this article; they are a source summary, and menu labels are preserved exactly as published.
Two ways RetroArch applies cheat codes
- Emulator Handled: codes that are sent to the emulator or core, and it is up to the emulator or core to apply them.
- RetroArch Handled: codes that RetroArch itself handles by directly scanning or manipulating the emulator or core memory area.
Adding a new cheat code manually
This procedure is for cases where you already have a code that is not in the cheat database and you want to add it by hand. You need the game loaded before you start.
- Load the game and open the "Cheats" menu from the Quick Menu.
- Select either "Add New Code to Top" or "Add New Code to Bottom".
- Navigate to the newly added cheat code line and press enter to bring up the cheat code details.
- Select the "Code" menu item and press enter. A popup text-entry screen appears. Type in your new code and press enter.
- Optionally repeat the same steps for the "Description" menu item to edit the description.
- Ensure the "Enabled" field is set to on.
- Navigate back one level to the cheats menu and select "Apply Changes".
Because the final step is "Apply Changes", codes you enter but do not apply (or that remain disabled) are not in effect. If a code does not produce the expected result, re-open its line, confirm the code text and the "Enabled" field, then apply again.
Searching for new cheat codes
RetroArch includes the ability to search memory for and create new cheat codes. The workflow is based on narrowing matches as the target value changes in-game, which is why losing a life (or otherwise changing the value) between searches matters.
- Start the game.
- Go to Quick Menu, then Cheats, then "Start or Continue Cheat Search".
- Use left and right on "Start or Restart Cheat Search" to select a bit size appropriate to the console and the value you are searching. For example, health in Castlevania: SOTN on PS1 can be greater than 255 (0xFF) but is unlikely to exceed 65535 (0xFFFF), so 16-bit is suggested. For something like the number of lives in Space Invaders on the Atari 2600, 2-bit is suggested because the value is small and the memory space is limited.
- Select "Start or Restart Cheat Search" once the bit size is chosen.
- Go back to the game and change the value (for example, lose a life).
- Return to the Quick Menu and select "Search Memory For Values ... Less Than Before". The documentation also notes you could try "Search Memory For Values ... Equals To Before-1". The number of matches should go down.
- If the match count is still too high, repeat steps 5 and 6 until the count is manageable (for example, 10). If you run out of lives, reset the game or restore a save state; your lives will then likely be greater than the last check, so select "Search Memory For Values ... Greater Than Before".
- When the list is manageable, select "Add the ## Matches to Your List".
- Go back one menu to see the added codes. Turn on one at a time to see whether it has the desired effect; if not, turn it off and try the next.
- Alternatively, use "Search Memory For Values ... Equal to ###" if you know the exact value (for example, hit points in an RPG).
The safest recovery point is a save state or a game reset: if you exhaust the in-game counter you are tracking, the documentation suggests resetting the game or restoring a save state, after which the value will likely be higher than on your last check, so use the "Greater Than Before" search.
Spanning, sliding, and repeating codes
The options "Number of Iterations", "Value Increase Each Iteration", and "Address Increase Each Iteration" let a single code affect a range of memory values. The documentation gives examples such as unlocking all levels, giving one of every item, or setting all RPG stats to a set value. Similarly themed values usually live in the same memory area: if a strength attribute is at 0x0000AB04, dexterity might be at 0x0000AB08, constitution at 0x0000AB0C, and so on. This is also described as useful for experimenting, though the documentation warns such experiments have a good chance of crashing the game, so prepare a save state before writing to memory blindly.
- Memory Search Size: 32 bit
- Memory Address: 0x0000AB04
- Value: 900 (0x00000384)
- Number of Iterations: 4
- Value Increase Each Iteration: 5
- Address Increase Each Iteration: 1
In that example, the starting address 0x0000AB04 is set to 900. For each of the 4 iterations, 1 unit of the "Memory Search Size" (1 x 32 bits = 4 bytes) is added to the address and 5 is added to the value, then that address is set. The final result updates the four locations to Strength = 900 at 0x0000AB04, Dexterity = 905 at 0x0000AB08, Constitution = 910 at 0x0000AB0C, and Intelligence = 915 at 0x0000AB10. The documentation notes that "Value Increase Each Iteration" would normally be 0 in this scenario and was used for illustrative purposes.
Rumble codes
RetroArch can make a controller rumble when changes occur in emulator or core memory. It is based on the same RetroArch-handled cheat codes described above. For example, after finding the memory location for the number of lives through the cheat-searching interface, you can set it so the controller rumbles every time the value decreases (you lose a life).
- Rumble when memory value changes
- Rumble when memory value does not change
- Rumble when memory value decreases
- Rumble when memory value increases
- Rumble when memory value = value
- Rumble when memory value != value
- Rumble when memory value < value
- Rumble when memory value > value
- Rumble when memory value decreases by a specific amount
- Rumble when memory value increases by a specific amount
Reference table · Scroll horizontally to see all columns.
| Rumble condition | Trigger |
|---|---|
| Value changes | Any change in the watched memory value |
| Value does not change | No change in the watched memory value |
| Value decreases | Memory value goes down |
| Value increases | Memory value goes up |
| Equals value | Memory value matches the reference value |
| Not equal to value | Memory value differs from the reference value |
| Less than value | Memory value is below the reference value |
| Greater than value | Memory value is above the reference value |
| Decreases by a specific amount | Memory value drops by the set amount |
| Increases by a specific amount | Memory value rises by the set amount |
Sources & references
Published .
RetroArch: cheat codes — official gaming software documentation https://raw.githubusercontent.com/libretro/docs/master/docs/guides/cheat-codes.mdRetrieved Oct 8, 2026Something doesn’t match your setup?
Suggest a correction
