The Trainer grass displacement glitch is a glitch in Pokémon Gold, Silver and Crystal and a sub-glitch of the instant victory effect, which allows the player to encounter a Trainer in the grass; specifically the last unbeaten Trainer the player spoke to. The Trainer may have glitched text after they are defeated. This may or may not freeze the game.
This glitch can be set up using a form of arbitrary code execution, such as Coin Case glitch in English Pokémon Gold and Silver.
DetailsWhen the player's party count is 0, trying to enter any battle (Trainer battle included) will simply refresh the screen and no battle will occur.
However, if the player's number of Pokémon is set back to 1 or above (the Bug-Catching Contest sets it to 1, so does getting the gift Eevee) then the next battle will replace a wild Pokémon encounter in the grass.
It does not matter if the player entered another map (or at least some maps if it does) after talking to the Trainer or the 'no Pokémon' screen refresh behaviour happened again before getting 1 Pokémon; because the player will still get the Trainer encounter. However, saving and resetting after talking to the Trainer will prevent the glitch.
Note: If you do not want to wait for an appropriate day (or glitch the appropriate day) to enter the contest or cannot get a gift Pokémon, it might be tricky to do with further arbitrary code execution because you cannot use a PC with 0 Pokémon (due to a message that prevents you from using it) where code is typically stored through box names and/or PC items - so it may not be possible to alter the code get 1 Pokémon instead of 0.
This glitch is not possible with another form of other instant victory behaviour (entering a battle with more than zero Pokémon but all fainted Pokémon, causing the battle to end after "Wild (POKéMON) appeared" or when a Trainer sends out their Pokémon).
Performing the glitch without a cheating deviceWe can use Crystal_'s Pokémon Gold and Silver [[turn [Coin Case into a memory editor trick|Coin Case memory editor]] to obtain 0 total Pokémon by altering DA22.
Naming box 9 "!/JZAA" will do that.
The other requirements for Crystal_'s trick are:
1) An untouched low level Pokémon in slot 3 (such as a Rattata) that doesn't happen to have bad DVs.
2) A Quagsire in slot 4 holding a Protein with Sleep Talk as the first move.
3) Specific stored PC items (see here)
4) Bellsprout or Machop in the Pokédex.
We may want to activate the code (by walking around, listening to Bellsprout's cry, changing pockets and using the Coin Case) close to the Bug-Catching Contest, and our Trainer could possibly be Officer Dirk who stands just outside there. Instead of activating the code after stepping out of Cherrygrove City's mart/Professor Elm's lab and walking four steps east, there is a different movement pattern from the Bug-Catching Contest that gives slightly different overworld data but still works:
1) Step out 2) Make one step right 3) Make one step down 4) Make two steps right 5) Make one step up 6) Make one step right 7) Make one step left and one step right.
This will let you run your code.
After defeating the Trainer, their victory message will be glitched and the game may freeze or reset in a Glitch Dimension. If you lose to them, the next wild Pokémon will no longer be a Trainer.
If the Trainer is encountered in the Bug-Catching Contest, you can throw a ball at the opposing Pokémon and the Trainer will block the ball, yet the number of Park Balls is not decreased. You will also be able to run from the Trainer, something that is not be possible with entering the Trainer battle from the grass elsewhere.
If you lose to the Trainer in the Bug-Catching Contest nothing unusual will happen (except you only having one Pokémon left after the contest if you used this particular Coin Case memory editor trick).