I am trying to create a cheat to always enable the National Dex on Pokemon Fire Red by patching the mov r0, #0 (0x2000) instruction at 0x0806E2A8 to mov r0, #1. Using this site https://gamehacking.org/system/gba I generated the code 600DC550 00002001 to accomplish this. Entering it into mGBA's cheats has no affect, and the instruction is not patched. However, by manually patching said instruction using the memory viewer, the National Dex does get enabled.
Steps to reproduce:
Load a clean ROM of Pokemon Fire Red English v1.1 (sha1: dd5945db9b930750cb39d00c84da8571feebf417) into mGBA.
Play the game up until obtaining the Pokedex (walk into grass, choose starter, go up to Viridian City PokeMart to obtain parcel, deliver parcel to Professor Oak in Palette Town lab, Oak gives Pokedex - takes less than 5 minutes).
Save the game.
Open the Tools -> Cheats dialog.
Enter the code 600DC550 00002001, select GameShark for the code type, and click Add New Code. The code should be enabled (checked), and you may give it a name if you wish.
Verify that the .cheats file created for the game matches the following:
# National Dex
In the game, press start to open the menu, and press A on the Pokedex option.
The 16-bit value at address 0x0806E2A8 should be patched to 0x2001 and the National Pokedex should be unlocked (green bars and both "NUMERICAL MODE: KANTO" and "NUMERICAL MODE: NATIONAL" options).
The cheat has no effect, and only the Kanto Pokedex is unlocked (brown bars and only has the NUMERICAL MODE option under Pokemon List). As mentioned above, changing the byte at 0x0806E2A8 to 01 using the memory viewer does allow the National Pokedex to appear, but the cheat does nothing.
The text was updated successfully, but these errors were encountered:
Hmm... that GameShark code doesn't look right to me. For making a GameShark ROM Patch code, take the address and logical shift-right by 1 (0x0806E2A8 >>> 1 = 0x04037154), and then add 0x60000000.
Knowing this, I figure the code before encryption would be 64037154 00002001 and final code after encrypting 959DBC75 8499CE5F
What gamehacking.org converter spat out in the first part was 0x600DC550, so that site may be mistakenly performing a shift-left instead (0x6E2A8 << 1 = 0xDC550).
Try retesting mGBA with the new code to confirm whether or not any problems occur.