Overview
Dolphin supports GameCube and Wii cheat codes using the Action Replay code format. These codes allow you to modify game memory to enable cheats like infinite health, unlock items, or alter gameplay mechanics.
Enabling Cheats
Open Properties
Right-click a game in the game list and select “Properties”
Go to AR Codes Tab
Navigate to the “AR Codes” tab
Add Codes
Click “Add” or “Edit” to enter cheat codes
Enable Codes
Check the box next to codes you want active
Enable System
Ensure “Enable Cheats” is checked in Config > General
Action Replay codes consist of two-line pairs in hexadecimal format:
AAAAAAAA : Code type and address
BBBBBBBB : Value to write or compare
Example Codes
04012345 00000063 # Write value 0x63 to address 0x80012345
00023000 00000312 # Fill 3 bytes at 0x80023000 with 0x12
Memory Range
GameCube memory range:
Cached : 0x80000000 - 0x817FFFFF
Uncached : 0xC0000000 - 0xC17FFFFF
Action Replay uses simplified offsets 0x00000000 - 0x017FFFFF with code type prefix.
Most codes write to the cached range (0x80000000 base).
Data Sizes
8-bit (Byte) : 0x12 (0-255)
16-bit (Halfword) : 0x1234 (0-65535)
32-bit (Word) : 0x12345678 (0-4294967295)
Alignment Requirements
8-bit : Any address
16-bit : Address must be multiple of 2 (ends in 0,2,4,6,8,A,C,E)
32-bit : Address must be multiple of 4 (ends in 0,4,8,C)
Misaligned codes may fail or crash.
Basic Code Types
RAM Write Codes
Write values directly to memory.
8-bit Write (00)
16-bit Write (02)
32-bit Write (04)
00XXXXXX NNNNNNVV
Writes byte VV to address 0x80XXXXXX, repeated NNNNNN+1 times
Example:
00006500 00000312
Writes 0x12 to addresses:
0x80006500, 0x80006501, 0x80006502, 0x80006503
Addition Codes
Add values to existing memory.
8-bit Add (80)
16-bit Add (82)
32-bit Add (84)
80XXXXXX 000000VV
Loads byte at address, adds VV, stores result (masked to 8-bit)
Example:
80012340 00000005
Adds 5 to byte at 0x80012340
Conditional Codes
Execute following codes only if conditions are met.
If Equal
Single-line If Equal (08/0A/0C)
Two-line If Equal (48/4A/4C)
Multi-line If Equal (88/8A/8C)
08XXXXXX 000000VV # 8-bit
0AXXXXXX 0000VVVV # 16-bit
0CXXXXXX VVVVVVVV # 32-bit
If value at address equals VV/VVVV/VVVVVVVV, execute next code
Example:
0C012340 00000001 # If word at 0x80012340 equals 1
04012344 00000063 # Then write 99 to 0x80012344
If NOT Equal
Single-line If NOT Equal (10/12/14)
Two-line If NOT Equal (50/52/54)
Multi-line If NOT Equal (90/92/94)
10XXXXXX 000000VV # 8-bit
12XXXXXX 0000VVVV # 16-bit
14XXXXXX VVVVVVVV # 32-bit
If value does NOT equal, execute next code
Comparison Codes
18XXXXXX 000000VV # 8-bit (actually unsigned due to AR bug)
1AXXXXXX 0000VVVV # 16-bit signed
1CXXXXXX VVVVVVVV # 32-bit signed
58/5A/5C - Two-line version
98/9A/9C - Multi-line version
8-bit “signed” comparison is actually unsigned due to AR bug.
20XXXXXX 000000VV # 8-bit (actually unsigned due to AR bug)
22XXXXXX 0000VVVV # 16-bit signed
24XXXXXX VVVVVVVV # 32-bit signed
60/62/64 - Two-line version
A0/A2/A4 - Multi-line version
28XXXXXX 000000VV # 8-bit: 0-255
2AXXXXXX 0000VVVV # 16-bit: 0-65535
2CXXXXXX VVVVVVVV # 32-bit: 0-4294967295
68/6A/6C - Two-line version
A8/AA/AC - Multi-line version
30XXXXXX 000000VV # 8-bit
32XXXXXX 0000VVVV # 16-bit
34XXXXXX VVVVVVVV # 32-bit
70/72/74 - Two-line version
B0/B2/B4 - Multi-line version
38XXXXXX VVVVVVVV
If (value_at_address AND VVVVVVVV) != 0, execute next code
78XXXXXX - Two-line version
B8XXXXXX - Multi-line version
Advanced Code Types
Pointer Codes
Write to addresses stored at other addresses.
40XXXXXX NNNNNNVV # 8-bit pointer write
42XXXXXX NNNNVVVV # 16-bit pointer write
44XXXXXX VVVVVVVV # 32-bit pointer write
Loads pointer address from 0x80XXXXXX,
then writes to [pointer + offset]
Example:
44012340 12345678
Loads address from 0x80012340,
then writes 0x12345678 to that address
Fill & Slide
Write repeating values with incrementing addresses/values.
00000000 8XXXXXXX
Y1Y2Y3Y4 Z1Z2Z3Z4
Address: 8XXXXXXX (size in bits 25-26)
Value: Y1Y2Y3Y4
Address increment: Z3Z4 (signed)
Value increment: Z1 (signed)
Repeat count: Z2
Example:
00000000 84012340
00000001 02050010
Writes to 0x84012340 with 32-bit size:
Value 0x01, repeat 5 times,
incrementing address by 0x10,
incrementing value by 2 each time
Master Code
Modify how codes are executed (advanced).
C4XXXXXX NNNNTTMM
MM = Master Code Number (0x00-0x0F)
TT = Type (0-3)
NN = Codes to execute per cycle
Types:
0 - Branch to subroutine 1
1 - Backup 4 ASM lines, branch to main
2 - Branch to subroutine 1 copy
3 - Branch to main routine start
Master codes are complex and can crash games if misconfigured. Use with caution.
Special Codes
End of Codes
00000000 00000000
Terminates code execution, returns control to game
Normal Execution
00000000 40000000
Ends multi-line conditional blocks
Resets execution mode to normal
Execute All Codes
00000000 60000000
Executes all codes without returning to game
Until another mode change occurs
Practical Examples
Infinite Health
Max Money on Button Press
Conditional Unlock
Level-Up Loop
04123456 000003E7
Writes 999 to health address at 0x80123456
Finding Code Addresses
Use Dolphin's Memory Tools
Tools > Cheats Manager > “Start New Search”
Narrow Down Values
Search for known values (health, money, etc.)
Perform actions in-game and search again
Identify Address
When you find the address, note it down
Create Code
Use appropriate code type to modify the value
Code Databases
Pre-made codes available at:
Gecko Codes : Common cheat code database
GCT Files : Pre-compiled code collections
Community Forums : Game-specific code repositories
Always verify codes are for the correct game region (NTSC-U, PAL, NTSC-J).
Troubleshooting
Verify “Enable Cheats” is checked in Config > General
Check codes are enabled (checked) in AR Codes tab
Ensure code is for correct game region
Verify address alignment is correct
Disable all codes and re-enable one at a time
Check for alignment errors (16/32-bit codes)
Verify addresses are valid (0x80000000-0x817FFFFF)
Remove master codes if present
Address may change between game versions
Value may be overwritten by game logic
Try using pointer codes if direct write fails
Search for address again using memory tools
Best Practices
Test codes individually before combining
Back up save files before using cheats
Use minimal codes to reduce conflicts
Disable codes when not needed
Document addresses for future reference
Some codes can corrupt save files or cause permanent game glitches. Use with caution and keep backups.
TAS Tools Frame-by-frame control and input recording
Graphics Mods Visual modifications and enhancements