#6985: TiKevin83's GBC Pokémon: Yellow Version in 1:36:26.54

Submission Text Full Submission Page

Setup:

The TAS is intended for the Gambatte core of BizHawk 2.5.2 but the input log should sync back as far as BizHawk 2.3 due to console verification. The choice to use specifically GBA as the emulated platform is due to the ability for console verification on GBI and the use of the GBP platform in the RTA speedrunning community for Pokemon Gen 1-3. The youtube upload above demonstrates this console verification.

Improvements

Frames Saved is compared against the official publication, the TAS is 465 frames faster than the console verified update to the previous publication.
EventFrames SavedCumulativeFrames Saved (Verified)
In-Game Options2626
Pika Cutscene Transition1440
Rival 1 with Tackle Animations On1454
Buying 1 less Poke Ball256
Nido manip-2135
Pidgeotto manip85120
Fight RNG through Brock34154
Fight RNG Rt 317171
Mt Moon Encounter Manip35206
Swag Cerulean PC-4202
Misty Gen 1 Miss and removed Crit60262
Swag Bill Cutscene-4258
Surge Raichu fight with Growl Fail20278278
Rock Tunnel bonk cleanup8286
Thrashing Tower Rival21307
Swag Indigo Plateau PC-4303
New Ending Red Bar Route87390
Total390390465

In-Game Options:

It was known around the time of the creation of the previous TAS that setting options in-game was faster than setting them at the "new game" screen, but fixing this was infeasible until improvements were made to the use of botting tools for Nido and Pidgeotto manip. (in other words, the good nido manip relied on the flawed use of new-game options for RNG). With a reliable way to bot new nido and pidgeottos this is no longer a problem.

Pika Cutscene Transition:

During the creation of the Yellow NSC TAS I discovered with the help of the PSR programmers that different rival name settings were affecting the battle transition when Pikachu is encountered by Oak. The game compares the first pokemon in your party's level against the encounter's level to determine how intense it should make the animation appear. Since you don't have a pokemon yet, the game gets very confused and ends up reading from the same place that was used for temp storage while setting the Rival name. The practical upshot is that a 30 frame faster animation can be obtained by taking 20 frames to write data into the rival name and then delete it so that the name still ends up as A for later text. 4 other frames were saved through quirks up to the rival battle including pika stats.

Rival 1 with Tackle Animation On:

Hilariously, the Tackle animation is one of the only animations that is faster with animations on, and also the only animation used in the initial rival battle. Knowing that it's faster to set options in-game, it then becomes logical to delay the options set which turns off animations until after the rival 1 battle (which makes the battle extremely hard to manipulate without losing frames, and most of the difficulty of the rewrite was spent just in getting ready a double gen 1 miss rival 1 battle that doesn't have options set yet).

Buying 1 less Poke Ball:

During the initial TAS, a 2 frame cost was added to have a spare Poke Ball in case a Sandshrew catch could be better than Charmander as an HM friend. It's not, so we removed the spare Poke Ball.

Nido manip:

DSUM describes a 13.2 second long cycle that encounters rotate through due to a flaw in encounter RNG, NidoM L6 being encounterable during only .67 seconds of the cycle. That .67s needs to happen sometime while walking through the 8 steps of route 2 grass to encounter Nido without delay, let alone to get perfect stats. Practically, this means that a given TAS up to the grass would have a roughly 1 in 5 chance of being in the right part of the cycle without having to wait up to 10 seconds. The previous TAS naturally hit this 1 in 5. With 56 frames saved up to Nido, we had to go back to Rival 1 and use the damage RNG to shift DSUM alignment, costing 21 frames. From there, the Nido manip was botted writing code for new tools from PSR programmer stringflow and also with the help of Hwangbro, allowing us to improve the portion of Nido manip outside of DSUM alignment. Overall though this results in 21 frames lost.
The search code to find the Nido and Pidgeotto manips is available below in src/searches - it requires libgambatte.dll available in the path or root of the project (can be built from gambatte-speedrun) as well as the game rom in roms/pokeyellow.gbc and a gbc bios. https://github.com/TiKevin83/pokemon

Pidgeotto manip:

The previous TAS did not use a bot for encounter manips and suffered for it with the 1% Pidgeotto slot. Again with the use of the latest encounter botting tools the Pidgeotto manip was able to be vastly improved. 67 frames were saved to the manip itself and an additional 18 frames were saved by dropping an unneeded crit from NidoranM on the last turn. This requires a 1/39 crit on one of Pikachu's Thundershocks and a 1/39 from Nido.
51 frames were saved on fight RNG in the forest, Brock and Rt 3 fights. More experience with strategy for finding fight RNG and clearing textboxes allowed me to implement lots of small frame saves. A notable find is the occasional end of paragraph textbox that clears earlier if you mash while text prints.

Mt Moon:

Mt Moon has some complexity with lag from NPCs being on screen and being able to avoid long stretches of encounters with small changes to walk paths/A presses. Better understanding of this helped save 35 frames.

Cerulean PC:

By turning on a dime, PCs can be "swagged" such that you look away from them while using them. This also happens at Bill's cell separator and the Indigo Plateau PC. The three uses cost 12 frames total and constitute an important speed/entertainment addition.

Misty:

Gen 1 Missed an additional turn instead of using Harden to avoid damage, and got high roll crits on both of the first 2 horn attacks to enable a non-crit HA on the last turn, saving 60 frames total in the Misty fight.

Surge:

Additional effort was placed into the RNG manip hunt on Surge, finding a double growl fail fight which helped most of the 20 frames saved between Misty and Surge.

Rock Tunnel:

The old TAS bonks briefly in Rock Tunnel for RNG manip. This looks bad and was removed, helping save 8 frames in the fly split.

Tower Rival:

improved encounterless manips saved 12 frames while Thrashing the Tower Rival's last 4 pokes saved 9 frames over the previous Horn Drill x5 fight.

New Ending Red Bar Route:

Through the rest of the TAS a new red bar route enabled saving 72 additional frames. The TAS was delayed briefly to investigate the potential for a double Clefairy trainer to replace Gambler's Growlithe and Arcanine. This turned out to not be possible due to the reduced XP causing us to be be outsped by Koga's first Juggler's Kadabra. However, this delay led me to reevaluate the existing strategy for maintaining red bar from Hypno to Champion. I discovered that a normal Quick Attack on Silph Rival Ninetales could keep red bar through Viridian Rival instead of Ember, then with the additional HP we could survive a crit from the Quick Attack at Viridian Rival Ninetales and be able to avoid damage on Agatha. Though we do need to give Agatha's Gengar a turn, that turn is much shorter with a Gen 1 Miss from Lick than being hit by it. 15 frames were also saved in rewriting all of the fight RNG so the ending badge run saved 87 frames.

Final Comments

In total, these changes helped save 390 frames on the published TAS (465 console verified), pulling the final time below 1:36:30 to 1:36:26.54 and dropping an IGT minute at the final Hall of Fame screen from 1:34 to 1:33:56 and 50 frames. The incorporation of botting tools into the early encounter manips has finally allowed the complex intro optimizations to shine through alongside numerous other small cleanups. Another note: the rerecord count is no longer useful when evaluating movies of this kind because the input log is repeatedly manipulated in external botting frameworks. The hardest work in searching for the new rival fight is not reflected at all in the count, nor is any of the effects of the botting work.

ThunderAxe31: Setting to Delayed, in view of a recently found improvement.
ThunderAxe31: File replaced with a 72 frames improvement and 1 blank frame trimmed at the end, and judging.
ThunderAxe31: Accepting as improvement over the current publication.
Spikestuff: Publishing.

TASVideoAgent
They/Them
Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 11819
Location: 127.0.0.1
This topic is for the purpose of discussing #6985: TiKevin83's GBC Pokémon: Yellow Version in 1:36:26.54
Samtastic
He/Him
Experienced Forum User, Published Author (109)
Joined: 11/30/2012
Posts: 755
I always say "yes vote" to Pokemon GB and DS runs they were part of my childhood!
Enjoys speedrunning, playing and TASing Oddworld games! Has TASed: Oddworld: Abe's Oddysee in 12.06.13 (with Dooty) Oddworld: Adventures II in 20.03.78 (with Dooty) Oddworld: Abe's Exoddus 100% in 2:08:28.4 (with Dooty) Oddworld: Abe's Oddysee 100% in 1:05:01.65 Oddworld: Abe's Exoddus in 37:18 Oddworld: Abe's Exoddus in 37:15 Oddworld: Abe's Exoddus 100% in 2:!5.44.12 Oddworld: Abe's Oddysee any% in 13:01.3 Oddworld: Abe's Oddysee any% in 12:59.95 Oddworld: Abe's Oddysee 100% in 1:04:16.27 Currently working on: Oddworld: Abe's Exoddus 100% (version 3.0)
TiKevin83
He/Him
Ambassador, Experienced Forum User, Moderator, Published Author, Site Developer (164)
Joined: 3/17/2018
Posts: 301
Location: Holland, MI
Rookie of 2018Gameboy TASer of 2018Gameboy TAS of 2018
Updated bk2 The TAS was delayed briefly to investigate the potential for a double Clefairy trainer to replace Gambler's Growlithe and Arcanine. This turned out to not be possible due to the reduced XP causing us to be be outsped by Koga's first Juggler's Kadabra. However, this delay led me to reevaluate the existing strategy for maintaining red bar from Hypno to Champion. I discovered that a normal Quick Attack on Silph Rival Ninetales could keep red bar through Viridian Rival instead of Ember, then with the additional HP we could survive a crit from the Quick Attack at Viridian Rival Ninetales and be able to avoid damage on Agatha. Though we do need give Agatha's Gengar a turn, that turn is much shorter with a Gen 1 Miss from Lick than being hit by it. Between the quick attack being better than ember, qa crit being slower than qa, and lick gen 1 miss being faster than lick hit, the 3 changes save 72 frames.
TiKevin83
He/Him
Ambassador, Experienced Forum User, Moderator, Published Author, Site Developer (164)
Joined: 3/17/2018
Posts: 301
Location: Holland, MI
Rookie of 2018Gameboy TASer of 2018Gameboy TAS of 2018
I've also updated a new commentated console verification with the red bar improvement: https://youtu.be/xgahKwzD7_I
Post subject: Movie published
TASVideoAgent
They/Them
Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 11819
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [4379] GBC Pokémon: Yellow Version by TiKevin83 in 1:36:26.54