Skip to content

Simple GameShark ROM patch code does not work #2724

Description

@camthesaxman

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:

  1. Load a clean ROM of Pokemon Fire Red English v1.1 (sha1: dd5945db9b930750cb39d00c84da8571feebf417) into mGBA.
  2. 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).
  3. Save the game.
  4. Open the Tools -> Cheats dialog.
  5. 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.
  6. Verify that the .cheats file created for the game matches the following:
!GSAv1
# National Dex
600DC550 00002001
  1. In the game, press start to open the menu, and press A on the Pokedex option.

Expected result:

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).

Actual result:

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.

Activity

  1. flingrocks commented on Nov 22, 2022

    @flingrocks

    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.

  2. endrift commented on Dec 22, 2022

    @endrift
    Member

    @camthesaxman Please try with the changes mentioned; the gamehacking.org converter does appear to be broken after all.

    Use 60037154 00002001 though, since the patch code shouldn't include the base address of the ROM, and is in fact filtered out.

  3. autofire372 commented on Dec 22, 2022

    @autofire372

    Strangely enough, that code does not work on its own, but does work if it's encrypted first (D3C95F54 156F2ECC according to AR Crypt).

  4. added a commit that references this issue on Dec 23, 2022
    0d52995
  5. added a commit that references this issue on Sep 15, 2023
    ab08417
  6. added a commit that references this issue on Jan 28, 2024
    1b9671b
  7. added a commit that references this issue on Sep 9, 2026
    a42eaaf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions