Submission #6023: TiKevin83's GBC Pokémon: Yellow Version in 1:36:42.94

Game Boy Color
(Submitted: Pokémon: Yellow Version)
baseline
(Submitted: Pokemon Yellow (UE).gbc USA/Europe)
BizHawk 2.3.0
346595
59.7275005696058
190555
Unknown
Submitted by TiKevin83 on 7/5/2018 3:30 AM
Submission Comments
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
Last Edited by adelikat on 10/26/2023 3:52 AM
Page History Latest diff List referrers