#6656: TiKevin83's GB Pokémon: Blue Version in 1:29:35.61

Submission Text Full Submission Page
This is a thorough explanation of the strategy behind a Pokemon Blue Any% Glitchless TAS in 1:29:35 improving submission 6377/movie 4013M which you can watch at the following link.

TL:DR for impatient people

1051 frames/ almost 18 seconds saved, including the following changes:
~2s save a turn on the last battle in Viridian Forest, 4 1/39 crits instead of Leer+4 1/39 non-crit
~.5s different flyer catch (pidgey has shorter cry, but getting pidgey early causes a longer animation in Cerulean so it's not as good as it could be)
~1.5s eliminate RNG delay on Brock and get Screech fail instead of tackle miss turn 1 on onix
~2.5s better route3 RNG delay
~.5s crit+non crit Koffing instead of 2 crits in moon
~1s fix delay length to find Sandshrew before Misty
~3s Better Misty fight, Staryu Gen 1 miss into Poison Sting instead of X defend into HA
~1s don't do Thunderbolt in slot 1, the PP text takes longer to print
~6s Drill koffing then Elixer on Weezing into Gen 1 Miss Selfdestruct to optimize properly for the ENG PP route
The addition of Swag PC at the Elite 4 PC for entertainment purposes. This is a good example of speed/entertainment tradeoff

Important Credits

Stringflow and Sudotrainer need a big thanks for assisting with getting me set up to bot my own encounter RNG manips for this TAS. Until that setup this TAS would not have been possible. Gifvex needs a big thanks as always for getting the emulator set up in BizHawk to be accurate enough for these TASes to sync on console. Extrems's work on Game Boy Interface also enabled the console playback of this TAS through his Game Boy Interface software.

Setup:

The TAS was created using BizHawk 2.4 and later interim builds that still sync on 2.4. As in the Yellow Glitchless and NSC TASes and in MrWint's Crystal Glitchless TAS, the use of GBC mode, a gbc_bios.bin firmware, and CGB in GBA "true" mode allows the TAS to sync on the Game Boy Player console which can be seen in my initial video. This page explains how we verify these TASes https://runs.tas.bot/GBC.html
The console capture quality update noted in the previous TAS is now possible simply by using up to date GCVideo firmware and requires no filtering in OBS.

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.
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). In Pokemon Blue it has the additional benefit of canceling pokemon cries when sent into battle, which changes many routing decisions including the Gastly fight after the heal pad.
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 Gen 1 Pokemon, 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 item bag. The Fly menu does not have this trick available as it does in Yellow. The trick is also useful when B reapplies A to get on the Bike (also used in RTA), to deposit pokemon (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. In Blue unlike in Yellow, some A presses to use items can be applied the same frame as an up or down press.
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. The Instant Text obtained from talking to the Bike Shop owner without a Bike Voucher falls under the allowed oversight category. This ruleset is uncontroversial in the RTA community at this point.
Note: This TAS came about from the result of two previous efforts. First there is a somewhat improvable TAS of the JPN release, whose times are not easily comparable due to the text differences and the major route changes from not using instant text or the poke doll on Marowak. Last year I adapted the strategies from that TAS into the ENG release using current category definitions and game knowledge.
Here's a link to the old JPN cart TAS in 4 parts: https://youtu.be/_flV070jIEY and to the previous ENG TAS which this is an improvement of https://youtu.be/TlnN9OlkW6Y

Route:

Set options in game (Fast Off Set) using A and B holds to have text roll at the fastest speed while text speed is still on medium in the intro.
Squirtle DVs: 12/14 attack, 8+Special, 7+ speed, not both speed+special odd for specific HP requirements

Rival 1

Tail Whip->1/39 non-crit Tackle, 1/39 non-crit Tackle, any normal Tackle roll (growl fails from Bulba)
Buy 4 Poke Balls (Nido, Cut slave, Flyer, bag slot)
Catch L3 Nido on Route 22 - DVS 15 Attack, 0-8 Defense (must be even), 14 Speed, 15 Special
Kill L5 pika while using it to get hit to 1 HP (Pika needs to be 0-4 HP 0-9 Defense for 3x 1/39 normal tackle hits)
The previous 2 encounter manips were found using the RNG manip bot developed by Stringflow and amended for this TAS by Sudotrainer and me. The Nido takes a little less than 2 seconds of delay for a near perfect F6EF stat line, and the Pika takes only 8 frames of delay mainly because there are so many encounter tiles available to sync up the DSUM without losing time.
Weedle can spam string shot miss, hit 3 1/39 crits and one normal crit
Catch Pidgey after the forest for the shortest cry possible

Brock

Geodude can't die to Bubble crit, instead 2x Bubble with a Tackle miss from Geodude
Cause Onix to miss turn 1, crit him to 1, die, get Nido hit to 1 (Nido needs 0-8 defense DV), finish Onix and level to 8. This fight is why the Nido on Route 22 needs to be level 3, otherwise L4 Nido jumps past L8 to L9 and can't learn Horn Attack.
Crits with specific damage range needs are hard to manipulate with Squirtle and Nidoran as they have low base speed, the delays necessary for them clean up once we get Nidoking
Sell Bide, Buy 7 Escape Ropes (needed for Bill's house without walking to the moon escape rope, also faster than teaching Dig)

Route 3

Caterpie: Leer+2x HA (take 2 non-crit 5 damage tackles to 1 HP)
Weedle: HA crit+HA
Caterpie: HA+HA crit (take a 1/39 5 damage Tackle to 1 HP out of 31)
Rattata: HA+HA crit
Ekans: HA+HA crit
Weedle: HA Crit
Kakuna: Tackle+HA crit
Caterpie: 1/39 HA crit
Metapod: HA Crit+Tackle non-crit
Caterpie: 2x HA (take 4 damage)
Metapod: HA+HA crit

Mt Moon

Grab Moon Stone
Rattata: PS+HA Crit
Zubat: HA Crit+Supersonic Fail+Tackle
Grimer: HA+HA crit
Voltorb: HA crit+PS
Koffing: HA 1/39+HA 1/39 crit
Catch Sandshrew after Mt Moon

Cerulean

Center to set the escape rope waypoint
IT is slightly faster for Misty's gym but makes the zany RNG manip too difficult because PrintLetterDelay cannot be used while IT is on
Inside Misty Gym, swap Nidoking with Squirtle, evolve to Nidoking
Misty's Trainer: HA crit x2

Misty

Staryu: HA crit, Gen 1 Miss from Staryu, PS (1/39 both)
Starmie: BB non crit, HA Crit high roll, Gen 1 Miss into HA 1/39 crit x2
Teach Bubblebeam
Get IT
Pidgeotto: Swap up and use BB, get hit to 1, BB crit
Abra: PS crit
Rattata: BB crit
Bulbasaur: HA crit
Caterpie: PS crit
Weedle: BB
Pidgey: BB crit
NidoF: BB crit
Rattata: BB
Ekans: BB crit
Zubat: BB crit
Pidgey: BB crit
NidoF: BB crit
Mankey: BB crit
Ekans: BB crit
Zubat: BB crit
Onix: BB
NidoM: BB crit
NidoF: BB crit
Rattata: BB, teach Thrash over Poison Sting
Ekans: BB
Oddish: Swap up Thrash, Thrash non-crit x3
Escape Rope back to Cerulean in Bill's house after getting the SS Ticket
Dig Rocket: Thrash non-crit x2
Pidgeys: Thrash non-crit x3
Spearow+Raticate: Thrash
Boat Rival
Pidgetto: Get hit back to 1 from QA crit, Thrash crit
Raticate: Thrash
Kadabra: Thrash
Ivysaur: Thrash crit
Manip the 1st can on exiting the boat as the cans are selected when you enter Vermillion.
Teach Cut, use Cut, Manip can 2 after choosing the 1st can

Surge

Voltorb: Thrash
Pikachu: Thrash
Raichu: Thrash crit
4 Turn Thrash: Thrash
Venonat Trainer: Thrash
Cubone: BB
Slowpoke: TB
Slowpoke: TB
Oddish+Bulbasaur: Thrash
Geodude+Geodude+Graveler: TB->Selfdestruct Gen 1 Miss
Meowth+Oddish+Pidgey: Thrash (use Pidgey for red bar maintenance)
Growlithe: TB crit
Vulpix: TB crit
Get Underground Elixer

Celadon Mart

Shop: 2 TM07, 2 Poke Doll, Fresh Water, 3 X Speed
Fly Menu: Swap up Poke Doll, teach TM07 HD in 3, teach Fly

Tower Rival

Pidgeotto: HD
Gyarados: HD
Growlithe: Thrash
Kadabra: Thrash
Ivysaur: Thrash crit
Gastly: TB crit
Gastly: TB crit
Gastly: Thrash->Night Shade x4, TB crit
Gastly: TB crit
Zubat: Thrash
Zubat: Thrash
Golbat: Thrash crit
Koffing+Drowzee: Thrash crits
Zubat: Thrash
Rattata: Thrash
Raticate: Thrash
Zubat: Thrash
Snorlax Menu: Swap up Elixer
Get Max Elixer on cycling road after biking down the left side
Drowzee: Thrash crit
Drowzee: Thrash crit
Kadabra: Thrash
Drowzee: Thrash crit
Drowzee: HD
Hypno: HD

Koga

Koffing: HD
Muk: HD
Koffing: HD
Weezing: Elixer, Selfdestruct Gen 1 Miss
Pallet menu: Swap up X Speed, HM03, Rare Candy to get back to the top of the menu for escape rope in Mansion.
Get Silph Elixer
Arbok: HD

Silph Rival

Pidgeot: TB crit
Gyarados: TB
Growlithe: TB crit
Alakazam: HD
Venusaur: HD
Cubone: BB
Drowzee: HD
Marowak: BB
Silph Gio
Nidorino: TB crit
Kangaskhan: TB crit
Rhyhorn: BB
Nidoqueen: HD
Use an Elixer

Blaine

Growlithe: BB crit
Ponyta: BB crit
Rapidash: HD
Arcanine: HD
Exeggcute: HD

Erika

Victreebel: Thrash crit
Tangela: Thrash crit
Vileplume: Thrash crit

Sabrina

Kadabra: Thrash
Mr. Mime: Thrash crit
Venomoth: Thrash crit
Alakazam: Maintain red bar with Psywave, Thrash crit
I'm very proud of the Alakazam fight here. The fight requires manipulating a 4 turn thrash on Kadabra (1 in 2), 2 crits on Mr Mime and Venemoth (1 in 6 each), Psywave use from Alakazam (1 in 4), Psywave exact damage (1 in 64 because damage is from 0 to 1.5x level), and then another thrash crit (1 in 6). Getting all this means you never need to take damage again for red bar through the rest of the run.
Rhyhorn: BB
Machoke: TB crit
Machop: TB crit
Machoke: TB crit

Gio Gym

Rhyhorn: BB
Dugtrio: BB
Nidoqueen: HD
Nidoking: HD
Rhydon: BB
Swap up Max Elixer, Teach HM04, Teach Fissure in 2

Viridian Rival

Pidgeot: X Speed, TB crit
Rhyhorn: BB
Gyarados: TB
Growlithe: TB crit
Alakazam: Fissure
Venusaur: Fissure
Use an Elixer

Lorelei

Dewgong: Fissure
Cloyster: Fissure
Slowbro: HD
Jynx: HD
Lapras: HD

Bruno

Onix: BB
Hitmonchan: TB crit
Hitmonlee: TB crit
Onix: BB
Machamp: HD

Agatha

Gengar: X Speed, Fissure
Golbat: TB crit
Haunter: Fissure
Arbok: HD
Gengar: Fissure
Use Max Elixer

Lance

Gyarados: TB crit
Dragonair: Fissure
Dragonair: Fissure
Aerodactyl: TB crit
Dragonite: HD

Champion

Pidgeot: X Speed, HD
Alakazam: Fissure
Rhydon: BB
Gyarados: HD
Arcanine: HD
Venusaur: HD
Bag Slot notes to manip a full bag of 20 items for Gyms 4-7:
Poke Ball
TM34->Escape Rope->TM27
Helix Fossil
Nugget
SS Ticket
TM28
Full Restore
HM01
Bicycle
Elixer
TM07
Poke Doll
Fresh Water->Card Key
X Speed
HM02
Rare Candy->Secret Key
Poke Flute
Max Elixer
HM03
Gold Teeth->HM04

Notes:

The frame count of this TAS will make it appear to run longer than it actually does. You can see this in the commentary/console verification playback, the TAS actually runs at 1:29:35 from bootup to last input. How is this possible without the TAS desyncing? It turns out that frames do not actually exist on the game boy while the LCD is disabled, and the emulator's counted frames during this time can last a shorter than usual number of CPU cycles. For console playback we sync the inputs by CPU cycle count, and using the total executed cycle count obtained from the emulator instead of frame count we get the same time as the console playback at 1:29:35.

ThunderAxe31: Judging.
ThunderAxe31: File replaced for a corrected CycleCount value.
ThunderAxe31: Accepting as improvement over the current publication.
Spikestuff: Publishing.

TASVideoAgent
They/Them
Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 11812
Location: 127.0.0.1
This topic is for the purpose of discussing #6656: TiKevin83's GB Pokémon: Blue Version in 1:29:35.61
The8bitbeast
He/Him
Experienced Forum User, Published Author (2619)
Joined: 11/26/2015
Posts: 160
Location: Australia
Exotic platforms TAS of 2020Exotic platforms TAS of 2020Sega TASer of 2019Glitchy TAS of 2019PSX TASer of 2017Sega TASer of 2017Sega TASer of 2016
Awesome improvement! Yes vote
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 did a more thorough split by split comparison of frame times to more accurately account for the timesave. We actually save 3.5s on the weedle fight, 2 seconds on route 3, 2 seconds on Misty, a second on Nugget bridge, 2 seconds from the new flyer, 6.5s on Koga accounting for the Elixer saved in the Blaine split, and another second from the flyer cry at the PC on the Lorelei split. The other random 7-8 frame diffs are caused by a different move order. New Old Diff Split 26397 26401 -4 -4 Weedle Guy Start 29189 29404 -215 -211 Exit Forest 36212 35375 +837 +1052 Brock 53124 52402 +722 -115 Enter Moon 64976 64249 +727 +5 Exit Moon 76609 75992 +617 -110 Misty 92412 91844 +568 -49 Nugget Bridge 126988 126403 +585 +17 Surge 160098 160689 -591 -1176 Fly 185039 185622 -583 +8 Poke Flute 206289 207154 -865 -282 Koga 244815 245789 -974 -109 Blaine 252129 253110 -981 -7 Erika 258263 259254 -991 -10 Sabrina 269968 270945 -977 +14 Giovanni 298153 299192 -1039 -62 Lorelei 302168 303200 -1032 +7 Bruno 306662 307701 -1039 -7 Agatha 311923 312966 -1043 -4 Lance 317990 319041 -1051 -8 Champion
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
Nice work on the Pokemon TAS. Will you be attempting "gltichless" Silver/Gold in the future?
Post subject: Re: #6656: TiKevin83's GBC Pokémon: Blue Version in 1:29:35.61
ThunderAxe31
He/Him
Experienced Forum User, Judge, Moderator, Published Author (1258)
Joined: 9/12/2016
Posts: 1460
Location: Southern Italy
Gameboy TASer of 2017
TASVideoAgent wrote:
The console capture quality update noted in the previous TAS is now possible simply by using up to date GCVideo firmware and requires no filtering in OBS.
Does this mean that we can finally all agree on a more accurate palette for dumping GBC TASes? Because I'm watching side-by-side your published movie and this submission, and I'm noticing that the published movie appears slightly greenish compared to your GBI capture.
my personal page - my YouTube channel - my GitHub - my Discord: ThunderAxe31#1512 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
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
Heh there will always be the argument of "how it would've looked like on a GB/GBC/GBA" vs "how it's specified to look in the code." The correct choice can vary heavily per-game since some games were colored to correct for the GBA screen and some weren't.
EZGames69
He/They
Experienced Forum User, Published Author, Publisher (4046)
Joined: 5/29/2017
Posts: 2416
Location: Marquette MI
TASer of 2020SNES TASer of 2020Sega TASer of 2020TASer of 2019Sega TASer of 2019Exotic platforms TAS of 2018
I think we should take into account the possibility that some capture cards may have some sort of filter on them that makes things either darker or brighter.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Post subject: Movie published
TASVideoAgent
They/Them
Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 11812
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. ---- [4163] GB Pokémon: Blue Version by TiKevin83 in 1:29:35.61
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
A thirty frame improvement to this movie was discovered around the time of publication: Typically menuing inside buildings is marginally faster than menuing in the overworld due to additional lag when reloading the map. However when walking between map connections, the audio track switching creates a period where other audio tracks cannot load (similar to red bar overriding level up jingles), including the jingle when switching pokemon or using a moon stone. The practical outcome is that by moving the existing menu in Misty's gym to the map connection entering Cerulean you skip the jingle when switching Nidorino and Squirtle which overall saves 30 frames. We searched for other places where this could be manipulated in Pokemon Blue and Yellow Glitchless TAS but didn't find any other places where the circumstances helped, and even the Cerulean swap didn't help Yellow.