Overview

This is a TAS of the USA/Europe version of Pokémon Blue, finishing with a in-game clock of 1:17. The emulator used for recording was VBA 1.7.2 re-recording v19.3, and will desync on v20. Throughout the run, only four pokémon are collected: Charmander, Gyarados, Abra, and Mew.

Features

  • Aims for fastest time.
  • Takes damage to save time.
  • Uses death as a shortcut.
  • Manipulates luck.
  • Abuses programming errors in the game.
  • Ignores semi-important goals in the game.
  • No predefined saves.
  • Genre: RPG

Description

As with the previous movie, this submission is also aiming for the fastest time to become the Pokémon League Champion, and does so 82,784 frames (approximately 23 minutes) faster than the last. In general, this new time can be attributed to better manipulation throughout, and a lot of new time saving route changes and glitches.

Luck Manipulation

Nearly all the manipulation in this game occurs during battles. By varying when a button is pressed, and also its duration, one can manipulate critical hits, damage, opponent misses, etc. In my previous run, I had given myself a 10 frame window for manipulation of a specific attack. In this run, I have narrowed this window to 2 frames for common occurrences, and 5 frames for rare occurrences (such as maximum damage critical hits or 1/256 misses). The difference is noticeable. Upon entering Vermillion, at which point the runs are nearly identical, I was approximately 35 seconds ahead.
Not everything can be manipulated so easily though. One thing that had long been a problem to manipulate were random encounters. Manipulating them away is not a problem, but for the most part, which pokémon one would see at a certain frame count seemed more or less fixed; one could attempt to change a part of the run to alter the randomality, but the encounter rotation was usually unaffected, or affected only mildly. With the help of Nitrodon, and a gameboy emulator/disassembler known as no$gmb, I was able to determine not only what was causing this behavior, but also how to manipulate it. There are two memory addresses FFD3 and FFD4. These numbers are responsible for every aspect of pseudo-randomality in this game, and are updated in such a way that their sum (which I will refer to as the D-sum) remains nearly constant. In battles, it slowly rises, and in the field, it slowly decreases. If FFD3 is less than a certain value specific to the patch of grass you are in (stored at D887), you will have a random encounter. Which pokémon you encounter is determined by FFD4, and each pokémon in the area has a certain range in which it appears. Logically, this means that for a relatively long period of time, it is only possible to encounter a certain pokémon, because if FFD3 is small (usually less than 0F), then FFD4 will always be in the same range. Fortunately, by altering button presses, one can specifically manipulate this D-sum to be higher or lower to meet one's needs. Because of this, I was able to manipulate an Abra on my first step, and the trigger for Mew, a L16 Meowth (which is the area rare, with 1/256 probability) without losing any time.
Other things were manipulated as well, such as the location of the switches in Vermillion Gym, causing people to move (or not to move), etc.

Glitch Abuse

If you wish to be surprised while watching the movie, do not read this section until afterwards.
Snazzypadgett from the SDA forums (specifically in this thread) (EDIT: link removed as it no longer exists) noticed that after performing the Trainer-Fly glitch, that he (or rather, a friend of his) had managed to make Snorlax disappear. Details were vague, but after experimentation, several people were able to reproduce this. Hanzou did a lot of research on this glitch, and found that it was not only Snorlax, but the last disappearable object seen before or during the glitch, where a disappearable object can be a number of things: Snorlax, Legendary Pokémon, item balls, guards, and even Rival battles. However, alone this glitch isn't very useful. It allows for a faster route to Lavender (instead of going through Rock Tunnel, about 50-60 seconds faster), but doesn't allow one to skip the Poké Tower, where one normally gets the flute to wake Snorlax up. The reason is, that the tower needs to be done before you gain access to the Silph Co. building, and without going through there, you cannot enter Saffron Gym, or Viridian Gym.
Later, Chamale, while experimenting with the Glitch City glitch, noticed that if on the step when you get called back to the Safari Zone, you are jumping over a ledge, when you get there you will remain in mid-air. Not only that, but inside the building you can walk through walls as you please. The problem is, this effect ends when you use the door to exit the building. The solution was not to use the door, but instead to warp out via death. The only way to do this is with poison damage, and after you warp out, the effect continues and you can walk through walls as you please, but only until you enter a building. This run utilizes this glitch to skip large portions of the game towards the end of the run, and only completes the remaining Gyms necessary to get past the Badge checks. Earthbadge, obtained from the last Gym, is not checked, so this Gym is skipped as well. In order to perform this glitch, one needs to take exactly 500 steps outside of the Safari Zone. If it appears that I am biking around needlessly in a few sections, this is what I'm doing.
A problem is, that in order to black out (death, in this game), all of your pokémon need to be fainted. This means that you cannot fly anywhere afterwards unless you had a fainted flier in your party, because you cannot enter a Poké Center to withdraw one. To save time from having to faint multiple pokémon, Mew was chosen as the main battler for the second half of the run, and was taught Fly. Also, because so much of the game is skipped, Mew was caught at level 1, and leveled to 100 in a single battle via the experience-underflow glitch. Mr._Pwnage posted an excellent description of this glitch shortly after its discovery in the Pokémon R/B thread.
The run also generates a miss for an attack which was not intended to be able to miss: Lt. Surge's Raichu using Thunderbolt in Vermillion Gym. Previously, I had listed this as luck manipulation, but after examining the disassembled code, I am also convinced that this is a programming error. Each attack has a miss ratio associated with it, which is simply stored as a value between 0 and 255. Attacks which are not intended to be able to miss have a miss ratio of zero. When determining if an attack has failed, a pseudo-random number is choosen, also between 0 and 255, and this value is subtracted from the miss ratio. If there was not a carry (if this value is less than or equal to the miss ratio), the attack will fail. Obviously, the programmer had intended to have these operands switched, and to check for carry instead; in the check for non-physical attacks, this is implemented correctly. This glitch was fixed in later generations of Pokémon.

Possible Improvements

Towards the end, I use a trick a few times which saves a little time; if your health bar is red, the delay from battle cries and from fainting is suppressed. When you do this, however, there is an annoying alarm in the background, and I only do this in places where I needed to take damage anyway. Were this trick to be done throughout the entire run, it's possible that it could save time, but I think having to listen to the alarm for the entire run would detract from the entertainment value significantly.
I use Gyarados for the first half of the run, because even with the extra glitching time involved, it is still faster than playing Charmander up to the earliest point to catch a Mew. An alternative to this might be to glitch a L100 Gengar in Mt. Moon instead, which could possibly be faster. The downside to this, is that for the entire run one would be using a L100 pokémon, which I think also takes away from entertainment.
New glitches? In the Badge check, Boulderbadge is also no longer checked. If a way could be found to leave Pewter without doing this Gym, this could save a lot of time, especially when using Charmander.

Special Thanks

Firstly, I would like to thank hanzou, not just for his work on the Snorlax skip glitch, but also for suggesting several route improvements, and stopping me when I was about to redo half the run unnecessarily. Without him, the run would be significantly longer, and wouldn't be even close to done yet. I'd also like to thank Chamale, for his awesome discovery which lead to the WTW glitch, and also for active participation in the pokémon thread, and helpful suggestions. Thomaz also deserves a thank you for his real-time speedrun. The new route was more or less being pioneered as we went along, and it was good to be able to swap ideas. A thanks to Nitrodon for his help picking apart the disassembled rom, and to Mr._Pwnage for his description of the experience underflow glitch and other good advice. Also, to Snazzypadgett and all those at the SDA forums who worked on figuring out the Snorlax skip mechanics. Bag_Of_Magic_Food: 90 minute blitz? And lastly, all those who actively gave feedback and suggestions in the pokémon thread.

Bisqwit: Accepting and taking for encoding. I'm glad you also had mind on entertainment and didn't just singlemindedly go for the absolutely fastest time.

NesVideoAgent: Hi! I am a robot. I took a few screenshots of this movie and placed them here. Oh! I also replaced the ROM name.
  • You indicated Pokemon Blue (UE) [S][!].gb
  • I updated it to Pokemon - Blue Version (UE) [S][!].sgb



Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1355
Location: Canada
It's version 3 by this author, version 4 overall. Voting yes and star.
Joined: 4/3/2005
Posts: 575
Location: Spain
Barely watchable with a few good moments, which is an huge improvement for me.
No.
Editor, Expert player (2073)
Joined: 6/15/2005
Posts: 3282
Best Pokemon run I have ever seen. It even beats the 1:18 posted (a long time ago) on some Japanese site for a TAS using link cable. This run has much more variety than anyone could expect. I decided not to follow the WIPs and glitches, and it impressed me. Voting yes.
Player (21)
Joined: 10/14/2005
Posts: 317
Congrats on making this movie, primo. The disassembling of the ROM, glitch-route planning, damage-taking planning, and aggressive luck manipulation show your dedication to this run.
Skilled player (1410)
Joined: 5/31/2004
Posts: 1821
I do have to watch this run at a higher speed than 100%, but then it's quite entertaining :) Yes vote.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15584
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. ---- [950] SGB Pokémon: Blue Version "trainer escape glitch" by primorial_soup in 1:18:58.78
Active player (411)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
The emulator used for recording was VBA 1.7.2 re-recording v19.3, and will desync on v20.
Why it desyncs in v20? Does it abuse some emulator bugs like in FODA's SML2 movie? I hope it's not the case... Otherwise, I don't understand why it has been published and not SML2.
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
Phil wrote:
Why it desyncs in v20? Does it abuse some emulator bugs like in FODA's SML2 movie? I hope it's not the case... Otherwise, I don't understand why it has been published and not SML2.
I started making this run before v20 was released. That's the only reason for the choice. It desyncs on the intro screen, because v20 takes a few frames longer to initialize, for some reason. I tried hex editing in these few frames at the beginning, but the luck manipulation was all off, and I didn't want to redo the progress that I had, as the beginning requires a lot of manipulation.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Joined: 10/17/2005
Posts: 50
How come in the details page it says, "Takes no damage." when you obviously took damage and even died a few times?
I'm the hero of yay.
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
marioguy wrote:
How come in the details page it says, "Takes no damage." when you obviously took damage and even died a few times?
In the submission description this is listed correctly. This was probably taken from the last movie description, and was overlooked when it was published.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
I noticed in the description that it mentions the player taking the role of a teenager, but doesn't the game start on the main characters 10th birthday.
Joined: 3/7/2006
Posts: 720
Location: UK
Somebody on IRC wrote:
The games aren't related to the anime, except for Yellow.
I never had a manual for the first generation, so I don't know if it says it in there.
Voted NO for NO reason
Joined: 10/17/2005
Posts: 50
He's 10 in the cartoon. I don't think it's the same in the games.
I'm the hero of yay.
Joined: 7/27/2006
Posts: 24
I think he's Jesus because he can cycle over water.
Glitcher
He/Him
Joined: 3/24/2007
Posts: 216
Location: London, U.K.
I don't remember Jesus riding a bicycle. At least not outside of avatars and sigs.
Joined: 11/11/2006
Posts: 1235
Location: United Kingdom
Compared to the image below: Uncanny. Really.
<adelikat> I am annoyed at my irc statements ending up in forums & sigs
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
...wow. Freakin' incredible. A quick question: How does encountering the L16 Meowth set up catching Mew?
Previous Name: boct1584
Joined: 6/6/2004
Posts: 223
The Meowth is one of the Pokemon on route 6 with the potential for special 21 (the one that takes the least time to battle in the necessary way), and the low byte of special draws from the same address as the "incoming opponent" that's normally reserved for trainer battles but, via the FCBM trick, is used for wild Pokemon fights. The enemy will thus be whatever 21 (0x15) points to in the Pokemon/trainer table, and note that it's the same 0x15 as in the well-known code 0115D8CF for getting all wild Pokemon to be Mew. Growl x6 causes the Mew to be level 1, because similarly the opponent's Attack modifier and the enemy level draw from the same address as well. Stat modifiers are stored as a mapping of the range [-6,6] onto the range [1,13], with unchanged modifiers being treated as 7 (hence the common "Mew trick" explanation expects you to find Mew at level 7).
Active player (348)
Joined: 3/21/2006
Posts: 940
Location: Toronto, Canada
There's only two words I request: audio commentary, explaining what the fuck you're doing, how and why. Even after thoroughly reading your comments I still don't understand *sobs at own stupidity* Oh yeah, and the run was very entertaining too. Yes vote from me.
My current project: Something mysterious (oooooh!) My username is all lower-case letters. Please get it right :(
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1355
Location: Canada
Interesting idea. I propose the new version (because Hanzou just figured out how to skip Pewter gym, so a new version is implied) have audio commentary.
Active player (348)
Joined: 3/21/2006
Posts: 940
Location: Toronto, Canada
Chamale wrote:
Interesting idea. I propose the new version (because Hanzou just figured out how to skip Pewter gym, so a new version is implied) have audio commentary.
Holy fuck, just when I thought the game was completely broken...
My current project: Something mysterious (oooooh!) My username is all lower-case letters. Please get it right :(
Post subject: skipping the 1st gym
Joined: 12/29/2007
Posts: 489
I found this online before looking at this TAS. http://glitchcity.info/docs/skipfirstgym It says how to skip the 1st gym in R/B. I don't know if it works in Yellow. (Note: I have tried this on a Red game and it does work.)
Editor, Expert player (2073)
Joined: 6/15/2005
Posts: 3282
Thanks, but we know that trick already. primo isn't making another run with this glitch yet. Apparently, the glitch does not work in Pokemon Yellow.
Player (21)
Joined: 10/14/2005
Posts: 317
Are you Zowayix from Glitch City Laboratories? You can tell from the wording on the page you've linked that Zach must have taken the description from here. This is the same set of instructions, except the original site includes screenshots. I posted that entry shortly after we discovered the trick here at TASvideos. It's all good though; I certainly hope that Glitch City Labs continues to update its content no matter how old these games are. Although recent discussion in the Pokemon thread in the GB section of this forum is mostly about the above glitch, this is probably only because it's a trick that is easy to understand (or at least, easy to reproduce while misunderstanding). For the next big Pokemon R/B/Y (USA) run, the big glitch we should await is instead the following (also hosted at Glitch City Labs): http://glitchcity.info/docs/zzazz The ZZAZZ glitch is reproducible on a cartridge, lets the player do a critical byte shift, creates a quick way to get badges, and is a method to spawn arbitrary items including some rather magical ones. In other words, this allows a TAS to skip another large portion of the game. What we need to make this a reality is new willpower and people to research, route-plan, and execute such a run.
Joined: 12/29/2007
Posts: 489
Yes I am Zowayix from GCL. I know that the ZZAZZ glitch causes the player to fight a trainer named TRAINER, and it turns all except #3 of the player's pkmn into level 153 Bulbasaur's whose stats are all 153 and whose moves are Explosion, Explosion, [xxxxx], and Explosion, where [xxxxx] is the move that used to be in that slot before the glitch. It also changes the player's name to ZZDZZAZZ?ZZ or something. I also know that if you save after the glitch, your save file is erased. How else does this glitch affect the game. I didn't know it could spawn items or badges.