#6119: TiKevin83's GBC Pokémon: Yellow Version "game end glitch" in 09:52.81

Submission Text Full Submission Page
This is an explanation of the strategy behind a console-verified Pokemon Yellow Any% NSC TAS in 9:52.
A previous revision in 10:17 showed at GDQx 2018 and can be seen now at the following link:
This was an improvement from an initial prototype which was made for the 2018 Pokemon Speedrun (PSR) Marathon with a time of 11:28:
Credit goes to Luckytyphlosion and Gifvex for glitch routing, Stringflow for helping with botting setups for more intense RNG, and GoddessMaria's general assistance including looking at forest and gen 1 miss manips.

Setup

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 TASes 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.

General Strategy

RAM Addresses in BizHawk are offset C000 lower than those listed in other sources; addresses are Big Endian and in WRAM.
End of Paragraph Textboxes that can be cleared with B faster than with A/without a jingle can frequently be cleared faster by adding B presses earlier in the textbox due to JoyPadLowSensitivity

Route

Intro

Manip TID 26F1 (RAM Address 1358 in BizHawk), current manip waits 4-3-12-2 frames on the first 4 inputs of the TAS to get this. This corresponds to the first half of the party count address.
Start a new game, and hold B while text is appearing while clearing text with A, switching which input holds and which one clears as needed to avoid consecutive input lag. This achieves the same effective text speed as Fast without setting options before New Game.
Name your character the default Yellow, which corresponds to a data value of 61 which can be swapped into the owned pokemon count
Name your rival the default Blue, which has a side effect of improving the speed of the battle transition before Oak catches Pikachu. The transition reads from invalid memory because battle transitions are based on your first pokemon's level and the opponent's level, but you don't have any owned pokemon yet! This out of bounds read ends up pulling from rival name. By either writing 5 characters into a non default name and then deleting 4 of them (useful for glitchless) or in a shorter run like NSC using a default name, you'll guarantee the ~30 frame faster transition.
Set options using fast options: inputs Start->Up->Up->Left+A->B->Start. This is the payoff for not setting options before new game, it is faster in TAS timing to set options after the game loads as the start menu is a few frames less laggy than entering options from the main menu.
Pikachu Manipulation Strategy
Before leaving the house, set up rDIV in System Bus FF04 so that the desired Pikachu DVs are possible. A Pikachu with DVs 70C8, 70C9, 70D8, 70D9, 71D8 or 71D9 is needed for ACE and the optimal rival battle. These DVs are generated from successive calls to HRandomAdd, and HRandomAdd is calculated by addition of its current value and rDIV, so for instance to generate Pika 70C9 HRA=C9 and rDIV=A7 are needed so that HRA2 = HRA + rDIV= C9 + A7 = 70. In decimal the ACE-worthy Pikas come from rDIV values of 151,152,167,168, and 169. Within a given map, rDIV tends to be stuck cycling in increments of 18.3125 so that it repeats every 14 frames. In order to break the cycle efficiently, the amount of time spent on previous maps needs to be varied to find different LCD disable lengths between maps. The last textbox before DVs can then be delayed to get to the right part of the cycle for 151-152 or 167-169. Also, in Oak's house where Pika DVs are obtained, textbox delays (especially before the last end of paragraph text box) will shift the initial HRA value (C9 in the example) without shifting rDIV on a given frame.
Practically this means delaying the last input before Pika DVs at least 14 frames to provide buffer space for the rDIV cycle, then changing up turns while walking, delaying walking, pressing A to check for NPCs, and delaying textboxes (especially end of paragraph boxes) on a previous map such as parts of Mom's house while watching Pika's DVs until DVs that correspond to the good rDIV values are found. Then in Oak's house removing a frame before Pika DVs and adding it in different areas of Oak's house will generate several different initial HRA rolls, hopefully landing on or near C8/C9/D8/D9. If C7/CA/D7/DA are found, removing another frame from before Pika DV generation and adding it to the immediately prior textboxes is more likely to shift HRA by a single value.

Rival One and Cutscenes

Use this Strategy to manip a Pikachu with DVs 70C8, 70C9, 70D8, 70D9, 71C8, or 71C9
Win in 3 turns in red bar by critting Eevee with Thundershock, taking a 7 damage 1/39 high roll tackle, hitting Eevee with non-crit Thundershock, taking a 10 damage 1/39 high roll critical hit tackle, then critting Thundershock again.
Avoid encounters, get the parcel, take all yolograss, deliver the parcel, avoid encounters again and buy two poke balls.
Do the old man catch tutorial. This is an improvement from the previous route which would lose about 7 seconds by catching the extra pokemon and using the Viridian Center instead of deathwarping to Pallet and catching the extra pokemon on the way back to Viridian.

ACE

Take all the yolograss and DeathFly off a Pidgeotto, it needs 8 Attack for a better range to 1 shot this Pikachu. Hope that the rDIV manipulation doesn't need to be done again for Pidgeotto to show up in the right part of the DSUM cycle.
On the way back to Viridian, catch any encounter with DVs 76XX (here 76XC with the Special value of C causing a Nidoking encounter in the forest)
Deposit Pikachu, ideally moving the NPC who blocks the optimal path out of the way.
We no longer need to reset here, resetting in TAS only serves to avoid a later encounter and the reset is slower than the encounter by ~7s.
Don't flash the pokedex, this was a relic from the RTA route (saved ~5s).
Go back towards the forest and enter the 2nd house on a frame where the bird moves left and the girl moves up immediately. The NPCs will have timers that are randomly set between 0 and 127 after each movement; we want to manipulate them to roll low so we can repeatedly move them.
Girl NPC Timer: BizHawk Address 0228
Bird NPC Timer: BizHawk Address 0238
Manipulate the Bird to move left 3 times and the girl to move up twice in total, including their movements as you're entering. While you're doing this flash the town map in the back of the room once. Walk to the tile 1 up and 3 right from the entrance as the NPCs finish getting into place.
Manipulate the bird to move left again just after you stop on that tile, then move right on a frame that puts FE in RAM Address 0331 and continue walking down and then left to leave the house.
Walk back to the forest and hop the first ledge you see once on your way there.
Choose Buy in the Mart, Double input 12 down then hold Down through 4 click items which need a B press to pass, then double input 6 down, press A scroll down to 89 and press B. Then double input 5 down and buy 4F.
Press B and hold with Left to reapply B to leave the buy menu, then press B twice more to close the shop.
Don't step right (no longer needed), open the menu, open items and use 4F only once to use the manipulated TID, Pikachu's DVs, and the stat experience gained from Eevee as code to set party count to 84 causing party underflow.
Open the party, your cursor location during these swaps can be tracked at RAM Address 0C26 starting at 0:
Swap slots 0 and 13
Swap slots 12 and 23
Swap slots 23 and 15
Swap slots 17 and 83 (scroll up past 0)
Close the menu and press up to enter the Hall of Fame. These swaps use the wild encounter's DVs (76 from attack and defense) to point to the Hall of Fame and then the item count to set the Hall of Fame Script straight to the credits past the initial Oak dialogue. The Yellow character name is also swapped into owned pokemon count to prevent an input when Oak assesses your pokedex. This saves 18 seconds over an ACE route that does not change the quantity of seen pokemon. The TAS ACE route now used is unique from the RTA route due to the near impossibility of manipping the unbuffered trainer ID (4 consecutive 1 frame 60fps inputs) and the impracticality of manipping Pikachu DVs through several textboxes and NPC timers.

Memory: Judging
Memory: Updating with 711 frame improvement.
Memory: Updating with 823 frame improvement.
Memory: Optimization seems good.
The run was definitely entertaining especially with the new improvements. The glitches in particular were entertaining.
Now while the run does indeed not corrupt save data (anymore), we typically prefer labels that prefer to say what a movie does rather than what it does not, so I am relabeling to "game end glitch".
I felt the run wasn't different enough from [3655]GB Pokémon: Blue Version "warp glitch" by gifvex in 10:12.00 for the reasons listed in this post. Many others also felt that the runs were very similar. Since this is the faster and arguably more entertaining of the two runs, I believe it should obsolete Blue.
Spikestuff: Publishing.

TASVideoAgent
They/Them
Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 11812
Location: 127.0.0.1
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
Hi everyone. There's been some previous discussion that hinted at Red/Blue and Yellow no longer obsoleting each other when the TASes are sufficiently unique and entertaining. I'm submitting this Yellow NSC TAS with the intention of it being a unique branch from Gifvex's Blue NSC TAS. I think this is a good idea for Red/Blue and Yellow in general due to unique elements in glitchless (instant text in Red) and better reflecting the state of the RTA community, in addition to different trainers and the technical differences with the introduction of color in Pokemon Yellow which cause it to be inherently longer than Red/Blue.
Doomsday31415
He/Him
Experienced Forum User, Published Author (355)
Joined: 8/28/2018
Posts: 75
Location: United States
SNES TASer of 2019
Cool stuff! What do you see when you continue the game from there?
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
Sadly the game crashes upon attempting to continue. Historically the "no save corruption" TASes have only avoided the specific save corruption abuse of hard resetting during a save, so they frequently result in unplayable save files upon completion.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author (3927)
Joined: 11/30/2014
Posts: 2388
Location: US
NES TASer of 2015
Neat! Not as smooth looking as Blue where you just walk away to victory,but interesting none the less that such a complicated serious of events can now be console verified. Yes vote from me.
Doomsday31415
He/Him
Experienced Forum User, Published Author (355)
Joined: 8/28/2018
Posts: 75
Location: United States
SNES TASer of 2019
This thread is relevant, since it contains much discussion about what should and shouldn't be considered completion: http://tasvideos.org/forum/viewtopic.php?t=13927 Personally, I think completion should require valid postgame save data for games that would normally create such data. It shouldn't necessarily be possible to have that specific save data through "normal" means, but it should very clearly be loadable and have any and all postgame flags set. That's my opinion, and I can imagine this could turn into another discussion, but at most I would say this would go in a "glitched" branch. Still entertaining to see all the ACE, though!
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
Thanks for your input Doomsday, I could follow your logic in a vacuum, but as it sits now Gifvex's Pokemon Blue NSC TAS is the more recent and relevant comparison for HOF completion criteria and this TAS satisfies the same objectives. I believe that Blue NSC also results in an unplayable save file if the game is allowed to save after the credits, but I haven't tested this personally. An NSC branch following those criteria would also diverge from the criteria for RTA runs as current RTA runs of Yellow NSC result in unplayable save files. Personally since my interest in TASing grew out of the RTA scene I tend to work under their rulesets where applicable.
Doomsday31415
He/Him
Experienced Forum User, Published Author (355)
Joined: 8/28/2018
Posts: 75
Location: United States
SNES TASer of 2019
TiKevin83 wrote:
current RTA runs of Yellow NSC result in unplayable save files.
To clarify, is the save file unplayable because it puts the player in a situation they cannot complete certain (or any) objectives from, or because it is corrupted and cannot be loaded period? If it's the latter, I would similarly question their validity. Even ignoring the definition of completion, it doesn't seem right to call the run "no save corruption" when the save is in fact very corrupted afterward. Just my two cents. Despite the potential technical fouls, I want to say I did think this was an interesting take on ACE without corrupting the save to do it.
Memory
She/Her
Admin Assistant, Experienced Forum User, Judge, Published Author (1816)
Joined: 3/20/2014
Posts: 1593
Location: Dumpster
GBA TASer of 2020GBA TAS of 2020GBA TASer of 2019Exotic platforms TAS of 2018
As far as I can tell this was not brought up at all with the Blue No Save Corruption run. If this is the case for that run, it was overlooked entirely.
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
GoddessMaria, Samsara, and fsvgm777 are my sisters <3
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
To clarify, Upon checking Gifvex's NSC run is completely playable on continue after "THE END." this TAS can continue but crashes quickly, and the same for the Yellow NSC RTA route.
Doomsday31415
He/Him
Experienced Forum User, Published Author (355)
Joined: 8/28/2018
Posts: 75
Location: United States
SNES TASer of 2019
What does "crashes quickly" mean, exactly?
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 screen with the character in what's left of the forest loads, but you can't move or use any menus.[/img]
Doomsday31415
He/Him
Experienced Forum User, Published Author (355)
Joined: 8/28/2018
Posts: 75
Location: United States
SNES TASer of 2019
So the save file can be loaded, but the situation it loads you into causes the game to crash. Does the save file have the postgame flags set? That is, is the cave in Cerulean unlocked?
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
Yes, it sets the same flags as old save corruption TASes would as it uses the same hall of fame warp, it just doesn't use the act of hard reset save corruption as a means to obtain ACE.
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
From what I'm gathering, basically the RTA community's NSC category definition only forgoes save data corruption via resetting during the saving process, while the movie class guidelines describe both that and save data corruption via underflow as a single category "Corrupts Save Data." So this movie is a bit ambiguous in that it could fit both forgoes save data corruption and corrupts save data.
Experienced Forum User
Joined: 12/29/2007
Posts: 482
I've always thought of the 0:00 branch as "hard resets allowed" and the other branches as "no hard resets allowed", since it implies an extra input button on the 'controller' that isn't usually considered input (the power button). The fact that the hard reset is required to corrupt save data is secondary, sort of.
ThunderAxe31
He/Him
Experienced Forum User, Judge, Moderator, Published Author (1258)
Joined: 9/12/2016
Posts: 1460
Location: Southern Italy
Gameboy TASer of 2017
Memory wrote:
As far as I can tell this was not brought up at all with the Blue No Save Corruption run. If this is the case for that run, it was overlooked entirely.
No, it's not the case for [3655] GB Pokémon: Blue Version "warp glitch" by gifvex in 10:12.00, as the credits roll is triggered by the game, after talking with Prof. Oak in the Hall of Fame. Anyway, I had a similar doubt while I was judging [3696] GBC Survival Kids 2: Dasshutsu! Futago Shima! by MUGG in 03:16.21, as the glitch used in that movie does set the relative post-game completion flag incorrectly. For this reason, I talked about it privately with other staff members, and they explained to me that post-game completion flags are not required; the only requirement is to trigger all of the game end routines. If necessary, I'll ask them for permission to display the relative chat log.
judgement text for #5932 wrote:
ThunderAxe31: As the author mentioned, the game doesn't record that the ending 2 has been unlocked, and the ending cutscene features graphical corruption. However, there is no problem since the ending cutscene has been displayed from start to end and then the game gets back to the main screen as supposed, so the game is considered as beaten. Additionally, while it's not a requirement, the game still recorded the completion flag in the SRAM, so the ending 2 will result as unlocked after resetting the console.
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"
Fortranm
He/Him
Editor, Experienced Forum User, Published Author (536)
Joined: 10/19/2013
Posts: 1000
While I do find this run entertaining, it really doesn't look that different from [3655] GB Pokémon: Blue Version "warp glitch" by gifvex in 10:12.00 to my untrained eyes, since both of these runs end at roughly the same point in the game. IMHO, Pocket Monsters Green "select glitch" would serve as a much better alternative "no save corruption" category for Pokemon Gen 1, if it's necessary at all.
ThunderAxe31
He/Him
Experienced Forum User, Judge, Moderator, Published Author (1258)
Joined: 9/12/2016
Posts: 1460
Location: Southern Italy
Gameboy TASer of 2017
Fortranm wrote:
While I do find this run entertaining, it really doesn't look that different from [3655] GB Pokémon: Blue Version "warp glitch" by gifvex in 10:12.00 to my untrained eyes, since both of these runs end at roughly the same point in the game.
Well, this Yellow run looks very different to me, and also more entertaining and more interesting. In my opinion it's something that deserves a separate publication, also because it's mainly besed on a glitch that is not available in Red/Blue.
Fortranm wrote:
IMHO, Pocket Monsters Green "select glitch" would serve as a much better alternative "no save corruption" category for Pokemon Gen 1, if it's necessary at all.
In any case, that is a Vault movie, so it's not eligible as an extra branch.
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"
Memory
She/Her
Admin Assistant, Experienced Forum User, Judge, Published Author (1816)
Joined: 3/20/2014
Posts: 1593
Location: Dumpster
GBA TASer of 2020GBA TAS of 2020GBA TASer of 2019Exotic platforms TAS of 2018
Do others feel this submission is uniquely entertaining compared to Red/Blue?
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
GoddessMaria, Samsara, and fsvgm777 are my sisters <3
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
Is there an explanation again for each category so far? Like what Fortranm said I'm getting rather confused of what the runs exactly do differently outside reaching credits in different ways.
Memory
She/Her
Admin Assistant, Experienced Forum User, Judge, Published Author (1816)
Joined: 3/20/2014
Posts: 1593
Location: Dumpster
GBA TASer of 2020GBA TAS of 2020GBA TASer of 2019Exotic platforms TAS of 2018
jlun2 wrote:
Is there an explanation again for each category so far? Like what Fortranm said I'm getting rather confused of what the runs exactly do differently outside reaching credits in different ways.
That is more or less my impression of the main difference between the two.
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
GoddessMaria, Samsara, and fsvgm777 are my sisters <3
Experienced Forum User, Published Author
Joined: 6/30/2010
Posts: 1032
Location: Zurich, Switzerland
I watched both of them again and a notable difference was that Yellow has more setup time (and downtime with cutscenes/dialogue), but a more interesting payoff. It's hard for me to say what I prefer in terms of entertainment. If I have to choose one version over the other, I will always go with Red/Blue for the completely subjective reason of them being the first Pokémon games I played and not having the Pikachu gimmick.
http://nerdybynerds.ch/ Current project: Gex 3 any% Paused: Gex 64 any% There are no N64 emulators. Just SM64 emulators with hacky support for all the other games.
Memory
She/Her
Admin Assistant, Experienced Forum User, Judge, Published Author (1816)
Joined: 3/20/2014
Posts: 1593
Location: Dumpster
GBA TASer of 2020GBA TAS of 2020GBA TASer of 2019Exotic platforms TAS of 2018
ThunderAxe31 wrote:
In my opinion it's something that deserves a separate publication, also because it's mainly besed on a glitch that is not available in Red/Blue.
Which glitch is this?
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
GoddessMaria, Samsara, and fsvgm777 are my sisters <3
Experienced Forum User, Published Author (17)
Joined: 3/13/2017
Posts: 15
Some potential improvements from the demo in this post. I'm not sure where other time is lost but it could be below 9:50 with luck manip.
  • The soft reset before the sprite coordinate manip isn't needed in this route. It's useful in RTA to clear the engaged trainer class value so a battle with the trainer from the deathfly doesn't begin after the forest text. That value here is the special stat of the Pokemon caught after the deathfly. A battle still begins because it's nonzero, but it's a wild Pokemon and it's 6-7s faster to run from it than to do a soft reset.
  • The menu flash before the sprite coordinate manip also isn't needed in this route. It's required in RTA to load a $50 tile into the buffer that the TMTRAINER item's name will read from when A is pressed on it so it doesn't crash. This route doesn't buy that item so it can be skipped to save like 5s.
  • Another 10s+ can be saved with more efficient party swaps at the end. The demo sets the Hall of Fame script index to 2 to skip Oak's text and sets up a warp tile to the Hall of Fame, which can be done in 4 swaps total. This requires an item count of 2, Pidgey to have $76xx DVs, and the ACE to load $54 into the party count. The player name is used for the Pokedex owned flags instead of Pidgey's nickname.
Memory wrote:
ThunderAxe31 wrote:
In my opinion it's something that deserves a separate publication, also because it's mainly besed on a glitch that is not available in Red/Blue.
Which glitch is this?
The mart is possible in Red/Blue but not in the same way. In Yellow, the town map text uses ID $41, and the 65th text in Viridian Forest reads from $C331. The bird sprite is deloaded when its screen x-position is -2 to leave $FE, the control character for a mart, in the OAM buffer at $C331. Red/Blue's forest can read from $C331 with text IDs $27, $2C, and $31, but those aren't used by anything nearby.