Pokemon Fire Red in 1:44:17.34 by MKDasher.
- Emulator used: VBA-RR v23.6 with Save Type Flash 128k.
- Aims for fastest time.
- Heavy Luck Manipulation
- Takes Damage to save time
Everything started when FractalFusion did a testrun using Clefable instead of using the Squirtle line. At first I didn't think it was going to be faster, but after reading his comments about his testrun I started to think it could save time.
In the end, I started to be more interested in how a run with Clefable would look, until I started working on it, and the final result is what you guys are watching now.
Like any Pokémon game, knowing how to luck manipulate correctly (and therefore knowing its RNG mechanics) is very important. Again, I have to thank FractalFusion for collecting most of the RNG information used for this run. In fact, the lua scripts I used where modifications I did to his own scripts.
This game uses two RNGs. First RNG 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.
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).
Definitely, the hardest part was luck manipulating Metronome. There are 339 different moves that Metronome can execute. Since the only way to manipulate it is waiting for the right RNG value to appear, sometimes waiting a lot of time is needed.
The main problem of manipulating this is when more than one rare event needs to be manipulated together (for example, Metronome + Critical Hit would be a chance of 1/5424, so you may need to waste many frames for that to happen). When waiting a lot is needed, there is usually a solution that lets you manipulate the different events separately, which is 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.
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 or manipulate a Metronome + Critical hit, and you do not want to wait for too long, 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, such as Metronome and Critical Hit for example).
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, but for example in the late part of the run, it is completely neccesary, or else the run would have been much slower.
Wild encounter manipulation
Unlike previous generations and Ruby / Shapphire, 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 one of the hardest things 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 help menu noise at the very beginning is intended and completely necessary to get the perfect seed as soon as possible.
There are 65536 possible seeds you can get, and only one of those would give me the perfect seed I was looking for, which means this is one of the rarest events in this TAS, since the chances of getting the perfect seed is 1/65536. Since Repels can be used after Pewter City, what I needed from the seed was as low encounters as possible until Pewter City. This seed gives me exactly 2 encounters until Pewter City (both encounters on Route 1), which is fine since I need to catch 2 HM slaves, and let's me save one Repel in the Mt.Moon. There was another seed that was taken into consideration, a seed that wouldn't give you any encounter until Pewter City, but it wouldn't work as good as the previous one since I would need to take extra steps in order to avoid encounters in Viridian Forest, and I would need to catch 2 HM slaves later anyway.
So, the 2 seeds I talked about were the only 2 seeds that would let me go to Pewter City without extra encounters (encounters that I will just need to run away). The one I use is the best one because it lets me cut a bit more grass, saving some steps in my movement. Still, I needed to save a grass step on Viridian Forest so that I didn't get an extra encounter, and that was by letting the Bug Catcher watch me ("!" message) and not talking to him.
Another minor event that I had to manipulate was encountering Abra on the first grass step.
Manipulating IV’s (Squirtle and Clefairy)
The main RNG seed is generated just after choosing a name for your character (“I” in my case). This seed would determine how good my Squirtle and my Clefairy could be. Again, there is 65536 possible seeds I could get, so I used another simulator search program that could help me with this work.
The first problem I had was the emulator itself. Lua script savestates are broken, so a brute force searching does not work perfectly, and I have to manually check if my brute force searching was right. The seed I ended up finding was D4D4, which is a very good seed for this run. Still, there are 2 seeds that would be better in theory, but according to my brute force searching (which I checked manually), it is not possible to get those 2 seeds fast enough to be worth getting them. However, there is a chance that my search (even if I checked it manually) was wrong because of the emulator limitations.
Another important thing is that, the seed is the thing that lets me get the IVs I want for both Squirtle and Clefairy. This means I can't just expect perfect IVs on both Pokémon. My simulate search program determined the best possible combination of IVs for both Pokémon (taking into account Clefable is more important than Squirtle since it's used longer in the run), without having to wait too much time to get those IVs (it's worse to get flawless IVs if you have to wait too much to get them).
So, after getting this seed, the IV's I could get for Squirtle and Clefable were:
Squirtle IV's: HP: 8 Atk: 13 Def: 18 SpAtk: 31 SpDef: 26 Speed: 10 (+sp.atk/-sp.def)
Clefable IV's: HP: 31 Atk: 31 Def: 19 SpAtk: 29 SpDef: 17 Speed: 31 (+atk/-def)
Squirtle's special attack IV is the highest possible. Attack IV doesn't need to be any higher (it wouldn't make any difference for this run). 31 IV speed would have worked better, but there is not seed that could give you a 31 IV speed Squirtle, and then a good Clefable (because of what I explained before), so it wasn't an option in the end. The 2 better seeds I was talking before would have given me slightly better IV's on speed, but this IV works fine anyway.
Clefable IV's are really good. Perfect attack and speed, and really high special attack IV (31 IV for special attack wouldn't make any difference).
FractalFusion really made a big part of the route planning. Actually, I followed most of his ideas: I get Mega Punch and Mega Kick for strong Pokemon, Water Pulse for rock / ghost Pokemon, Pound for weaker Pokemon, and in the end I get Metronome. I also teach Strength to Clefairy because it has the same base power than Mega Punch, it has a higher accuracy, and its name is shorter. Also, a Squirtle with high Attack is not needed anymore since Squirtle is only used until Mt.Moon. Because of that, it was better to get a Squirtle with high Special Attack, which ended up saving 16 seconds in the early part of the run compared to the previous publication.
Another important thing for the route was knowing which items I will need to use. I need enough items so I don't have to use any Pokemon Center (since they are slow), but I don't want any extra items (for example, using 5 Mega Punch Critical Hits is faster than using 5 Mega Kicks and then using a Repel).
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, since MID text loses one frame each time you talk to somebody even if you're pressing a button to scroll the text faster.
Just at the very beginning, you can hear I bonk when I'm inside my house. You can hear the same thing when I stop talking to Prof.Oak later. It is faster to do this rather than turning as fast as possible without bonking (A comparison vid can be found here
). This trick will be used in all the run.
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. Also, the fact that Bulbasaur speed ties me is not a problem as long as I attack first on the last turn (which I did).
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. (I explained why I did this on the wild encounter manipulation section). 3 critical hits were needed for Weedle. I also wanted him to crit me once, so I can get the Torrent ability faster. I had to open the help menu again for luck manipulation.
For brock I just had to critical both of his Pokemon. I received damage from Onix to be on Torrent for Route 3 (tackle is the best option because Rock Tomb lowers the speed, and the animation takes time). I buy 4 escape ropes, and 6 repels. I buy escape ropes because it's faster than using dig, and I buy repels because I can't avoid wild encounters anymore.
Route 3 + MT. moon
Thanks to being on torrent I can 1 hit every pokemon of the first bug catcher. I receive damage from the weedle to keep being in Torrent. Another 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 Rattata speed to attack first on the second turn.
I have to use Repels in MT moon since I can’t avoid encounters anymore.
I get the Moon stone to evolve Clefairy inmediately after I catch it. From now on, Clefairy will be the pokemon used for this run.
Just when arriving Cerulean City, I enter on the Pokemon Center and exit, so Abra can teleport me here later.
Nothing interesting to say about Misty fight or Gary's fight.
For first battle in the Nugget Bridge, I use Mega Punch on Metapod. I have to say that Pound would also 1-hit Metapod with a perfect damage range, but since it would take longer to manipulate that, I didn't use Pound.
After the Rocket Grunt, I encounter Abra on the first grass step, and get an Elixir which I will use later on the run. I teach Water Pulse now so I can 1-hit the next Onix.
Really nothing much to say here. When going back to Cerulean City, before registering the bike I place the TM case next to the Bike so I can access to it faster later. I didn't lose any frame doing the switch.
Celadon City and Lavender Town
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. Rocket Hideout is pretty easy as well. I want Giovanni's Kangaskhan to Bite me since it's the faster move he can do, then I just can crit him with Mega Kick.
Since I didn't enter on the Pokemon Center to heal (it's slower), and I'm not going to need to go to the Celadon Market, route was changed here. Instead of going to Erika's gym now, it's better to get fly, go to Lavender, and then go to Erika's gym. I luck manipulated the movement of the girl who gives me the Fly HM so that it takes one step less to talk to her.
I take the free heal in the Pokemon Tower becuase it's faster to do so than using any other item to restore my PPs. Finally, I get the PokeFlute so I can finally wake up that Snorlax.
Then I go to Erika's gym. I can 1-hit all her pokemon with Mega Punch - critical hit. I would be able to 1-hit all her pokemon with Mega Kick, but since getting extra items is slower, I decided not to. Last thing I do on the city is getting the Tea.
I find a Max Elixir hidden on the floor on Route 17. It will be useful for later.
Before getting to Safari Zone I need to buy some Repels, so I just do it on Fuchsia City. Cutting the tree is just 2 frames faster than going around, but still faster Then I go to Safari Zone. I can avoid some wild encounters at the beginning, so I only need one Super Repel. It’s faster to dismount 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.
Then I teach Strength over Mega Punch because they have the same base power, Strength name is shorter, it has higher accuracy (this lets me hit critical hits earlier in some cases), and it's faster to teach it to Clefable rather than teaching it to Squirtle because of menuing.
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 Max Repel since I want to open the menu as few times as possible.
For some reason, even if a music change happens anyway, dismounting before entering on Cinnabar Mansion is faster by about 30 frames.
I find an Elixir on Cinnabar Mansion. I’ll use it later. Then, after Blaine's fight, I get metronome, which will be used for the Elite Four.
Saffron City and Viridian City
I use a Max Elixir when flying to Celadon City, so I don't have to open the menu again later. 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. Since Clefable is too strong, I can 1-hit all his Pokemon. Same with Giovanni and Sabrina, which are really easy fights.
Nothing interesting to say about the Viridian's gym, and Viridian's rival.
Victory Road is just about moving boulders, so I don’t have to say much about it.
Here it came the harderst part of the game, since it's when I need to start manipulating metronome. In fact, the route I use for the Elite Four and the decisions I make basically depends completely on the RNG, so I wasn't unsure how the elite four would look. One of those decisions was not depositing all my Pokemon except Clefable before the Elite Four. It's actually 10 frames slower but luck manipulation resulted to be better. (10 frames is not a big amount compared to the frames I need to waste to manipulate Metronome).
Lorelei fight is where you can see why Metronome is useful. If I didn't have metronome, Cloyster would die in 3 hits (its hability is Shell Armor, so I can't critical hit him), and it has a 100% chance of using Hail, which wastes a lot of time. Then the more moves I can use to 1 hit an enemy, the easier it is to manipulate it. I can use 3 different moves for Cloyster (Thunder, Thunderbolt or Zap Cannon), but Low Kick is the only move that works for Lapras, and therefore it was the hardest metronome to execute. (Superpower and Hyper Beam also 1 hits Lapras but both moves have bad side effects). The attack choices for Cloyster and Slowbro were just the attacks I could get faster.
Bruno is the easiest fight since I don't need to use Metronome. Agatha is probably the second easiest, because even if it's the fight I need to hit more Metronomes, they are easier to hit (There are a few moves that can 1 hit Gengar, and there are a lot of moves that can 1-hit Haunter).
After Agatha, I run out of Mega Kicks, so I need to use my last Elixir. Lance was a hard fight. I can only 1-hit Aerodactyl with Blizzard or Hydro Pump (the second one was the move I could use first). Then Dragonite only dies with an Ice type move (none of the Dragon type moves would be enough to kill). Blizzard can kill Dragonite without a critical hit, but I would have to wait too much frames to be worth it, so it was better to use Ice Beam on this case.
Gary fight needed 2 metronomes. Thunder just barely kills Gyarados without needing to critical hit him. Again, I needed to wait a huge amount of frames to get it, so Thunder Punch + critical hit was a better option. Arcanine only dies with Hydro Pump, Surf, Muddy Water, CrabHammer and Earthquake (Hydro Cannon obviously doesn't work). The first attack is the one I was able to get first.
I have to thank FractalFusion
for his route ideas, and for sharing all his knowledge about this game. I really learned a lot from him.
: Replaced submission file with a 1011-frame improvement.
: Good improvement with some interesting strategies. Accepting as an improvement to the published movie
: MUFFINS! (I have nothing creative to write)