This is an explanation of the strategy behind my console-verified Pokemon Yellow Any% Glitchless TAS, which you can watch at the following link.
If you want more thorough commentary on how the TAS works, this video is much better for that.
Extrems has independently verified the accuracy of the TAS and done a beautiful console encode.
Setup:
This TAS is a rewrite of my previously submitted TAS on BizHawk 2.3, making it fully console accurate. During attempts to verify the accuracy of the previous TAS using Extrems' GBI homebrew, we discovered nuances of the CPU's halt bug that had not been accounted for in any of the major accuracy focused emulators. The TAS desynced just before Rock Tunnel due to the inaccuracy of our emulation. Gifvex wrote a TASing ROM of Yellow to discover the halt bug nuances which were causing the desync and also wrote a useful testROM to verify the console's behavior. Gifvex also wrote fixes for the emulator for Gambatte-Speedrun, and AlyoshaTAS and I ported those fixes to BizHawk's Gambatte core. Alyosha also used the knowledge from this research to make his GBHawk core fully cycle-accurate for the purposes of Gen 1 Pokemon speedrunning.
We now use the pipeline described here to verify console accuracy of gameboy TASes.
https://pastebin.com/DXiDT9ZT
This pipeline has been used to verify the TAS by both me and Extrems, and it was demonstrated publicly in the practice rooms at SGDQ 2018.
I used a gbc_bios.bin for the GBC firmware and set CGB in GBA to True for GBP verification purposes.
Legend:
Frame = The smallest unit of time that can be observed realistically in emulation. The game accepts some inputs on every frame (for example in nickname menus), some (in the overworld) every other frame, and some (primarily in textboxes) every 3 frames. GB/GBC games play back at approximately 59.7275 Frames Per Second.
FAF = First Actionable Frame (the first frame where an input is useful for advancing gameplay)
PrintLetterDelay = The use of mashing during textboxes to cause differences in frame and CPU cycle counts and in turn advance the RNG or manipulate the timing of an input window.
Red Bar = The sound effect and HP bar color change caused if ((Current HP * 48 / Max HP) < 10). Being in red bar cancels level up jingles when in trainer battles (worth 2.5 seconds per level up) cancels death cries (40 frames per death) and cancels text box clear jingles (timesave unknown, around a frame per clear).
Also, notably being in Red Bar removes lag from a different jingle that plays when a move is super effective or not very effective. At face value, using a move with a shake animation is ~55 frames faster than a move with a flash animation. This drops to 27 frames for super effective shakes vs normal flashes and 10 frames faster for not very effective shakes vs normal flashes. However, the lag reduction from red bar makes a red bar NVE shake 26 frames faster than a normal flash animation, and a red bar super effective shake 34 frames faster. On top of this, the act of changing moves typically loses 7 frames, making shake animation moves of any kind at least 12 frames faster than flash animation moves for the purpose of this TAS (19 frames if you don't have to swap back to using the flash move). You also have to account for the length of a move name for exact timings, but that is not relevant to the decision making process. Good examples of the use of this optimization are Double Kick shakes on the Route 3 Ekans and the 2nd Route 3 Metapod.
Color lag = The lag caused changes by colors in Pokemon Yellow. Likely due to some flaw in the way that colors were hacked into the Pokemon Red engine to make Pokemon Yellow, color changes often cause lag. This can be seen most clearly in a stutter that occurs on map transitions (for instance between Route 1 and Viridian City). It also happens when the HP bars change color in battle and when a Pokemon is sent into battle in Red or Yellow bar, because the HP bar color is assumed to be green and then updated to Red or Yellow when the game notices that the poke is at lower HP. The value of Red Bar jingle skips far outweighs the time lost to the color lag from the HP bar. A good example of how we optimize for this is as Brock, where we intentionally low roll our first Double Kick on Onix in order to prevent hitting it into Red Bar with the 2nd use of Double Kick.
Gen 1 Miss = An oversight in the code for the accuracy check causes moves with 100% accuracy to still have a 1 in 256 chance to miss/fail. This means that we can cause an enemy to miss even if they're locked into using a theoretically deadly move, or miss our own moves if we need to.
DSUM = A label for the predictable outcomes caused by deterministic behavior of the random number generator. This behavior leads to an encounter cycle which constantly loops through the ten encounter slots in order.
Consecutive Input Delay = In Pokemon Yellow, if you press a button it needs to be released for a frame in order for it to be pressed again, otherwise the game will just see the button as being held the whole time. This can be counteracted via a trick to reapply the relevant button press. The key is to press a different button (typically a directional button) on the same frame that you want to press the initial button again, it will register a 2nd press of the initial button and not a hold of the initial button. This is done when a directional input is used to reapply B while exiting shops (which can be done in RTA) and to reapply up/down in the fly menu and item bag. The trick is also useful when B reapplies A to get on the Bike (also used in RTA), to deposit Pikachu (not useful in RTA), and to throw a poke ball from slot 1 (used in RTA). In general it could be used to select any slot 1 bag item in the overworld or in battle, but the relevant ones are the poke ball throws and the bike.
Ranges = The damage formula in Pokemon Gen 1 is modified by a random number, rerolled until it lands between 217 and 255 inclusive. The move is multiplied by this number and divided by 255 to obtain a range of possible damage between ~85% and 100%. Because we manipulate random number generation, we can manipulate these damage ranges to our liking. Also, because of the way much of the 8 bit math rounds down calculations, the full calculated damage is only a 1/39 chance (217 to 255 inclusive is 39 possible rolls).
Glitchless = the category this TAS was written for. I followed the RTA Pokemon Speedrunning community's ruleset for Glitchless, so while arbitrary code execution glitches like Brock Through Walls and Trainer Fly are disallowed, certain glitches that are not avoidable in RTA such as Gen 1 Misses are allowed, as well as oversights such as using Poke Doll on the Marowak ghost in Lavender Tower. This ruleset is uncontroversial in the RTA community at this point.
Note: This TAS is a rewrite of my previous TAS in 1:37:21, which succeeded in saving 40 seconds from that TAS. There are no known previous TASes of Yellow ENG Glitchless in any ruleset. There is a somewhat improvable TAS of the JPN release, whose times are not easily comparable due to the text differences and (more importantly) the game does not have colors like the ENG release, meaning that it has no color lag. As there were no TASes of the ENG game prior to these two, the main goal was to establish a very competitive baseline for TASes of this game and category.
Here's a link to the old JPN cart TAS: https://www.youtube.com/watch?v=l01wqxsPHB4
Route:
Intro Sequence
The TAS begins by pressing Start, A, and Start on FAF for 2 segments of the intro cutscene and the title screen with Pikachu. This strategy is borrowed from RTA manips; each input can be buffered for several seconds but the TAS can just press the relevant button on FAF. We then press down and then Left+A when opening the options menu. This executes "fast options," a trick where all of the options are set simultaneously because the Left press from opening the options menu is reapplied repeatedly as the game loops to display each of the options. This trick also works with right instead of left, but left sets the options we need for the run. Because the options are set instantly, you can press B on FAF once the options open and proceed to starting a new game.
In general in the run I use the B button to clear text boxes so that I don't forget to use it to clear end of paragraph text boxes, which can be cleared faster with B. The end of paragraph text boxes are notable by their lack of a jingle when cleared. The key with the intro sequence is to then use A to choose to set your own name and then pick a single character name and press start on the following frame. The same is done for the rival.
Rival 1
Technically, we could save a few frames by setting the options in a separate menu once the game loads, but not doing so led to some extremely fortunate early RNG with Gen 1 Misses and the NidoranM encounter timing and DVs.
After obtaining Pikachu (whose stats can be manipulated by changing the walk path to the catch grass or delaying frames before talking to oak to receive it), we lose to rival 1 in 2 turns. The fight involves an 18 HP Pikachu gen 1 missing growl and Eevee critting tackle for 9, then Pikachu gen 1 missing growl again and Eevee critting tackle again. We choose to gen 1 miss Growl instead of Thundershock because the "but it failed" text is so much faster than the "Pikachu's thundershock missed" text. The necessary RNG for this rare fight can be found with relatively little delay because of the number of combinations of delay possible. You can vary walk paths that obtain 18 HP pikachus, vary delays before opening the fight menu, delay the down or up press to get to growl, and delay selecting growl. You can also introduce PrintLetterDelay, most crucially on the "Pikachu used Growl" box to look for gen 1 misses and independently on the "Eevee used Tackle" box to look for 9 damage crits.
Route 1
We manipulate no encounters by varying the walk path and if necessary using an A press to cause the game to delay 2 frames checking if there's something to pick up or an NPC to talk to. We also use these tricks to manipulate the goalie NPC leaving room for us to walk up to viridian optimally. We get the parcel and walk back down the right side through the grass because we know we can manipulate away the encounters and this reduces ledge hops, which lose 8 frames. We talk to oak from behind to move Pikachu out of the Rival's way and manipulate route 1 encounters again.
Viridian Shop
We buy 4 poke balls in Viridian in the TAS: 1 for Nido, 1 for a flyer, 1 for L8 sandshrew on route 3 in red bar (which we end up not getting, but the 2 frames lost for the 4th ball is nearly irrelevant in comparison to the value of being able to catch one if in red bar at that time), and 1 for bag space (the extra for bag space is extremely crucial). After buying the balls, we press B and then reapply it with a direction+B to begin leaving the shop, then press B 2 more times to finish leaving. After exiting the shop we advance through the catch tutorial.
Nido catch
We use a series of specific walk paths into a pause in the route 3 grass to manipulate an L6 Male Nido with stats F6EE (in hexadecimal). F attack is necessary for ranges, low+even defense is helpful for red bar in the forest and after Misty, E speed is necessary, and E/F special is necessary for damage ranges (both give fine HP but E is even so slightly lower HP which is better). After encountering the Nido, the catch is done optimally with down->A to open items->B+A to reapply A and throw the ball.
It is one of the great miracles of this TAS that the DSUM cycle happens to allow for an L6 NidoranM with such a short wait and with an optimal walk path from Viridian. It is pure coincidence that losing the Rival 1 fight with 2 growl gen 1 misses and 2 tackle crits leads to the DSUM cycle being set up perfectly, when we could theoretically have needed to waste as much as 10 seconds just to shift the encounter cycle or find a way to shift the cycle without losing time.
Viridian Forest
We manipulate encountering a Pidgeotto with specific stats in the forest and take extra Yolo grass which is only viable in a TAS. The stats we get are E2E3, mostly even for low HP DV and with high attack to give Nido red bar immediately and low special to help pikachu's crit damage. The optimal fight to find is a Sand Attack fail from Pidgeotto, a T-shock crit for 14, another sand attack fail, a t-shock crit for 13, Pidgeotto gust crit to kill Pikachu, swap in Nidoran, Pidgeotto gust max roll crit for 21 to put Nido to 1 HP, then Nido Tackle hit. In the current TAS I was not able to find a 1/39 14 damage crit from one of the pikachu hits into a sand attack miss or a 1/39 tackle, so I crit the Nido Tackle to finish the kill.
On Bug Catcher 2 we swap Horn Attack to slot 1 immediately because Leer is useless in the TAS and then Horn Attack into a 4 damage tackle to set up perfect HP for Red Bar L9 and L10 and to survive Diglett's scratch in Brock's gym. We intentionally avoid critting Caterpie on turn 1 to avoid color lag and the 2nd Horn Attack crits for a kill. on Metapod we crit Horn Attack into String Shot Fail (maintaining Green bar on Metapod). On any of the early fights where we can't kill a Metapod or Caterpie, String Shot fails are the fastest thing that the opponent can do, and they're pretty easy to find because enemies have a 1 in 4 chance to miss stat/stage modifying moves against you. We then crit Horn Attack again putting Metapod into red bar and get string shot fail again and finish with non-crit Tackle to save a Horn Attack, which is useful in Mt Moon.
After Bug Catcher 2 we're in Red Bar so we can catch a pidgey if we see one using the same tricks as with the Nido catch, either here or after bug catcher 3 works.
On Bug Catcher 3, we crit Horn Attack twice and get String Shot fail from Caterpie.
Brock's Gym
On Light Year guy we take Scratch to 1 HP from Diglett, then get a high roll Horn Attack crit into Sandshrew gen 1 missing Scratch into a 1/39 horn attack crit. This is probably the hardest series of RNG to set up, as those three events alone are about a 1 in 400,000 chance to happen together.
At Brock, we 1/39 non-crit the Geodude with Double Kick into a tackle Miss, allowing us to finish with a single Double Kick non-crit shake (Double Kick is much slower if both shakes hit). On Onix we manipulate Bide into a Double Kick min roll crit. The min roll is necessary to avoid hitting Onix into red bar and causing extra color lag.
Route 3:
We 1/39 crit the first Caterpie and skip red barring L14 because it's slightly faster to not lose a full turn taking Caterpie damage and instead get quick attacked by the next Rattata, additionally this lets us not get crit by Grimer's Pound in Mt Moon. We also crit Horn Attack to kill Weedle and the 2nd Caterpie.
At Shorts guy we get quick attacked back to 1 HP and high roll crit Double Kick on Rattata for the 1 shake. On Ekans we high roll crit Horn Attack into a Leer fail (same 1/4 to fail as String Shot earlier on the Metapod and Caterpie) into finishing with a Double Kick.
We fight the bottom Bug Catcher instead of Lass because we can guarantee Kakuna crit, Caterpie 1/39 roll, and Metapod Crit, making the 4 poke fight faster than exiting the route and resetting the trainer positions to be able to fight the 2 poke trainer.
On the last Bug Catcher, we crit the first Caterpie with Horn Attack and then get a 1/39 critical on the Metapod. It would technically be faster here if we would also manip Metapod gen 1 missing Harden. We then finish with Double Kick.
After evolving to Nidorino, we barely are not in Red Bar. This means that there is no way to catch an L8 Sandshrew in red bar without losing a turn to one of the fights in order to take damage, and therefore getting Charmander as our slave for Dig, Cut, and Strength is faster even though you have to overwrite moves on Charmander. Coincidentally, the DSUM also is in a reasonable part of the cycle to get an L8 Sandshrew somewhere along route 3 if in the future one were to find a way to get red bar for the catch without losing too much time.
Mt Moon
We manipulate no encounters through Mt Moon and skip getting the usual Rare Candy that RTA gets because the experience does not save enough time. Another rewrite might evolve to Nidoking before the Super Nerd, but the fight improvements are offset by Nidoking's much longer cry for 2 fights and the difficulty of regaining Red Bar.
At Super Nerd, we hit Grimer with a tackle on the first turn to avoid color lag, then kill it with a crit Horn Attack. We then crit Voltorb with Horn Attack and crit Koffing turn 1, because the color lag is faster than swapping to Tackle and back (you have to switch back to Horn Attack anyway when you Tackle Grimer).
At Jessie and James, we crit Ekans with Horn Attack and crit Meowth with Double Kick, then we hit Koffing with our Horn Attack that we saved from Tackling Metapod and don't crit it the first turn to avoid color lag. On turn 2 we crit Horn Attack to kill while still avoiding the color lag.
Cerulean City
In Cerulean we deposit Pikachu and center before Misty to set up a warp point for Dig in Cerulean and maximize red bar potential. We fight Misty before going to Nugget Bridge so that we can use Bubblebeam, which has a shake animation and makes our fights much faster as a result, and all those hits can be in red bar since we can regain it from the Misty battle. It also lets us kill Sandshrew and Onix in 1 turn without crits. On the way to Cerulean we walk in a specific path to manipulate good movement from the NPCs so that we can get to the PC efficiently, then we deposit Pikachu and use A->B+A to avoid consecutive input lag on the deposit. When leaving the PC we use B to leave because it lets us cancel some PC jingles. We hold B during textboxes when using the center to speed up their display.
Misty Gym
Immediately upon entering Misty's Gym, we evolve to Nidoking so that we aren't prompted to learn Poison Sting.
We hit Goldeen with a non-crit Horn Attack to avoid color lag, get Tail Whip fail from Goldeen, then crit Horn Attack on turn 2. On Misty we crit Staryu and get hit by Water Gun to set up our HP for Starmie, then Double Kick Staryu to finish the kill. On Starmie, we get hit by Bubblebeam turn 1 to 1 HP to set up red bar for Nugget Bridge, then we crit Horn Attack, then we get a Water Gun gen 1 miss, then we crit Horn Attack again, then we get Harden (easier to find than a 2nd gen 1 miss) into a final Horn Attack crit. If you get multiple nearly perfect HA crit ranges you can finish Starmie with a Double Kick critical (even through Harden because the crit ignores the Harden).
After Misty we menu immediately to eliminate any extra turn frames while leaving the gym and teach Bubblebeam to Nidoking over Horn Attack. To get to Bubblebeam you can use a sequence of left and right presses to repeatedly eliminate consecutive input lag when pressing down to get to bubblebeam. This technique is extremely useful for slots 3-4 (to the point that very experienced runners could benefit from it in RTA) and the TAS can continue to do it perfectly for any slot, eliminating the item menu windup time.
Nugget Bridge
We skip the Cerulean Rare Candy because its experience is nearly useless then head to Nugget Bridge. We crit Spearow with Bubblebeam at Bridge Rival, then a normal Bubblebeam on Sandshrew and Rattata, then a 1/39 crit Double Kick on Eevee for a single shake animation.
Nugget 1's Caterpie and Weedle both die to non-crit Bubblebeam
Nugget 2's Pidgey and NidoranF both die to crit Bubblebeam
On Nugget 3 we get Quick Attack crit back to 1 HP to set up optimal HP for Raticate hitting us to guaranteed Red Bar through the heal pad, then we hit Rattata with a non-crit bubblebeam to kill. Ekans and Zubat both die to crit Bubblebeam.
Nugget 4: Pidgey and NidoranF both die to crit Bubblebeam
Nugget 5: Mankey dies to crit Bubblebeam, then we teach Thrash over Tackle in slot 2
Rocket: Thrash
Route before Bill
We get Charmander and nickname him a 1 character name to save about 1.5 seconds, primarily because of the Strength uses in Victory Road.
Hiker: Bubblebeam
Girlfriend+Boyfriend: We would use Bubblebeam to kill these pokes and avoid the Thrash windup, but Bubblebeam PP is too tight so we just use Thrash.
Lass: Thrash
Get the Ether after the Lass to help fill the bag and to restore Horn Drill PP later
Bill: clear the cutscene textboxes with Bill to get the SS Ticket
Surge Split
Non-crit Thrash kills Machop and Drowzee so we can get Dig. We get the fast Full Restore in the underground to help fill the bag. Then we Thrash the 3 Pidgeys and the Spearow+Raticate fight. At Raticate we manip getting hit to exactly 2 HP to maintain perfect red bar through the heal pad in Lavender Tower. At the SS Anne Rival we manip a 4 turn thrash that only crits the Sandshrew and clears an Eevee range naturally. We then get Cut and leave the boat. We exit the boat on a frame that sets the first can in Surge's gym to be can 4, which is up the middle cans and can have a 2nd can also in the middle row. We then walk to the bush in front of Surge's gym and menu to teach Cut to Charmander and then teach Dig over his first move, using left and right again to reapply up and down inputs when moving around the item bag. Because we've already started picking up extraneous items to fill the bag, it's faster to teach cut before dig and take the timeloss from using cut in slot 2.
In Surge's gym we pick can 4 which we know is the first can from manipping it while exiting the boat. We pick the can on a frame which also manips can 7 to be the 2nd can, conveniently right next to where we're standing.
Surge: An optimal fight would be Growl Fail->Thrash non-crit->Growl Fail->Thrash non-crit, but we took a thunderbolt miss on the 2nd Raichu turn because the delay I was finding to manip the 2nd Growl fail was taking longer than just accepting a Thunderbolt whiff.
After Surge we get the Bike Voucher and Dig back to Cerulean.
At Surge during this TAS I discovered that causing PrintLetterDelay during end of paragraph text boxes can lead to clearing them sooner. I do not know why, but it likely has something to do with aligning the end of the text box with an earlier 3 frame clear window.
Fly Split:
We manip good RNG from the NPC in the bike shop and get the bicycle. Then outside the shop we swap up the bike and teach Thunderbolt in Slot 4. We hold B through the cut animations to clear their text boxes frame perfectly.
4 Turn Thrash: We manip a 4 Turn Thrash fight that actually lasts 4 turns and has no useless crits. We then manipulate no useless crits on the Venonat trainer including a good Thrash range on Venonat. In Rock Tunnel we have to manipulate away encounters while progressing through to each fight. We swap bubblebeam to slot 1 on Cubone because we want to teach Horn Drill in Slot 1 and not overwrite Thrash, then we use Bubblebeam on cubone and Thunderbolt on Slowpoke. We Thunderbolt the lone Slowpoke again and then get good Thrash ranges on Oddish and Bulbasaur. At the hiker, we previously copied a strat from an old JPN TAS which manipulated the Geodudes and the Graveler into gen 1 missing Selfdestruct, which eliminates animating their HP Bar as it drops. It turned out the amount of text this strat involves in ENG, combined with the problem of manipulating 3 gen 1 misses in quick succession, made the strat much slower than just using 3 Bubblebeams, to the extent that it was more valuable to use them here than to cancel Thrash windups in other places. After the hiker we Thrash the final Lass, avoiding Quick Attacks since our HP is already set up for red bar through the heal pad. After rock tunnel, we get the Max Ether hidden in a tree to fill up bag space and fill up PP while dropping an item before Giovanni. At the Gambler, we use Bubblebeam on the Growlithe and Thunderbolt Crit on the Vulpix to avoid a Thrash windup.
In the underground, we get the Elixer while facing it from the top in order to avoid turning in the following building. In the Underground we also have the first example of reapplying A to get on the Bicycle a frame faster by avoiding consecutive input lag.
Shopping
In the Celadon shop: 2x TM07, 2x Poke Doll, Fresh Water, 7 X Speed (all shops using a direction to reapply B while leaving and using a direction to reapply down presses getting to the items)
Bike everywhere up to the Fly house
Outside the fly house, swap slot 2 with Poke Doll, teach fly, teach HD over BB, use Fly (in the Fly menu, you can reapply down presses a frame faster by using left or right presses on alternating FAF down presses).
HD, Thrash, Leer, TB moves at tower
Lavender tower: Don't forget to manip away encounters here
Rival: HD x5
Gastlies: TB
J&J: HD x3
Fly to Celadon, Center, go to the Safari Zone (center is fine because we just lost red bar from the heal pad anyway)
Swap Poke Doll in slot 2 with X Speeds in front of Snorlax, then use Poke Flute
Manip away encounters in the Safari Zone while getting HM03 and the Gold Teeth. This should fill the last bag slots so that we do not receive unnecessary TMs from gym leaders.
Koga Gym:
Dig out of the Safari Zone and then fly to Koga.
Juggler: Thrash crit->crit->non-crit->crit
Juggler 2: Thrash non-crit->Confusion crit->Thrashcrit (get 3 HP redbar off hypno confusion crit)
Koga: X Speed->4x Horn Drill
Get strength after Koga's gym
Cinnabar Mansion:
Fly to Pallet, manip the NPC to walk out of your way while you go to the water (you really have to manip this before the Fly to make it work right), Use Ether on Horn Drill, then teach Surf over Nidoking's Leer in slot 3 since it will be used only once. We can go to the mansion this early because we can manip away encounters regardless of Nidoking's level, whereas RTA needs to outlevel encounters in order to avoid them with Super Repels.
Mansion: Blizz over Thrash (HD, Blizz, Surf, TB), use this menu as part of encounterless manip.
After getting the Secret Key, dig out of the Mansion and bike to Erika's gym.
Erika's Gym:
Exeggcute: Blizz
Erika: Blizz, Blizz, Blizz
After Erika, cut the bush below Erika, leave the gym, and fly to Blaine.
Blaine's Gym:
Answer the questions ABBBAB
Blaine: X Speed, Tail Whip fail, HD x3
Dig out of Blaine's Gym and bike to Silph
Silph:
Walk to floor 5 and get the hidden Elixer there (this one is faster to get than the Lavender Tower hidden Elixer, also walking to floor 5 is faster than taking the elevator)
Arbok: HD
Rival: Blizz, HD, Elixer->Ember to 1 HP->Surf, HD, HD
J&J: Blizz Crit, TB Crit, TB
Giovanni: TB Crit x2->Blizz x2
Dig out, bike to Sabrina, X Speed->HD x3
Dig out of Sabrina, then Fly to Viridian
Giovanni Gym:
Use Ether on Horn Drill then bike to the Giovanni gym
Cooltrainer: Blizz
Blackbelt: TB crit x3
Exit and re-enter the building to reset the Blackbelt's location
Giovanni: X Speed, Guard Spec, HD x5
Viridian Rival
Teach strength to Charmander, teach fissure over tbolt, bike to Viridian Rival
Rival: Blizz, Fissure, X Speed->QA->Fissure x4
We set up X Speed on Ninetales to let it damage us slightly and maintain red bar through the first Gengar at Agatha and also outspeed Viridian Rival's Kadabra
Victory road:
Use Charmander's Strength to execute the boulder puzzles, but do swag boulders instead of A presses to manipulate encounters away because it looks cooler and loses the same amount of time
When you get back on the bike after falling through the boulder hole, use Elixer then get back on the bike
- Should have only 1 Elixer at this point
E4
Moves: Drill, Blizz, Surf, Fissure
At the E4, deposit Pidgey and Charmander
- Lorelei: drill, drill, drill, fissure, fissure
- Bruno: blizz, blizz crit, blizz crit, blizz, drill
- Agatha: x speed -> lick no para, fissure, blizz crit, fissure, drill, fissure
After Agatha, we menu immediately and use the last Elixer. This lets us leave Agatha's room faster because the gates open as we exit the menu. Then, we do not have to give Gyarados a turn while he misses Hydro Pump
- Lance: drill, fissure, fissure, hyper miss -> blizz, blizz crit
- Champ: drill, x speed -> Kinesis fail, drill, drill, drill, fissure, fissure.
ThunderAxe31: File replaced with a trimmed version provided by the author.
feos: Judging, since I'll have to determine this submission's fate anyway.
feos: I made a comparison table for both submissions. It relies in entering and exiting the battle mode, $F0 == 8.
Encounter | 5860S | 6023S | Diff | Delta |
---|---|---|---|---|
1 start | 3950 | 3950 | 0 | 0 |
1 end | 5019 | 5019 | 0 | 0 |
2 start | 8287 | 8287 | 0 | 0 |
2 end | 9932 | 9932 | 0 | 0 |
3 start | 20513 | 20513 | 0 | 0 |
3 end | 21420 | 21420 | 0 | 0 |
4 start | 22592 | 22592 | 0 | 0 |
4 end | 24071 | 24071 | 0 | 0 |
5 start | 25116 | 25116 | 0 | 0 |
5 end | 27839 | 27839 | 0 | 0 |
6 start | 28652 | 28652 | 0 | 0 |
6 end | 31495 | 31495 | 0 | 0 |
7 start | 31957 | 31957 | 0 | 0 |
7 end | 33094 | 33094 | 0 | 0 |
8 start | 33551 | 33551 | 0 | 0 |
8 end | 35201 | 35201 | 0 | 0 |
9 start | 37228 | 37228 | 0 | 0 |
9 end | 39819 | 39819 | 0 | 0 |
10 start | 40302 | 40302 | 0 | 0 |
10 end | 43676 | 43676 | 0 | 0 |
11 start | 45730 | 45730 | 0 | 0 |
11 end | 48376 | 48376 | 0 | 0 |
12 start | 48584 | 48584 | 0 | 0 |
12 end | 50919 | 50919 | 0 | 0 |
13 start | 51133 | 51133 | 0 | 0 |
13 end | 54145 | 54145 | 0 | 0 |
14 start | 54395 | 54395 | 0 | 0 |
14 end | 56832 | 56832 | 0 | 0 |
15 start | 63453 | 63453 | 0 | 0 |
15 end | 66556 | 66556 | 0 | 0 |
16 start | 67803 | 67803 | 0 | 0 |
16 end | 70464 | 70464 | 0 | 0 |
17 start | 76481 | 76481 | 0 | 0 |
17 end | 78387 | 78387 | 0 | 0 |
18 start | 78810 | 78810 | 0 | 0 |
18 end | 82342 | 82342 | 0 | 0 |
19 start | 85200 | 85200 | 0 | 0 |
19 end | 87989 | 87989 | 0 | 0 |
20 start | 89186 | 89186 | 0 | 0 |
20 end | 90982 | 90982 | 0 | 0 |
21 start | 91155 | 91155 | 0 | 0 |
21 end | 92953 | 92953 | 0 | 0 |
22 start | 93128 | 93128 | 0 | 0 |
22 end | 95608 | 95608 | 0 | 0 |
23 start | 95778 | 95778 | 0 | 0 |
23 end | 97536 | 97536 | 0 | 0 |
24 start | 97711 | 97711 | 0 | 0 |
24 end | 99482 | 99482 | 0 | 0 |
25 start | 100415 | 100415 | 0 | 0 |
25 end | 102288 | 102288 | 0 | 0 |
26 start | 104052 | 104052 | 0 | 0 |
26 end | 105452 | 105452 | 0 | 0 |
27 start | 105737 | 105737 | 0 | 0 |
27 end | 107527 | 107527 | 0 | 0 |
28 start | 107915 | 107915 | 0 | 0 |
28 end | 109786 | 109786 | 0 | 0 |
29 start | 110165 | 110165 | 0 | 0 |
29 end | 112373 | 112373 | 0 | 0 |
30 start | 117656 | 117656 | 0 | 0 |
30 end | 119601 | 119601 | 0 | 0 |
31 start | 122768 | 122768 | 0 | 0 |
31 end | 124975 | 124975 | 0 | 0 |
32 start | 125195 | 125195 | 0 | 0 |
32 end | 127240 | 127240 | 0 | 0 |
33 start | 130619 | 130619 | 0 | 0 |
33 end | 133302 | 133302 | 0 | 0 |
34 start | 141075 | 141075 | 0 | 0 |
34 end | 142918 | 142918 | 0 | 0 |
35 start | 150109 | 150109 | 0 | 0 |
35 end | 152845 | 152845 | 0 | 0 |
36 start | 153344 | 153344 | 0 | 0 |
36 end | 155627 | 155627 | 0 | 0 |
37 start | 156777 | 156777 | 0 | 0 |
37 end | 158585 | 158587 | 2 | 2 |
38 start | 159027 | 159029 | 2 | 0 |
38 end | 160305 | 160307 | 2 | 0 |
39 start | 160551 | 160553 | 2 | 0 |
39 end | 162325 | 162328 | 3 | 1 |
40 start | 163520 | 163519 | -1 | -4 |
40 end | 165902 | 165903 | 1 | 2 |
41 start | 166485 | 166487 | 2 | 1 |
41 end | 168650 | 168653 | 3 | 1 |
42 start | 169827 | 169831 | 4 | 1 |
42 end | 171758 | 171762 | 4 | 0 |
43 start | 182402 | 182418 | 16 | 12 |
43 end | 185677 | 185693 | 16 | 0 |
44 start | 187390 | 187404 | 14 | -2 |
44 end | 189196 | 189210 | 14 | 0 |
45 start | 190974 | 190989 | 15 | 1 |
45 end | 192317 | 192333 | 16 | 1 |
46 start | 192548 | 192564 | 16 | 0 |
46 end | 193906 | 193922 | 16 | 0 |
47 start | 194440 | 194461 | 21 | 5 |
47 end | 195051 | 195072 | 21 | 0 |
48 start | 195996 | 196015 | 19 | -2 |
48 end | 198570 | 198589 | 19 | 0 |
49 start | 203577 | 203596 | 19 | 0 |
49 end | 204294 | 204313 | 19 | 0 |
50 start | 214012 | 214039 | 27 | 8 |
50 end | 217351 | 217378 | 27 | 0 |
51 start | 218030 | 218057 | 27 | 0 |
51 end | 220672 | 220699 | 27 | 0 |
52 start | 221133 | 221160 | 27 | 0 |
52 end | 224340 | 224368 | 28 | 1 |
53 start | 238006 | 238032 | 26 | -2 |
53 end | 239408 | 239434 | 26 | 0 |
54 start | 239992 | 240019 | 27 | 1 |
54 end | 242499 | 242528 | 29 | 2 |
55 start | 248482 | 248511 | 29 | 0 |
55 end | 251310 | 251339 | 29 | 0 |
56 start | 255530 | 255559 | 29 | 0 |
56 end | 256862 | 256893 | 31 | 2 |
57 start | 259894 | 259925 | 31 | 0 |
57 end | 263828 | 263855 | 27 | -4 |
58 start | 265146 | 265173 | 27 | 0 |
58 end | 267566 | 267594 | 28 | 1 |
59 start | 268711 | 268739 | 28 | 0 |
59 end | 271790 | 271819 | 29 | 1 |
60 start | 275027 | 275056 | 29 | 0 |
60 end | 277913 | 277944 | 31 | 2 |
61 start | 280686 | 280718 | 32 | 1 |
61 end | 282143 | 282175 | 32 | 0 |
62 start | 282546 | 282578 | 32 | 0 |
62 end | 284973 | 285005 | 32 | 0 |
63 start | 286663 | 286697 | 34 | 2 |
63 end | 290826 | 290867 | 41 | 7 |
64 start | 294985 | 295031 | 46 | 5 |
64 end | 299607 | 299654 | 47 | 1 |
65 start | 317065 | 317127 | 62 | 15 |
65 end | 320827 | 320887 | 60 | -2 |
66 start | 321677 | 321737 | 60 | 0 |
66 end | 325323 | 325393 | 70 | 10 |
67 start | 326182 | 326253 | 71 | 1 |
67 end | 330350 | 330424 | 74 | 3 |
68 start | 332228 | 332302 | 74 | 0 |
68 end | 336143 | 336212 | 69 | -5 |
69 start | 337526 | 337595 | 69 | 0 |
69 end | 343247 | 343322 | 75 | 6 |