Merry Christmas and Happy Holidays!
After I saw Wersterlobe’s AGDQ 2013 Pokemon Gold run, I became very interested in the bad clone and map distortion route. I played around with it and did a few real time runs, but that was it. Lately I’ve taken greater interest and wanted to try making a well optimized run of the current real time route. I started a run in Bizhawk, but stuff went wrong so I restarted on Lsnes which worked much better for this game.
This run is heavily based off the real time route. Because of this I am no expert on a lot of the tricks used in this run. I have done my best to explain what’s going on as I understand it.
  • Emulator used: Lsnes - rr1-Δ18ε2[libgambatte SVN364]
  • Aims for fastest time
  • Abuses glitches
  • Manipulates luck
  • Resets the game
  • Takes damage to save time

Tricks used

Luck manipulation

This is probably the biggest part of Pokemon TASes, as luck influences Pokemon starting stats, criticals, what Pokémon goes first if speed is tied, the damage range of a hit, if they hit or not, wild encounters, etc.. For the most part luck can be manipulated by delaying input for a few frames at very specific times. Wild encounters can sometimes be manipulated based on your movement patterns.

Pokemon cloning and bad clone

If you save, deposit some Pokémon, then reset while changing boxes, you can clone Pokémon and the items they hold. If you reset on the first lag frame when the game saves, it is possible to have their name be deleted and their level set to zero creating what can become a “bad clone.” Once getting a bad clone a series of other glitches can begin.

Glitching with the bad clone

The bad clone at level zero is useless, so putting it into the daycare and taking it out causes it to become a glitched Pokémon. With this glitched Pokémon in your party it is possible to move a 7 th Pokémon from a box into your party. Afterwards, you can withdraw a large number of Pokémon (this has a total of 27 Pokémon at once). Upon withdrawing your 30th Pokémon, the game will crash and distort the colors. After reloading your file you have a bunch of random pokemon in your party (not seen in this TAS, but if you scroll through then it’s quite a list), the amount of Pokemon you’ve caught/seen changes, and your team is poisoned with pokerus. There are likely some other affects I’m blanking on right now.

Map distortion

If you bring up your Pokémon menu during this glitched state, it is possible to change tiles around you into garbage looking tiles that are sometimes possible to walk on. From a little trial and error I did, the names of your Pokémon and the amount of Pokémon you have influences what random tiles you get. For this run having 27 Pokémon, most of which are Abras named “GEODUDE” causes distortion patterns that are very favorable and allow one to get places they normally shouldn’t.

Instant victory

You can only do this during the glitched out state. First you have to KO your first 6 Pokémon. Then at some point you need to switch your seventh Pokémon with the Pokémon above your first Pokémon. Then by depositing certain Pokémon you can get a team of all koed Pokémon. This glitches all battles to end when you try to send out a Pokémon, and for the case of trainers the game assumes you have defeated them!

Useful memory addresses

1A3F – hex, first party Pokémon’s attack/defense DVs. Say you get a Pokémon with a value of “D1.” Its attack DV would be D and its defense DV would be 1
1A40 – hex, first party Pokémon’s speed/special DV
1100 - byte, opponents current HP
1102 – byte, opponents maximum HP
1AAF – byte, 3rd party Pokémon’s max HP – useful when getting Abra
1ADF – byte, 4th party Pokémon’s max HP – same

Run details

Getting the starter

- To cut down battle time, I needed a starter with high a high attack, special, and speed DV. After a bunch of trial and error and around 10 frames of manipulation I was able to get a Totodile with DV’s E0-FD which was great for this run

Rival fight up to first gym

- For the rival fight, three 7 damage critical hits kos his Pokémon perfectly. We have the same speed stat so that allows me to manipulate who goes first.
-Crit Mikey’s Pidgey but sadly needed a crit and a standard attack to ko Rattata.
-In the spearow fight it is possible to ko it in 3 turns using rage (the third needs to be a crit). This is slightly more dialog then just three crit scratches though.
-Nothing special about the next three Pidgeys. All need 2 crits to be taken out. For Falkner’s pidgeotto I found that 2 crit scratches and a normal one koed it great.

Up to the second gym

- The nice part about trainer battles is it is possible to manipulate what attack they will use by delaying frames after certain dialog and they will stick with this move (unlike wild Pokémon). This allows me to skip using the Pokémon center since Pokémon like zubat can be manipulated into using status moves like supersonic and such. This is seen in the youngster fight.
-Additionally talking to the youngster from the side proved to be 72 frames faster than having him see you.
-I needed a little extra HP in order to get water gun to speed up later fights, so I fought goldeen. This fight was tricky; I needed to get a crit that hit 13, a normal attack that hit 9 (which is rare) and an attack to hit 8. Since I had a maxed out speed DV I was able to tie goldeen’s speed a save some time. I’m not sure what the minimum DV you would need to tie goldeen.
-Easily possible to manipulate the spinners by movement patterns or delaying frames. I was lucky enough to not have to delay any frames for these spinners. Water gun is obtained while fighting Geodude which speeds up the rest of the fight as well as later ones.
-As with the youngster, talking to the rockets is faster than having them see you. You need a pretty decent special DV to 1 hit the Zubat the second rocket sends out.
-Sadly for the Koffing fight I needed 2 crits to ko it. 1 crit and 1 standard attack was just out of range.
-Fighting the trainers on the left side of the gym means a few less steps and a few less Pokémon to fight.
-Similarly to Koffing, Paras needed 2 crits.
- The gym battle was tricky. It is possible to defeat him in 8 turns with all critical scratches, but rage took 7 turns. It is possible to leave metapod with 1-2 hp allowing him to add to rage, but I could never get a rage to 1 hit Scyther so just koing it was the way to go. I found that while fighting scythe it was just barely possible to hit 25 damage with my current rate (half of its total hp) meaning I could let its second fury cutter miss. Was a pain trying to manipulate 25 damage.

Up to the coin case

-The next (and final) rival fight also needed good manipulation. Bayleef could be koed with two 17 damage criticals and one 16 critical. 17 Damage criticals were also tricky to come by. Zubat was a pain. With either a critical water gun or a critical scratch I was never able to 1 hit zubat (I tried for a long time, it might be possible with a maxed special DV, but that’s only 2 values higher and might not have changed anything). 2 scratches proved to be fastest.
-I needed to stop moving for 1 frame to manipulate wild Pokémon a few times in the forest since there wasn’t as many possibilities to vary movement.
-Getting the bike greatly speeds up movement (for example getting on the bike after exiting the Pokémon center and biking to the train station was over 100 frames faster than walking)
-Getting the coincase by entering where I did means you only have to fight 2 battle

Up to the bad clone

-Since I had over 12000 pokedollars, I was able to buy the 500 coins saving time over buying 50 4 times. Additionally this allowed me to pick up an additional Abra. Both Abras were manipulated to have 25 HP (so they could be koed quicker later on) and were named “GEODUDE” (for whatever reason, this nickname gives very favorable map distortion patterns).
-I tried getting 3 or 4 abras by earning a few coins from the card flip. Getting a 3rd abra and then starting the cloning was sadly 1690 frames slower than just getting 2 abras and 4 abras was even slower than that.
-I entered the daycare to start duplicating since it is next to the day care lady who’s needed later. I needed to duplicate the exact amount of Pokémon that I duplicated in order to achieve later glitches.

Defeating the Elite 4

-I reset for a bad clone after putting the 19th abra into box 2. This created a bad clone which was moved to the party. If it was moved to the party by using the “withdraw” option, it would become a level 1 abra which we don’t want. Giving the level 0 abra to the day care lady levels it up and changes it into a glitched Pokémon. This allows us to withdraw more than 6 Pokémon (in this case a party of 27 is used), the game crashes after withdrawing 30.
-The Pokémon are glitched out after the crash. To fix some of this you need to visit a Pokémon center (this lets your Pokémon at least battle). Pokerus is obtained because of the bad clone, no way around it that anyone knows of.
-By map distorting in front of the guy that lets you on the train, you are able to walk past him and get on it, instantly arriving in Saffron. Likewise, distorting near the blocked off Diglett’s cave allows you to get behind Snorlax. And again, distorting next to the person blocking off Victory Road allows you past him. The game is saved and soft reset because after distorting the entry way to victory road gets blocked by garbage.
-I encounter a Golbat and let it ko my first 6 Pokémon. Manipulating it into using wing attack (and critical hits when needed) was odd since wild Pokémon use moves differently than trainer ones (their move is decided on the frame you select your attack).
-I map distort near the exit to skip the rival fight. I also switch my 7th Pokémon with the Pokémon above my first Pokémon (needed to get a team of koed Pokémon).
-I put away certain Pokémon until I only have koed Pokémon making the elite 4 pretty simple.

Defeating red

-Thankfully abra has teleport which puts me back at the Elite 4. All the abras need to be re withdrawn to allow map distortion again. I map distort to skip the rival fight again. I need to save and reset in order to have the hole you fall into load correctly
-In order to get to mount silver you need to map distort but change some Pokémon around to get the desired affects. By switching the 3rd Pokémon above your first Pokémon and the Pokémon 2 above that you can create a distortion that works. Again a reset is needed to actually exit.
-Out here I re-ko my first 6 to allow the instant victory glitch, depositing all the non koed Pokémon. Opening the Pokemon menu created a lot of garbage that made it so I couldn’t leave the center, but the depositing Pokemon menu was enough to make it go away.
-It’s a simple matter of talking to Red, and bam, its over!
Total frames: 195008 or 54:24.96
Possible improvements include better luck manipulation. I have no idea how to use Lua or stuff like that so the manipulation was done manually. There is always a chance I missed a combination that would have had the desired affect with fewer frames. Additionally time might be savable with better map distortion patterns, but that would take a LOT of trial and error. I am also certain that having a much higher defense DV would save some time early on (less damage during the first gym), but might loose time while koing the team. Either way, I was not able to manipulate a good defense DV and great other DVs.
Hopefully I haven’t forgot anything. Enjoy and happy holidays!

Nach: Nice run. First glitched run I saw that seemed like it was decently optimized (even though it can be further improved). The audience seemed to have been entertained, so it can be accepted as moon tier.
Regarding this run's relationship to the fuller run, I've considered this as an obsoletion for it. However, that other run seems to actually play through the whole game instead of skipping most of it via various glitches. Therefore I do not think this should obsolete it. We'll need to come up with some name for that run to reflect its full state, and I'm currently accepting this run as the standard any% run.


Joined: 12/29/2007
Posts: 489
Would something like "no memory corruption" or "no memory overflow" be a good description for the old run?
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
Zowayix wrote:
Would something like "no memory corruption" or "no memory overflow" be a good description for the old run?
It abstains from two things: The 'coin case arbitrary execution' route (executes data as code, corrupts memory via controlled writes) The 'box cloning/bad clone/map distortion' route (resets mid-save, corrupts memory/buffer overflows a lot) If you call controlled writes to memory memory corruption (and I think this is correct) then 'no memory corruption' should work on its own.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4038
Patashu wrote:
I'm pretty sure all gyms would get instant victory glitch and bulldoze through the game.
Patashu wrote:
If you call controlled writes to memory memory corruption (and I think this is correct) then 'no memory corruption' should work on its own.
Thanks for your informative posts, Patashu. The old run's branch name has been changed to the more accurate "no memory corruption".
Editor
Joined: 11/3/2013
Posts: 506
Just a quick question: what happens to the old run now it doesn't have a vaultable goal? Oh, and congrats. A two-hour obsoletion of a seven-year-old movie. Those don't happen very often. EDIT: I also believe that those figures warrant a "major improvement" tag.
Skilled player (1743)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
thatguy wrote:
Just a quick question: what happens to the old run now it doesn't have a vaultable goal? Oh, and congrats. A two-hour obsoletion of a seven-year-old movie. Those don't happen very often. EDIT: I also believe that those figures warrant a "major improvement" tag.
Regarding this run's relationship to the fuller run, I've considered this as an obsoletion for it. However, that other run seems to actually play through the whole game instead of skipping most of it via various glitches. Therefore I do not think this should obsolete it. We'll need to come up with some name for that run to reflect its full state, and I'm currently accepting this run as the standard any% run.
This reminds me of Dragon Warrior 3 "no item glitch"'s case. I don't know why people seem to insist on keeping it from being obsoleted despite the ratings have indicated the old run isn't all that entertaining even back then. :P
Joined: 10/9/2011
Posts: 12
jlun2 wrote:
This reminds me of Dragon Warrior 3 "no item glitch"'s case. I don't know why people seem to insist on keeping it from being obsoleted despite the ratings have indicated the old run isn't all that entertaining even back then. :P
For whatever it's worth, I do find that longer DW3 run entertaining as far as its niche goes, and I rewatch it every now and then (generally as part of a marathon of no-major-skips runs of as many DW/DQ games as I can get my hands on). So: ratings at the time aside, opinions may differ.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
thatguy wrote:
Just a quick question: what happens to the old run now it doesn't have a vaultable goal?
100% is vaultable. Main thing is though that 100% can be defined in many different ways in a Pokemon game. Another way to look at this is that the longer run is a normal playthough while this is glitched. I don't know what the best naming scheme / break up is, but it seems that one really should not be obsoleting the other. The vault accepts normal and 100% runs, it's just the naming isn't clear in this case, but it seems that vault run is one of them.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Skilled player (1743)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Nach wrote:
100% is vaultable. Main thing is though that 100% can be defined in many different ways in a Pokemon game. Another way to look at this is that the longer run is a normal playthough while this is glitched. I don't know what the best naming scheme / break up is, but it seems that one really should not be obsoleting the other. The vault accepts normal and 100% runs, it's just the naming isn't clear in this case, but it seems that vault run is one of them.
Well, if it was to be a 100% gyms, it would be like this:
Patashu wrote:
It's best described as glitchless, not all gyms. I'm pretty sure all gyms would get instant victory glitch and bulldoze through the game.
But if the run is going to do that as a vault run, then it might as well go all out and do this:
Patashu wrote:
Zowayix wrote:
Would something like "no memory corruption" or "no memory overflow" be a good description for the old run?
It abstains from two things: The 'coin case arbitrary execution' route (executes data as code, corrupts memory via controlled writes) The 'box cloning/bad clone/map distortion' route (resets mid-save, corrupts memory/buffer overflows a lot) If you call controlled writes to memory memory corruption (and I think this is correct) then 'no memory corruption' should work on its own.
Joined: 1/4/2014
Posts: 15
Location: California
That is a nice way to break the game. Yes vote! (:
-Duderson