Introduction

After the first published 151 run on Pokémon Blue (here), there were multiple new glitches found, like the Item Underflow glitch or the use of the Cooltrainer to catch Pokémon, which allow for a significantly faster full completion of the game. This submission tries to use these new techniques to provide a more up-to-date version. I didn't really intend to do a TAS on this initially, I mainly started looking into this for two reasons: firstly to see if the "Gotta Catch 'Em All!" category is even a sound category still, and secondly out of curiosity, how much the total time can be improved using these new glitches. It turned out that the answers to both questions were very promising, and I realized I was half-way into creating a TAS anyway at that point, so I went ahead and finished it.

Categories

  • Aims for fastest completion of the game and relevant side-quests
  • Heavy glitch abuse
  • Heavy luck manipulation
  • Forgoes save corruption
  • Corrupts memory
  • Contains speed/entertainment tradeoffs
Used emulator: BizHawk 1.5.3 (syncs on 1.1.0 - 1.6.1)

About the run

Goal choice

The goal of the run is to catch all 151 Pokémon in the game. This can be done by all means, only excluding arbitrary code execution and any direct manipulation of the Pokédex flags, which would make this category pretty much pointless. The run is considered complete when Oak evaluates your completed Pokédex in the Hall of Fame.

Emulator Choice

The movie requires BizHawk version 1.6.1 or earlier. In version 1.7.0 and after, the frame timing has changed, which lets the movie desync. I'm using a (slightly) outdated version, because the pre-1.7 frame timing represents the input capabilities you have on a real Gameboy way better than the new timing, at least for Pokémon games: The old frame timing always stops at the VBlank interrupt, where the screen is redrawn and Pokémon games fetch the controller input, which allows you to do any input possible on a real Gameboy. With the new frame timing, VBlank is ignored and frames are forced to be a fixed length, which lets the BizHawk frames cut in the middle of a Gameboy frame. This can split up the input fetching and input processing awkwardly into two different frames, which makes it harder to correlate the inputs to the actions (you may or may not need to press the button one frame before the actual action, depending on where BizHawk decides to end the frame) and can lead to certain inputs not being possible at all with the new timing. On the downside, the old timing produces a slightly less accurate total time, since not all frames are of equal length, but are counted as if they were to determine movie length. The difference is negligible, though, since shorter frames occur only in very rare occasions, e.g. when the LCD is turned off by the game, which it commonly only is at the start of the game, and makes the old timing a few frames slower than the new one.

Version Choice

The Red and Blue version are surprisingly close in terms of speed, none of the versions is clearly faster than the other in this category, despite significant route differences due to the version-exclusives of each version. This run uses the Red version, mainly because the routing turned out to be easier, Blue's version-exclusives are slightly easier to catch in Red than vice versa.

General strategy

Since the goal is to catch all Pokémon in the least amount of time, we want to utilize the fastest way for obtaining each Pokémon. Catching wild Pokémon is obviously one of the fastest ways, it takes about the same time as evolving a Pokémon. That means, it's often faster to just catch the evolved forms instead of evolving them if you're already in the area, especially if you would need to withdraw it from a box first or it takes more than one Rare Candy to do. As for glitches, the setup times vary significantly depending on the glitch used, which makes some of them more desirable to use than others. A Trainer-Fly encounter is the most flexible way, especially when combining with Ditto's Transform ability, but is by far the slowest due to its elaborate setup. The Cooltrainer glitch and the newly introduced text pointer manipulation are more limited, but also way faster to execute. In-game trades are only useful if they're on your path anyway or serve an additional purpose, they take pretty long on their own, which makes glitching it faster in most cases.
While it may seem as if you can get any Pokémon at any time using the presented glitches, this is not the case, some of them are significantly harder to catch than others. This is mostly related to their ID, where higher IDs are harder to get then lower IDs. I'll illustrate this using Bellsprout as an example. Bellsprout has ID 188, and there are not many options to get this high: Using Trainer-Fly requires a Ditto transform, since no encounter in the game can get this high (except for Mewtwo, which is already too high). This is not only slow to do, but also gives you only a level 7 Bellsprout, which will take many Rare Candies to evolve and costs even more time. Valid tile IDs only go up to 96 as well, so Cooltrainer on a (non-glitched) map is also impossible. Using the Old Man glitch is another possibility, but there are only 3 possible encounter slots, and there are many other Pokémon with a high ID which need that spot (also, there is no letter in the available alphabet to give you exactly this number). An even more exotic possibility is to use the Old man encounters (which usually have abnormally high levels) to get the right stats for a Trainer-Fly without Ditto. This is possible and quite fast, but again it can only be used for one Pokémon, and there are multiple hard-to-catch ones (Machamp gets this spot in this run). The method which is ultimately used in this run is using Cooltrainer on a glitched map, which happens to allow you to catch Bellsprout. It is somewhat out of the way as well, but still faster than Trainer-Flying for it.
As for the order in which to catch the Pokémon, it doesn't really matter, the main goal is to minimize the travel time between the individual encounters. Only at the start of the game, before enabling instant text boxes, most actions, including catching and evolving Pokémon, is slower to do, so catching them later is preferable, unless they are exclusive to the area and you would need to go back to it, like Jigglypuff or Clefairy.

Route Explanation

This section explains the route used in this run, pointing out non-obvious optimizations and notable glitch uses. You can find more detailed explanations of specific mechanics and glitches in the Glossary below.

Intro

  • The low byte of the Trainer ID is manipulated to be 0x06, which will later be used to grab a bike (The bicycle has the item ID 0x06)
  • The character is named "BCVXZQr", which will be important for the Old man glitch later on. The "B", "X" and "Q" are not important and chosen simply because they are fast to enter between the relevant characters.
  • The rival's name is chosen to be "BLUE", which serves three purposes:
    • It is faster to select a suggested name than to enter a new one, we'll not encounter the rival often enough for a shorter name to outweigh the time spent on naming him.
    • The letter "U" corresponds to an item that belongs to a family of items commonly called JACK. We'll be able to grab this later on.
    • The game reserves 11 bytes for the rival's name, but you can only use 7 characters for his name. The rest of the characters will be 0x00, which will cause lag when scrolling through it in the item menu. Using a suggested name, all 11 characters will be filled by the game, which reduces lag (see Item scroll lag).

Pallet town

  • The options are changed to fast text speed, no battle animations and a set battle style, which speeds up all upcoming battles. Changing the options in-game is faster than doing it in the main menu.
  • Charmander is chosen as the starter, since it is easily the fastest in the upcoming fights. Charmander will be the main fighter throughout the run, so we manipulate it to have high DVs to speed up the fights. We need 14 ATK and SPC and 15 SPD to kill everything as fast as possible. This runs's Charmander has 15 ATK, SPD and SPC and additionally 13 DEF, which is way more than we need.
  • The rival's Squirtle has 20 HP, a max crit does 6 HP and a max non-crit does 4 HP, so 2 crits and 2 non-crits suffice to kill it (see Damage variation).
  • Jumping over ledges costs time, so it is avoided whenever possible (also see Walking).
  • When delivering Oak's package, it's faster to stand next to or above Oak instead of in front of him. This will cause the rival to walk less steps, and NPCs walk at only half of your speed.

Viridian Forest

  • The Bug Catcher's Weedle is always faster than you, and takes four crits to kill.
  • Talking to trainers directly instead of letting them catch you is faster and is done throughout the run.
  • It is possible to trigger a Trainer-Fly off the trainer by fainting from a wild encounter, catch a L1 Nidoking and use the Experience Underflow glitch to get it to L100, but doing this takes a considerable amount of time and ends up being slower than just going with Charmander.

Pewter city

  • We buy 8 Pokéballs and 2 Escape Ropes in the mart. 7 Pokéballs would suffice for the run, but buying an extra one decreases our money to a specific amount needed later on.
  • When the the guy stopping you from leaving Pewter takes you to the gym, you have a free input frame. This can be abused to save&reset and therefore skip the rest of the cutscene and leave without fighting Brock.

Mt. Moon

  • Even though buying the Magikarp would be fast, it is only level 5, and using the additional Rare Candies is just slower than catching one at level 15 later.
  • Grabbing the Rare Candy here is faster than grabbing the one in Cerulean City by about 2 seconds.
  • Mega punch is collected and thought to Charmander. Using Mega punch makes the upcoming fights way faster and is well worth the detour.
  • There is an alternative route skipping the Mt. Moon trainers by using Trainer-Fly to disable them. This speeds up Mt. Moon, but costs time in later battles due to missing experience on Charmander. It turned out that doing Mt. Moon normally is a few seconds faster than skipping the trainers.
  • Both Moon Stones are collected. Since you can't buy Moon Stones, we'll collect 3 Moon Stones we need throughout the run manually.
  • We choose to take the Helix Fossil, since it's faster to grab. We'll get the Dome Fossil later using the Item Underflow glitch.

Cerulean City

  • We evolve Clefairy and deposit Clefable and Jigglypuff to make room in our party for the Rhydon glitch coming up.
  • The Pokécenter is used to set the warp location.
  • After the Nugget Bridge is cleared, we catch an Abra in Route 24 and set up a Trainer-Fly on the trainer next to us.
  • A Caterpie is caught in Route 25. This is the hardest single encounter in this run, since it is the rarest encounter in this Route and we need specific Special DVs for catching Mew later.
  • After receiving the SS.Ticket from Bill and thus moving the guard in Cerulean City to let us through, an Escape Rope is used to return to Cerulean City. Bills house is one of the few houses in R/B you can dig out of.
  • In Cerulean City, a trade is initiated and then cancelled to set the Trainer-Fly encounter. The nickname of the Pokémon received in a trade is stored in the same memory segment that is read when triggering an encounter, which changes the species to 0x50 in this case, which is one of the Missingno. IDs.
  • The start menu is opened and closed to set the stored text ID of the Trainer-Fly to 0 (which is the start menu). Without this, a trainer's text will be triggered upon entering Route 24, which would overwrite the set up encounter.
  • Missingno. is used to duplicate both the Pokéballs and the Rare Candy. The caught Missingno. triggers the Rhydon glitch.
  • Note that the guard in Cerulean City vanishes as part of the Snorlax Skip glitch. This can't be abused to skip Bill, though, since the guard that blocks the entrance is a completely different object from the guard that is moved one tile over.
  • In the upcoming fights, the sprites will be drawn flipped, as a side-effect of the Missingno. encounter. When updating the graphics, the game gets confused, so that the blocks that make up the sprite are arranged correctly, but the block contents are still flipped, which creates the distortion effect.

Vermilion City

  • The Jingle Skip in the underground path is impossible with a character name with more than 5 characters, at least on GB (in SGB, it's possible due to lag differences when loading maps).
  • The Full Restore itself is not needed in any way, it is used as a buffer item purely for item management reasons.
  • Two Rare Candies are used on Charmeleon, to bring down the amount to 127, preparing to raise it to 255 with a second upcoming Missingno. encounter. Charmeleon does not actually need them for the upcoming fight, but since it will be evolved to Charizard later anyway, it costs no time.
  • The second Trainer-Fly is set up in Route 6, both to skip the two mandatory trainers and to use it for an arbitrary encounter later on.
  • Route 12 is entered to load Snorlax's missable object and therefore perform the Snorlax Skip glitch.
  • Spearow is traded for Farfetch'd, not only to obtain it, but also to set the Trainer-Fly encounter just like in Cerulean. Again, the start menu is flashed to set the stored text ID.
  • After successfully setting the amount of Rare Candies to 255 using the Missingno. encounter, the teleport location is set to Vermilion by visiting the Pokécenter. It will stay the teleport location for a good part of the run.
  • Another Trainer-Fly is set up in Route 12, for the same two reasons as in Route 6: It skips a mandatory fight and will also be used for an encounter later on.
  • The Nugget is tossed to duplicate the Rare Candy stack, since we don't want to lose the amount of 255 when using them. Charmeleon is brought to L32, to be able to speed up the upcoming Clefairy fights. At L33, it will learn a new move, and considering that we will increase the text speed later, it would cost time to raise it any further.
  • Note that the Full Restore collected in the underground path effectively gets deleted by this, since the number of items you have was still decreased, so any new item will overwrite the Full Restore.

Celadon City

  • In Celadon, we generate money by selling Rare Candies (we keep one to avoid deleting TM28 at the end of our item list) and buy the evolutionary stones needed for this run. We buy 5 extra stones in total and a Soda Pop instead of Fresh Water to manipulate the amount of money.
  • Everything is set up for the Item Underflow glitch now, which is performed on the Saffron guard.
  • Now that we have access to memory segments we are not supposed to, we can do all kinds of neat things that will help speed up the remainder of the run.
    • The text speed is set to 0, which disables any character delay and therefore makes any text instant. To do this, the save menu is opened beforehand; otherwise the corresponding item would be a key item and therefore too important to toss.
    • The S.S.Ticket is used to manipulate the badges, since its item ID happens to correspond to the first 6 badges and will allow us to use any HM.
    • The glitch item 0x94 is taken from the rival's name, which is one of the JACK items.
    • The money, manipulated to represent Full Heals, is taken. They're needed later to cure the status effects inflicted by the Cooltrainer glitch.
    • The Bicycle is grabbed from the Trainer ID, which was manipulated to contain this item.
    • Finally, the saved map ID is manipulated to warp us to Victory Road. Also, the map is slightly distorted to bring the exit closer to our position (see Wrong warp and Map distortion).

Victory Road

  • After every fight the currently selected menu items are reset, which makes it faster to do a fight first rather than getting on the bike immediately, which would require to scroll all the way back in the item menu.
  • Due to the way the encounter mechanics work, wait times are sometimes unavoidable in order to get the encounter you want. The spinning before the Golbat encounter does not to anything other than wasting some time until the encounter is available. These forced waiting times will occur multiple times throughout the run, and minimizing them by choosing the order of encounters carefully is an important optimization.
  • All Pokémon in the party are evolved before we use the last Escape Rope to leave. Whenever possible, the evolutions are done when the menu needs to be opened anyway to save some time.

Vermilion City

  • Using JACK, a Trainer-Fly is set up in Route 6.
  • In the Pokécenter, Charizard, Beedrill and Rhydon are deposited, and the box is switched, saving and resetting the game in order to regain the ability to open the start menu.
  • In the mart, a wrong warp to Route 23 is performed.

Route 23

  • Riding the bike is in theory faster for the amount of steps walked, but scrolling to it in the item menu would cost more time than it saves to use it.
  • A second Ditto encounter is used to transform into Butterfree, which was manipulated to have the right Special stat to encounter Mew with a Trainer-Fly. Note that it is not possible to use the same Ditto that was caught before, since catching it will revert the stat changes done by the transformation.

Vermilion City

  • Mew and Ditto will be the two permanent party members throughout this run: Mew is the only Pokémon that can learn both Dig and Fly, while Ditto is used for the Transform glitch and the resulting Cooltrainer glitch.
  • Another wrong warp takes us to Cinnabar Island.

Cinnabar Island

  • The Transform glitch is set up on Ponyta.
  • The third Moon Stone is collected, which is the last one needed in this run.
  • By manipulating the text pointer of the map, the Escape Rope is turned into a trainer (from Rock Tunnel to be more exact). Escape Ropes happen to correspond to Pinsir. The original text pointer is saved for use much later in the run (see Text pointer manipulation).

Vermilion City

  • As setup for a Cooltrainer encounter, we wrong warp to a glitch map and immediately return, saving the screen tiles of the glitch map for the Cooltrainer glitch, which happens to give us Porygon.
  • since this is a "bad" Cooltrainer, we walk into Diglett's Cave for the Cooltrainer encounter to avoid soft-locking the game.
  • The main menu is flashed to prevent the game from soft-locking when leaving the cave, as part of the "bad" Cooltrainer.
  • The Silph Scope it taken, Mew is thought Fly and Surf, and the Old Amber, representing the background music ROM bank, is taken. Some trickery is required to make it usable, though, since it initially has a quantity of 0, which makes it unusable in the Cinnabar Lab. By putting it over the saved map ID, which gets overwritten each tick on this map, the amount is set to 22.
  • Another glitch map warp is set up for another "bad" Cooltrainer, catching Vaporeon. To get to the right spot on the map, JACK is used. Also, the tileset is manipulated to allow using Dig to escape.
  • The Vaporeon Cooltrainer put Ditto asleep, which prevents it from triggering further Cooltrainers, so it needs to be healed using a Full Heal.
  • Two "good" Cooltrainers allow catching Hitmonchan and Vulpix easily.
  • Another wrong warp brings us into Silph.Co. in order to grab Lapras.
  • By using the teleporter right before Dig, the initial Dig animation is replaced by the much faster teleporter animation. This requires extra steps, though, for a net total of a whopping 3 saved frames.
  • Back in Vermilion, another wrong warp into the Pokémon Tower is performed, catching Gastly, Haunter and Cubone and taking the Super Rod before digging back out.
  • The last Trainer-Fly is set up in Route 6, again using JACK.
  • All fully evolved Pokémon are deposited, Pokémon which still need to be evolved are taken out and the active box is changed, saving and resetting the game.
  • Vulpix is poisoned as part of the Cooltrainer glitch, which costs 4 frames for every poison tick, but curing it would cost more time than just keeping it poisoned. All Cooltrainer Pokémon have absurdly high health, so there is no danger of them dying.
  • Another wrong warp, to Cerulean Cave.

Cerulean Cave

  • After catching Raichu, there is a notable delay before one of the text boxes is closed, which is done to manipulate the D-Sum.
  • JACK is used for a shortcut to get through the cave faster. Running in circles is not actually required, it's again just to burn some time waiting for the right encounter.
  • the map is distorted in order to bring Mewtwo closer, to avoid the need to use Surf.
  • Electrode needs to have a Special DV of exactly 3 in order to be able to catch Sandshrew using Trainer-Fly.

Vermilion City

  • In the mart, the Pokéflute is grabbed, and a wrong warp to the Powerplant is performed.

Viridian City

  • The Dome Fossil is grabbed in the Pokécenter before triggering the Old Man glitch.

Cinnabar Island

  • All three fossils are turned in at the Cinnabar Lab. As we have multiple Dome Fossils and Old Ambers, they don't get used up when turning them in.
  • Using the Old Man glitch, Bulbasaur, Squirtle and Alakazam are caught.
  • Alakazam needs a Special DV of exactly 10 in order to trigger a Machamp Trainer-Fly encounter.

Celadon City

  • The teleport location is changed to Celadon, which it will remain for the rest of the run.
  • The Cooltrainer setup for Dratini is by far the most time-consuming one, especially considering it can be caught legitimately. Levelling it up do Dragonite from L15 would take 40 Rare Candies, though, which takes longer than setting up a glitched encounter with a higher level.
  • JACK is used extensively to navigate the glitch map in order to get to the right spot for Dratini.

Vermilion City

  • Two "bad" Cooltrainers, for Meowth and Lickitung can be performed inside the Vermilion mart.
  • A wrong warp to Seafoam Islands is performed.

Seafoam Islands

  • JACK is used for a shortcut to get to the lowest floor faster.
  • The map is distorted in order to get Articuno closer to us and avoid the need to use Surf or move any boulders.

Celadon City

  • More "good" Cooltrainers are performed to catch Magmar and Mr.Mime, and a "bad" Cooltrainer for Gengar.
  • In the Saffron guard house, walking one extra step inside sets the X coordinate to 1 (instead of 0), which decreases the item scroll lag and saves more time than the two additional steps cost.
  • Two more "good" Cooltrainers for Bellsprout and Eevee. A second Eevee will be received as a gift, which is all we need since we already caught Vaporeon earlier.
  • After catching Oddish, the longest D-Sum based delay of the run is needed. The text box is not closed for 4 seconds in order to setup the Mankey encounter.
  • The game thinks Ditto is at low health, which causes a constant beeping throughout these encounters that suppresses other sound effects and speed up the game, but is a major annoyance and therefore not used as a general optimization.
  • After waking up and catching Snorlax, a wrong warp into the Safari Zone is performed. Not entering the Safari Zone through the entrance has some side-effects: the number of Safari Balls is 0, which is treated as 256 by the game, and the number of remaining steps is also 0, allowing us to stay there for an indefinite amount of time.

Safari Zone

  • A second text pointer manipulation is performed to turn the Nugget in the center area into the corresponding Pokémon, Golem. The text pointer which was saved from the Pokémon Mansion is re-used here.

Pewter City

  • The last two remaining Pokémon, Jynx and Hitmonlee, are caught using "good" Cooltrainers.

Vermilion City

  • Hitmonlee and Golem are released to make room in the box for the rest of the party Pokémon. All but one party Pokémon is deposited in order to speed up the Hall of Fame cutscene. Note that releasing Golem is chosen over Jynx because its cry is way shorter.
  • A wrong warp into the Hall of Fame room skips all of the Elite Four and completes the game.
  • Note that not only the number of caught and seen Pokémon is 151, the game time ends up being 1:51 as well, which was of course totally planned and not just pure coincidence.

Glossary

Cooltrainer glitch

The glitch commonly referred to as "Cooltrainer" is an application of the Transform glitch. In the Transform glitch, you transform into a Pokémon with more moves than your own, and then swap the last with the first move. This causes the original moves to be swapped as well, making your first move slot empty, which is not handled well by the game. The Cooltrainer is based on a side-effect of the name of this invalid move. The game looks for the move's name beyond the actual move name list, and picks up some unpredictable 20 bytes of memory as the name. Further down the line, this name is first stored in $CD6D and later copied to $CF4B. This copy operation expects a terminating EOS byte, which might not be there, causing far more bytes to be copied than expected. This memory corruption is exploited in the Cooltrainer glitch: By manipulating the contents of the bytes following $CD6D, you can manipulate the corresponding bytes from $CF4B by simply opening the move list and looking at the invalid move. When used during a fight, this allows us to manipulate the data of the enemy Pokémon, most importantly its species. Simply speaking, this can basically turn any encounter into the species you want before you catch it.
It has side-effects however, since you're not surgically changing one single byte, but blindly overwriting the whole memory segment. Most prominently, it alters the enemy's (and depending on how far the corruption goes also your) stats and status, giving the Pokémon an absurd amount of health and inflicting multiple status ailments simultaneously. Only one alteration can influence the game's stability, though, which is at $CFC4. This flag determines (indirectly) how sprites are loaded, and having it in the wrong state can just soft-lock the game as soon as the fight ends. There is a way to handle these "bad" Cooltrainers, though, by doing the fight on a map without offending sprites, allowing the fight to end without soft-lock. After the fight, the flag can easily be set to the correct state by opening the start menu before leaving the area in order to avoid soft-locks. There are multiple of these safe maps that don't cause soft-lock in the game, most prominently Diglett's Cave, which is often used since it's close to a warp location.
The memory area that data is copied from contains a buffer of saved screen tiles, which is used to backup the screen when it is covered by a menu. When you open the party or item menu, this memory segment will be used to store the screen contents, so in order to exploit the Cooltrainer glitch you need to stand at specific positions in the overworld when storing the screen content. When stored, different tiles on the screen correspond to different properties of the encounter you'll manipulate, like species and level. You'll also need to have a tile equivalent to the EOS byte visible on screen at the right position, to mark the end of the memory corruption and not actually crash the game by overwriting the whole RAM.

Damage variation

Attack damage is multiplied by a random number between 217/255 and 255/255 to get the actual damage dealt. Because of the way integer division works, only 255/255 results in full damage, while 254/255 and below will always be at least 1 damage less. Dealing the full amount of damage is called max damage and has a 1/39 chance.

D-Sum

The game uses two bytes for determining random events, $FFD3 and $FFD4. Both change erratically based on a hardware register called DIV and are highly unpredictable. However, the two values are not independent: for each roll, DIV is added to one and subtracted from the other byte, which makes their sum almost constant (DIV can change slightly in-between the two operations, and there are carry values to consider). This sum is called the D-Sum, it changes slowly over time and is highly important when manipulating encounters.

DVs

DVs are random values between 0 and 15 assigned to each of the four stats (Attack, Defense, Speed, Special) to make Pokémon of the same species different. DVs increase the respective stats so that high DVs mean better stats. The DVs of wild encounters are random, while Trainer Pokémon always have the same DVs: 9 ATK and 8 DEF, SPD, SPC and HP.

Encounter mechanics

When moving in high grass, the game checks for an encounter after every step. Each area has its own encounter rate, which can range from around 3% to 12%. Furthermore, each area has a list of 10 possible encounters with fixed probabilities. That is, each slot has a fixed chance, independent from the area you are in, only the encounter you get in that specific slot varies. When checking for an encounter, both RNG bytes $FFD3 and $FFD4 are considered: If the value of $FFD3 is lower than the encounter rate of that area, you get an encounter. At the same time, the value of $FFD4 determines the species of the encounter. That means in order to hit a specific encounter slot, your D-Sum must be is a specific range; for a specific step you can only get the encounters that your D-Sum is in range of to allow. Since there is no known way to manipulate the D-Sum effectively, there may be no way to get an encounter at a specific step if your D-Sum just isn't in the necessary range, and you need to wait until it is. Things get even more problematic for consecutive encounters: After an encounter, your D-Sum is always in a specific range, the range it needed to be to get that encounter. During the fight, there is not enough manipulation potential to bring the D-Sum where you want it to be, so it might be simply impossible to have specific pairs of encounters consecutively without some wait time.
There's also a mechanic called the 3-step rule in this game, which ensures that after every encounter, a minimum of three steps is necessary to be able to get another encounter.

EOS

EOS is the end-of-string symbol, a special byte that tells the game that the character sequence it's reading has finished. In this game EOS = 0x50

Glitch maps

When an entrance does not exist for a map and you wrong warp into it, you end up in a glitched map. For each entrance on a map, not only the x and y coordinate is given, but also the address of the block data that makes up the visible tiles on the screen. Since for most glitch maps the address is some ROM address, the layout of the glitch map is fixed and predictable.

Item scroll lag

All item names are placed directly after another in the game's ROM, and whenever the game needs to read an item name with ID i, it will read through all the item names 0 to i-1 (counting the number of EOS) before finally reading the correct item name. That means items with higher IDs take longer to read. With glitch items, the amount of read data can be huge, since there may be no EOS around, which creates lag when scrolling through your item menu. The worst offender is item 0x00, which is treated by the game as ID 256 and creates about 6-7 frames of lag every time its name is looked up. Unfortunately, 0x00 is a common byte to find in RAM, and this run tries to reduce the number of 0x00 bytes whenever possible.

Item Underflow glitch

In the item menu, each item is stored as a group of 2 bytes, denoting the item ID ans the quantity. The byte 0xFF for an item ID is used to mark the end of the list. When you get the quantity of an item to 0xFF (e.g. by encountering Missingno.), the game confuses it with the end marker and modifies the item list in unexpected ways. This allows to toss all items without actually removing them from the inventory. If an event is triggered after that which removes items from the inventory, like the Saffron guards taking water, the item counter underflows from 0 to 0xFF. This enables us to scroll beyond the actual items into other memory areas and manipulate their contents, which opens up a wide variety of possibilities.

JACK

JACK is an effect caused by a set of glitch items, specifically all glitch items that open the party screen when used, like Potions or Rare Candies. All glitch items starting from 0x80 have the same effects as the regular items starting from 0x00. However, they don't appear in any list of items that the game needs to handle in a special way. All items that open up the party screen are is such a list, so that the game can reload the map sprites after the screen is closed. When using a glitch item with the same effect, the map sprites are not reloaded. This has multiple useful effects: Since the sprites are not rendered, all map objects that were invisible while in the item menu are now vanished, they don't block your way and trainers don't engage. This can be used to skip trainers or trigger a Trainer-Fly on any trainer, by walking in front of them and escape while letting them re-appear. The second useful effect is that the character's sprite has vanished as well, which prevents it from updating its orientation while walking. This has effects on the collision detection: To determine if the player can go in any direction, the game checks whether the tile in front of the player is passable, assuming the player always looks in the direction he's going. This is not true any more, so it's possible to go to any adjacent tile, as long as the tile the character is facing is passable, even if the tile you are walking to isn't. This can be exploited to walk through solid objects and walls, taking short cuts. It also helps when navigating glitched maps that have no way to traverse them regularly.

Jingle Skip

Jingle Skip is a minor time-saving glitch which is triggered when a jingle is suppressed by a recent change in the background music. Most famously, it's possible to skip the item pick-up jingle in the underground path when picking up the Full Restore right after entering.

Map distortion

There are two different pieces of information that define the player's position on the map: the X and Y coordinates, and the base address of the blocks of tiles that are visible on screen. While the coordinates determine the position of the objects on the map, the block address determines the map collisions. By using the Item Underflow glitch, you can get these two out of sync, which causes graphical glitches commonly known as map distortion. It is most useful to manipulate the position of map objects and bring them closer to you.

Map loading

The game world is split up in multiple maps, each town and route is on it's own map. When you go from one map to another, the map loading creates some lag frames. The GB has a time advantage over the SGB here, as loading the color palettes costs additional time.

Missingno.

Missingno. has the Pokédex number 0, which will be read as 256 by the game, so when trying to set the Pokédex entry for Missingno., it sets some bit outside the actual Pokédex data. For the "seen" information, this turns out to be the MSB of the 6th inventory item's quantity. What this effectively does is it gives you 128 more of your 6th item, unless you already have 128 or more of it, in which case it does nothing. If you catch a Pokémon, the game sets both the "seen" and the "caught" Pokédex bit, which means you can duplicate the 6th item twice with one Missingno. encounter.

Old Man glitch

The Old Man glitch is one of the first discovered game exploits and allows to catch specific Pokémon at very high levels depending on the character's name. When talking to the old man in Viridian City to show you how to catch Pokémon, the your name is temporarily stored in the same memory segment as the grass encounters, in order to replace it with the old man's name for the duration of the fight. This in itself is not immediately useful, since all routes that have grass to encounter Pokémon provide their own encounter list which would overwrite your name. However, due to the way the game does encounter checks, you can get a grass encounter without any grass: Each tile the player walks on consists of 2x2 graphics tiles. Almost all checks, like collision checks, are made based on the lower-left tile. The test whether you get an encounter, however, is made based on the lower-right tile, while the check which encounter you get is based on the lower-left tile. This can be exploited in Route 20, where the Cinnabar Island coast line has Water in it's lower-right tile, which can trigger an encounter, but coast on the lower-left tile, triggering grass encounters instead of water ones. Combining these, you can talk to the old man and then get an encounter at the Cinnabar coast for a wild encounter based on your character name.

Rhydon glitch

The Rhydon glitch is triggered when catching Missingno., and causes it to turn into Rhydon, since Rhydon is the first Pokémon by index number. While the transformation is always performed, the Pokédex entry for Rhydon is written only when Rhydon is kept in the party and not sent to a PC box.

Snorlax Skip glitch

If a fight is started as a result of a map object interaction, the game checks whether it was a trainer fight. If it wasn't, the game assumes it to be a special encounter (like the legendary birds, Mewtwo or Snorlax) and tries to remove the object from the map. Trainer-Fly encounters are this type of special encounter, but the object is not found in the list of missable objects, which causes the game to remove the object behind the last element in the current map's missable object list. This entry is usually residue from some previous map which had more missable objects than the current one. This can be exploited to remove Snorlax: By entering Route 12, Snorlax is written to the missable item list (1st entry), and as long as all routes visited afterwards have no missable objects, it will stay there and be finally removed when the Trainer-Fly encounter is triggered.

Text pointer manipulation

This is another exploit made possible by the Item Underflow glitch, which is newly introduced in this submission. At $D36C, the game stores the pointer to a list of texts that will be shown for each object on the current map. When manipulating this pointer, texts can be swapped around, combining objects with different texts. Objects have values attached to them, the meaning of which depend on the type of object: Trainers have their trainer type and set, items have their item ID and Pokémon have their species. While items are different, Trainers and legendary encounters are the same thing from the game's perspective, it distinguishes between them only by the provided ID (if it is at least 0xC8, it's a trainer). Now when an item is manipulated to have the text of a trainer, you can "fight" the item, which will result in a legendary encounter or trainer battle depending on the item ID. This method of triggering encounters is highly limited by the fact that you need an item with the right ID in order to convert it into the Pokémon you want, which works out only in a few cases, but is fast to set up compared to many other glitches that allow catching Pokémon.

Trainer-Fly glitch

The Trainer-Fly glitch is one of the most important glitches in the game, as it is the precursor for many other exploits. When an object appears on screen, its orientation is always south for one frame before adopting its real orientation. This allows us to step into the line of sight of an off-screen trainer and open the start menu before the orientation is corrected and they see us. When now escaping , e.g. by Fly or Dig, the fight is still loaded, but not executed. This has multiple consequences:
  • You are unable to open the start menu or interact with objects, since the game thinks you are in the process of being engaged by a trainer.
  • All trainers in the map you performed the Trainer-Fly on will ignore you, for the same reason.
  • The pending fight is stored for this map.
After fighting another trainer in a different map, the stored fight will trigger upon entering the Trainer-Fly map again. Since the data for the fight has long been overwritten, though, a different encounter is triggered, based on the memory contents at that time. These can be modified in different ways, most commonly by manipulating the special stat of the last fought Pokémon to change the species of the encounter.

Trainer ID

The Trainer ID is a random two byte value assigned to your character at the beginning of the game. All Pokémon you catch will inherit this value to mark them as yours.

Walking

Walking mechanics are weird in Gen I. Walking one step in any directions costs 16 frames, and the first turn you take costs additional 2 frames. All consecutive turns (as long as you don't stop walking) cost no extra frames. Additionally, there is a considerable amount of lag when walking, usually 1 frame per step. Lag frames can occur erratically on some maps, so specific walking patterns can help reduce lag and therefore save time.

Wrong warps

The destination for all warps on any map is stored in the part of RAM which is accessible using the Item Underflow glitch. All maps have many entry points defined for them, which denote the places where you can enter the map. Every warp description contains the map and the entry point it is warping to. Additionally, there is the concept of saved maps: When entering a house or cave from the overworld, the overworld map is stored. All warps that lead to the overworld use the map 0xFF to indicate that the stored map should be used instead, which allows the game to re-use interior maps at different overworld locations. By manipulating the saved map, a wrong warp can be performed. The entrance on the map can be manipulated, too, but this costs extra time, so for the most warps it is faster to choose an interior that already has the correct entrance set up, so you just need to change the map ID.

Known mistakes

As expected with such a long run, mistakes are unavoidable. The ones listed below I noticed while re-watching the run. I decided to not do it over for them, as the time lost is relatively small and any routing improvement will likely yield a far larger time save than fixing these execution mistakes could, so it's not worth to do it all over just to correct them. They do bother me nonetheless, and there are probably a few more I haven't even noticed yet.
  • I discovered that there was a faster menuing technique half-way through the run, that can save some frames when selecting certain list items. It is used in the second half of the run, but not the first. (~0.5s lost)
  • Catching Weedle before Caterpie on Route 25 allows for better D-Sum manipulation (~1.5s lost)
  • Missed an opportunity to bike in Vermilion before catching Sandshrew (~3s lost)
  • Missed an opportunity to bike on Cinnabar Island before catching Bulbasaur (~0.6s lost)
  • Missed an opportunity to bike in Lavender Town before catching Machamp (~1.5s lost)

Noxxa: Judging.
Noxxa: Great improvement. Accepting to Moons as an improvement to the published movie.
Spikestuff: Publishing... but that second part, that I cannot do. Because it cannot see SGB games.


Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4038
thatguy wrote:
The current 120-star SM64 run takes 1:20 as well. Can't be a coincidence.
I believe both are just crazy coincidences. The SM64 run is extremely well-optimized and MrWint says this run's achieved in-game time wasn't planned either.
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1355
Location: Canada
Once you free your mind about a concept of badges and Pokemon needing to be correct, you can do whatever you want. Strong yes vote. I don't see how to get a minute of improvements from this run, MrWint mentioned a few seconds but that's about it. However, the Pidgey/Jynx encounter at 1:50:43 (in the temp encode) does look a bit slower than it could be, is there a reason it wasn't possible to get an earlier encounter and/or a Rattata there?
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
Chamale wrote:
However, the Pidgey/Jynx encounter at 1:50:43 (in the temp encode) does look a bit slower than it could be, is there a reason it wasn't possible to get an earlier encounter and/or a Rattata there?
I'm not 100% sure why it's not possible for Jynx to be caught in the first patches of grass, and it's very hard to debug because of the unpredictable nature of the 20 bytes that are chosen for the invalid move's name. It just turns out to always end with a EOS properly. It's something I didn't mention in the submission text, but it in very rare circumstances it can happen that you just can't get the Cooltrainer to trigger because of the state of your RAM, and pointing out the exact cause of it is almost impossible. It happened twice in this run, with Jynx and with Gengar (I walk an extra step in Saffron City because of this). All I know is that it's not random, for specific combinations of Cooltrainer locations and encounter locations (possibly also dependent on other factors), it just won't work. As to Pidgey/Rattata, I took whatever is faster overall for the current situation, i.e. what is faster after their cry has played.
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2227
Location: Georgia, USA
This is a whole new class of broken. Is it the JACK glitches that cause a whole wall of sprites on the left side to appear? Because that was hilarious every time it happened, and I recommend that we use one of those instances for the movie screenshot.
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
mklip2001 wrote:
Is it the JACK glitches that cause a whole wall of sprites on the left side to appear?
Yes. As I mentioned in the submission text, the game doesn't reload the map sprites after using JACK, the sprites on the left is the residue of the party menu, where all current party Pokémon sprites are arranged vertically. Only the player sprite gets loaded at all, which in most cases replaces one of the visible sprites in the list.
Editor
Joined: 11/3/2013
Posts: 506
Well, I finally finished watching it, and boy did it feel fast. The ability to set the text speed to faster than the standard "fast" option really does make a difference in both speed and watchability. It does still have the "perform the same glitch over and over again" thing that the previous run in this category had, although IMO that's not a bad thing, because it makes me feel like by the end of the run I can sort of understand what's going on without reading the submission notes. And of course we had a stupendous number of rerecords. It wouldn't be a MrWint TAS without that.
Editor, Experienced player (885)
Joined: 1/23/2008
Posts: 529
Location: Finland
I found this run pretty entertaining thanks to the glitches and the amazing luck the main character seems to have. Nice work breaking this game. Yes vote.
Joined: 4/24/2012
Posts: 129
Location: Atlanta, GA
If only it fit on two lines, the screenshot I would've suggested the trainer pulled up on the item that ended up being a wild Golem in the Safari Zone: "Who are you? There shouldn't be (anyone here.)" Great stuff! I was entertained the whole way through. Strong yes from me.
Post subject: confirmation that yes, it does get all 151 of those things
Noxxa
They/Them
Moderator, Expert player (4128)
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
Since I figured some people would find it interesting (including myself), here's a table with every Pokémon (in Pokédex order) and when it's caught/evolved/obtained in this run, and how. Timestamps are based off of the temp YouTube encode. The only Pokémon obtained more than once is Eevee, with one caught by Cooltrainer glitch and later one obtained in Celadon City. Only the former instance is listed, as that's where it counts for the Pokédex.
Index  Name        Time      Method
#001   Bulbasaur   1:19:05   Caught in Route 20 by Old Man glitch (L151)
#002   Ivysaur     1:23:40   Evolved from Bulbasaur (L152)
#003   Venusaur    1:23:57   Evolved from Ivysaur (L153)
#004   Charmander  0:01:31   Obtained in Pallet Town (L5)
#005   Charmeleon  0:16:06   Evolved from Charmander (L16)
#006   Charizard   0:46:54   Evolved from Charmeleon (L36)
#007   Squirtle    1:19:25   Caught in Route 20 by Old Man glitch (L144)
#008   Wartortle   1:23:06   Evolved from Squirtle (L145)
#009   Blastoise   1:23:23   Evolved from Wartortle (L146)
#010   Caterpie    0:24:50   Caught in Route 25 (L8)
#011   Metapod     0:47:14   Evolved from Caterpie (L9)
#012   Butterfree  0:47:31   Evolved from Metapod (L10)
#013   Weedle      0:25:15   Caught in Route 25 (L8)
#014   Kakuna      0:47:47   Evolved from Weedle (L9)
#015   Beedrill    0:48:04   Evolved from Kakuna (L10)
#016   Pidgey      1:14:01   Caught in Route 21 (L23)
#017   Pidgeotto   1:13:03   Caught in Route 21 (L32)
#018   Pidgeot     1:16:13   Evolved from Pidgeotto (L36)
#019   Rattata     1:13:42   Caught in Route 21 (L21)
#020   Raticate    1:14:21   Caught in Route 21 (L30)
#021   Spearow     0:11:54   Caught in Route 3 (L5)
#022   Fearow      0:50:18   Caught in Route 23 (L43)
#023   Ekans       0:58:20   Caught in Route 11 (L14)
#024   Arbok       1:06:07   Caught in Cerulean Cave (L57)
#025   Pikachu     1:10:48   Caught in Power Plant (L20)
#026   Raichu      1:04:59   Caught in Cerulean Cave (L53)
#027   Sandshrew   1:08:53   Caught in Route 6 by Trainer-Fly glitch (L7)
#028   Sandslash   1:15:30   Evolved from Sandshrew (L22)
#029   Nidoran(F)  1:47:11   Caught in Safari Zone (L24)
#030   Nidorina    1:52:50   Evolved from Nidoran(F) (L25)
#031   Nidoqueen   1:53:07   Evolved from Nidorina by Moon Stone (L25)
#032   Nidoran(M)  1:48:40   Caught in Safari Zone (L22)
#033   Nidorino    1:52:34   Evolved from Nidoran(M) (L23)
#034   Nidoking    1:53:23   Evolved from Nidorino by Moon Stone (L23)
#035   Clefairy    0:16:37   Caught in Mt. Moon (L10)
#036   Clefable    0:17:30   Evolved from Clefairy by Moon Stone (L10)
#037   Vulpix      0:59:11   Caught in Route 11 by Cooltrainer glitch (L16)
#038   Ninetales   1:03:26   Evolved from Vulpix by Fire Stone (L16)
#039   Jigglypuff  0:11:29   Caught in Route 3 (L5)
#040   Wigglytuff  1:05:20   Caught in Cerulean Cave (L54)
#041   Zubat       0:44:14   Caught in Victory Road (L22)
#042   Golbat      0:46:03   Caught in Victory Road (L40)
#043   Oddish      1:40:50   Caught in Route 7 (L22)
#044   Gloom       1:44:43   Evolved from Oddish (L23)
#045   Vileplume   1:45:33   Evolved from Gloom by Leaf Stone (L23)
#046   Paras       1:47:45   Caught in Safari Zone (L22)
#047   Parasect    1:46:54   Caught in Safari Zone (L25)
#048   Venonat     1:49:15   Caught in Safari Zone (L22)
#049   Venomoth    0:44:35   Caught in Victory Road (L40)
#050   Diglett     1:29:19   Caught in Diglett's Cave (L17)
#051   Dugtrio     1:28:06   Caught in Diglett's Cave (L29)
#052   Meowth      1:27:45   Caught in Diglett's Cave by Cooltrainer glitch (L62)
#053   Persian     1:29:45   Evolved from Meowth (L63)
#054   Psyduck     1:32:10   Caught in Seafoam Islands (L28)
#055   Golduck     1:31:51   Caught in Seafoam Islands (L38)
#056   Mankey      1:41:11   Caught in Route 7 (L20)
#057   Primeape    1:44:26   Evolved from Mankey (L28)
#058   Growlithe   0:51:54   Caught in Pokémon Mansion (L34)
#059   Arcanine    1:03:09   Evolved from Growlithe by Fire Stone (L34)
#060   Poliwag     1:12:17   Caught in Pallet Town by Super Rod (L15)
#061   Poliwhirl   1:25:42   Caught in Celadon City by Super Rod (L23)
#062   Poliwrath   1:31:21   Evolved from Poliwhirl by Water Stone (L23)
#063   Abra        0:23:46   Caught in Route 24 (L10)
#064   Kadabra     1:04:39   Caught in Cerulean Cave (L49)
#065   Alakazam    1:19:49   Caught in Route 20 by Old Man glitch (L130)
#066   Machop      0:43:13   Caught in Victory Road (L24)
#067   Machoke     0:43:35   Caught in Victory Road (L42)
#068   Machamp     1:20:26   Caught in Route 12 by Trainer-Fly glitch (L7)
#069   Bellsprout  1:40:32   Caught in Route 7 by Cooltrainer glitch (L22)
#070   Weepinbell  1:44:59   Evolved from Bellsprout (L23)
#071   Victreebel  1:45:16   Evolved from Weepinbell by Leaf Stone (L23)
#072   Tentacool   1:12:43   Caught in Route 21 by Surfing (L30)
#073   Tentacruel  1:15:47   Evolved from Tentacool (L31)
#074   Geodude     0:43:55   Caught in Victory Road (L26)
#075   Graveler    0:45:39   Caught in Victory Road (L43)
#076   Golem       1:49:41   Caught in Safari Zone by Text Pointer Manipulation from Nugget (L0)
#077   Ponyta      0:52:17   Caught in Pokémon Mansion (L34)
#078   Rapidash    1:02:52   Evolved from Ponyta (L40)
#079   Slowpoke    1:34:14   Caught in Seafoam Islands (L31)
#080   Slowbro     1:34:42   Caught in Seafoam Islands (L39)
#081   Magnemite   1:10:28   Caught in Power Plant (L21)
#082   Magneton    1:03:59   Caught in Cerulean Cave (L46)
#083   Farfetch'd  0:35:28   Traded for Spearow in Vermilion City (L5)
#084   Doduo       1:48:01   Caught in Safari Zone (L26)
#085   Dodrio      1:04:19   Caught in Cerulean Cave (L49)
#086   Seel        1:32:31   Caught in Seafoam Islands (L30)
#087   Dewgong     1:32:51   Caught in Seafoam Islands (L38)
#088   Grimer      0:52:37   Caught in Pokémon Mansion (L30)
#089   Muk         0:53:24   Caught in Pokémon Mansion (L39)
#090   Shellder    1:33:33   Caught in Seafoam Islands (L29)
#091   Cloyster    1:39:13   Evolved from Shellder by Water Stone (L29)
#092   Gastly      1:00:12   Caught in Pokémon Tower (L21)
#093   Haunter     1:00:47   Caught in Pokémon Tower (L28)
#094   Gengar      1:38:15   Caught in Diglett's Cave by Cooltrainer glitch (L44)
#095   Onix        0:44:57   Caught in Victory Road (L42)
#096   Drowzee     0:57:59   Caught in Route 11 (L11)
#097   Hypno       1:05:43   Caught in Cerulean Cave (L46)
#098   Krabby      1:20:54   Caught in Route 12 by Super Rod (L15)
#099   Kingler     1:07:25   Caught in Cerulean Cave by Super Rod (L23)
#100   Voltorb     1:09:45   Caught in Power Plant (L23)
#101   Electrode   1:08:22   Caught in Cerulean Cave (L55)
#102   Exeggcute   1:47:27   Caught in Safari Zone (L25)
#103   Exeggutor   1:53:44   Evolved from Exeggcute by Leaf Stone (L25)
#104   Cubone      1:01:07   Caught in Pokémon Tower (L24)
#105   Marowak     0:45:18   Caught in Victory Road (L40)
#106   Hitmonlee   1:51:38   Caught in Route 2 by Cooltrainer glitch (L58)
#107   Hitmonchan  0:58:49   Caught in Route 11 by Cooltrainer glitch (L82)
#108   Lickitung   1:28:59   Caught in Diglett's Cave by Cooltrainer glitch (L17)
#109   Koffing     0:53:00   Caught in Pokémon Mansion (L30)
#110   Weezing     0:53:45   Caught in Pokémon Mansion (L37)
#111   Rhyhorn     1:48:23   Caught in Safari Zone (L26)
#112   Rhydon      0:29:33   Caught as Missingno. in Route 24 by Trainer-Fly glitch, Rhydon glitch (L80)
#113   Chansey     1:06:33   Caught in Cerulean Cave (L64)
#114   Tangela     1:13:23   Caught in Route 21 (L30)
#115   Kangaskhan  1:46:36   Caught in Safari Zone (L25)
#116   Horsea      1:35:01   Caught in Seafoam Islands (L31)
#117   Seadra      1:33:52   Caught in Seafoam Islands (L39)
#118   Goldeen     1:21:20   Caught in Route 12 by Super Rod (L15)
#119   Seaking     1:06:58   Caught in Cerulean Cave by Super Rod (L23)
#120   Staryu      1:33:13   Caught in Seafoam Islands (L30)
#121   Starmie     1:38:57   Evolved from Staryu by Water Stone (L30)
#122   Mr. Mime    1:37:18   Caught in Route 7 by Cooltrainer glitch (L69)
#123   Scyther     1:46:20   Caught in Safari Zone (L28)
#124   Jynx        1:50:57   Caught in Route 2 by Cooltrainer glitch (L74)
#125   Electabuzz  1:10:07   Caught in Power Plant (L33)
#126   Magmar      1:36:23   Caught in Route 7 by Cooltrainer glitch (L22)
#127   Pinsir      0:54:20   Caught in Pokémon Mansion by Text Pointer Manipulation from Escape Rope (L0)
#128   Tauros      1:48:56   Caught in Safari Zone (L28)
#129   Magikarp    1:21:46   Caught in Route 12 by Super Rod (L15)
#130   Gyarados    1:22:48   Evolved from Magikarp (L20)
#131   Lapras      0:59:37   Obtained in Silph Co. (L15)
#132   Ditto       0:49:56   Caught in Route 23 (L43)
#133   Eevee       1:42:11   Caught in Diglett's Cave by Cooltrainer glitch (L57)
#134   Vaporeon    0:57:34   Caught in Diglett's Cave by Cooltrainer glitch (L74)
#135   Jolteon     1:45:49   Evolved from Eevee by Thunder Stone (L57)
#136   Flareon     1:54:01   Evolved from Eevee by Fire Stone (L25)
#137   Porygon     0:55:35   Caught in Diglett's Cave by Cooltrainer glitch (L20)
#138   Omanyte     1:18:06   Obtained in Cinnabar Island from Helix Fossil (L30)
#139   Omastar     1:24:42   Evolved from Omanyte (L40)
#140   Kabuto      1:17:41   Obtained in Cinnabar Island from Dome Fossil (L30)
#141   Kabutops    1:31:05   Evolved from Kabuto (L40)
#142   Aerodactyl  1:18:32   Obtained in Cinnabar Island from Old Amber (L30)
#143   Snorlax     1:43:41   Caught in Route 16 (L30)
#144   Articuno    1:35:21   Caught in Seafoam Islands (L50)
#145   Zapdos      1:11:08   Caught in Power Plant (L50)
#146   Moltres     0:46:24   Caught in Victory Road (L50)
#147   Dratini     1:27:01   Caught in Diglett's Cave by Cooltrainer glitch (L80)
#148   Dragonair   1:30:01   Evolved from Dratini (L81)
#149   Dragonite   1:30:19   Evolved from Dragonair (L82)
#150   Mewtwo      1:08:01   Caught in Cerulean Cave (L70)
#151   Mew         0:51:08   Caught in Route 6 by Trainer-Fly glitch (L7)
And here's the same list sorted by time:
Count Index  Name        Time      Method
1     #004   Charmander  0:01:31   Obtained in Pallet Town (L5)
2     #039   Jigglypuff  0:11:29   Caught in Route 3 (L5)
3     #021   Spearow     0:11:54   Caught in Route 3 (L5)
4     #005   Charmeleon  0:16:06   Evolved from Charmander (L16)
5     #035   Clefairy    0:16:37   Caught in Mt. Moon (L10)
6     #036   Clefable    0:17:30   Evolved from Clefairy by Moon Stone (L10)
7     #063   Abra        0:23:46   Caught in Route 24 (L10)
8     #010   Caterpie    0:24:50   Caught in Route 25 (L8)
9     #013   Weedle      0:25:15   Caught in Route 25 (L8)
10    #112   Rhydon      0:29:33   Caught as Missingno. in Route 24 by Trainer-Fly glitch, Rhydon glitch (L80)
11    #083   Farfetch'd  0:35:28   Traded for Spearow in Vermilion City (L5)
12    #066   Machop      0:43:13   Caught in Victory Road (L24)
13    #067   Machoke     0:43:35   Caught in Victory Road (L42)
14    #074   Geodude     0:43:55   Caught in Victory Road (L26)
15    #041   Zubat       0:44:14   Caught in Victory Road (L22)
16    #049   Venomoth    0:44:35   Caught in Victory Road (L40)
17    #095   Onix        0:44:57   Caught in Victory Road (L42)
18    #105   Marowak     0:45:18   Caught in Victory Road (L40)
19    #075   Graveler    0:45:39   Caught in Victory Road (L43)
20    #042   Golbat      0:46:03   Caught in Victory Road (L40)
21    #146   Moltres     0:46:24   Caught in Victory Road (L50)
22    #006   Charizard   0:46:54   Evolved from Charmeleon (L36)
23    #011   Metapod     0:47:14   Evolved from Caterpie (L9)
24    #012   Butterfree  0:47:31   Evolved from Metapod (L10)
25    #014   Kakuna      0:47:47   Evolved from Weedle (L9)
26    #015   Beedrill    0:48:04   Evolved from Kakuna (L10)
27    #132   Ditto       0:49:56   Caught in Route 23 (L43)
28    #022   Fearow      0:50:18   Caught in Route 23 (L43)
29    #151   Mew         0:51:08   Caught in Route 6 by Trainer-Fly glitch (L7)
30    #058   Growlithe   0:51:54   Caught in Pokémon Mansion (L34)
31    #077   Ponyta      0:52:17   Caught in Pokémon Mansion (L34)
32    #088   Grimer      0:52:37   Caught in Pokémon Mansion (L30)
33    #109   Koffing     0:53:00   Caught in Pokémon Mansion (L30)
34    #089   Muk         0:53:24   Caught in Pokémon Mansion (L39)
35    #110   Weezing     0:53:45   Caught in Pokémon Mansion (L37)
36    #127   Pinsir      0:54:20   Caught in Pokémon Mansion by Text Pointer Manipulation from Escape Rope (L0)
37    #137   Porygon     0:55:35   Caught in Diglett's Cave by Cooltrainer glitch (L20)
38    #134   Vaporeon    0:57:34   Caught in Diglett's Cave by Cooltrainer glitch (L74)
39    #096   Drowzee     0:57:59   Caught in Route 11 (L11)
40    #023   Ekans       0:58:20   Caught in Route 11 (L14)
41    #107   Hitmonchan  0:58:49   Caught in Route 11 by Cooltrainer glitch (L82)
42    #037   Vulpix      0:59:11   Caught in Route 11 by Cooltrainer glitch (L16)
43    #131   Lapras      0:59:37   Obtained in Silph Co. (L15)
44    #092   Gastly      1:00:12   Caught in Pokémon Tower (L21)
45    #093   Haunter     1:00:47   Caught in Pokémon Tower (L28)
46    #104   Cubone      1:01:07   Caught in Pokémon Tower (L24)
47    #078   Rapidash    1:02:52   Evolved from Ponyta (L40)
48    #059   Arcanine    1:03:09   Evolved from Growlithe by Fire Stone (L34)
49    #038   Ninetales   1:03:26   Evolved from Vulpix by Fire Stone (L16)
50    #082   Magneton    1:03:59   Caught in Cerulean Cave (L46)
51    #085   Dodrio      1:04:19   Caught in Cerulean Cave (L49)
52    #064   Kadabra     1:04:39   Caught in Cerulean Cave (L49)
53    #026   Raichu      1:04:59   Caught in Cerulean Cave (L53)
54    #040   Wigglytuff  1:05:20   Caught in Cerulean Cave (L54)
55    #097   Hypno       1:05:43   Caught in Cerulean Cave (L46)
56    #024   Arbok       1:06:07   Caught in Cerulean Cave (L57)
57    #113   Chansey     1:06:33   Caught in Cerulean Cave (L64)
58    #119   Seaking     1:06:58   Caught in Cerulean Cave by Super Rod (L23)
59    #099   Kingler     1:07:25   Caught in Cerulean Cave by Super Rod (L23)
60    #150   Mewtwo      1:08:01   Caught in Cerulean Cave (L70)
61    #101   Electrode   1:08:22   Caught in Cerulean Cave (L55)
62    #027   Sandshrew   1:08:53   Caught in Route 6 by Trainer-Fly glitch (L7)
63    #100   Voltorb     1:09:45   Caught in Power Plant (L23)
64    #125   Electabuzz  1:10:07   Caught in Power Plant (L33)
65    #081   Magnemite   1:10:28   Caught in Power Plant (L21)
66    #025   Pikachu     1:10:48   Caught in Power Plant (L20)
67    #145   Zapdos      1:11:08   Caught in Power Plant (L50)
68    #060   Poliwag     1:12:17   Caught in Pallet Town by Super Rod (L15)
69    #072   Tentacool   1:12:43   Caught in Route 21 by Surfing (L30)
70    #017   Pidgeotto   1:13:03   Caught in Route 21 (L32)
71    #114   Tangela     1:13:23   Caught in Route 21 (L30)
72    #019   Rattata     1:13:42   Caught in Route 21 (L21)
73    #016   Pidgey      1:14:01   Caught in Route 21 (L23)
74    #020   Raticate    1:14:21   Caught in Route 21 (L30)
75    #028   Sandslash   1:15:30   Evolved from Sandshrew (L22)
76    #073   Tentacruel  1:15:47   Evolved from Tentacool (L31)
77    #018   Pidgeot     1:16:13   Evolved from Pidgeotto (L36)
78    #140   Kabuto      1:17:41   Obtained in Cinnabar Island from Dome Fossil (L30)
79    #138   Omanyte     1:18:06   Obtained in Cinnabar Island from Helix Fossil (L30)
80    #142   Aerodactyl  1:18:32   Obtained in Cinnabar Island from Old Amber (L30)
81    #001   Bulbasaur   1:19:05   Caught in Route 20 by Old Man glitch (L151)
82    #007   Squirtle    1:19:25   Caught in Route 20 by Old Man glitch (L144)
83    #065   Alakazam    1:19:49   Caught in Route 20 by Old Man glitch (L130)
84    #068   Machamp     1:20:26   Caught in Route 12 by Trainer-Fly glitch (L7)
85    #098   Krabby      1:20:54   Caught in Route 12 by Super Rod (L15)
86    #118   Goldeen     1:21:20   Caught in Route 12 by Super Rod (L15)
87    #129   Magikarp    1:21:46   Caught in Route 12 by Super Rod (L15)
88    #130   Gyarados    1:22:48   Evolved from Magikarp (L20)
89    #008   Wartortle   1:23:06   Evolved from Squirtle (L145)
90    #009   Blastoise   1:23:23   Evolved from Wartortle (L146)
91    #002   Ivysaur     1:23:40   Evolved from Bulbasaur (L152)
92    #003   Venusaur    1:23:57   Evolved from Ivysaur (L153)
93    #139   Omastar     1:24:42   Evolved from Omanyte (L40)
94    #061   Poliwhirl   1:25:42   Caught in Celadon City by Super Rod (L23)
95    #147   Dratini     1:27:01   Caught in Diglett's Cave by Cooltrainer glitch (L80)
96    #052   Meowth      1:27:45   Caught in Diglett's Cave by Cooltrainer glitch (L62)
97    #051   Dugtrio     1:28:06   Caught in Diglett's Cave (L29)
98    #108   Lickitung   1:28:59   Caught in Diglett's Cave by Cooltrainer glitch (L17)
99    #050   Diglett     1:29:19   Caught in Diglett's Cave (L17)
100   #053   Persian     1:29:45   Evolved from Meowth (L63)
101   #148   Dragonair   1:30:01   Evolved from Dratini (L81)
102   #149   Dragonite   1:30:19   Evolved from Dragonair (L82)
103   #141   Kabutops    1:31:05   Evolved from Kabuto (L40)
104   #062   Poliwrath   1:31:21   Evolved from Poliwhirl by Water Stone (L23)
105   #055   Golduck     1:31:51   Caught in Seafoam Islands (L38)
106   #054   Psyduck     1:32:10   Caught in Seafoam Islands (L28)
107   #086   Seel        1:32:31   Caught in Seafoam Islands (L30)
108   #087   Dewgong     1:32:51   Caught in Seafoam Islands (L38)
109   #120   Staryu      1:33:13   Caught in Seafoam Islands (L30)
110   #090   Shellder    1:33:33   Caught in Seafoam Islands (L29)
111   #117   Seadra      1:33:52   Caught in Seafoam Islands (L39)
112   #079   Slowpoke    1:34:14   Caught in Seafoam Islands (L31)
113   #080   Slowbro     1:34:42   Caught in Seafoam Islands (L39)
114   #116   Horsea      1:35:01   Caught in Seafoam Islands (L31)
115   #144   Articuno    1:35:21   Caught in Seafoam Islands (L50)
116   #126   Magmar      1:36:23   Caught in Route 7 by Cooltrainer glitch (L22)
117   #122   Mr. Mime    1:37:18   Caught in Route 7 by Cooltrainer glitch (L69)
118   #094   Gengar      1:38:15   Caught in Diglett's Cave by Cooltrainer glitch (L44)
119   #121   Starmie     1:38:57   Evolved from Staryu by Water Stone (L30)
120   #091   Cloyster    1:39:13   Evolved from Shellder by Water Stone (L29)
121   #069   Bellsprout  1:40:32   Caught in Route 7 by Cooltrainer glitch (L22)
122   #043   Oddish      1:40:50   Caught in Route 7 (L22)
123   #056   Mankey      1:41:11   Caught in Route 7 (L20)
124   #133   Eevee       1:42:11   Caught in Diglett's Cave by Cooltrainer glitch (L57)
125   #143   Snorlax     1:43:41   Caught in Route 16 (L30)
126   #057   Primeape    1:44:26   Evolved from Mankey (L28)
127   #044   Gloom       1:44:43   Evolved from Oddish (L23)
128   #070   Weepinbell  1:44:59   Evolved from Bellsprout (L23)
129   #071   Victreebel  1:45:16   Evolved from Weepinbell by Leaf Stone (L23)
130   #045   Vileplume   1:45:33   Evolved from Gloom by Leaf Stone (L23)
131   #135   Jolteon     1:45:49   Evolved from Eevee by Thunder Stone (L57)
132   #123   Scyther     1:46:20   Caught in Safari Zone (L28)
133   #115   Kangaskhan  1:46:36   Caught in Safari Zone (L25)
134   #047   Parasect    1:46:54   Caught in Safari Zone (L25)
135   #029   Nidoran(F)  1:47:11   Caught in Safari Zone (L24)
136   #102   Exeggcute   1:47:27   Caught in Safari Zone (L25)
137   #046   Paras       1:47:45   Caught in Safari Zone (L22)
138   #084   Doduo       1:48:01   Caught in Safari Zone (L26)
139   #111   Rhyhorn     1:48:23   Caught in Safari Zone (L26)
140   #032   Nidoran(M)  1:48:40   Caught in Safari Zone (L22)
141   #128   Tauros      1:48:56   Caught in Safari Zone (L28)
142   #048   Venonat     1:49:15   Caught in Safari Zone (L22)
143   #076   Golem       1:49:41   Caught in Safari Zone by Text Pointer Manipulation from Nugget (L0)
144   #124   Jynx        1:50:57   Caught in Route 2 by Cooltrainer glitch (L74)
145   #106   Hitmonlee   1:51:38   Caught in Route 2 by Cooltrainer glitch (L58)
146   #033   Nidorino    1:52:34   Evolved from Nidoran(M) (L23)
147   #030   Nidorina    1:52:50   Evolved from Nidoran(F) (L25)
148   #031   Nidoqueen   1:53:07   Evolved from Nidorina by Moon Stone (L25)
149   #034   Nidoking    1:53:23   Evolved from Nidorino by Moon Stone (L23)
150   #103   Exeggutor   1:53:44   Evolved from Exeggcute by Leaf Stone (L25)
151   #136   Flareon     1:54:01   Evolved from Eevee by Fire Stone (L25)
http://www.youtube.com/Noxxa <dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects. <Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits <adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15629
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [2653] GB Pokémon: Red Version "Gotta Catch 'Em All!" by MrWint in 1:54:56.62
Joined: 12/29/2007
Posts: 489
May I nominate a different publication screenshot? The current one doesn't showcase anything unique to the run; looking at it alone shows a glitch known since the early days of Red/Blue. I'd suggest displaying one of the glitches that has never been published here before; that would include the Cooltrainer name display glitch, the Glitch City (wrong warp) glitch if I recall correctly, JACK, map distortion, and text pointer manipulation showing the player "battling an item". Of these, JACK would perhaps be the most spectacular to see in a single screenshot; text pointer manipulation would come after that.
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
I chose the one with MissingNo for a 3 fold reason: 1. Everyone should at least know that MissingNo is a Pokemon which breaks the game. 2. MissingNo hasn't been used as a screenshot and using the running away one made it seem like they don't want this. 3. Because it was the most simplistic one to choose due to a lot of things going on within this TAS. If you can timestamp your example I will replace it. Why? Because of reason 3. Because past Pokemon TASes has pretty much shown everything now, so it's a bit harder.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 12/29/2007
Posts: 489
^Around 48:25 on the YouTube video.
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
Correct? If so, I like the third one.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 12/29/2007
Posts: 489
^The third one isn't exactly unique to this run though, and it barely shows any glitchiness. Let me see if I can come up with a better screenshot example of JACK that doesn't look so boring. EDIT: This isn't JACK, but how does 56:15 (while the menu is not opened) look?
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
Zowayix wrote:
^The third one isn't exactly unique to this run though.
Actually it is... I have not seen a Pokemon TAS that has done this. Also it's possible to have multiple screenshots.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 12/29/2007
Posts: 489
(reposting because it was lost on the previous page) How does 56:15 (while the menu is not opened) look?
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
everything is negative.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Skilled player (1743)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
jlun2 wrote:
1. Regarding CPU cycles, isn't that what Dolphin now does? How difficult would it be to implement something like that in BizHawk as well?
Uh....now that this is published, has this been addressed yet? :o Edit: Also why is this a new branch as of posting?
Noxxa
They/Them
Moderator, Expert player (4128)
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
Personally, I'd like a screenshot of the Cooltrainer glitch in action, and some of the unusual catches made with it. Here are some examples (I like the Eevee one most): There's just so much not right in each of these images.
http://www.youtube.com/Noxxa <dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects. <Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits <adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
jlun2 wrote:
jlun2 wrote:
1. Regarding CPU cycles, isn't that what Dolphin now does? How difficult would it be to implement something like that in BizHawk as well?
Uh....now that this is published, has this been addressed yet? :o
I created a thread to discuss this: Thread #15618: New libgambatte frame timing
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4038
I also think a screenshot of the Cooltrainer glitch would be a good idea. Of the three Mothrayas posted, I like the first (Eevee) one most.
jlun2 wrote:
Edit: Also why is this a new branch as of posting?
Looks like someone fixed that for you. Thanks for reporting it!
Post subject: Re: confirmation that yes, it does get all 151 of those things
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1355
Location: Canada
Mothrayas wrote:
Since I figured some people would find it interesting (including myself), here's a table with every Pokémon (in Pokédex order) and when it's caught/evolved/obtained in this run, and how. Timestamps are based off of the temp YouTube encode.
Very nice. Now here's the same data, in graph form: As you can see, there's not much catching for the first 43 minutes, but after wrong warping into Victory Road, MrWint proceeds to acquire Pokémon at a rate of 2 per minute for the remainder of the run.
Fog
Emulator Coder, Experienced player (642)
Joined: 4/5/2014
Posts: 459
jlun2 wrote:
jlun2 wrote:
1. Regarding CPU cycles, isn't that what Dolphin now does? How difficult would it be to implement something like that in BizHawk as well?
Uh....now that this is published, has this been addressed yet? :o Edit: Also why is this a new branch as of posting?
Dolphin now adds the total tick count to the movie file (this was necessary for wii runs that used the wiimote), and the parser divides that tick count by the CPU MHz to get the time in seconds.
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
Nice graph :) I didn't do the math before, but since catching or evolving costs around 17 seconds each and stuff like wrong warps cost around 12 seconds, there's definitely a theoretical minimum in terms of total time to catch all 151, especially since all of that is not including travel time, and not considering the extra amount of time spent for setting up glitches for otherwise unobtainable Pokémon. I assume the most time can be saved by managing to break the game faster than in 43min, the actual catching simply can't be sped up indefinitely.