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

Submission #4140: bobmario511's GBC Pokémon Gold in 54:24.96

Console: Game Boy Color
Game name: Pokémon Gold
Game version: unknown
ROM filename: Pokemon Gold.gbc
Emulator: Lsnes - rr1-Δ18ε2[libgambatte SVN364]
Movie length: 54:24.96
FrameCount: 195008
Re-record count: 16000
Author's real name: Scott W.
Author's nickname: bobmario511
Submitter: bobmario511
Submitted at: 2013-12-25 05:12:05
Text last edited at: 2013-12-30 19:13:01
Text last edited by: Ilari
Download: Download (34430 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:
Merry Christmas and Happy Holidays!

(Link to video)

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.

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.

Similar submissions (by title and categories where applicable):