User:Zodiac/Beginner's Guide to ACE in Pokémon Crystal

From Glitch City Wiki

This is a very basic, straightforward setup that uses _Crystal's ACE entry point and 3 box name codes to achieve easy-to-use, convenient ACE in Pokémon Crystal. After this setup is completed, you will have:

  • A flower mail that gives x255 of every TM every time you read it.
  • Wrong pocket TM 15 to execute arbitrary code from TM counts.

Before going into this, it's important to note that while it's harder to destroy your save file or cause significant damage in GSC than it is in RBY, you should still take care that all steps are being followed correctly. It is also (while not strictly required) worthwhile to learn how to change the RTC in Crystal. See this for more details.

You can start setting up for this as soon as you reach Goldenrod.

Requirements

You will need all of the following:

Unterminated name glitch Pokémon

This is certainly the hardest requirement to fulfill, but don't be put off - it's not so bad once you get the hang of it. Unlike in Gold/Silver, we do not need a "real" bad clone, we simply need a Pokémon with an unterminated name. The timing for this is much more lenient.

Before you can obtain one of these, though, it's important to note that the only surefire way of obtaining an unterminated name glitch Pokémon is if your save data has been zeroed out before starting your new game. The in-game clear save data function (Select+up+b on the start screen) will zero out the SRAM, guaranteeing that you can obtain a bad clone on a new game. Otherwise, bad clone data is undefined; while it's not impossible to get an unterminated name glitch Pokémon under these conditions, there is no way to guarantee it for this new game.

Take a potion with you before starting this.

To obtain an unterminated name glitch Pokémon:

  1. Change your current box to a box that has never been completely full on this save file (Important!)
  2. Save your game (if you haven't already)
  3. Deposit one Pokémon
  4. Change boxes. The game will ask you if you want to save. Say yes.
  5. Right After "SAVING... DON'T TURN OFF THE POWER." is fully printed, do a hard reset.
  6. When the game loads up again, use a potion to open the Pokémon menu without actually using the potion (we do this to make viewing unterminated names safe to view)
  7. Check the box
  • If the Pokémon was not cloned, you went too early. Restart from step 3.
  • If the Pokémon was not cloned AND is in the box instead of the party, you went way too late. Withdraw the Pokémon and restart from step 2.
  • If the Pokémon was cloned successfully, and does not have an unterminated name, you went too late. Release it and restart from step 2.
  • If the Pokémon was cloned, and its name is a series of question marks, you have an unterminated name Pokémon and have completed this requirement.

Generally speaking, the more Pokémon you have in your box, the more lenient the timing is. However, even with no prior Pokémon in the box, the timing is still doable.

Pokémon

  • Wooper or Quagsire
  • Spearow

Items

(TODO: Cheaper Items?)

  • TM27 Return - This is obtained on the 5th floor of the Goldenrod Department Store on Sundays. Talk to the woman on the left of the desk, lead the party with a Pokémon with high happiness.
  • TM50 Nightmare - Talk to the guard in the gate north of Goldenrod. He will give you a Spearow. Deliver this Spearow to the fat man on Route 31 to obtain TM50.
  • TM28 Dig - Obtainable in National Park.
  • TM41 ThunderPunch - Available on the 5th floor of the Goldenrod Department Store for 3000 Pokédollars.
  • Miracle Seed - After you beat Falkner, the guy who usually prevents you from moving onto the next route will give you a Miracle Seed if you talk to him.
  • Poke Ball x46
  • Great Ball x38
  • Flower Mail x1

If you are running low on money, there is a man in the Goldenrod Tunnel who appears on Monday mornings to sell valuable items. You can buy a nugget from him, give it to a Pokémon, and clone that Pokémon several times to make money fast.

Setup

Party

  • Wooper/Quagsire leading the party, knowing Return as its first move. Make sure that its 4th move does not have more than 10 characters. (TODO: What if it doesn't know 4 moves?)
  • Spearow holding TM50 in the second slot.
  • 4th Pokémon holds Flower Mail that has the following string: "AA)AAAA5"

Kris's PC

Assemble the following PC item code:

Poké Ball x46
Miracle Seed  x1
<Any Item> x<Any Amount>
Great Ball x38
TM28 x1
<Any Item> x<Any Amount>
TM41 x1

Bill's PC

The unterminated glitch name Pokémon must be one of the first 5 Pokémon in the box.

Execution

The First Code

Enter the following Box name code:

p 0 A 'v v é F 5
'v : é G 5 p 's A
0 9 'v é é N g p
é R g 'v 2 é O g
0 Y 'v 't é S g p
'v L é T g p 'v ♂
é 'd 5 'v 9 é 'm 5
'v 'd é 'r 5 p 0 P
é o g 5 5 5 p 0
é q g p 0 C 5 5
5 A d A A 5 5 5
é p g p 'd

(NOTE: The 'O' on box 4 char 7 is the capital letter, not the number zero)

This code makes edits to Box 11's name to let us reuse it for later.

The First Execution

It is important that you follow these steps exactly and carefully.

  1. Stand directly outside of a Pokémon center. Save and reset.
  2. Walk directly upwards so that you enter the Pokémon center and are now at the center's desk
  3. Walk directly to the right so that you are now at the center's right wall
  4. Walk directly upwards. You are now at the PC.
  5. Turn on the PC
  6. Go to Bill's PC > Deposit
  7. Open Wooper/Quagsire's stat page.
  8. Press b to exit the stats page, and b again to close the dialogue box.
  9. Move your cursor down one so that it is now on Spearow. Do not press a on Spearow.
  10. Press b to close the Deposit box
  11. Open the Withdraw box

If you've done everything correctly, and if you've input the Box name correctly, you should see the unterminated Pokémon name appearing as a bunch of glitchy tiles. It might look something like this:

 

Now:

  1. Press b to exit out of the withdraw box
  2. Read the flower mail you gave to the 4th party Pokémon

Take notice of what it looks like. If everything was done successfully,

  • The message itself should appear blank
  • The author's name should now be changed to "PC" (bottom left)
  • There will probably be a random(?) number printed in the bottom right

It should look similar to this:

 

Reading this mail should also not crash the game or cause any glitches/issues, since it's just executing the box name code that we already wrote. What we now have is a self-contained 0x15 string setup in our Flower Mail (I like to call them "Letterbombs", so I'll refer to them like that for the rest of the guide). Anytime we read this mail, either from the party or from the mail box, we will execute arbitrary code from our Box names. This means you can release your unterminated name Pokémon and withdraw your items, if you choose to, as we no longer need them.

The Second Code

Make sure you have a cheap Poké Ball as the first ball in your balls pocket. It will be changed.

Enter the following box names:

0 9 'v ♂ é R 5 5
'v 9 é ( 5 'v 9 5
é d 5 p 0 V 'v 'm
é A 4 p 'v h 5 5
é A 4 p 0 2 5 5
é A 4 p 0 A 'v i
é v 5 p 0 A 'v s
é A 2 5 5 5 5 5
5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5
<box 11 remains unchanged from 1st code>
p 'd

Read the letterbomb, then check your balls pocket. You should now have TM15 instead of a Poké Ball. We also wrote a jump instruction to $FA10, which is where Wrong Pocket TM15 executes code. This jump instruction jumps to TM counts. Do not use TM15 yet.

The Third Code

I recommend "setting and forgetting". Simply write this Box name and then leave it, this allows for the most convenient TM count execution.

p 'v h é K 5 5 5
5 5 5 5 5 5 5 5
0 9 é A 2 4 K 5
'v 9 8 S 'm 'd 5 5
é K 5 p 'm H 5
<doesn't matter>
<doesn't matter>
<doesn't matter>
<doesn't matter>
<doesn't matter>
<box 11 unchanged from 1st code>
p 'd

Read the letterbomb. You should now have x255 of every TM and all HMs available.

Congratulations, you now have easy-to-use, convenient TM count ACE in Pokémon Crystal. Simply sell off your TMs to write your arbitrary code, use Wrong Pocket TM15 to execute it, and then read the letterbomb to get x255 of every TM back to write more code.

OAM Hijacking

TODO: figure this mess out

Useful TM Count Codes

TODO

Technical Explanations

TODO will probably write these during the weekend

Attributions

  • _Crystal: Discovered 0x1500 Control Code ACE, made Wooper/Quagsire + Spearow setup.
  • pfero: Wrote some self-contained setup strings which helped me figure out how to write mine.