

Without help menu manipulation, getting a max-roll crit to occur would involve waiting until a stretch where there are two RNG values ten frames apart which both have that 0 in the fourth digit. After this check, the game looks at the RNG value another ten cycles later to determine the damage roll, again checking the fourth digit.

0x17A 09668), the move will be a critical hit. The game checks for a critical hit by looking at the RNG value ten cycles after it finishes printing “C used MOVE NAME!” If the RNG value at that time has a 0 in the fourth digit from the left (e.g. Normally, each of these two occurrences is 1 in 16, so both of them occurring is 1 in 256. For example, suppose a fight requires a max-roll critical hit. The help menu is a valuable tool for RNG manipulation, as while in this menu, the RNG advances even though the game events do not. The TAS will also sometimes visit the help menu. These optimal Pokémon more than make up for these delays over the course of the run. The seed that I eventually decided on takes 34 frames of delay to manipulate, and gets a completely optimal Squirtle (a rare feat, as I will explain later) with 70 frames of delay.
(Independent)-16.png)
After identifying which acceptable Clefairy seeds were gettable, I checked each of those seeds to see which yielded an acceptable Squirtle in a reasonable amount of time.

From any of these input rolls, I could finally perform extra inputs to fine-tune the initial seeds approximately 16-32 values in either direction. Then I identified two places in the name selection process where I could introduce delays in order to make large changes to the Trainer ID/initial seed. Next, I ran a brute-force solver to determine which of the 65536 possible seeds yielded an acceptable Clefairy around the time when I could be in place to get it. In order to see which seeds were acceptable, I first determined that I needed to find a good Clefairy around RNG frame 93000-101000.
