(Link to video)
Submission Text Full Submission Page
This TAS of Pokémon Yellow resets while saving to screw up some memory so that it can complete the game as fast as possible. Now faster than the previous submission by 35 frames (about ~0.5 second).

Game objectives

  • Emulator used: BizHawk v1.4.1
  • Heavy glitch abuse
  • Corrupts save data

How we beat the game

Normally, when resetting the game while saving it will say that the save file is corrupted. If you reset at the perfect time it will let you load the game which has corrupted RAM. The game fills every address starting from $D162 to $D2F5 with 0xFF which will make the game think you have 255 Pokemon. Since the game only has place for 6 Pokemon, it will overwrite other addresses when you switch Pokemon beyond the 6th spot.
Previously, TASes would overwrite $D35D with a value (usually 0x76 or 0xD0) that loads bank 0x16, and puts 0x6401 (01 64) at $D36D to load the code for the Hall of Fame.
This TAS overwrites $D35D with 0xF8, loading bank 0x3C where some Hall of Fame data is, and puts 0x50F1 (F1 50) at $D36D to enter the credits routine at address 0x50F1.
The choice of 0x50F1 is motivated by the fact that both bytes occur as character values in name strings. Thus, by naming Rival as AJS× (that's a times symbol there), we get the string 80 89 92 F1 50 at $D349, and we can easily switch F1 50 over to $D36D with some Pokemon switches.
To get 0xF8 to $D35D, we enable the item menu by switching memory so that the item quantity is 255, and then throw away 8 of the 5th item so $D326 becomes 0xF8. We can then switch it over to $D35D.
(Since we used the values from the rival name and creating fitting values by tossing items, we no longer have to luck manipulate the Trainer ID which saves frames)
The resulting jump into the credits routine results in a glitched mess of the credits screen, mostly with "THE END" in it. So, enjoy.
  • Names the rival AJS× (that's a times symbol there). Memory at $D34C-D is F1 50.
  • Resets while saving at the right time to corrupt memory.
  • Loads corrupted save file. Number of Pokemon is now 255.
  • Switches 7th Pokemon with 10th. Number of items is now 255.
  • Goes to items and dumps 8 of the 5th item. $D326 is now 0xF8.
  • Switches 14th Pokemon with 22nd. $D34C-D is switched to $D3A4-5 so now $D3A4-5 is F1 50.
  • Switches 22nd Pokemon with 17th. $D3A4-5 is switched to $D36D-E so now $D36D-E is F1 50. In addition, $D326 is switched to $D35D so now $D35D is 0xF8.
  • Leave the Pokemon menu. Since the map is F8, the game loads ROM bank 3C. It reads 0x50F1 from the map pointer and thinks that it is a valid address and so executes the address, which is in the middle of the credits routine.

Other strategies we tested

  • We tried to manipulate the 0xF8 (which we created here by tossing items) with the Trainer ID, because switching items is faster than tossing them. Unfortunately that takes one pokemon switch more and the glitched items take long to load. So assuming the luck manipulation would take +0 frames it is 93 frames slower than this run.
  • Jumping to bank 0x18 and to address $4F55 executes the HoF routine as soon as you close the menu. That is because it calls address $3EB4, which is a function pointer so it depends on A which function it will execute. To execute the HoF routine A has to be 0x55. A will be the low byte of the address it jumped to (in this case we jumped to $4F55 so low byte is 0x55). At every $3EB4 call there is a LD A,#?? right before it, which means he loads the value 0x?? into A. So we have to find a $3EB4 call that is at address $xx55, but there is no. The good thing however is that in bank 0x18 starting from address $4F54 it is: 3E 15 CD B4 3E which means LD A,#15 : CALL $3EB4. We jump to $4F55 and the game thinks the 0x15 is an instruction, so it executes DEC D : CALL $3EB4 which doesn't change A so the HoF is executed. Unfortunately we can't manipulate the jump to $4F55 with the name of the rival and other ways of manipulating turn out to be slower.

Thanks

Thanks to p4wn3r and gia, for their previous runs as well as all the research they did to dissect the game.

Screenshots


feos: This was a great try. I'm proud of the effort put into disassembling this game. Unfortunately, this run does not complete/beat the game. It leaves it in an infinite loop somewhere during the THE END drawing event. The game then does not react on the B button that normally resets it after the ending, and the save that is normally created after you beat the game is not being made here. The game does not come into the finished state and does not proceed as it was finished. See these posts for more information. Rejecting.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14873
Location: 127.0.0.1
Post subject: Re: #3903: Masterjun & FractalFusion's GBC Pokemon Yellow "glitched" in 01:10.47
Active player (421)
Joined: 3/21/2011
Posts: 127
Location: Virginia (United States)
Well, this is certainly a welcome surprise! It's nice to see an actual improvement rather than copied input :D an updated version on Bizhawk.
YouTube Channel - Twitter Current projects: Sutte Hakkun, Hyper VI, RTDL, own hacking projects
Post subject: Re: #3903: Masterjun & FractalFusion's GBC Pokemon Yellow "glitched" in 01:10.47
Spikestuff
They/Them
Editor, Publisher, Expert player (2292)
Joined: 10/12/2011
Posts: 6337
Location: The land down under.
kaizoman666 wrote:
Well, this is certainly a welcome surprise! It's nice to see an actual improvement rather than copied input just an updated version on Bizhawk.
2nd that. Yes vote, since it's faster than the dud and it's more closer to the vba version (which in sense makes it faster obviously)
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Post subject: Re: #3903: Masterjun & FractalFusion's GBC Pokemon Yellow "glitched" in 01:10.47
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
A new route huh? You know, you guys seem to have alot of knowledge with gb(c) glitching. There are some runs which can definitely be improved with memory corruption glitches that you guys might be interested in. Check it out. :)
darkszero
He/Him
Joined: 7/12/2009
Posts: 181
Location: São Paulo, Brazil
That ending was completely surprising and amusing. I laughed REALLY loud here :D YES vote.
Player (12)
Joined: 6/17/2006
Posts: 501
The temp encode ends rather abruptly on NicoNico, and it's even shorter on YouTube. To whomever is going to encode this, I would appreciate if the real "THE END" could remain on the screen for a while before the video ends. As far as entertainment goes, it's an easy yes vote from me.
Banned User, Former player
Joined: 3/10/2004
Posts: 7698
Location: Finland
From the perspective of a person who has no intimate knowledge of the technical details, somehow this kind of lacks the feeling of the game being actually completed. Yes, it says "The End", but is that really the ending of the game, or is it perhaps just somehow glitching the final picture onto the screen? Does showing the "The End" picture on screen constitute completing the game?
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11267
Location: RU
Surely not. All the previous runs of that branch were accepted by accident.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Spikestuff
They/Them
Editor, Publisher, Expert player (2292)
Joined: 10/12/2011
Posts: 6337
Location: The land down under.
Warp wrote:
Does showing the "The End" picture on screen constitute completing the game?
Have we all forgotten about a different game and how it finished?
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4016
Warp wrote:
Does showing the "The End" picture on screen constitute completing the game?
You may as well ask if talking to Professor Oak without first beating your rival counts as completing the game.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
so… who found the improvement? why wasn’t it discovered sooner? and I’d also like to see the full ending, not just a few seconds of it
MESHUGGAH
Other
Skilled player (1888)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Congratulations for improving the previous run! By the way, here's my brainstorm over "game ending" rule suggestions: Post #256955 and a next one: Post #257111
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Spikestuff
They/Them
Editor, Publisher, Expert player (2292)
Joined: 10/12/2011
Posts: 6337
Location: The land down under.
ALAKTORN wrote:
and I’d also like to see the full ending, not just a few seconds of it
It goes on an endless loop of showing sprite, THE END, showing sprite, THE END
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2224
Location: Georgia, USA
This is pretty hilarious. However, it does raise this question of whether this constitutes a valid ending to the game. Spikestuff's example of Super Mario World is a good comparison, though in that one, the final screen is actually the screen you would expect to see from a valid completion.
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11267
Location: RU
It's not the screen that matters. The game behavior does. If it behaves after THIS glitched movie the same way it does after a normal gameplay, I see no problem at all.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Yup. Ya broke it. Screw TV, I stand in place and become a Pokémon master. That's how they are made.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Guga
He/Him
Joined: 1/17/2012
Posts: 838
Location: Chile
rofl
Joined: 2/20/2010
Posts: 209
Location: I'm in space
seems more like a battle sequence glitch-out involving the The End image than a proper game completion, yet is certainly funnier than the previous version, so whatever.
Oh, play it cool. Play it cool. Here come the space cops.
Banned User, Former player
Joined: 3/10/2004
Posts: 7698
Location: Finland
Patashu wrote:
Warp wrote:
Does showing the "The End" picture on screen constitute completing the game?
You may as well ask if talking to Professor Oak without first beating your rival counts as completing the game.
I'm not quite sure I understand what you are trying to say. Ostensibly there's a subroutine in the game for displaying the final picture. If this run simply glitches the game into jumping to that subroutine and then do nothing, does that constitute completing the game? (I'm not saying that's the only thing this run does. I'm asking that if that were the case, would it be in principle considered a game completion?) Let's consider a slightly different situation: We glitch the game into running arbitrary code. We use that to write a small routine that reads the end screen data from the game ROM and display it on screen. Would that constitute "completing the game"? I think most people would agree that it wouldn't. It's simply showing one picture from the game's ROM data, nothing more. Now, if instead of writing our own "dump-picture-onto-screen" routine and glitch the game into running it, we make the game simply glitch into jumping into its own "dump-the-end-picture-onto-screen" routine. Does that make much of a difference in the end? I suppose that if the game itself considers the game as finished at this point (eg. if you save now, it would consider it a "game completed" save), it could be considered a valid completion. (A rather nondescript one, I might say, but still a technically valid completion.)
Joined: 3/9/2009
Posts: 530
Warp wrote:
Patashu wrote:
Warp wrote:
Does showing the "The End" picture on screen constitute completing the game?
You may as well ask if talking to Professor Oak without first beating your rival counts as completing the game.
I'm not quite sure I understand what you are trying to say. Ostensibly there's a subroutine in the game for displaying the final picture. If this run simply glitches the game into jumping to that subroutine and then do nothing, does that constitute completing the game? (I'm not saying that's the only thing this run does. I'm asking that if that were the case, would it be in principle considered a game completion?) Let's consider a slightly different situation: We glitch the game into running arbitrary code. We use that to write a small routine that reads the end screen data from the game ROM and display it on screen. Would that constitute "completing the game"? I think most people would agree that it wouldn't. It's simply showing one picture from the game's ROM data, nothing more. Now, if instead of writing our own "dump-picture-onto-screen" routine and glitch the game into running it, we make the game simply glitch into jumping into its own "dump-the-end-picture-onto-screen" routine. Does that make much of a difference in the end? I suppose that if the game itself considers the game as finished at this point (eg. if you save now, it would consider it a "game completed" save), it could be considered a valid completion. (A rather nondescript one, I might say, but still a technically valid completion.)
Concrete example of something that loads part of the ending onto screen without actually calling the ending routine http://tasvideos.org/1865M.html
Editor, Player (44)
Joined: 7/11/2010
Posts: 1022
feos wrote:
It's not the screen that matters. The game behavior does. If it behaves after THIS glitched movie the same way it does after a normal gameplay, I see no problem at all.
This is worth checking. The only thing unlocked upon defeating the game in RBY is IIRC the intended route into Unknown Dungeon. Can the resulting save file be loaded, and if it can be, is Unknown Dungeon unlocked? I guess I consider that the correct place in the code to glitchwarp to is the save just before the credits, rather than the credits themselves.
Joined: 7/7/2012
Posts: 16
Previously, TASes would overwrite $D35D with a value (usually 0x76 or 0xD0) that loads bank 0x16, and puts 0x6401 (01 64) at $D36D to load the code for the Hall of Fame. This TAS overwrites $D35D with 0xF8, loading bank 0x3C where some Hall of Fame data is, and puts 0x50F1 (F1 50) at $D3F1 to enter the credits routine at address 0x50F1.
I have no clue what the hell any of that means. It looks cool, though! So that gets a yes vote from me.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4016
Tangent wrote:
Concrete example of something that loads part of the ending onto screen without actually calling the ending routine http://tasvideos.org/1865M.html
In the case of A Boy And His Blob, though, the game was still going - you could still lose the game and you hadn't lost player control.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
ais523 wrote:
feos wrote:
It's not the screen that matters. The game behavior does. If it behaves after THIS glitched movie the same way it does after a normal gameplay, I see no problem at all.
This is worth checking. The only thing unlocked upon defeating the game in RBY is IIRC the intended route into Unknown Dungeon. Can the resulting save file be loaded, and if it can be, is Unknown Dungeon unlocked? I guess I consider that the correct place in the code to glitchwarp to is the save just before the credits, rather than the credits themselves.
I’ll refrain from voting before this is ascertained
Joined: 3/9/2009
Posts: 530
Patashu wrote:
Tangent wrote:
Concrete example of something that loads part of the ending onto screen without actually calling the ending routine http://tasvideos.org/1865M.html
In the case of A Boy And His Blob, though, the game was still going - you could still lose the game and you hadn't lost player control.
I wouldn't say that making the game call the "the end" image and then causing a soft crash or the game to hang to count and that would fulfill those criteria.