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

Game objectives

  • Emulator used: BizHawk 1.4.0
  • Heavy glitch abuse
  • Corrupts save data
  • Manipulates luck

Comments

The previous run was made on VBA which was replaced by Bizhawk for GB and GBC TASes. This run is more than copied input from the other movie. I had to figure out what was going on in the game and then try to optimize that. The clearly hardest part was luck manipulation. To get the values needed you have to manipulate the TID, short for Trainer ID. The TID ($D358) is 16 bits long and it is based on the RNG which is based on an internal timer of the GBC.

Stage by stage comments

First Room

Here I... well I beat the game...

How I beat the game

SAVING GAME! DO NOT TURN OFF THE MACHINE!
            ^ this is where I turn off the machine
Normally, when resetting the game while saving it will either say that the save file is corrupted or it won't let you open the "Pokemon" menu. 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 (dec 255) 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.
Clever usage of this glitch can lead to overwriting the value in $D35D which is the current map. Overwriting that address with a value that loads bank 0x16 and overwriting 2 bytes at $D36D, which determines the area where the code will jump, leads to executing the Hall of Fame sequence. The values for $D35D which can load bank 0x16 are: 0x11, 0x13, 0x15, 0x16, 0x17, 0x1A, 0x1B, 0x1D, 0x5A, 0x71, 0x76, 0xCF, 0xD0 and 0xEA. The 2 bytes at $D36D have to be so that they eventually lead to the code for the Hall of Fame. One could throw away items to get the amount of that item to one of those values and then swap items to place them right, but that just takes too long. To make things faster I manipulated my TID to fit for those values. That means my TID has to be 0x64yy where yy is one of the 14 values listed above. The reason for the 0x64 at the start is because the value before the TID is always 0x01, so when we place the 2 bytes at $D36D, the game will jump to code 0x6401 which then will load the required code for the Hall of Fame.
So we have to get the values from
  • $D357 to $D36D
  • $D358 to $D36E
  • $D359 to $D35D
Since the TID is based on the internal gameboy timer, the only way to manipulate the TID is delaying. The TID is determined after you press on "New Game", which gives me 4 places to delay input: 1. at the GAME FREAK scene, 2. at the little running Pikachu scene, 3. at the title screen, 4. at the "New Game" menu. I wrote a bot that brute forces a TID of 0x64yy and this run is what I got. Even though there are 14 values for yy, this run just happens to have the same value for yy as the previous run (I tested this with other values of that list and it works). So in this run we have a TID of 0x64D0, which is located at $D358. To move that value around I have to swap Pokemon and Items.
  • So I first swap one of the first few Pokemon, in this case the 7th, with the 10th Pokemon. This will overwrite addresses like the item count with 0xFF. So that now the game thinks that you have 255 items (there is also a side effect that the Pokedex data is filled with 0xFF, so we have seen and caught 152 Pokemon).
  • Then I swap the 12th Pokemon with the 13th so that the 0x64 goes to $D384 and 0xD0 goes to $D385.
  • Then I switch the 13th Pokemon with the 11th so that the 0x64 goes to $D32C and 0xD0 goes to $D32D. Here a 11 byte data overlaps and causes 0x64 to go to $D342.
  • Since it's impossible to get the 0xD0 to the right place with only Pokemon swaps, we have to move items to get the 0xD0 from $D32D to $D331.
  • The last swap is the 11th Pokemon with the 12th. This causes our 0xD0 to go to $D35D (current map) and the 0x64 goes to $D36E, since there is a 0x01 before the TID it is now at $D36D.
After closing the menu the game will read the 0xD0 and it will load bank 0x16. It will jump to 0x6401 which will the lead eventually to the Hall of Fame code and to the credits.

Other comments

Small things that save time (not over the previous run)

  • Naming myself ASH instead of YELLOW
  • Holding B while advancing text to display the text faster
  • I tested several Pokemon to swap the first time, it seems like some just lose a frame

Thanks

I want to thank p4wn3r and gia, not only because they did the previous runs, but also because they did a very good job exploring this game and explaining stuff. This game is more complicated than I thought so I want to thank them.

FractalFusion: Judging. This will take a while.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14874
Location: 127.0.0.1
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Is this slower due to proper lag emulation? If so, then yes due to breaking the game, again and proving it's real.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Editor
Joined: 3/10/2010
Posts: 899
Location: Sweden
So you reset before the game tells you not to?
Glitcher
He/Him
Joined: 3/24/2007
Posts: 216
Location: London, U.K.
Sooooo it's basically the same as the previous run, but slower due to emulation timing? Somehow that doesn't exactly fill me with joy.
Spikestuff
They/Them
Editor, Publisher, Expert player (2292)
Joined: 10/12/2011
Posts: 6337
Location: The land down under.
I feel like voting NO not because of the time but because vba doesn't have any flaws. But I will not vote until clearer better evidence is shown (comparison)
NitroGenesis wrote:
No vote. Unless you can find huge improvements instead of name-changing and text skipping, then the VBA run should be left alone.
EDIT: This gives me my NO vote. EDIT 2: If this is accepted I say for screenshot, Would you like to save the game? Y/N?
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
NitroGenesis
He/Him
Editor, Experienced player (551)
Joined: 12/24/2009
Posts: 1873
No vote. Unless you can find huge improvements instead of name-changing and text skipping, then the VBA run should be left alone.
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3585)
Joined: 11/3/2004
Posts: 4738
Location: Tennessee
hegyak wrote:
Is this slower due to proper lag emulation?
Yes.
It's hard to look this good. My TAS projects
Joined: 5/14/2007
Posts: 525
Location: Pisces-Cetus filament
I'm a fan of accurate emulators, so I think this movie should obsolete p4wn3r's. I suggest this screenshot:
AzumaK wrote: I swear my 1 year old daughter's favorite TASVideo is your R4MI run :3 xxNKxx wrote: ok thanks handsome feos :D Help improving TASVideos!
Masterjun
He/Him
Site Developer, Skilled player (1970)
Joined: 10/12/2010
Posts: 1179
Location: Germany
Spikestuff wrote:
I feel like voting NO not because of the time but because vba doesn't have any flaws.
VBA has the accuracy of 38.3% where Bizhawk (Gambatte) has 89.4%. VBA is not listed as preferred or accepted, not even obsoleted emulator for GB(C) TASes.
NitroGenesis wrote:
Unless you can find huge improvements instead of name-changing and text skipping, then the VBA run should be left alone.
I know it is unlikely, but what happens if this run is optimized to perfection and gets rejected, because there is an emulator that doesn't emulate the game properly? "Finding huge improvements" for a run is more likely to happen on runs that aren't just about a minute long. Saving 10 seconds in a 4 hour long RPG or saving 10 seconds in a 1 minute long glitch run is a huge difference.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Former player
Joined: 6/30/2010
Posts: 1093
Location: Zurich, Switzerland
You have to get used to the fact that a slower run can obsolete a faster one. It's very important for TASing, that the runs are as legitimate as possible. So yeah, go on and improve the old VBA runs. Yes vote!
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.
Joined: 4/3/2005
Posts: 575
Location: Spain
I think it may be fair to include the name of the previous author in the file, given that you don't alter it substantially.
No.
Skilled player (1150)
Joined: 5/11/2011
Posts: 425
Location: China
Did these differences like using GBA or GBASP or GBC play the same GBC game?
RachelB
She/Her
Player (127)
Joined: 12/3/2011
Posts: 1579
Masterjun wrote:
VBA is not listed as preferred or accepted, not even obsoleted emulator for GB(C) TASes.
This should probably be clarified on that page. Is VBA still allowed for gb(c)?
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2224
Location: Georgia, USA
I'm in line with andypanther here. While it's a shame that the more accurate emulator produces a slower run, it is better to use better emulators. It seems that the technical proficiency of this run is on the same par as the currently published run, and that's what should decide publication. Along with what Dr. Jones said, how should credit be attributed to previous authors? It seems Masterjun did all the input himself, even though he borrowed the strategies heavily from p4wn3r's run, so I don't know if p4wn3r should be listed as a co-author. I'd personally suggest that the publication text credit p4wn3r and gia for their major discoveries in this run's category, rather than put them in the author field. And Zeupar, the screenshot is awesome, but it technically occurs after input is already done. It wouldn't be the first time we've used a screenshot with that issue, though. Lastly, I vote Yes. Nicely done, Masterjun!
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.
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
yes vote, I wonder why those little improvements like changing name and holding B weren’t found before? faster and more accurate, I don’t see the reason to vote no
Editor, Skilled player (1938)
Joined: 6/15/2005
Posts: 3246
ALAKTORN wrote:
I wonder why those little improvements like changing name and holding B weren’t found before?
Those "improvements" were already used in the previous run.
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
FractalFusion wrote:
ALAKTORN wrote:
I wonder why those little improvements like changing name and holding B weren’t found before?
Those "improvements" were already used in the previous run.
ah, the submission text made it sound like they were new things
Amaraticando
It/Its
Editor, Player (158)
Joined: 1/10/2012
Posts: 673
Location: Brazil
mklip2001 wrote:
I'm in line with andypanther here. While it's a shame that the more accurate emulator produces a slower run, it is better to use better emulators. It seems that the technical proficiency of this run is on the same par as the currently published run, and that's what should decide publication. Along with what Dr. Jones said, how should credit be attributed to previous authors? It seems Masterjun did all the input himself, even though he borrowed the strategies heavily from p4wn3r's run, so I don't know if p4wn3r should be listed as a co-author. I'd personally suggest that the publication text credit p4wn3r and gia for their major discoveries in this run's category, rather than put them in the author field. And Zeupar, the screenshot is awesome, but it technically occurs after input is already done. It wouldn't be the first time we've used a screenshot with that issue, though. Lastly, I vote Yes. Nicely done, Masterjun!
² >> Yes vote.
Active player (263)
Joined: 4/15/2010
Posts: 197
Location: England
Didn't p4wn3r not list gia as an author even though it was his strategy? Same scenario here I suppose, though I agree they should be put in the submission text indeed. Yes vote.
Retired smw-96, smw any%
Player (79)
Joined: 8/5/2007
Posts: 865
Masterjun wrote:
Spikestuff wrote:
I feel like voting NO not because of the time but because vba doesn't have any flaws.
VBA has the accuracy of 38.3% where Bizhawk (Gambatte) has 89.4%. VBA is not listed as preferred or accepted, not even obsoleted emulator for GB(C) TASes.
Hold everything. If I am interpreting the page you linked to (under "accuracy") correctly, VBA is substantially worse than BizHawk... at emulating the GameBoy's sound. Your percentages are horribly, horribly misleading. BizHawk's greatest substantial advantage over VBA is in the "Mem Timing 2 / Modify Timing" category, where BizHawk succeeds and VBA fails. Other than that, the emulators are identical. That, to me, does not alone warrant preference of BizHawk over VBA. Combine that with the fact that this run does nothing strategically different from the existing run (amounting to near-plagiarism), and I'm lead to give this run an emphatic No vote. No, nothing personal, Masterjun, but this is not the right time for this run. When VBA is meaningfully obsoleted by BizHawk and those pesky OAM issues get sorted out, I'll endorse your run.
MESHUGGAH
Other
Skilled player (1888)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
I wonder how many TASers will think about resyncing/remaking already existing [insert your favourite emulator] runs everytime the [insert your favorurite platform]Hawk core updates...
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Player (79)
Joined: 8/5/2007
Posts: 865
MESHUGGAH wrote:
I wonder how many TASers will think about resyncing/remaking already existing [insert your favourite emulator] runs everytime the [insert your favorurite platform]Hawk core updates...
Sorry to post so soon after my last post, but you raise a good point. Is there any precedent in which a new run, virtually identical to the last and submitted by a different person, was accepted because it made use of an updated version of an emulator with an incremental change? Is there a precedent of rejection? I think that's relevant because my guess is most voters saw "BizHawk" and thought, "Hey, that's the wave of the future, and the gold standard among emulators!" No, it's not. At least not yet for the GameBoy. I think accepting this run would set a terrible precedent, allowing runners to plagiarize strategies (though not actual input) to obsolete quality runs on quality emulators. Please reward runners' hard work and do not reward copycats who get by on technicalities.
Joined: 3/9/2009
Posts: 530
I compared the two author comments notes. Previous: Manipulate TID to be 0x64D0 Switch 2nd for 10th Switch 12th for 13th Switch 11th for 13th Item switch to move 0xD0 Switch 11th for 12th Here: Manipulate TID to be 0x64D0 Switch 7th for 10th Switch 12th for 13th Switch 11th for 13th Item switch to move 0xD0 Switch 11th for 12th Step 2 is the only difference and I'm not sure how it would save time. The rest as far as what the authors wrote is 100% identical between the two. Emphatic no.
Spikestuff
They/Them
Editor, Publisher, Expert player (2292)
Joined: 10/12/2011
Posts: 6337
Location: The land down under.
Tangent wrote:
I compared the two author comments notes. Previous: Manipulate TID to be 0x64D0 Switch 2nd for 10th Switch 12th for 13th Switch 11th for 13th Item switch to move 0xD0 Switch 11th for 12th Here: Manipulate TID to be 0x64D0 Switch 7th for 10th Switch 12th for 13th Switch 11th for 13th Item switch to move 0xD0 Switch 11th for 12th Step 2 is the only difference and I'm not sure how it would save time. The rest as far as what the authors wrote is 100% identical between the two. Emphatic no.
AND HERE IS THE CLEAR REASON!.... keeping that no.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Masterjun
He/Him
Site Developer, Skilled player (1970)
Joined: 10/12/2010
Posts: 1179
Location: Germany
since when is it not allowed to use the strategy and ideas of the previous run? You guys should know, that this strategy is optimized like hell. It uses the minimum amount of pkm switches, it skips scrolling through rival names glitchy items. It has to manipulate only 2 bytes. I indeed have videos of other strats (skips to the rating without walking so you can end the movie when you close the menu) but they were slower just because this is so optimized.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)