TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #4953: GoddessMaria's GBA Pokémon: Emerald Version in 1:16:12.27

Console: Game Boy Advance
Game name: Pokémon: Emerald Version
Game version: USA
ROM filename: POKEMON_EMER_BPEE01 (U).gba
Branch:
Emulator: VBA-rr v22
Movie length: 1:16:12.27
FrameCount: 273090
Re-record count: 23037
Author's real name: M. O
Author's nickname: GoddessMaria
Submitter: GoddessMaria
Submitted at: 2015-12-31 16:04:19
Text last edited at: 2016-01-04 15:30:06
Text last edited by: Spikestuff
Download: Download (7325 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
Pokémon Emerald Version in 1:16:12.27 (1:13:18 in-game time) by GoddessMaria.


(Link to video)

Emulator used: VBA-rr v22 (Works on VBA-rr v23.6 svn-r480)

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.

Game Objectives (in no specific order)

  • Uses no predefined saves
  • Aims for fastest time
  • Takes damage to save time
  • Heavy luck manipulation
  • Heavy glitch abuse
  • Corrupts RAM

Introduction

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. After the previous TAS, I felt that there was more to be done so I went to work on the improvement. This submission is the result of said improvement.

Tricks and Tips

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. Check http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_data_substructures_in_Generation_III 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 : 0x02029844 0x02029850 0x0202985C 0x02029868

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 addresses 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 every time 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 address 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 re-positioning 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 modification) 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 addresses 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.

Luck Manipulation

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.

RNG Mechanics

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)

Route planning

From the start of the game up until after the Weather Institute, the routing was similar to the Ruby TAS. There are some changes between the Ruby TAS and this Emerald TAS. Barring the obvious game differences/enhancements between R/S and Emerald, the runs themselves are not the same.

Some of these changes are as follows:

  • Zigzagoon is not used in the Emerald TAS.
  • Taillow/Swellow is not used in the Emerald TAS.
  • Abra is found earlier in the game.
  • View radius for some trainers are different in Emerald which makes some battles mandatory in the run in comparison to Ruby, such as the Bird Trainer in Fortree Gym.
  • An alternate path through Victory Road is required in the Emerald TAS due to no access to HM07 Waterfall.

Run info

Beginning

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.

Petalburg City

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 the change here is skipping the Ether as there is no need for it. Rest is straightforward.

Rustboro City

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.

Dewford Town

Here, I go to Granite Cave first to take the Letter to Steven and skipping the Escape Rope actually saved around 1k frames due to picking it up, opening the Start Menu to use it, and the animations for using it as opposed to just leaving without it. Once done with the Letter delivery, I went 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. Improved it with better RNG.

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 re-positioning 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. 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.

Mauville City

The first things done here are getting both HM06 Rock Smash and Mach Bike. I teach Marshtomp, registered the Mach Bike and use it in that menu and proceeded 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. Everything from that point until Meteor Falls is the same, with the exception of not catching Skarmory. At Meteor Falls, I take the bottom exit to Route 115 and cutting through Rustboro City again to return to Route 116 and caught a Taillow. Back at Rusturf Tunnel, I pick up HM04 Strength and the HP Up earlier and used them on Marshtomp heading to Mt. Chimney. I also stopped by Verdanturf Poké Mart to buy 1 Super Potion, 3 X-Specials, and 1 Fluffy Tail. For now, it may seem that I am behind by around 1k frames. Took care of that and from there, nothing really important happens so see you at Lavaridge Town!

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 the Super Potion here on Marshtomp and use Abra's Teleport to go back to Petalburg City.

Petalburg City (revisit)

At Petalburg City again, it's time to take on the Gym! The gym layout itself is pretty much the same as R/S so moving onto Dad's room! This time around wasn't too bad. Mud-Slap was very helpful against Spinda as it allowed me to use the 2 remaining X-Specials on Marshomp as well as preventing Slaking from KO'ing Marshtomp! It was basically critical Mud-Slap for those two aforementioned Pokémon then critical STAB Torrent Water Gun for the rest of the battle 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! Teaching Surf to Marshtomp at Route 103 to face the Twins Amy & Liv as they are needed for glitch setup. I managed to manipulate neither to use Helping Hand so I was able to KO both with Surf in turn 1. At this point, Abra will start gaining levels, but that's fine. Nothing time losing. Now with that done, I move on to Route 118.

Route 118 & 119

Once I arrive in Route 118, I battle the two trainers in the way in doubles as it is faster than battling seperately before making it to the Weather Institute in Route 119. Here I will lose a few frames to get back in Torrent range so the other battles will be a bit easier. Once we get to the sexy Aqua Administrator Shelly, I take this time to KO both Abra and Taillow. 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. From here on, damage manipulation was very important as I needed to get to Marshtomp to 1HP before Fortree City. Again, Brendan shows up late like always and wants to battle. I manipulated Slugma to damage Marshtomp with a Max Damage Ember, also putting me in perfect RNG range to crit KO Grovyle the turn after KOing Slugma. This, unfortunately, put me with the WORST RNG for the Pelipper! At this point, I had to manipulate for the least amount of Protects as possible... despite what was implied, Pelipper WILL use Protect turn 1 and on turns when it knows it cannot get a KO. It will attack when you are in sure-shot range to KO and problem is that doing that WILL get Marshtomp KO'd. Not much else to say there. Now for the next important step, I needed to battle Ninja Boy Hideo and manipulate the second Koffing's Sludge to not Poison as I'll already be at 1HP from the damage after the level up from the previous Koffing. After this battle, I pick up the Pomeg Berries next to Hideo before entering Fortree City.

Fortree City

Alright, finally made it to Fortree City! Now for the big changes... firstly, I enter the Pokémon Center and deposit Abra in Box 1 Slot 3 and Castform in Box 1 Slot 4, switching its moves so Powder Snow is in the second slot. Then I teach HM02 Fly to Taillow and used the Pomeg Berry on Marshtomp. After that, I proceed over to Route 120 to meet Steven & manipulate the wild Kecleon that he wants me to battle to have the EGFL RAM value needed which is the value of 07DF8F87. Once I got it, I needed to to make it change to value 47DF8F87 before using the Fluffy Tail to leave 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!

Special Thanks

I have to thank FractalFusion for his knowledge of the games, starting with the Ruby TAS! I learned a lot from him!

I also must thank mkdasher for his help and assistance during the glitch portions as well as providing additional support.

Major thank you to Metarkrai for helping me and sharing his knowledge of the Pomeg Berry Glitch! If not for him, I probably wouldn't have finished this run at all so thank you very much!

Also want to extend a major thank you to all of the Pokeémon RTA runners for everything, from explanations to listening to me go on about the TAS. Thank you!

More Thank Yous!

I want to also extend my thanks to the following:
  • Toothache42
  • Synahel
  • Mothrayas
  • Gamer Maiden Sonia
  • Ranko Hoshino
  • Spikestuff
  • Kooper Koushiro
  • Gargleflop
  • Samsara

And thank you all, the viewers and supporters, for everything!


Mothrayas: Judging.

Mothrayas: Solid improvement. Accepting as an improvement to the published movie.

Spikestuff: Publishing!!


Similar submissions (by title and categories where applicable):