Jump to content

User:Bbbbbbbbba/Pokémon Blue "Catch 'em All" speedrun route: Difference between revisions

m
→‎Vermilion City: Grammar fix.
>Bbbbbbbbba
(PC underflow)
m (→‎Vermilion City: Grammar fix.)
 
(12 intermediate revisions by 2 users not shown)
Line 1:
{{incomplete|A large portion of the route}}
 
The current [[bp:Pokémon Red and Blue Versions|Pokémon Blue]] "Catch 'em All" speedrun route obtains all 151 valid Pokémon using a variety of intended methods and glitches. The glitch used the most to obtain Pokémon is the [[LOL glitch]]. The run also performs the [[dry underflow glitch]] early on both the PC and the item pack, and uses the [[expanded item pack]] extensively to obtain Master Balls, Rare Candies and glitch items, warp around on the map, and do other memory corruptions.
 
The run also uses many [[luck manipulation]]s. Most of them are to encounter specific Pokémon in their intended habitat, either by [[Luck manipulation (Generation I)#DSum manipulation|DSum manipulation]] or by [[Luck manipulation (Generation I)#Hard-reset RNG manipulations|hard-reset manipulations]] (including a Pidgey at the beginning for [[Brock Through Walls]]). Two other manipulations are used near the beginning, to get a desired Trainer ID and to death-warp from a trainer twice for a x255 item stack.
Line 66:
** If the player died to the first MissingNo., repeat the Spearow manipulation above. If the player escaped, the leftmost trainer will not be usable, so [https://www.youtube.com/watch?v=HTG2Wu6euGU do a manipulation with another trainer] instead.
** Since the "13 ERROR." glitch text box points to the Route 11 trainer defeat flags, escaping from the first MissingNo. will set the first byte to 0x08 (TX_ASM), leading to a crash. '''Therefore, in this case the player should flash the Start menu instead of reading the Vermilion Harbor sign.''' (The guide states that reading the Harbor sign crashes even if the player died, but this is unconfirmed either way.)
** Don't bother running away this time. Since we want to be at the Pokémon Center anyway, selecting a weak attack and (hopefully) bebeing killed by MissingNo. first is faster.
 
==PC underflow==
Line 80:
** Swap slot 1 with slot 2 twice. (Item count = 255)
* Now use the [[expanded item pack]] to set up for the next segment of the route.
** Swap Escape Rope x0 with a stack of [[ItemDex/RB:000|#j.]] x0 between [[ItemDex/RB:000|#j.]] x129 and Master Ball x128.
** Swap the [[ItemDex/RB:000|#j.]] x129 with Master Ball x128.
** Swap the [[ItemDex/RB:000|#j.]] x129 stack again with Master Ball x5 a few slots below, then toss all but 6.
{|
|-
|
{| class="wikitable"
{| border=1 width="100%" align=left style="background:#f0f0f0; border:1px solid #000000; border-collapse:collapse;"
! rowspan=2 | Item slot !! rowspan=2 | In-game meaning !! colspan=3 | Before !! colspan=3 | After
|-style="background: silver;"
! Item slot !! In-game meaningHex !! Item stack (before) !! In-game value !! Hex !! Item stack (after) !! In-game value
|-
| 1st || Actual first item || 1D 00 || colspan=2 | Escape Rope x0 || 00 00 || colspan=2 | [[ItemDex/RB:000|#j.]] x0
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| rowspan=2 | 28th || 11th character of rival's name (unused)<br/>Options || rowspan=200<br/>81 || [[ItemDex/RB:000|#j.]]<br/>x129 || <br/>Fast (1 frame per letter)/Off/Shift || rowspan=201<br/>80 || Master Ball<br/>x128 || <br/>'''Fastest (0 frame per letter)'''/Off/Shift
|-
| 29th || Obtained badges<br/>Unused || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || No badges obtained || 1D<br/>00|| Escape Rope<br/>x0 || Badges 1, '''3''', 4, 5 obtained (allowing Fly)
| Options || Fast (1 frame per letter)/Off/Shift || '''Fastest (0 frame per letter)'''/Off/Shift
|-
| 30th || Letter printing delay flags<br/>Upper byte of Trainer ID || 01<br/>80 || Master Ball<br/>x128 || (default)<!-- TODO: Do we need to explain this? --><br/>0x80 || 01<br/>05 || Master Ball<br/>x5 || (unchanged)<br/>0x05
| 29th || Obtained badges (quantity unused) || [[ItemDex/RB:000|j.]] x0 || No badges obtained || Escape Rope x0 || Badges 1, '''3''', 4, 5 obtained (allowing Fly)
|-
| ... || ... || ... || ... || ... || ... || ... || ...
| rowspan=2 | 30th || Letter printing delay flags || rowspan=2 | Master Ball<br/>x128 || <!-- TODO: Do we need to explain this? --> || rowspan=2 | Master Ball<br/>x5 || (unchanged)
|-
| 36th || X block coordinate<br/>"Outdoor" map (used by the exit warp) || 01<br/>05 || Master Ball<br/>x5 || 1<br/>Vermilion City || 00<br/>06 || [[ItemDex/RB:000|#j.]]<br/>x6 || ''0''<br/>'''Celadon City'''
| Upper byte of Trainer ID || 0x80 || 0x05
|-
| ... || ... || ... || ... || ... || ...
|-
| rowspan=2 | 36th || X block coordinate || rowspan=2 | Master Ball<br/>x5 || 1 || rowspan=2 | [[ItemDex/RB:000|j.]]<br/>x6 || ''0''
|-
| "Outdoor" map (used by the exit warp) || Vermilion City || '''Celadon City'''
|}
|}
* Open the PC again (the background graphics will shift to the right because the X block coordinate changed), and open the item withdraw menu.
* '''Do [[dry underflow]] again in the PC''', the item count of which is currently 3 (the three stacks we just deposited).'''
** Withdraw the top 2 items. (Item count = 1)
*** This fixes the item pack, setting the item count there to 1 with a properly terminated list.
Line 118 ⟶ 113:
** Swap slot 1 with slot 2 twice. (Item count = 255)
* Now use the [[expanded item pack|expanded PC item list]] to set other things up.
** Scroll down to find a stack of [[ItemDex/RB:000|#j.]] x163, select the stack of [[ItemDex/RB:000|#j.]] x0 '''above that''' and withdraw 1 from it.
** Scroll down to Full Restore x0, and swap them with the [[ItemDex/RB:000|#j.]] x128 stack 3 slots below.
** Withdraw 255 from the Master Ball x0 stack below.
** Withdraw 36 Full Restores. (They are withdrawn after the Master Ball x255 so that they will not be erased during the second item underflow.)
** Swap Master Ball x1 with a stack of Poké Ball x0 down below. <!-- The Poké Ball corresponds to the meta-map script in Pewter City (#4). -->
** Swap Master Ball x1 again with [[ItemDex/RB:000|#j.]] x0 below. <!-- Route 4 meta-map script = 1; quantity seems to be unused -->
** Withdraw 255 from the [[ItemDex/RB:000|#j.]] x0 stack now above the Master Balls. <!-- Route 3 meta-map script = 1 -->
** Withdraw 255 from the [[ItemDex/RB:000|#j.]] x0 stack 5 below the Master Balls.
** Withdraw 255 from the [[ItemDex/RB:000|#j.]] x0 stack below the stack you just withdrawn from.
** Withdraw 255 from the [[ItemDex/RB:000|#j.]] x0 stack 8 below the Ultra Ball x0 stack. <!-- The Ultra Ball corresponds to the meta-map script in Viridian Mart (#2). -->
** Withdraw 255 from the [[ItemDex/RB:000|#j.]] x0 stack 3 below the stack you just withdrawn from.
{|
<!-- TODO: Explanations. -->
|-
|
{| class="wikitable"
! rowspan=2 | Item slot !! rowspan=2 | In-game meaning !! colspan=3 | Before !! colspan=3 | After
|-style="background: silver;"
! Hex !! Item stack !! In-game value !! Hex !! Item stack !! In-game value
|-
| 53rd || Unused<br/>Number of coins (BCD, first two digits) || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || <br/>00 || 00<br/>FF || [[ItemDex/RB:000|#j.]]<br/>x255 || <br/>'''FF (165)'''
|-
| 54th || Number of coins (BCD, last two digits)<br/>Hidden object flags, byte 0 || 00<br/>A3 || [[ItemDex/RB:000|#j.]]<br/>x163 || 00<br/>(default) || 00<br/>A3 || [[ItemDex/RB:000|#j.]]<br/>x163 || 00<br/>(unchanged)
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 59th || Hidden object flags, byte 9<br/>Hidden object flags, byte 10 || 10<br/>00 || Full Restore<br/>x0 || (default)<br/>(default) || 00<br/>80 || [[ItemDex/RB:000|#j.]]<br/>x128 || Silph Co. 1F receptionist shown<br/>Power plant HP Up hidden
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 62nd || Hidden object flags, byte 15<br/>Hidden object flags, byte 16 || 00<br/>80 || [[ItemDex/RB:000|#j.]]<br/>x128 || (default)<br/>(default) || 10<br/>DC || Full Restore<br/>x220 || Rocket Hideout B1F Hyper Potion hidden<br/>Rocket Hideout — multiple items and Giovanni hidden
|-
| 63rd || Hidden object flags, byte 17<br/>Hidden object flags, byte 18 || 01<br/>00 || Master Ball<br/>x0 || (default)<br/>(default) || 04<br/>00 || Poké Ball<br/>x0 || Lift Key shown; A scientist in Silph Co. 2F hidden<br/>(unchanged)
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 95th || Pewter City meta-map script ID<br/>Route 3 meta-map script ID || 04<br/>00 || Poké Ball<br/>x0 || Youngster script<br/>Normal || 00<br/>01 || [[ItemDex/RB:000|#j.]]<br/>x1 || ''Normal''<br/>'''Battle pending'''
|-
| 96th || Route 4 meta-map script ID<br/>Unused || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || Normal || 01<br/>01 || Master Ball<br/>x1 || '''Battle pending'''
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 101st || Route 25 meta-map script ID<br/>Route 9 meta-map script ID || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || Normal<br/>Normal || 00<br/>01 || [[ItemDex/RB:000|#j.]]<br/>x1 || Normal<br/>'''Battle pending'''
|-
| 102nd || Route 10 meta-map script ID<br/>Mt. Moon 1F meta-map script ID || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || Normal<br/>Normal || 00<br/>01 || [[ItemDex/RB:000|#j.]]<br/>x1 || Normal<br/>'''Battle pending'''
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 106th || Viridian Mart meta-map script ID<br/>Route 22 Gate meta-map script ID || 02<br/>00 || Ultra Ball<br/>x0 || Got Oak's Parcel<br/>Normal || 02<br/>00 || Ultra Ball<br/>x0 || Got Oak's Parcel<br/>Normal
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 114th || Route 19 meta-map script ID<br/>Route 21 meta-map script ID || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || Normal<br/>Normal || 00<br/>01 || [[ItemDex/RB:000|#j.]]<br/>x1 || Normal<br/>'''Battle pending'''
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 117th || Route 11 meta-map script ID<br/>Route 12 meta-map script ID || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || Normal<br/>Normal || 00<br/>01 || [[ItemDex/RB:000|#j.]]<br/>x1 || Normal<br/>'''Battle pending'''
|}
|}
* Here "battle pending" is the same meta-map script used by the [[trainer escape glitch]]. '''As can be seen, the primary purpose of this segment is to set up special encounters on various maps.''' The secondary purpose is to get some useful items in our item pack.
* Exit through the left doormat tile (it is actually the right doormat tile; what we did with our expanded item pack messed up with the graphics) and warp to Celadon City.
 
==Celadon Mart==
* At this point, our item pack should contain:
** Unimportant item (Potions or Poké Balls)
** Escape Rope x253
** [[ItemDex/RB:000|#j.]] x96 (First we withdrew 1, then a stack of 255 made it 0, the second stack of 255 put 99 here and 156 in another slot below, and the third, fourth, and fifth stacks of 255 each subtracts 1 from the quantity)
** Master Ball x255
** Full Restore x36
** [[ItemDex/RB:000|#j.]] x156
* Sell the stack of [[ItemDex/RB:000|#j.]] x96 in slot 3 for 499999 Pokédollars. (Item count = 5; Master Ball x255 [[Item stack duplication glitch|duplicated]])
** After dying 3 or 4 times on Route 11, the player should have either 33 or 16 Pokédollars left. This will give just enough money to buy everything needed for the route.
* Buy the following items (quantities close to 99 are faster to select by pressing Down instead of Up). (Item count = 20)
** Great Ball x1 (overwrites [[ItemDex/RB:000|#j.]] x156)
** Revive x93
** Super Potion x3
** Super Repel x83
** Antidote x1
** Ice Heal x78
** Burn Heal x99
** Water Stones x5
** Fire Stones x99
** Fire Stones x3
** Leaf Stone x4
** Thunder Stones x3
** Poke Dolls x8
** Hp Up x1
** Calcium x1
* Stand on the tile directly below the Vitamin Seller (across the counter) for the [[expanded item pack]] manipulation below.
* '''Do [[dry underflow]] in the item pack again.'''
** Toss the top item stack 19 times. (Item count = 1)
*** The first 4 slots should be Master Ball x255, and the other 16 slots remain unchanged.
** Toss 253 Master Balls from slot 1.
** Swap slot 1 with slot 2 twice. (Item count = 255)
* Do things with the expanded item pack.
** Swap Master Ball x0 in the first slot with Calcium x1 in the 20th slot.
** Swap the first [[ItemDex/RB:000|#j.]] x0 stack with the first Soulbadge.
** Swap Bicycle 2 slots above with Calcium x1 now in the first slot.
{|
|-
|
{| class="wikitable"
! rowspan=2 | Item slot !! rowspan=2 | In-game meaning !! colspan=3 | Before !! colspan=3 | After
|-style="background: silver;"
! Hex !! Item stack !! In-game value !! Hex !! Item stack !! In-game value
|-
| 1st || Actual first item || 01 00 || colspan=2 | Master Ball x0 || 06 01 || colspan=2 | '''Bicycle (x1)'''
|-
| ... || ... || ... || colspan=2 | ... || ... || colspan=2 | ...
|-
| 20th || Actual twentieth item || 27 01 || colspan=2 | Calcium x1 || 01 00 || colspan=2 | Master Ball x0
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 27th || 9th character of rival's name (unused)<br/>10th character of rival's name (unused) || 00<br/>00 || [[ItemDex/RB:000|#j.]]<br/>x0 || || 19<br/>12 || SoulBadge<br/>(x18) ||
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 35th || X coordinate<br/>Y block coordinate || 06<br/>01 || Bicycle<br/>(x1) || 6<br/>1 || 27<br/>01 || Calcium<br/>x1 || '''39'''<br/>1
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 37th || Width of "outdoor" map (unused)<br/>Current map tileset || 19<br/>12 || SoulBadge<br/>(x18) || 25 blocks (i.e. 50 tiles)<br/>"Lobby" tileset || 00<br/>00|| [[ItemDex/RB:000|#j.]]<br/>x0 || (unimportant)<br/>'''"Overworld" tileset'''
|}
|}
* Although X = 39 is out of bounds, the player does not really go [[out of bounds]], because the map view pointer is not updated. Instead, the player has a "out-of-bound experience" where all NPCs and warps disappear (because they are shifted out of the screen), but the background tiles, including their collision properties, work as normal.
* Get on the bike (which is possible because the "overworld" tileset allows cycling), and move down and right 1 tile each.
* Open the item pack again.
** Swap Revive x93 just bought with TM41 x80 a few slots below the normal item pack.
** Swap Revive x93 again with Master Ball x5 put there during the first expanded item pack session.
** Toss 3 from the [[ItemDex/RB:136|#▶D#]] x44 stack 3 slots below.
** Swap the two stacks below, HM04 and Rare Candy x0.
** Swap Rare Candy x0 again with Master Ball x0 at the bottom of the normal item pack.
** Toss 1 from the Rare Candy x0 stack.
** Toss the HP Up above ([[Item stack duplication glitch|duplicating]] Rare Candy x255).
** Toss the Great Ball in slot 6 (duplicating Rare Candy x255 again).
** Swap Super Repel x83 with the bottom Rare Candy x255 stack.
** Toss 27 from the second Rare Candy x255 stack.
** Swap Super Repel x83 with [[ItemDex/RB:094|9F]] x189.
** Swap Super Repel x83 again with Paralyze Heal x65 way below.
** Swap Super Repel x83 again with [[ItemDex/RB:000|#j.]] x255 above.
{|
|-
|
{| class="wikitable"
! rowspan=2 | Item slot !! rowspan=2 | In-game meaning !! colspan=3 | Before !! colspan=3 | After
|-style="background: silver;"
! Hex !! Item stack !! In-game value !! Hex !! Item stack !! In-game value
|-
| 6th || Actual sixth item || 03 01 || colspan=2 | Great Ball x1 || colspan=3 | (tossed)
|-
| 7th -> 6th || Actual seventh item || 35 5D || colspan=2 | Revive x93 || F1 50 || colspan=2 | '''TM41 x80'''
|-
| ... || ... || ... || colspan=2 | ... || ... || colspan=2 | ... (shifted up)
|-
| 9th -> 8th || Actual ninth item || 38 53 || colspan=2 | Super Repel x83 || 28 FF || colspan=2 | '''Rare Candy x255'''
|-
| ... || ... || ... || colspan=2 | ... || ... || colspan=2 | ... (shifted up)
|-
| 18th || Actual eighteenth item || 33 08 || colspan=2 | Poké Doll x8 || 28 E4 || colspan=2 | '''Rare Candy x255'''
|-
| 19th || Actual nineteenth item || 23 01 || colspan=2 | HP Up x1 || 28 FF || colspan=2 | '''Rare Candy x228'''
|-
| 20th || Actual twentieth item || 01 00 || colspan=2 | Master Ball x0 || 5E BD || colspan=2 | '''[[ItemDex/RB:094|9F]] x189'''
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 26th || 7th character of rival's name<br/>8th character of rival's name || F1<br/>50 || TM41<br/>x80 || ×<br/>(terminator) || 01<br/>05 || Master Ball<br/>x5 || (glitch character)<br/>(glitch character)
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 30th || Letter printing delay flags<br/>Upper byte of Trainer ID || 01<br/>05 || Master Ball<br/>x5 || (default)<br/>0x05 || 35<br/>5D || Revive<br/>x93 || (unimportant)<br/>0x5D
|-
| 31st || Lower byte of Trainer ID<br/>Map music ID || 5E<br/>BD || [[ItemDex/RB:094|9F]]<br/>x189 || 0x5E<br/>Pokémon Center/Mart music || 0F<br/>41 || Paralyze Heal<br/>x65 || 0x0F<br/>(unimportant)
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 33rd || Current map<br/>Map view pointer, low byte || 88<br/>2C || [[ItemDex/RB:136|#▶D#]]<br/>x44 || Celadon Mart 5F<br/>$2C || 88<br/>29 || [[ItemDex/RB:136|#▶D#]]<br/>x41 || Celadon Mart 5F<br/>''$29''
|-
| 34th || Map view pointer, high byte<br/>Y coordinate || C7<br/>06 || HM04<br/>(x06) || $C7<br/>6 || 01<br/>00 || Master Ball<br/>x0 || ''$01''<br/>'''0'''
|-
| 35th || X coordinate<br/>Y block coordinate || 28<br/>00 || Rare Candy<br/>x0 || 40<br/>0 || C7<br/>06 || HM04<br/>(x06) || '''199'''<br/>6
|-
| ... || ... || ... || ... || ... || ... || ... || ...
|-
| 43rd || Valid map connections<br/>North connection map || 00<br/>FF || [[ItemDex/RB:000|#j.]]<br/>x255|| None<br/>(invalid) || 38<br/>53 || Super Repel<br/>x83 || (unimportant)<br/>'''Power Plant'''
|-
| 44th || North connection preview data source || 0F 41 || Paralyze Heal x65 || $410F (from Vermilion City) || 00 FF || [[ItemDex/RB:000|#j.]] x255 || (unimportant)
|}
|}
* Note: "Map music ID" is only used when starting the music (e.g. after getting off the bike); "valid map connections" and "north connection preview data source" are only used when first loading the map.
* Walk up one step.
** Because the player is now at Y = 0, stepping up triggers the north map connection, sending the player to the Power Plant. Since the tileset has changed, the game thinks the player has taken a warp, and places the player at the entrance of the Power Plant.
 
<!-- [[Category:Speedrun routes]] -->
Cookies help us deliver our services. By using our services, you agree to our use of cookies.