Pokemon Fire Red in 1:46:22 by MKDasher.

Game Objectives

  • Emulator used: VBA-RR v23.6 with Save Type Flash 128k.
  • Aims for fastest time.
  • Heavy Luck Manipulation
  • Takes Damage to save time

Introduction

I never thought I’d have ended up completing a TAS of this game. At first, I just wanted to learn a bit more about its RNG mechanics, and since there was already a lot of information about it and I could understand it pretty well, I decided to try doing a TAS of this game.

Luck Manipulation

Like any Pokémon game, knowing how to luck manipulate correctly (and therefore knowing its RNG mechanics) is very important. First of all, I have to thank FractalFusion for collecting most of the RNG information used for this run and providing some lua scripts that has helped me when optimizing this run.

RNG Mechanics

This game uses two RNGs. First RNG is very similar to the one used in Ruby/Sapphire, and basically determines almost every luck-based event on this game. Its formula can be obtained from smogon. However, this game additionally uses a second RNG that is used to determine wild encounters. This second RNG (formula is: val <- val*0x41C64E6D + 0x3039 ) only advances if you step in grass, cave, water, etc. So this means that it’s not possible to avoid wild encounters during the whole run.

Pokémon Center’s extra RNG cycle

At the start of the game, RNG goes forward at two per frame in battle, and one per frame outside a battle. This means it’s possible to switch the parity of the RNG by delaying one frame before starting a battle, but it’s not possible to control this parity later, meaning you would be forced to skip some RNG values that you may have want to use (a RNG that determines a critical hit earlier, for example).
However, after entering on a Pokemon Center for the first time (I do on Cerulean City), it advances twice outside a battle and three per frame in battle except when changing the move selection of a Pokemon (the RNG advances twice in this case). This means you have a much better control of the RNG cycles, and you get a good luck manipulation quicker. Because of this, Route 3 was probably one of the hardest parts to luck manipulate. Also, because of how RNG cycles works, if waiting is needed for a certain event to happen, it is better to wait during a battle than outside.

Battle luck manipulation

It is important to know how RNG determines critical hits, misses, side effects, etc.
Critical hits are determined just after the “X used Y!” message, and right after, damage percentage is determined (from 85% to 100%). There’s a chance of 1/16 to get a critical hit, 1/16 to get a max damage hit, and 1/256 to get a critical max damage hit, which is necessary sometimes on this run. (And obviously quite hard to luck manipulate).
Side effects were needed too (lowering speed with Bubble, or paralyzing with Secret Power). Chances of paralyzing with Secret Power and making opponent not attack is 3/40 while lowering speed with bubble is 1/10. The main problem of manipulating this is when more than one rare event needs to be manipulated together (for example, critical hit, then making the opponent to miss, then making the opponent to use a certain attack). The chances of getting that right is too low, and waiting is usually needed. If it is still not possible to get it fast enough, there is still an alternative: opening the help menu screen.
Of course, I learned how RNG determines all of these things, so I could optimize the battles the best I could.

Opening help menu in a battle

When it is not possible to control the parity of the RNG (beginning of the run), or you need to hit a Critical Max Damage and you do not want to wait for too long or any other rare events, it is also possible to open the help menu screen for luck manipulation. When the help menu screen is opened, RNG advances one per frame before getting to a Pokemon Center, and two per frame after entering, meaning it is another way to control RNG parity (even before entering on a Pokemon Center). Another use of this is that if help menu is opened between Critical hit determination and damage percentage determination, you can control those two events separately, making it easier to luck manipulate (this also works to any other event that normally would happen together but you need to control them separately to get a faster luck manipulation).
There are two inconveniences of this, obvious ones; it makes the battle look worse (I personally do not find very clean to see how help screen is opened on a battle), and it forces you to waste some frames. So this trick is used on this run when it is really necessary to use it. I tried to use it as few times as possible.

Wild encounter manipulation

Unlike previous generations, and Ruby/Sapphire, wild encounters work differently, and they are determined with a new RNG. As explained before, this RNG only advances when doing a step over something that could generate a wild encounter, so it is not possible to avoid getting them. Well, there is only one possibility to avoid them, which is using Repels, so I need some of them during the run. However, it is still possible to luck manipulate to get the lowest possible number of wild encounters. Since I can buy Repels on Pewter City, I luck manipulated the number of wild encounters until that city.
Wild encounter manipulation was probably the hardest thing I did on this TAS, and I run some simulator search programs to help me with this. First of all, the seed of this RNG is generated just after the Charizard screen clears in the intro. It is known which address generates the seed, but it is not known how it exactly generates it. So I used a brute-force search script in VBA to find the seed, which gave me the seed I wanted after waiting for only 8 frames. The script used around 20000 rerecords to find the optimal seed as soon as possible (the 50000 rerecords left were done by hand). The help menu noise at the very beginning is intended and completely necessary to get the perfect seed as soon as possible. I know there are 65536 possible seeds you can get, so I just made a quick program to know how many encounters each seed would give me until Pewter City. The search had the following results:
  • 2 encounters: 23 seeds
  • 3: 339 seeds
  • 4: 2461 seeds
  • 5: 9150 seeds
  • 6: 19871 seeds
  • 7: 21941 seeds
  • 8: 10348 seeds
  • 9: 1382 seeds
  • 10: 20 seeds
This estimation was done with grass encounter ratio (If top half of this RNG mod 1600 is less than 343, you get an encounter). Since getting 2 encounters is fine (I need to catch Rattata and Pidgey as HM slaves), I used the seed the search recommended me. Only 1 of those 23 seeds with 2 encounters works for this run, since I need to get the 2 encounters on Route 1. (Getting 2nd encounter in Viridian Forest or getting an encounter before getting Oak's Parcel would not work, and only 1 of those 23 encounters gave me what I wanted). On a side note, there are 3472 seeds that would give you no encounters until Viridian City. This is the rarest even in the TAS, since the chances of getting the perfect seed is 1/65536. It is not necessary to say that getting this with just waiting 8 frames is a good result.
Also, there were two other places I had to luck manipulate. First one was Abra, getting him on the first grass step. The other one was the beginning of Safari Zone, which made me avoid using an extra Repel there.

Manipulating Squirtle’s IV’s

Getting good IV’s wasn’t so easy. The main RNG seed is generated just after choosing a name for your character (“I” in my case). After that, I could check if I could get a Squirtle with good stats with that seed without having to wait too much. At first, I wasn’t doing this search with RNG Reporter, but since I didn’t want to keep inserting seeds on that program, I created a lua script that would already tell me if a good Squirtle is feasible or not. Also, it wouldn’t give me data about my seed, but it would give me data about some other seeds I could easily find from the previous search. This really saved me time searching what I want.
What I need in this run is a Squirtle with 31 IVs for both Attack and Special Attack, and a Naughty nature (+Attack, - Special Defense). This itself has a chance of 1/24025 to happen. Additionally, I managed to get a high enough speed IV (26. Note that 31 IV would not give any benefit over 26 on this run).

Route planning

cstrakm’s run on the Japanese version really helped me route planning this TAS. Actually, I faced the same opponents he did on his TAS. The runs are different in other aspects though. The major differences are: using Rattata instead of Diglett, buying potions to avoid curing my Pokemon team in a Pokemon Center an extra time, and move selection during the run (which saved me a lot of critical hits).
Also, J version is much faster. With all the improvements, my TAS is still over 2 minutes slower than his run. However I decided to use U version since I think understanding language is important to understand this run properly and enjoy it.

Run info

Pallet Town

Picking boy or girl makes no difference on this run, so I decided to pick being a girl for no particular reason. Then, I set the options, and I set text speed to FAST. For those who have seen Pokemon Ruby TAS, MID text was set there because it could be scrolled as fast as possible anyway, and it was better for luck manipulation. Well, it is different on this game, since MID text loses one frame each time you talk to somebody no matter what you do. Another thing to mention is it sounds as if I hit Prof. Oak just before going and choose my first Pokemon, and I hit the table too just before battling Gary (his actual name is "U"). Yeah, I actually hit those for one frame; it saves time to do this rather than turning as fast as possible (A comparison vid can be found here). This trick will be used in all the run.
Some things to say about Gary’s battle: first attack can’t be a critical hit because of being a tutorial battle, but I can critical on the next one. This is the first time I have to open the help menu since I need a critical max damage attack to defeat that Bulbasaur. (else I would need 2 critical hits, which is slower). The first time that the menu is opened takes longer than the other times.

Pewter City

Before reaching Pewter City I have to battle that Bug catcher. Notice that I did not talk to him. Instead, he stopped me to talk (getting that “!” thing). I was forced to do that since I would have gotten an extra wild encounter if I didn’t. 3 critical hits and Weedle has fainted. I had to open the help menu again for luck manipulation. Brock is pretty easy; just critical both of his Pokemon and receive damage from Onix, meaning that I will be able to use Torrent ability soon. Now time to buy 2 potions, 3 escape ropes, and 6 repels. I actually would have wanted four escape ropes, but I don’t have enough money for that. Selling to earn money, or finding an Escape Rope later is slower, so I will end up teaching Dig to Rattata to use it once.

Route 3 + MT. moon

Probably the most important thing to mention on Route 3 is why I battled that Lass (2nd trainer). The bug catcher has 4 pokemon, and Lass has only 2, so it is still faster to battle her, then coming back to Pewter City to reset her, and then continue. (It saves around 7 seconds). On that battle, I need Squirtle to lower Foe’s Rattata speed to attack first on the second turn. Now I have less than 1/3 of my HP, so my special attack is 50% higher. I have to use Repels in MT moon since I can’t avoid encounters anymore.

Cerulean City

Before getting to Cerulean City, I use a potion for Squirtle or else I would not be able to survive Misty. Since I have opened the bag, I’ll also Register the MT case to use it faster later (notice I don’t have the bike yet).
Then I enter in the Pokemon Center just for Abra to teleport me there. Now I go into the gym. I have to receive just enough damage from Misty to keep Torrent ability as much as possible, but not too much since receiving more damage would make Gary’s Pidgeotto use Quick Attack on me all the time. After Gary, I wait three trainers to teach Water Pulse. If I had done that before, I would not have been able to get to Celadon City with enough PPs later.
After defeating Team Rocket Grunt, I wild encounter an Abra, on my first grass step!
Time to visit Bill. He gives me a SS Anne ticket, so let’s go to the party! To go to Vermilion City, I first teleport to Cerulean City because is faster.

Vermilion City

Only thing I do in SS Anne is face U and getting Cut. Now it’s time to teach Dig and Cut to Rattata. I get the Bike Voucher before entering into the gym because I only want to cut that tree once.
Just before LT Surge, I use a potion. If I didn’t, Raichu would use Shock Wave every time, and 1 hit KO my Wartortle. I could actually survive with 41 HP as well, but since I needed enough HP for Gary’s Pidgeotto in Cerulean City, 42 HP is optimal. Everything done in this city. Let’s go back to Cerulean City. (Now it’s easy to see how catching an Abra is useful).

Celadon City

Nothing really important to say about Route 9, and actually, nothing really important to say about Rock Tunnel. I just have to battle all the trainers that are in my way. After defeating those 2 Clefairys, I have no PPs left, so I’ll need to heal in Celadon Pokemon Center. I could have got an Elixir in Rock Tunnel, but I wouldn't have enough moves by just using an Elixir, and that I have to go to the Pokemon Center anyway.
Time to go to Rocket Hideout. The only interesting battle to talk about is Giovanni. His Kangaskhan is strong enough to where I have to double crit him with Strength. I want Kangaskhan to do enough damage, so I can use Torrent ability later.
Erika is easy since Mega Kick can easily KO Victreebel and Vileplume. I use a critical max damage Mega Punch on Tangela, saving an extra Mega Kick for later. Because of that, I open the help screen to get that critical max damage faster. After exiting the gym, I teleport to the Pokemon Center, which is faster than cycling to get there.
A few more things to do in this city. First, getting Tea to give to the guards, so I can go to Saffron City later. Then, buying Secret Power, some Super Repels, and X Attacks. Thanks to Torrent ability, I won’t need X Sp. Atks in all the run. Even though I don’t use 11 Super Repels, I buy 11 because it’s faster to do that. Finally I visit the girl that gives me the HM for Fly. I managed to make her move down, so it takes less time to talk to her inside her house (and also saving time to exit that house).

Lavender Town

Again, I find U who wants to battle. Nothing much to say about the battle. Only that Pidgeotto would have needed a critical hit if I wouldn’t be able to use Torrent Ability.
Wartortle evolves to Blastoise, so I do not have too many problems defeating all those Team Rocket Grunts. Finally, I get the PokeFlute so I can finally wake up that Snorlax. I find a Max Elixir hidden on the floor on Route 17. It will be useful for later.

Fuchsia City

First thing I want to do is go to Safari Zone. I can avoid some wild encounters at the beginning, so I only need one Super Repel. It’s faster to stop using the bike just before entering in a new Safari Zone Area, because it reduces music change lag. That’s the same reason why I run to get the Golden Teeth.
Flying to Fuchsia City, defeating Koga, and getting the HM for Strength is barely faster than Retire, getting Strength, and then defeating Koga. As a consequence, I use the first method.
Since I still have Mega Punch, and it is as strong as Strength, I do not really need Strength for Fuchsia’s Gym. I take damage from Koga’s Muk to be able to use Blastoise’s Torrent ability again (I exactly need to have 19HP after Muk’s attack. Anything higher would not work later).

Cinnabar Island

Fastest way to get here is flying to Pallet Town (no, I’m not visiting Mum), and then surfing. Before using fly, I already used a Super Repel, and gave Quick Claw to Blastoise since I want to open the menu as few times as possible.
I find an Elixir on Cinnabar Mansion. I’ll use it later. I escape from here with a Dig. I chose using Dig here because it was the place were Escape Rope saved the least.
Blaine is easy. I use Strength + Critical hit on Growlithe because it’s slightly faster than Surf + Super Effective and because I will need to use all the Surf PPs later. Quick claw effect is first used on Rapidash, and Arcanine would need a Critical Hit if I had more than 1/3 of my HP. Then after exiting the gym, Bill asks me if I want to go with him to some weird Islands, unless I’m too busy. And yeah I'm too busy, I want to become the Pokemon Champion as fast as possible!

Saffron City

For some reason, after talking to Bill, if I tell Abra to teleport, it would teleport to Cinnabar Island, so I have to use Fly to go to Celadon City. I give the Tea to the guard, and I can go to Saffron City. I can’t go to Saffron’s gym yet, so I’ll have to go to Silph CO. first, and again, Gary wants to fight. Gyarados’s defense is high enough to where I need to attack him twice (I don’t have any Mega Kicks left, but that move would have not one hit KO Gyarados either). I receive damage from Gyarados. This is the last time I receive damage from a Pokemon. Thanks to this damage received, I’ll be able to keep my HP under 1/3 all the run.
Giovanni is easier than before since Kangaskhan is not a problem anymore. I can critical hit him with Surf. I don’t have any Surfs left after this battle, so I use the Max Elixir I got. Finally, Sabrina is probably the easiest Gym Leader; not even critical hits are needed.

Viridian City

I really thought carefully about what moves to use for each trainer. I chose them the way I did so I would need as few Critical Hits / Super Effective attacks as possible. U’s team is getting stronger, so it’s time for a new strategy. Secret Power, paralyzing, 2 x attacks, and 1 hit KO all his team. (Note: using 1 x attack and 1 hit is faster than 2 hits).

Elite Four

Victory Road is just about moving boulders, so I don’t have to say much about it.
Lorelei is probably the hardest of the Elite Four, so Secret Power + 2 x Attacks are needed. Except for Cloyster. Cloyster’s ability does not let me critical hit him (Shell Armor), so I have to hit him 3 times. (An extra X Attack would not have been enough to defeat Cloyster in 2 hits). Luckily, Lorelei's Lapras does not have Shell Armor ability so I can use a critical hit as well. (Note: Pokémon stats and abilities of trainers can't be luck manipulated).
Bruno and Agatha are a bit easier; no X items needed, and I can Surf all of their teams. However, I redid those battles a lot of times. The position where I start talking to them is purely for luck manipulation, as well as when I used the Max Repel (I could have used it before Bruno, before Agatha, or before Lance). I had to test all the possible combinations, which were a lot. A great number of rerecords were spent here.
Lance is not too hard to luck manipulate thanks to Gyarados’ Hyper Beam (I don’t need Secret Power). 3 X attacks are needed to 1 hit KO Dragonite.
Finally U again. Pidgeot is weak enough to use a Critical Surf. Then, 3 x attacks to 1 hit KO Gyarados, which has the strongest defense. (In Japanese version I would have needed only 2 X attacks, because Gyarados’ defense is weaker there).

Special Thanks

Thanks specially to FractalFusion. His knowledge of 3rd generation Pokemon games, mainly about luck manipulation, as well as his script, and his Pokemon Ruby TAS (done with GoddessMaria) really helped me and motivated me to finish this run. If this TAS has ended up being optimized correctly, it’s on a great part thanks to him. Thanks to cstrakm for his TAS on the Japanese game, since it helped me for route planning.
Thanks to LukasLoucks for proofreading this submission and correcting some grammar mistakes on it. I’m from Spain so my level of English is not good enough to write all of this perfectly.
And finally thanks to the comments and the support I have been given on the Pokemon Fire Red / Leaf Green thread!

Noxxa: Judging.
Noxxa: Very positive audience response. Accepting for Moons.


ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
Mastania wrote:
Woo, finally gen 3.5 is done. I did notice one thing: Near the end, it would be possible to 2-hit Lorelei's Cloyster with Surf,
Dasher said Cloyster’d use Hail which loses a lot of time
Experienced player (658)
Joined: 5/16/2009
Posts: 235
ALAKTORN wrote:
Mastania wrote:
Woo, finally gen 3.5 is done. I did notice one thing: Near the end, it would be possible to 2-hit Lorelei's Cloyster with Surf,
Dasher said Cloyster’d use Hail which loses a lot of time
Exactly. Cloyster always uses Hail as first attack. If not, the fastest strategy would have been 2 Mega Kicks (better than 2 Surfs because of not getting the "Not effective" message)
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4035
Great run. I really like seeing all the luck manipulation pay off to create an optimized TAS. Also, this being a run of a near-glitchless remake of Pokémon Blue, I felt some nostalgia watching this (that doesn't influence my vote though). I found it entertaining, so Yes vote.
Experienced player (984)
Joined: 8/30/2012
Posts: 373
Great job Dasher!
Previous TASes: Frogger's Adventures: The Rescue Paper Mario: The Thousand-Year Door any% x 8 Paper Mario 64 Luigi's Mansion Sonic Heroes - Team Sonic Mario Kart Wii ILs
Active player (469)
Joined: 3/30/2012
Posts: 405
Immediate yes vote from me. I've always disliked the GB pokemon TASes because of all the glitches. The fact that this shows more of the game adds a lot more to the entertainment value of it.
Skilled player (1737)
Joined: 9/17/2009
Posts: 4979
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
boct1584 wrote:
That was a great run. Easy Yes vote. It's really too bad TASes like this need to focus on power-leveling one fighter. Seeing different strategies with different teams is one of my favorite things in games like this. Same reason I was disappointed with Hoandjzj's Yu-Gi-Oh World Championship 2011 TAS.
Er......Power-leveling? I just finished the entire run, and I don't remember any grinding for levels at all. :o Oh, and btw, in 18:49 of MKDasher's encode, "TM case" is misspelled as "MT case". :P
Experienced player (658)
Joined: 5/16/2009
Posts: 235
jlun2 wrote:
Oh, and btw, in 18:49 of MKDasher's encode, "TM case" is misspelled as "MT case". :P
lol, sorry, that was me mixing spanish and english ("TM case" in english, "tubo MT" in spanish)
Joined: 8/16/2013
Posts: 20
Location: Vire, France
Yes, of corse. I love how you luck manipulate, it would be so cool to do so many critical hit while playing :)
Redoing my Sim City TAS (New faster way to build Zones)
Former player
Joined: 3/21/2013
Posts: 25
This interesting run tells us" the first you get is the best". Very good job!
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15544
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. ---- [2447] GBA Pokémon: FireRed Version by mkdasher in 1:46:22.52
Editor, Expert player (2072)
Joined: 6/15/2005
Posts: 3282
I was away for the last two weeks, but I'll come here to say congrats mkdasher. I think though that it is possible to use a different Pokemon (non-starter) that would result in a faster run. Who knows though. One question: Is it better to catch Abra in the lower left patch, as opposed to the upper right one?
Experienced player (658)
Joined: 5/16/2009
Posts: 235
FractalFusion wrote:
I was away for the last two weeks, but I'll come here to say congrats mkdasher. I think though that it is possible to use a different Pokemon (non-starter) that would result in a faster run. Who knows though. One question: Is it better to catch Abra in the lower left patch, as opposed to the upper right one?
Thanks. I thought about which Pokemon I could use instead of Squirtle but couln't come up with any good idea. Maybe there's a possibility though, I don't know. About Abra, now that you say it maybe it's possible that upper right one is faster, and I checked the steps wrong when I made the TAS.
Player (80)
Joined: 8/5/2007
Posts: 865
I'm watching this run for the first time and I noticed something. Wouldn't it be faster to teach Blastoise both Surf and Strength at the same time (as opposed to about five minutes apart)? You don't use Surf until after Blastoise has learned Strength.
Experienced player (658)
Joined: 5/16/2009
Posts: 235
Bobo the King wrote:
I'm watching this run for the first time and I noticed something. Wouldn't it be faster to teach Blastoise both Surf and Strength at the same time (as opposed to about five minutes apart)? You don't use Surf until after Blastoise has learned Strength.
You do, against Koga.
N._Harmonik
She/Her
Joined: 8/27/2006
Posts: 502
Location: Canada
Wouldn't it have been faster to deposit all the other Pokémon in the PC before battling the Elite Four so they wouldn't have been registered in the Hall of Fame?
Why, oh, why do I even <i>try</i> to understand my own species?
Experienced player (658)
Joined: 5/16/2009
Posts: 235
N. Harmonik wrote:
Wouldn't it have been faster to deposit all the other Pokémon in the PC before battling the Elite Four so they wouldn't have been registered in the Hall of Fame?
No, the PC is too far to the right, making it slower because of too much walking. I can't remember the exact amount of frames but it was something around 200 frames faster (not too sure actually since I don't remember, but I'm sure it was faster not to deposit when I compared it). The reason why depositin Pokémon is faster in other games is because: - Gen 1: Hall of Fame is way longer. - Ruby: PC is just next to the Elite 4 entry. Also, for a Fire Red "2nd round" TAS it may be faster to deposit Pokémon since you would have to deposit 5 instead of 3, it should be tested though.
N._Harmonik
She/Her
Joined: 8/27/2006
Posts: 502
Location: Canada
Would it have been faster to use Rattata/Raticate and/or Machop/Machoke with the Guts ability and a status ailment?
Why, oh, why do I even <i>try</i> to understand my own species?
Editor, Expert player (2072)
Joined: 6/15/2005
Posts: 3282
N. Harmonik wrote:
Would it have been faster to use Rattata/Raticate and/or Machop/Machoke with the Guts ability and a status ailment?
I made a brief TAS using Rattata but stopped shortly after. There are some problems with Rattata: - Rattata has Medium Fast experience growth, which is worse than Medium Slow growth that the starters and most three-evolution Pokemon have. Between levels 10-20 (the most important stage), Medium Slow Pokemon have about a 2.5-level advantage over Medium Fast Pokemon. Even later, the advantage is still at least 1.5 levels up to level 50. - Guts only works with a status ailment. Poison and burn do damage at the beginning of every turn except the first. Since Quick Claw is not there at the beginning, paralyze will make Rattata always go second. So there are some problems. - Rattata cannot learn Mega Kick. Nor does Rattata have easy access to any strong attacks late in the run (Facade is on the Sevii Island route). - The game simply isn't friendly to those Pokemon relying solely on physical attack power. This isn't Pokemon RSE. Machop's disadvantage is more of location; the first place one can be obtained is at Rock Tunnel, at level 17. By that time, Wartortle is level 27.