Save in front of the starter you want, in case you need to reset the game.
Choose your starter and stop when you see the Player received Pokemon text with the flashing arrow to continue.
Go into PokeReader's RNG screen and wait until it stops saying Finding ADIV Index and Finding SDIV Index.
Pause PokeReader with L + R.
Type the information on PokeReader into the RNG Tool below and press "Generate".
Advance the game with L until PokeReader's Advance number matches one of the generated Advance columns below.
(Optional) Create a save state if you're on an emulator, in case you need to reset.
When you land on your desired advance, press A to accept the Pokemon.
If you got your Pokemon, congrats! If not, keep trying! It won't take long.
Helpful tips:
This is unstable! Expect it to take many tries!
Only use L + R to pause and advance in Gen 2, not Start + Select. Start + Select will mess up the RNG!
The gameboy takes more than one video frame to register a button press, but the 3ds notices it immediately. Pressing A too fast will unpause the game without starting the encounter.
Holding A too long might mess up the RNG! Press it for more than one frame, but no longer.
RNG Tool
Advance
State
Shiny
Max DV
No data
Credits
All the people who have looked into Gen 2 over the years: Admiral Fish, EzPzStreamz, Zep, Real, Amab, wwwwwwzx, Vlad, Bambo_Rambo, Lincoln, Shiny_Sylveon, and Zaksabeast.
Zaksabeast for coming up with the current RNG method and building the tool.
Shiny_Sylveon, El Terapagos Mexicano, and Lord Timothy on Discord for helping test.
El Terapagos Mexicano for the Spanish translation.