|Bulbapedia also has an article about Bad sprite.|
A bad sprite that causes a glitch battle is typically due to bad sprite dimensions. A dimension of x0 (apparently it is effectively x256) in width or height will result in the game unpacking a huge sprite. As part of unpacking the sprite, data is temporarily stored in bankless portions of SRAM but it is possible for a buffer overflow when later areas of SRAM are touched (the reason encountering MissingNo. corrupts the Hall of Fame/results in a saving message on Stadium Game Boy Tower etc.). Furthermore, glitch Pokémon sprites of both width 0 and height 0 will typically corrupt the memory even further; exceeding the end of SRAM in the memory map (SRAM ranges from A000-BFFF) and touching C000 and beyond; the beginning of WRAM.
Certain glitch Pokémon including Yellow MissingNo., 4 4 (hex:BF) and 4(h4? (hex:ED) can corrupt the current battle (an effect known as a glitch battle not to be confused with a glitch encounter system) in ways such as corrupting what is on the screen or causing glitch music. Occasionally, they will corrupt bytes in memory that will lead to freezes; such as C0EF/C0EF (the audio ROM bank and the saved copy of it, where the only valid sound banks are 02, 08, 1F, 20 (Yellow only)/28 (Japanese Yellow) and any other sound bank will lead to glitch sound commands which typically freeze the game; though some corruption is possible with bank 20 as well).
♂ p ゥ (0xF4) and ?/ (0xEC) are also known for bad sprite corruptions. The Rhydon trap also takes place in the status screen at LoadFrontSpriteByMonIndex, replacing those glitch Pokémon cries with that of Rhydon, but effectively Pokédex numbers 152-255 and 0 sprites do not load, except for these (and other) hybrid glitch Pokémon. ♂ p ゥ (0xF4) and ?/ (0xEC) are both Pidgeotto hybrids.