With text pointer item ball manipulation, you can get a limited amount of Pokémon, (legendaries not included) with index numbers corresponding to items found in item balls.
This trick involves turning an item ball into a Pokémon or Trainer encounter. The ID of the item becomes the Pokémon (e.g. Escape Rope is 1D, so that gives Pinsir).
This is done by changing the map's 'text pointer list pointer' with an expanded items pack, which is stored at D36C in Red/Blue or D36B in Yellow. Item 40 and its quantity represent this word. The text pointer list pointer controls a list of texts for that map.
Either the default text pointer list pointer from another map or a custom text pointer list pointer (in the bank of the destination map) may be used in a careful way to map an item ball script into a Pokémon/Trainer battle.
Each map has index numbers for its texts. An individual text ID can be viewed via memory address CF13, after pressing A on that item/person/etc.
For example, the "(Player)'s house" sign in Pallet Town has the ID 06. In Viridian City, the Dream Eater guy's text has the ID 06 as well. Pallet Town and Viridian City happen to share the same bank (coincidentally, also 06), so this means if you put Viridian City's text pointer list pointer into memory in Pallet Town, talking to the sign will bring up the Dream Eater guy's text.
Using a text pointer list pointer that would result in a Pokémon or Trainer battle, it is possible to bring that text pointer list pointer from an older map into a newer map.
Note if the text pointer list pointer is being used directly from the one loaded in another map, the source map and the new map have the same bank, or the game will get text from the wrong place. After the newer map is given the old text pointer list pointer, you can talk to an item ball with an ID corresponding to a Trainer on the source map to encounter a Pokémon or Trainer with the same index number as the item in the ball.
If the item ball was a TM, the encounter ID is going to be greater than 200, meaning you can encounter Trainers. The Trainer rosters happen to be roster 0, and Trainer escape glitch normally only allows roster 1-13. Though you can encounter roster 0s with the old man trick, those Trainers have a shared non-regular set of teams, meaning the 'real' roster set of Trainers can't be accessed that way.
1) An Escape Rope ball can be turned into a Pinsir battle by swapping Victory Road 3F's text pointer list into Pokémon Mansion 1F.
2) A Nugget ball can be turned into a Golem battle by swapping Pokémon Mansion 1F into Safari Zone entrance.
3) A TM14 ball can be turned into a Fisherman roster 0 battle by swapping Victory Road 3F's text pointer list into Pokémon Mansion B1F.
4) A Rare Candy ball can be turned into a Chansey battle by swapping Victory Road 3F's text pointer list into Pokémon Mansion B1F.