Most arbitrary Pokédex data in Pokémon Red, Blue, and Yellow is taken from VRAM but there are a few glitch Pokémon that take their Pokédex data from other non-ROM areas of the address bus, such as VRAM, RAM or Echo RAM.
These include the following glitch Pokémon in Pokémon Red and Blue:
In Japanese Yellow: ギ▶アゴ (C2) (DEC5)
StructureA Pokémon (or glitch Pokémon)'s Pokédex entry is structured in the following format:
(Species string terminated by 0x50 byte). Four bytes affecting height and weight. Text code. 0x50
₽ (hex:F9)'s arbitrary Pokédex
The location of F403 (though normally part of wWarpEntries::) can also be manipulated by modifying item 116 in the expanded items pack. Hence one can place items that represent a 0x50 byte there followed by a custom height and weight code and arbitrary code execution can be achieved by having the first text code byte as 08 followed by ASM instructions that the player desires.
As items 129 through to 256 represent items 1-128 again, there is potentially a size limit of 14 item and quantity pairs to store the Pokédex data, unless the ASM script is redirected elsewhere using the jp $xxyy (C3 yy xx) command or similar.
The player must also remember that item 6's quantity would be increased by 128 if less than 128 and this could potentially mess up the code if redirected to the items pack.
For more information for which items and quantities would be required please see the The Big HEX List.