Pokémon Emerald Version in 1:19:52.87 (1:16:40 in-game time) by GoddessMaria.
You will need Real-Time clock enabled (Options -> Emulation -> Real Time Clock) and Save Type Flash 128K (Options -> Emulation -> Save Type -> Flash 128K) enabled in order to correctly watch this movie.
So this entire idea to TAS the game (from my own perspective) came when I was working on the Battle Factory TAS. A thought had crossed my mind about how a TAS of the main game would be like. Because of my curiosity, I went ahead and started to try it out. It was during this that I had learned odd behaviors between Frontier and normal battles. I proceeded to take on the game as close to a "secret" project until completion before unveiling it publicly to see what the responses would be like, which led to the test run's birth. A bit later into it, the Pomeg Berry glitch (this by itself was known for a long time) had an expansion into it where it became possible to clear the game far sooner with use of corrupted moves. Once that had surfaced, the number of possibilities increased and soon the glitched run became more sought after. Since I was working on the final version anyway, I decided to take it on. This submission is the result of the final version.
Pomeg Berry Glitch
Pomeg Glitch was a little funny glitch known for a long time in Pokemon Emerald where you could decrease a Pokemon HP to 0 or beyond 0 with Pomeg Berries.
But this way to KO a whole Pokemon team outside of battle can lead to awesome glitching.
The Original Pomeg Berry Glitch
The original Pomeg Glitch.
This Glitch revolves around EVs, points gained through battle that increases a Pokemon stats if he won enough of them in a certain stat.
When a Pokemon is caught, he has no EVs. He can gain a maximum of 510, with a limit of 255 EVs per stat.
Items like HP Up, Carbos, Iron, Protein,.. give 10 EVs in a certain stat.
In Emerald, 6 Berries gained a new effect : they decrease EVs by 10 in a certain stat. (The opposite of the EV boosting items)
These Berries are : Pomeg, Kelpsy, Qualot, Hondew, Grepa, Tamato.
This mechanism was meant to be useful to people that wanted to train their Pokemon in a specific way but accidentally gained EVs in stats that aren't useful.
To perform the original Pomeg Glitch (or the first part of the newer one), you need the following:
- A Pokemon who has HP EVs. A good amount of HP EVs is needed in order to ensure that after giving a few Pomeg Berries, the Pokemon's Max HP will decrease by at least 1 point.
- Use Poison and wild battles to decrease your remaining HP down to 1.
- Give Pomeg Berries to your Pokemon. Its Max HP will decrease, and due to a programming error, its remaining HP will also decrease.
- Your Pokemon is now at 0 or 65.535 HP (-1 = 65.535 since HP is stored in 2 bytes : values between 0 and 65.535).
If its HP is 65.535 or less, you can use a healing item to make it go up to 0.
Now, the Pokemon is KO, but he fell KO in a non-programmed manner, so the game won't make you black out if you KO all your party Pokemon with this method.
The "new" Pomeg Berry Glitch
-Make a team with 3 to 6 Pokemon.
Your first Pokemon must be alive, with HP EVs and 1 HP.
You'll give him a Pomeg Berry to KO it later in the process.
Your last Pokemon must be alive, preferably with full health.
All the other Pokemon (between first and last) must be KO or Eggs (considered as KO Pokemon because they can't fight).
-Go make a wild battle. In this battle, switch to your last Pokemon, then flee.
The game will update the slot of the last Pokemon seen alive in Battle with your last Pokemon's slot.
-Deposit the last Pokemon.
Now, there's no Pokemon on the slot previously memorized by the game, but your team still has an alive Pokemon remaining.
-Use a Pomeg Berry to KO your first Pokemon (and last alive Pokemon).
Now your team is full of KO Pokemon.
-Go into a wild battle again.
The game will first check your team to see if he finds an alive Pokemon.
If he doesn't see one, he will launch the "Pokemon" in the slot of the last Pokemon seen alive, as in normal gameplay, it is automatically an alive Pokemon.
But here, there is no Pokemon into this slot. The game will still follow its script and interprete the zeroes as a Pokemon.
Thus, a ? will be launched, with no moves, 0 PPs, 0 HP, Lv 0, ID 0,...
This Glitched Pokemon is called Decamark because of its summary name being ??????????.
-Go into the Pokemon selection.
The game is puzzled : he found out that there are 4 (for example) "concrete" Pokemon into the party, but he also sees that there is 1 battling Pokemon, and 4 Pokemon in reserve.
For now, the Pokemon selection pointer is set to select 4 Pokemon, so the last Pokemon of your team can't even be selected.
-Check the Summary of one of your Pokemon, and go back.
Due to anti-cheat scripts, the game will now consider the Decamark as a "concrete" Pokemon.
But under Decamark's data, there's a wide RAM area full of zeroes. Thus, the game will also interpret these zeroes as Pokemon, and the number of Pokemon the pointer can select becomes higher than 6.
-Push Up or Down to move the Pointer on the Cancel button.
A Glitch happens here since the pointer is still selecting a Pokemon, but he's also selecting the Cancel Option.
This makes the Pointer position glitch, and teleports it way down into RAM.
The pointer jumped to an adress around Box 2 Pokemon 24 data, and you can push Up to make it start an ascension in RAM data.
Also, the pointer is programmed to check 2 values : Pokemon species and something else (HP probably), so he's still doing the check.
But since he's reading some RAM data values (by blocks of 100 bytes, the size of a Party Pokemon's data), this check corrupts some values everytime it's performed.
We have then a RAM corrupting tool that only affects 2 bytes every 100 bytes, (not completely periodically), changing the values in a really precise way.
The two Pointer RAM corruptions
Here's a part to develop a bit the corruption pattern, and the possible changes.
Since the Pokemon selection pointer is programmed to check 2 values, we can consider that there are 2 different corruptions.
The first one is linked to the reading of HP / unknown value.
In Party Pokemon data, this value is always at the same place, thus, this corruption is completely periodical, happening every 100 byte at the same adress everytime.
The pointer reads data with double-words, so RAM data needs to be seen in 32-bit mode (double-words mode).
If a double-word is corrupted, the console will try to set Bits 0 and 2 of the leftmost byte to 1.
ex : 0x0024 5678 -> 0x0524 5678, 0x0400 0000 -> 0x0500 0000
Thus, you have 4 different value changes :
Bit 0 and 2 effectively set to 1 (+0x0500 0000), only Bit 0 (+0x0400 0000) or only Bit 2 (+0x0100 0000) set to 1, or no Bit set to 1 (no change).
The second one is linked to the reading of Pokemon species.
And this value isn't at a fix position, due to an anti-cheating build that organizes most of the Pokemon data into 4 substructures, and orders these substructures depending on the PID (congruence of PID modulo 24).
Thus, the pointer will read the PID value to determine where the Species value is, and read it after that.
Since there are 4 different positions for substructures, there are 4 different positions for species data into Party Pokemon's data.
Thus, the corruption happens every 100 byte, but in 1 of 4 different places, so the corruption itself can't be seen as periodical.
The PID reading doesn't bring any value corruption (strangely).
A corrupted double word has Bit 6 of its leftmost byte set to 1 or set to 0.
ex : 0x0200 0000 -> 0x4200 0000
This corruption isn't a real toggle (if Bit is 1, it becomes 0, and vice-versa). The Bit is set to 1 or 0 depending on the value of PID and TID (stored in a double word next to PID).
If Bit 6 of the leftmost bytes of PID and TID have the same value, the Bit will be set to 1. Else it'll be set to 0.
ex : PID = 0x4000 0000, TID = 0x0000 0001 -> Bit set to 0.
This second corruption is more interesting than the first one since you can always change the value of a double-word, if you can manipulate the value read as PID to control the corruption the pointer will make.
With complete control of PID value (modulo 24), you can also manipulate the position of the second corruption.
to have a table of substructures position depending of the congruence of PID mog 24 (species is stored in Growth).
Here are the adresses for corruptions :
PID reading : 0x02029820
TID reading : 0x02029824
First Corruption : 0x0x02029830
Second Corruption :
If you want to know the corruption adresses somewhere else in RAM, add or substract a multiple of 0x64 (= 100) to them.
Manipulating RAM Corruption
Since PC Pokemon data is stored after nearly every other data, you can corrupt most of the in-game values / identifiants / flags.
The adresses where RAM corruption by pointer will happen are fix.
But hopefully, another anti-cheating script saves the corruption.
The role of this script is to take RAM data values (at least the ones useful for the game), and change their position everytime the player enters a door, closes PC, starts a battle, closes Bag,...
Any of these values (seen as double-words) can take 32 different positions (all the values have the same adress gap between their previous and new position).
And the RAM corruption has (nearly) the same pattern every 100/4 = 25 double-words.
This means that any RAM double-word affected by the repositioning anti-cheat script (part of the DMA script I think) can be corrupted.
If the Anti-DMA cheat code is used (needed to activate other cheat codes), the pointer corruption will always give the same results, so it's better to not use cheat codes while making Pomeg Glitch.
RAM Corruptions used
In the run, two elements are corrupted with Pomeg Glitch to break down the timer.
We also made it in a way that both values are corrupted in a single Pokemon Pointer Corruption.
-The first one is Ever Grande Fly Location (or EGFL).
This flag can be raised with the Second Corruption, meaning that you can directly Fly to Ever Grande, and only Victory Road + League remain.
Also, Pomeg Berries are found in Route 119 and 123, right before Fortree, so Pomeg Glitch can start right next to the 6th Gym.
Also, at League, the guards only check the optional Badges to let you go. Since these Badges are Badges 2 and 6, we already have them when we fly towards Ever Grande.
Skipping everything between Fortree and Victory Road nearly halves the run in two.
Since second corruption is involved, there is a setup to do before being able to corrupt this flag.
There are 4 possible values that, being read as PID, can influence the Pointer to corrupt the Fly Location Flags and raise EGFL.
These values are all Trainer flags, so they can't be well manipulated into a run where you would only be ar Fortree.
During a speedrun, when arriving at Fortree, none of these values allow an EGFL corruption.
Hopefully, one of these value manages Twins / Couple Battles, and fighting Route 103 or Route 104 twins (only one of them) is enough to allow an EGFL corruption.
This means there's a 1/32 chance to have the good value positioning inducing an EGFL corruption.
-The second one involves Pokemon Corruption.
Even if the corruption only concerns the leftmost byte of any double-word, it's enought to be able to completely manipulate a Pokemon's data.
If you corrupt its PID, you will swap substructures order and obtain a completely different Pokemon, without the checksum noticing it. (anti-cheat algorithm detecting a manual data modifiation)
But this corruption involves having specific Moves and EVs, which would take too much time.
So we are directly corrupting a Pokemon's data, even if it becomes a Bag Egg.
Castform was an ideal Pokemon since it's given just before Fortree, allowing you to manipulate the order of its substructures, and the values of some of its data.
The data we want to corrupt is Move identifiant to get a certain Glitch Move.
There are 354 moves in 3rd Generation.
Any move with an identifiant higher than 354 will have its characteristics read on ROM adresses not affected for this, meaning that this move can have nearly any combination of characteristics.
ex : Move with a sleeping effect, Dragon type, 241 Base Power, 115 PPs, 130% Precision, 187% of Effect Precision, and a Priority of 15.
Glitch Moves names are also read on data that wasn't supposed to be a name, so they are often way too long than basic names.
The Glitch Move name can have an important impact on battles, because when the Move selection is opened, Moves names are stored into RAM.
And if the name is too long, then it will still be stored, and this will overwrite some other values managing the battle.
One of there values manages the battle type (wild, trainer, double, Battle Frontier, Dojo, Palace, Safari Zone).
Depending on the glitch Move, you can find yourself with a combination of Battle types that completely messes the battle (double + Palace + Safari Zone for example), or simplifies it (wild battle means that you can flee).
There is also an hidden battle type that was used for development that ends any battle as soon as B is pushed.
Glitch Moves with this effect, known as Instant Flee Glitch Moves, are complete speedrunning deities.
There are several moves that, once corrupted, have this effect.
A move identifiant is something like 0x00B5. This can be corrupted into 0x01B5, 0x04B5, 0x05B5 or 0x40B5 depending on the Pokemon PID and TID (they "crypt" the rest of the data to avoid easy cheating).
In the run, we are using Castform's Powder Snow (0x00B5) to obtain Instant Flee Glitch Move 0x04B5.
Castform must have its Moves substructure placed first, and the leftmost byte of PID xor TID must have its Bit 0 set to 1 and Bit 2 set to 0.
Also, he must be put in Box 1 Place 4 with Powder Snow in second position in order to get 0x04B5 Glitch Move along with EGFL.
Once Castform is corrupted, it turns into a Bad Egg.
But if we withdraw it, it will take the position of the "last Pokemon seen alive in battle".
And glitching the Pokemon selection pointer renders the game unable to find the Pokemon to heal when we black out, so we can keep a party of KO Pokemon after using Pomeg Glitch.
Thus, after withdrawing Castform's Bad Egg, if we make a battle, the Bad Egg will be sent out to fight.
He will have an Egg sprite, an odd Level, but he keeps its moves, so he still has the Instant Flee Move 0x04B5.
This means that every battle after Pomeg Glitch will be completely wrecked, saving a lot of time on Victory Road + League.
Like any Pokémon game, knowing how to luck manipulate correctly (and therefore knowing its RNG mechanics) is very important. I have to thank FractalFusion for collecting most of the RNG information used for this run and making the lua scripts as well as mkdasher for modifying it.
Using scripts that cover how many times the RNG was called in the past frame, and which values, I was able to find other stuff. Starting Pokemon stats is easy enough to find. Of course, I was looking for stuff that could be applied many times in the run. And I found a lot.
Critical hits was by far the most important in my mind. In general, an attack results in a critical hit if the fourth digit of the RNG value at the time of determination is 0. Easy stuff there. Furthermore, 7 RNG values later is damage variation. I know "damage variation" sounds like peanuts compared to critical hits, but believe me, it is very important in this run. Damage variation works as such: The fourth digit of the RNG value functions as a damage scaler. If it is 0, damage is applied at full 100%; if 1, 99%; if 2, 98%, and so on (if F, 85%). 0 is the only digit that gives the max damage; all others reduce it by at least 1. So if manipulating critical, or max damage, alone is hard, imagine manipulating both of them together.
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).
How to Luck Manipulate:
None of the above would have been of any use if I didn't know how to luck-manipulate properly. First of all the text has to be mid speed (or slow, but definitely not fast). The reason is that, first of all, mid speed can be scrolled as fast as possible just by pressing and holding buttons. But beyond that, the problem with fast speed is that the text speed cannot be scrolled at will. Then you have to manipulate a whole bunch of events all together as a group, rather than separating the events by mid-speed text that can be sped up and slowed down at will.
Normally, when luck-manipulating something, I first TAS to find the fastest way through a battle. Once I have found that, I go back and redo it, patching it up to make it look better (waiting doesn't look very good).
Note that in battle (except in subscreen menu), the RNG goes forward at 2 per frame. Sometimes, it is better to delay one frame before battle to switch the parity of the RNG. The parity can be controlled in certain cases, like when accessing the subscreen menu, or due to some weird occurrence, usually coincident with AI matters.
Manipulating IV’s (Mudkip)
The main RNG seed is generated just after choosing a name for your character (“U” in my case). This seed would determine how good my Mudkip could be.
Another important thing is that, the seed is the thing that lets me get the IVs I want for Mudkip.
So, after getting this seed, the IV's I could get for Mudkip:
Mudkip IV's: HP: 12, Atk: 31, Def: 19, Sp.Atk: 31, Sp.Def: 6, Speed: 9 with the Quiet Nature (+sp.atk/-speed)
At the start, I change my setting around due to "animations" being present in Emerald now that weren't a thing in R/S. When choosing the name, I needed to delay a few frames for the right starting seed. I also named the character "U" for two reasons: one being due to viewing it in the long run, it would say "U received Y" with "U" meaning you the viewers as opposed to I referring to myself, the runner. The second reason was when I first thought about the name, the name "Yuu" came up and because of that name being 3 characters long, I decided to shorten it to just "U" which would sound just the same but shorter.
At the very beginning of movement, you can hear a "bump" sound when I'm inside the truck. You can hear the same thing when I stop talking to the rival's mother later. It is faster to do this rather than turning as fast as possible without bumping (A comparison vid can be found here
). This trick will be used in all the run.
Once I get the Mudkip, I proceed through the tutorial battle against the Wild Zigzagoon (Poochyena in R/S). Just like in R/S and the first turn of FR/LG, you cannot get any critical hits in tutorial battles. Once over, I proceed to Route 103 to face Brendan. This battle goes by quickly so moving on back to Littleroot Town because Brendan told us so. Got the Pokédex from Birch, the 5 Poké Balls from Brendan, and the Running Shoes from Mom before finally leaving again. Everything else was pretty much straightforward.
First thing done was entering and leaving the Pokemon Center to set a Teleport point for later on before entering the gym. Spoke to Dad (Norman), the gym leader and our conversation gets interrupted by that blasted Wally. He wants a Pokemon but doesn't know how... So I am sent to go help him catch a Pokemon. Took this time to manipulate the borrowed Zigzagoon's IVs and nature for helping us out.
Zigzagoon IVs: HP: 7, Atk: 28, Def: 10, Sp.Atk:24, Sp.Def:6, Speed: 7 with Naughty nature (+Atk,-Sp.Def)
Back at Route 102, we walk into the grass and we proceeded to manipulate the IVs and Nature of the wild Ralts to have low HP & Defense IVs with a -Def nature. Two max damage Tackles were enough to 2HKO the tutorial Ralts, but the game treats it as a capture anyway. Returning to the gym, Wally returns the borrowed Zigzagoon before leaving and I followed afterwards as Dad will only battle after I get 4 badges. So after listening to this stalker, I head towards Petalburg Woods where I encounter a guy looking for a Shroomish, only to be ambushed by a Team Aqua Grunt. Being a good person, I defeated the Aqua Grunt with 2 critical Tackles and 1 normal Tackle. After saving the Devon employee, I receive a Great Ball and pick up an Ether before exiting the woods. Rest is straightforward.
Starting off by entering the Trainer School, getting the Quick Claw as it lets a Pokemon go first (with the right manipulation), and giving it to Mudkip before going into the gym. At the gym, we battle Youngster Josh for the experience (EXP) and took out his Geodude with 3 critical Mud-Slap for the double level up so Mudkip can use Water Gun while being in Torrent range thanks to the first Tackle from it. Next is Gym Leader Roxanne... nothing really special here. Got the Stone Badge and TM39 Rock Tomb from her, then left the gym. After leaving the gym, the same Devon Employee guy from before is in pursuit of that Team Aqua Grunt from Petalburg Woods as the grunt managed to steal the Devon Goods from him. Bumbling idiot! So as I am heading towards Route 116 when the Devon guy stops me to..pretty much want me to help him again to avoid him getting in trouble by Mr. Stone... so having no choice in the matter, I set out into Route 116 so I can get the Goods back from that no-good thief! This is where I capture the Abra and after doing that, make it to Rusturf Tunnel where that Grunt is now holding an old man's Wingull hostage. *Gasps* ...anyway, I confront the Grunt and defeated him a second time. Now the Wingull is free and I have the Goods back! So I return to Rustboro City to give the Devon Goods back to the employee only to get sent on 2 more errands! After testing the Match Call feature for Devon, I have Abra teleport me back to Petalburg City, which saves time as opposed to revisiting Petalburg Woods again and also having to be forced into a Double Battle with the Twins on the bridge. Back at Route 104, I catch Marill to use as a HM Slave and left Brendan at the entrance to Mr. Briney's hut.
Here, I go to Granite Cave first to take the Letter to Steven and picked up the Escape Rope near the stairs since I didn't buy anything earlier on. Once done with the Letter delivery, I used the Escape Rope that was picked up earlier and left the cave onwards to the gym. In Emerald, the gym Layouts are different so I didn't have to face any trainers at all so I could get to Brawly without any problems. Not much else to note except this being the point when Mudkip evolves into Marshtomp. Got the Knuckle Badge and TM08 Bulk Up from Brawly and proceeded onwards to Slateport City.
Nothing really noteworthy happened in Slateport so moving on to Route 110. Another thing that differs between R/S and Emerald is the additional trainers and repositionings of the ones from R/S. Walking in between them will result in a Double Battle, which would be far slower due to both of them having a Plusle and a Minun each along with them both spamming Helping Hand so taking the two PokéFans on individually is faster. After dealing with those two, I take on Brendan again but not before adjusting my team so that Marill is sent out first. Now onto the battle! I had to manipulate a critical Rock Throw from the Slugma to KO Marill and a normal Ember was enough to KO Abra. I needed them both KO'd set things up for the Pomeg Berry Glitch later. With that done, I proceeded to let Marshtomp finish things. After that, I had to face another 2 trainers in which one of them was able to be avoided in R/S but cannot avoid in Emerald due to the additional Double Battle bit that the game has. Took care of them and moving onwards to Mauville city.
The first things done here are getting both HM06 Rock Smash and Mach Bike. I move Marshtomp back to the front of the party before teaching Marill Rock Smash. During this time, I register the Mach Bike and use it in that menu and proceed on. Of course we deal with that pesky Wally and afterwards have to listen to that stalker named Scott, whom introduced himself earlier in Slateport City. Now that the distractions are out of the way, onwards to the gym! The gym pattern this time doesn't seem to be much different that I noticed so after beating the Youngster, I face the Gym Leader Wattson. Quick Claw manipulation was key in this battle and while the other 3 Pokemon were taken down with normal Mud Shot, the Manetric needed a critical Mud Shot to be KO'd. Got the Dynamo Badge & TM34 from Wattson and with that, I take my leave from Mauville City...for now anyway. Everything from that point up until Route 113 is about the same as before. In Route 113, I proceed to catch a Skarmory to use as my Flier. Moving on to Route 114, I waited a few frames before dismounting the bike and battling the Hiker. In the battle, I manipulated a critical Ember to KO Skarmory as it wouldn't have KO'd otherwise. Took care of that and from there, nothing really important happens so see you at Lavaridge Town!
Finally made it to Lavaridge Town and unlike the test TAS, I didn't visit the Poké Mart and went straight ahead to the gym. This gym's pattern is pretty simple that I make it to the Gym Leader easily. Haii Flannery! <3 ...sorry, couldn't resist! So onto the battle! STAB (Same Type Attack Bonus) Torrent Super Effective Water Gun makes quick work of the first 3 Pokemon. Her ace Pokemon, Torkoal, on the other hand required a critical to go with it. Got the Heat Badge & TM50 Overheat from Flannery-chan and after listening to that jerk, Brendan, indirectly call us weak, we use Abra's Teleport to go back to Petalburg City.
Petalburg City (revisit)
At Petalburg City again, we decide to buy 1 Potion and 1 Super Potion for later on at the Poké Mart before visiting the gym. Once I get inside the gym, I take this time to use the Potion so I can live a hit from Cooltrainer Mary's Delcatty and whatever other weaker move there is. The gym layout itself is pretty much the same as R/S so moving onto Dad's room! This is one annoying battle and I'm glad that it's the last one before the real fun begins. Mud-Slap was very helpful through this battle as it prevented his Pokemon from KO'ing Marshtomp! It was basically critical Mud-Slap then critical STAB Torrent Water Gun for his other Pokemon until it came to his Ace Pokemon, Slaking. Starting that one was a critical Mud-Slap and manipulated the miss and thanks to Slaking's Truant ability, it can't attack every other turn. So I take advantage of those times to hit Slaking with critical Mud-Shots and Water Gun. I switched over to Tackle on turn 5 of the Slaking fight to avoid the Hyper Potion heal from Norman and since Faint Attack is weak on Slaking due to Dark-type moves being Special in Generations 2 & 3 as well as Slaking having a Base 95 Sp.Atk stat, I was able to live with 2 HP. Finished it off with a critical STAB Torrent Water Gun and that's all! Got the Balance Badge & TM42 Facade from Dad and get Surf from Wally's dad as a gift for dealing with his pesky son. Now that we are done with all of that, it's time to start preparing for the Pomeg Berry Glitch! First off, I need to have a Pokemon brought back to life for the next battle so I teach Marshtomp Surf (replacing the empty Water Gun) and pick up the hidden Rare Candy below Petalburg City. Used the Rare Candy on Abra since Abra doesn't learn anything until after it evolves and proceeded onto Route 103 to face the Twins Amy & Liv as they are needed for glitch setup. I managed to manipulate the Plusle to use Quick Attack on the Abra while I used Surf the move after to KO both in turn 1. Now with that done, I move on and grab the hidden Full Heal in Route 110 for later on before going back to Mauville City.
Mauville City (revisit)
As I stated before, I was going to end up back here again eventually so time to break down what goes on here. First, I set the new Teleport Point here and leave again for Rusturf Tunnel again. Next, I defeat the Hiker that is sitting there before getting HM04 Strength from Wanda's boyfriend. In R/S, Hiker Mike doesn't bother you on the 3rd Square of his view radius. This was fixed in Emerald so now he will spot you if you try to go on his 3rd view square. So after getting HM04 Strength from Wanda's boyfriend, I go into the secondary section of Route 116 to grab the HP Up there. Now I use the HP Up on Marshtomp and teach Strength to Marill before using Teleport to return to Mauville City (yet again...). After returning to Mauville City, I leave again for the last time and battle the two trainers in the way in Route 118 before making it to the Weather Institute. After kicking Team Aqua out of the Weather Institute, I manipulate the Castform to have the needed value for the Pomeg Berry Glitch coming up and leave here so I can get to Fortree City. Before that though, I use the Super Potion and Ether here so Marshtomp can use Surf again as well as have enough HP for the next step. Again, Brendan shows up late like always and wants to battle. Not much to say there. Now for the next important step, I needed to battle Ninja Boy Hideo and manipulate the Poison Gas from his second Koffing to hit so I would have enough HP to move around with while Poisoned. After this battle, I pick up the Pomeg Berries next to Hideo before entering Fortree City.
Alright, finally made it to Fortree City! Like with Petalburg City and Mauville City, I set a Teleport Point here and proceed over to Route 120 to meet Steven & the wild Kecleon that he wants me to battle. In this one, I switch to Kecleon and moved Powder Snow to the second slot before fleeing the battle. Afterwards, I teleport back to the Pokemon Center to deposit the Castform for the glitch and moved the Kecleon blocking the gym before going to Route 119 again. Once in Route 119, I use the Full Heal to heal the Poison and used a Pomeg Berry on Marshtomp (who is at 1 HP now) to trigger the Pomeg Berry Glitch. Now I needed to manipulate a wild encounter with the value of 07DF8F87 for EGFL. Once I got it, I needed to to make it change to value 47DF8F87 before "losing" the battle. Now that everything else is done, I go back into the Pokemon Center to withdraw the Bad Egg and go to the gym. The battles from this point on are very short thanks to the Bad Egg having a corrupted move which makes battles end instantly once the B button is pressed after the moves are revealed. With that said, breezed through the gym, got the Feather Badge & TM40 Aerial Ace from Winona, and left the gym. Once outside, I teach Skarmory Fly and use it to fly over to Ever Grande City. We are nearing the end!
Ever Grande City
Victory Road is interesting this time around as without HM07 Waterfall & the Rain Badge (Badge 8), we can't take the normal route through here. So thanks to the Bad Egg, the battle with that pesky Wally is even shorter now and same goes for the other battles. Other than the path change, everything else is nearly the same. Moving on to the Pokemon League portion! I only have 6 Gym Badges.. I won't be able to get in! Or am I? The two guys standing guard of the Elite Four entrance let me through anyway and in all honesty, they should both be fired for it! Anyway, Elite Four & Champion battles are quick thanks to the Bad Egg and with that said, this run is over!