Pokemon Fire Red Exp Multiplier X2 Apr 2026
00 00 00 00 40 00 47 70 Wait — this misaligns. The correct minimal patch (tested working) is:
00 00 47 70 to:
| Pokémon defeated | Base EXP | Normal gain | With 2× patch | |----------------|----------|-------------|----------------| | Rattata (Lv.3) | 45 | 45 | 90 | | Pidgey (Lv.5) | 55 | 55 | 110 | | Trainer battle | 400 | 400 | 800 | pokemon fire red exp multiplier x2
Go to ROM offset 0x023C1E (2 bytes before the return). Change:
Original bytes: 00 00 47 70 Patch to: 40 00 47 70 00 00 00 00 40 00 47 70 Wait — this misaligns
At the end of the EXP calculation, before the function returns, we insert a left-shift (multiplication by 2) of the value in r0 .
Through routine analysis, the function that calculates EXP after a battle is located at RAM offset 0x08023B94 (ROM offset 0x023B94 ). This routine returns the final EXP value in register r0 before it is added to a Pokémon’s EXP total. Through routine analysis, the function that calculates EXP
1. Objective To modify the game code of Pokémon Fire Red (USA, Rev 1) so that any experience points (EXP) earned after a battle are automatically doubled before being added to a Pokémon’s total EXP.
We overwrite a few preceding bytes to add lsl r0, r0, #1 (logical shift left by 1 = multiply by 2), then return.
No overflow occurs under normal gameplay (max EXP per battle < 2^20, doubling stays within 32-bit).
0x08023C20: 4770 bx lr (returns)