Skip to content

FAQ and Troubleshooting

General

Is there’s a code for [insert thing you want to do here]?

Check these places first to see if there is an ACE code for that purpose:

This is just a list of somewhat well known sources for ACE codes, there might be other locations where codes can be found.

If you have checked the above sources for the ACE code and can not find a code for your purpose, that likely means that someone has not made one yet. At this point, you can then ask if someone has made the desired code, and see if there is one in an obscure location. If you are technically inclined, you can also learn how to make an ACE code yourself. The FAQ How can I make my own ACE code? should give a quick idea of what is needed to create an ACE code as well, as a few resources to help you.

The code isn’t working

Before triggering ACE, make sure that you have tried to do the following:

  • Done all prerequisite steps for the particular code you wanted. This may include:
    • Setting up a particular exit codes (e.g. Box 14 exit, Wallpaper exit, Certificate exit bootstrap, etc.)
    • Created specific bootstraps for the code (e.g. _ _ D n ’ J k l nickname bootstrap)
    • Triggering ACE in a specific location (e.g. Viridian City Pokémon Center, Mauville City Pokémon Center, Route 5 Daycare etc.)
    • There might be other steps you will have to do, make sure to always read the attached instructions with the code!
  • You have changed the box names to the ones for your code. Make sure that you have entered these codes correctly!
  • Make sure that specific box slots and/or all box slots past the ACE entrypoint are empty.
    • Generally exceptions are made for special Pokémon created specifically for ACE such as bootstrap Pokémon or various bad egg payloads such as the crafting table.

If you have done all of htat and the code still does nothing or causes a crash, then read the following items to figure out what might have went wrong with your code.

You typed the box names wrong

Here are some characters that are commonly mistaken, you should pay close attention to them while entering the box names. Different websites use different fonts for these symbols so you might need to pay extra attention on some websites (unless of course they have been clearly annotated as such by the code author):

  • Spaces
  • (left single quote) and (right single quote)
    • Sleipnir17’s Pastebins call these lefty ' and righty ' respectively.
  • Double quotes
    • and in English, Italian, and Spanish games.
    • « and » in French games.
    • and in German games.
    • Sleipnir17’s Pastebins call these lefty " and righty " respectively.
  • O (uppercase o) and 0 (number zero)
  • l (lowercase L), 1 (number one), I (uppercase i), i (lowercase I) and ! (exclamation mark)
  • ... (Sleipnir17 representation of ), (ellipsis), (two-dot ellipsis), . (full stop, period) and , (comma).
  • _ (space in CodeGenerator) and - (hyphen, dash)

You have Pokémon data present in box slots that are meant to be empty

First make sure that you moved any Pokémon out of any box slots targeted by the code (unless the code explicitly instructs you to place or leave a Pokémon in a slot), and also move Pokémon out of the “ACE area” (with exceptions for special ACE Pokémon and bootstraps). The ACE area is generally all box slots past the entrypoint (i.e. the box slots where the ACE first enters the boxes), though special bootstraps may move the ACE area to a later point within the boxes or make certain box slots safe for Pokémon storage.

Examples of ACE areas are:

  • Non-Japanese Emerald (ARM): Last 3 slots of Box 11, and all of Boxes 12, 13, and 14
  • Non-Japanese Emerald (Thumb): All of Boxes 12, 13, and 14
  • Japanese Emerald (ARM): Starts from Box 12, Slot 12, and all of Boxes 13 and 14
  • Japanese Emerald (Thumb): Starts Box 12, Slot 15, and all of Boxes 13 and 14
  • Non-Japanese FireRed and LeafGreen (0x0351): Starts from Box 13, Slot 7, and then all of Box 14.
  • Japanese FireRed and LeafGreen (0xFFC9): Last 3 slots of Box 12, and all of Boxes 13, and 14

If it still crashes after clearing these boxes, then that means ghost data is present on the save. Ghost data often appears on a generation III save when Pokémon has been transferred via Pal Park. This is most often just leftover data of the Pokémon transferred but the species (and hasSpecies) has been set to 0 and false respectively. The ghost data must be removed via group selection, see Using group selection to mass clear invisible bad eggs and ghost data for more information.

You made a mistake in the ACE setup itself

Usually, this can be attributed to the wrong ACE species and/or moves, as well as other bootstraps associated with the set up.

How can I delete bad eggs and/or unwanted glitch Pokémon?

There are multiple methods to do this, each will be covered one by one.

Using reverse Battle Tower cloning to delete Pokémon and bad eggs

Note

This will not work on some fake cartridges, as this is essentially the Battle Tower Cloning glitch, which relies on certain parts of the saving function that were implemented differently on fake cartridges.

In the Battle Tower, make sure that you have up to four unwanted bad eggs or Pokémon in your party as well as two other Pokémon.

Then save the game.

Open the PC, then deposit the unwanted bad eggs or Pokémon into any box.

Then talk to the Battle Tower guide closest to the PC. Select Challenge, then select Level 50. Enter in the two Pokémon that you have chosen to keep. Confirm the first dialogue (“Before entering a BATTLE ROOM…”) for saving progress.

When the second save screen appears (it will have your save location, player name etc.) you should then soft reset.

When loading the save again, you will still be in front of the Battle Tower guide but when you enter the PC again, the unwanted Pokémon you deposited will no longer be present.

Visual demonstration of reverse cloning is available in this video by Sleipnir17.

Using a fast (de)cloner glitch Pokémon to delete Pokémon

First make sure that you have a fast cloner Pokémon to begin with. If you do not, then create one before proceeding. This guide will also assume that you have placed the fast cloner in the very last slot of a box (bottom right corner).

Make sure you are in the PC’s Move Pokémon mode.

Switch to the box containing the unwanted Pokémon.

Then switch the selection mode to Relocate Mode by pressing SELECT, the cursor should have changed to an orange colour indicating that the current mode is Relocate Mode.

In Relocate mode, move the cursor over to the first (or very last) Pokémon in the box (again ideally should be in the first slot) then start the selection by holding A.

While holding A, move the cursor in a way that forms a rectangle (starting from the first slot grabbed) that covers all of the unwanted Pokémon, you must make sure that the slot the cursor is hovering over is empty. Release A. Your cursor should then grab the all of the Pokémon covered by the rectangle.

Then switch to the box containing the fast cloner, then move the cursor over the fast cloner. Then exit the PC by pressing B twice 1

Visual demonstration of fast decloning is available in this video by Sleipnir17.

Using group selection to clear invisible bad eggs

Make sure you are in the PC’s Move Pokémon mode.

Switch to the box containing the unwanted Pokémon.

Then switch the selection mode to Relocate Mode by pressing SELECT, the cursor should have changed to an orange colour indicating that the current mode is Relocate Mode.

In Relocate mode, move the cursor over to the first (or very last) Pokémon in the box (again ideally should be in the first slot) then start the selection by holding A.

While holding A, move the cursor in a way that forms a rectangle (starting from the first slot grabbed) that covers all of the invisible bad eggs. Release A. Your cursor should then grab the all of the Pokémon covered by the rectangle.

Press A again, the invisible bad eggs should disappear. You can check by pressing A again, and no menus should appear. If any menus appear, that means the invisble bad egg occupying the slot, might be a different kind of invisible bad egg that will require extra steps to clear. See Using reverse Battle Tower cloning to delete Pokémon and bad eggs or Using a fast (de)cloner glitch Pokémon to delete Pokémon for alternate methods to delete these particular invisible bad eggs.

The GIF demonstration in Using group selection to mass clear invisible bad eggs and ghost data should apply to this method, just ignore the box switching or the grabbing of a whole box.

Using group selection to mass clear invisible bad eggs and ghost data

Ideally, this movement should start in a box that has all of its slots filled with Pokémon. This also assumes that the boxes you want to clear of invisible bad eggs also already had Pokémon moved to a different box.

Make sure you are in the PC’s Move Pokémon mode.

Then switch the selection mode to Relocate Mode by pressing SELECT, the cursor should have changed to an orange colour indicating that the current mode is Relocate Mode.

In Relocate mode, move the cursor over to the first (or very last) Pokémon in the box (again ideally should be in the first slot) then start the selection by holding A.

While holding A, move the cursor over to the last slot of the box, then release A. Your cursor should then grab the all of the Pokémon that was in the box.

Switch to a different box by pressing or , you should switch to the box that you want to clear of possible invisible bad eggs.

Once you are in the box that you want to clear of invisible bad eggs, press A again. All of the Pokémon that the cursor was holding should be placed down. If you happen to get a message that you can not place them there but there is clearly nothing in the box you want to clear of invisible bad eggs, you might have a different kind of invisible bad egg in that box that will require extra steps to clear. See Using reverse Battle Tower cloning to delete Pokémon and bad eggs or Using a fast (de)cloner glitch Pokémon to delete Pokémon for alternate methods to delete these particular invisible bad eggs.

Orange hand grabbing a group of Pokémon from one box to the next

How can I make my own ACE code?

For all ACE methods, you must know some ARM/Thumb assembly. The below resources should give you some sort of a grasp on ARM/Thumb assembly. Keep in mind that some ACE will make use of what the ARM Architecture Reference Manual calls “UNPREDICTABLE” behavior, and many box name codes (especially in non-Japanese games) will often abuse these UNPREDICTABLE behaviours as there is often no other options.

For creating box name codes, you must at least know about the character encoding, and the internal memory layout of the box names in generation III so that you have an idea of how to encode the ARM/Thumb machine code into writable box names. Additionally there are tools available that allow you to automate the encoding of these ARM instructions into the character set and even generate sequences of ARM instructions that replicate impossible or unwritable instructions in the restricted ARM/Thumb assembly available with the character encoding. The following tools and resources should help with creating box name codes:

If the code you are making also relies on NPC scripting, you also must know about the game’s scripting interface. That would be the scripting bytecode used by the game. Additionally you can also learn to use an abstraction such as the XSE scripting language which with some tools can compile down to the scripting bytecode used by the game. The following tools and resouces can help with scripting in the generation III games:

Pokémon FireRed and LeafGreen

The 0x0351 mail did not work

Note

This is for the Post-Elite Four route.

If you are doing the Pre-Elite Four route, this does not apply to you, go to My HOCK turned into a bad egg.

Make sure that you have selected the “MAGIKARP” word from the POKéMON group, not from A-Z mode or the POKéMON2 group. This is because the internal word index used for MAGIKARP differs between the one present in the POKéMON group and the one for the POKéMON2 group (which also gets used in A-Z mode if you have beaten the Elite Four).

My HOCK turned into a bad egg

This means one of two causes (in order of likelihood):

  • You made a mistake in EV training
  • You entered the wrong mail words

For both cases, provided that you have enough mail, you can just create another HOCK. You just simply delete the erroneous bad egg (you can use the steps described in Using group selection to clear invisible bad eggs) and create HOCK again using the guide.

Bad eggs are appearing in Box 13

This is a known side effect of glitch species 0x0351 (the main grab ACE Pokémon used for non-Japanese FireRed and LeafGreen), that has to do with its long name. Long story short, due to the long name, another internal pointer (variable that stores the address of something) is corrupted with an “address” that happens to point to somewhere within Box 13. It just turns out that this internal pointer is dereferenced (accessing the stuff the pointer “points” to) quite often when performing various actions in the PC, and some of these actions also happen to write values to whatever was supposed to be accessed via the pointer which causes the bad eggs you see in Box 13.

Note that these bad eggs (or rather corruptions) will only ever affect the 7th, 8th, or 9th slots of Box 13. Thus you should never store valuable Pokémon or most special ACE Pokémon in these box slots, to avoid possible corruptions.

Additionally, you can always immediately exit the PC upon viewing the information of 0x0351 (after placing it in a different slot). This should minimise the opportunities of running the game code that performs the unwanted corruptions to Box 13. For this prevention technique to work, you should store 0x0351 in a box other than Box 13 or Box 14.

Pokémon Emerald

I do not have a clean DOTS to EV train

The in-game trade SEASOR works the same as DOTS for the purpose of obtaining glitch species 0x0611. You can obtain it from Pacifidlog Town.

If you already used the SEASOR trade and you have no clean copies, you can also acquire a Pokémon that has a corruption type 6, 7, or 8. This YouTube video by Sleipnir17 explains this method more clearly. Keep in mind that if you choose to do this route, you will need to make sure that the Pokémon you are using is compatible with an “unmarked Caterpie” initiator (like PLUSES).

Otherwise you can just trade a clean DOTS from a different save file.

I do not have a clean PLUSES

If you have a clean DOTS, then you can follow these instructions to produce a special Pokémon that functions the same as PLUSES for the Glitzer Popping set up.

  1. Clone it if it is your last copy.
  2. Use one Carbos on the DOTS.
  3. Evolve DOTS to a Shiftry.

This DOTS can now be used as a substitute for PLUSES.

As a last resort, you can also try to do the corruption without any PLUSES, you just need one copy of DOTS (or SEASOR) in the 24th slot of Box 2 and nothing in all of the other slots. The success rate of this method is a lot lower than the usual Glitzer Popping set up used in most ACE guides but it will eventually get you the 0x0611 egg.

My trainer card stats look corrupted

This is a known side effect of hatching glitch species 0x0611 (the initial glitch Pokémon that is hatched from an egg for ACE) that is caused by the game attempting to mark glitch species as “caught” in the Pokédex. For this particular species, the data the game modifies to determine if this species is “owned” also happens to be used for encrypting the save, thus causing the corruption.

This corruption has a 50% chance of occurring, however it also has a 50% chance of fixing itself with each subsequent egg hatch. Thus you can simply hatch another 0x0611 to undo the corruption. You can save before hatching 0x0611 and then reset if the corruption remains.

A more reliable way of avoiding the corruption is to simply not use species 0x0611 for executing ACE codes. Instead you can use the many number of Emerald ACE guides such as this one or this one that will set you up with a stable species that does not rely on the egg hatch mechanic (avoiding the issue of “registering” 0x0611 in the Pokédex). Though if you already have the corruption prior to setting up stable ACE and none of the 0x0611 executions have fixed up the corruption, then try the following code with your new stable ACE species.

For console or new emulators:

Box 1: W ? U n m B . o [W?UnmB.o]
Box 2: A A A Y … Q n   [AAAY…Qn]
Box 3: A A , … U m     [AA,…Um]
Box 4: A C P f m       [ACPfm]
Box 5: T Q B F C P P m [TQBFCPPm]
Box 6: R j o D Y J m ? [RjoDYJm?]
Box 7: B n             [Bn]

For old emulators:

Box 1: W ? U n m B . o [W?UnmB.o]
Box 2: A A A Y … Q n   [AAAY…Qn]
Box 3: A A / … U m     [AA/…Um]
Box 4: A … Q f m       [A…Qfm]
Box 5: T Q B F … Q P m [TQBF…QPm]
Box 6: R j o D Y J m ? [RjoDYJm?]
Box 7: B n             [Bn]
How exactly does the corruption occur?

The savefile has two arrays of flags that are used for keeping track of Pokémon species for the Pokédex. One tracks whether a Pokémon species has been owned by the player before, while the other tracks whether a Pokémon has been seen by the player before.

The arrays are indexed using a Pokémon’s national Pokédex number and the number of flags allocated to each array is the number of valid Pokémon species2 in the game. This system works well for valid Pokémon species, but works less great for invalid Pokémon species.

On the surface, you might think that glitch species 0x0611 has the Pokédex number of 3021 or some other number nearby. However the game actually pulls its Pokédex number from some other place in the game data which is indexed using the Pokémon’s internal index number. From there it gets the Pokédex number of 33845 which is a large value that would place the corresponding flags for the species in a place far outside the bounds from the either of the Pokédex arrays.

In this case the owned flags for species 33845 would be located on bit 20 of the save’s encryption key which is used to encrypt the bag, money, miscellaneous data on the trainer card etc. The encryption key also changes regularly, and on some encryption keys, the game sees that species 0x0351 has been owned by the player before and leaves the flag as is, causing no corruption to occur (or leave the corruption as is). On saves with the corruption already, the changing encryption key can also unset the owned flag and on the next egg hatch, the game thinks that the player has never owned species 33845 and sets the owned flags for it again, effectively undoing the corruption.

This issue affects all glitch species with a Pokédex number greater than 412, and occurs on in these cases (not a complete list of cases):

  • Seeing them in a battle
  • Catching them in a wild battle
  • Hatching an egg containing the glitch species
  • Evolving a Pokémon into one of these glitch species

Acknowledgements

  • claydolwithexplosion (Mettrich) created the remedy code for the 0x0611 trainer card corruption.

  1. Many tutorials will have you press A to grab the fast cloner instead to declone. While this does work for some fast cloner species, for others (such as 0x3200 on English FireRed), it sometimes can result in a freeze. 

  2. Technically, it is slightly more than needed due to the constant that is used for calculating the array size accounting for what were the Unown forms in their old positions within the internal species list. Source