of the Pokémon series
Arbitrary code execution (template, remote, cart-swap, unintended ROM code execution) | 2x2 block encounter glitches (Left-facing shore tile glitch (in-game trade shore encounter trick, old man trick, Trade link up shore encounter trick, Fight Safari Zone Pokémon trick)) | 99 item stack glitch | Bad clone glitch (????? party overloading (Type 0xD0 move glitch, ????? map corruption, | Celebi trick, Celebi Egg trick, Shiny Celebi trick, glitch move map corruption, overloaded party map corruption, Glitch Unown (Glitch Unown map corruption) Duplicate key items glitch (infinite items and item creation, expanded Balls pocket (TM/HMs outside of the TM/HM pocket, Glitch Pokédex categories)) | Berry glitch | Bug-Catching Contest data copy glitch (Japan only) | Cloning | Ditto DV manipulation | Elite Four door glitch (Japan only) | Expanded party encounter table manipulation | Generation IV item cloning glitch (Japan only) | Glitch City (Safari Zone exit glitch, RAM manipulation) | Glitch meta-map script activation (Generation I) | Infinite Master Balls (Colosseum) | Large storage box byte shift glitch (storage box remaining HP glitch, maximum stat glitch) | Item duplication glitch | Item stack duplication glitch (Generation I expanded items pack (Glitch Rocket HQ maps, Map FE (English and non-English European Yellow), Map script pointer manipulation (arbitrary code execution, map script pointer item ball manipulation), Text pointer manipulation (arbitrary code execution, item ball manipulation, mart buffer overflow), Trainerless instant encounter glitch) | Mimic glitch (Japan only) | Out of bounds Glitch City (Generation II) (Slowpoke Well out of bounds corruption (French version)) Lumiose City save glitch | Pikachu off-screen glitch (Trainer corruption glitch) | Pokémon merge glitch | Pomeg glitch (Pomeg data corruption glitch) | Roaming Pokémon encounter glitch | (Mimic) Transform Rage glitch | Select glitches (Japan only) (Closed menu: Dokokashira door glitch (international), Fossil conversion glitch (international), Second type glitch, Skip to Level 100 glitch, Trainer mutation glitch, walk through walls (international) Special menu: Lift glitch, Badge describer glitch) | Sketch glitch | SRAM glitch (Generation I) (255 Pokémon glitch, send party Pokémon to a new game) | Surf down glitch (Grass/rock Surfing glitch (Spanish/Italian only) (English)) | Time Capsule exploit | SRAM glitches (Generation II) (Mailbox glitches, Mystery Gift item corruption, Trainer House glitches) | Tweaking | Trainer escape glitch (Death-warp, Mew Trick, Ditto Trick, Experience underflow glitch) | Buffer overflow techniques (Japanese unterminated name glitch item instant encounter glitch, LOL glitch, Rival LOL glitch, Instant LOL glitch, RAM LOL glitch, oobLG, blockoobLG, Instant encounter infinite chain glitch (LGFly)), Super Glitch (Generation I) (party remaining HP glitch), Super Glitch (Generation III), Text pointer manipulation mart buffer overflow glitch, CoolTrainer♀-type move, Double distort CoolTrainer♀ corruption, Yami Shop glitch) | Walk through walls (ledge method, museum guy method, Rival's effect, Select glitch method (international), Brock Through Walls) | ZZAZZ glitch (party Pokémon box data shift glitch)
(view, talk, edit)
Type 0xD0 move glitch, also known as Move 0x00 arbitrary code execution (not to be confused with - (Generation I move) arbitrary code execution in Pokémon Red and Blue) is a glitch in at least English Pokémon Gold and Silver that allows the player to perform arbitrary code execution without using the Coin Case.
An advantage to this glitch over Coin Case glitch is that it may not corrupt the stack (similar to wrong pocket TM ACE which never corrupts the stack), however it requires move 0x00 which can only be obtained by trading a Pokémon with it over from Generation I (such as "-" move Ditto with the swapping Transform moves glitch, obtaining a bad clone, or using another form of arbitrary code execution).
This glitch has been used in any% speedruns of Pokémon Gold and Silver (see here), and was researched by luckytyphlosion. ChickasaurusGL also adapted it for non-speedrunning uses.
You can execute arbitrary code by moving in a specific way in Cherrygrove City (see pictures below) and viewing move 0x00 from the move description menu in a Pokémon's summary provided the following requirements are met:
1. You have exactly four Pokémon.
1i) The first Pokémon has move 0x00 (e.g. a "CoolTrainer" Ditto).
1ii) The third Pokémon is a low level 'slide' Pokémon you caught in the wild (whether it will work is up to chance but if you find one that works it will always work, possibly the same one compatible for Coin Case ACE without bad DVs etc.)
1iii) To be safe have Pokémon 2 and 3 have the bird and tailed creature menu sprites and have no Pokémon hold an item except for Pokémon 4.
2. Pokémon 4 is a Quagsire with TM02 and Return as its first move (for box name ACE at D8C0 (box 1 character 2)) or a Quagsire with HP Up and Sleep Talk as its first move (for stored items ACE at D61A (second item quantity)).
Before you move one step up and four steps right from picture 3, save the game. Afterwards view Pokémon 1's moves from the move description menu and close it repeatedly until your code works.
Sometimes this will not execute arbitrary code. At times it is possible to get a flashing color 'disco' effect as well.
Example box name code
This box name code with many thanks to Crystal_ for the concept allows us to warp to the Bug-Catching Contest and obtain Celebi.
The box names for that are as such:
Box 1: Bp'vZ'vL55
Box 2: é'r2p'vA'vF
Box 3: é!Ap'v/'v)
Box 4: é?2p'v5'vA
Box 5: 'vBéA'tp'vZ
Box 6: 'v[éx2
(x is the multiplication sign)
Move 0x00 has a glitch type, specifically glitch type 0xD0. The source of its glitch type is 0x8350 in VRAM, hence what is or what was on the screen will affect what the game brings up as a type name; possibly with what's on the Pokémon menu affecting 0x8350, as 0x8350 may be written to if you have enough Pokémon menu sprites and/or held items in the party.
When we have 'good' data at 0x8350 the name of the glitch type causes memory corruption, and by making the specific movements in Cherrygrove City/meeting the party requirements the game may start to execute arbitrary code on attempts, seemingly at random.
If by chance the game executes E9F0 (Echo RAM for C9F0) then it will eventually come across jr c, EC68 (@EC2D) and jp c, FA9B (@EC70), which causes the game to execute FA9B (DA9B).
As DA9B is Pokémon 3's Speed DVs, we can make the data slide over to Pokémon 4. Using Quagsire, the code can be redirected to somewhere else (such as box names or stored items) where we can spell out code.
Here is the assembly code for the box name code to obtain Celebi: