Jump to content

Pokémon Blue any% No Save Corruption speedrun route: Difference between revisions

m
→‎Preparations: Minor grammar fix
m (Text replacement - "{| border=1 width="100%" align=left style="background:#f0f0f0; border:1px solid #000000; border-collapse:collapse;" |-style="background: silver;"" to "{| class="wikitable"")
m (→‎Preparations: Minor grammar fix)
 
(5 intermediate revisions by the same user not shown)
Line 1:
The current [[bp:Pokémon Red and Blue Versions|Pokémon Blue]] any% No Save Corruption speedrun route is based on [[glitch meta-map script activation]] after the "death-warp" variety of the [[Trainertrainer escape glitch]]. It warps to the credits by [[arbitrary code execution]], which has a chance to fail because the execution flow goes through the in-game timer. Since the arbitrary code execution begins at address $F8FF, this method is also known as "[[Viridian Forest 0xF8FF glitch]]".
 
Two [[luck manipulation]]s are important for the glitched portion, one to get a specific value of the Trainer ID for the glitch setup, and another to get an encounter on the exact tile in front of a trainer to trigger the death-warp. A third luck manipulation is used to get a Spearow with specific DVs to win or lose the battles faster.
Line 11:
* If there is an existing save file, clear it by pressing Up + Select + B on the title screen.
* [https://youtu.be/u5_hDQ7H98w '''Manipulate for a Trainer ID of 0xF1C8 (61896).''']
* '''Name the player character "m<{{MN>}}a.♀tF".'''
* Choose the starter and name it to suit the needs of the Spearow manipulation later. (Charmander and Bulbasaur hashave different advantages for speedrunning.)
* Finish the rival fight, deliver Oak's Parcel, and get Poké Balls.
* Manipulate for a Spearow with low Special DV and high DVs in everything else.
Line 24:
* [https://youtu.be/UxsOKYi_Nzs '''Manipulate a Pikachu encounter in front of the mandatory trainer ("Weedle Guy"), and lose the battle.''']
** The luck manipulation can be extended to make Pikachu use Thundershock and land a critical hit, killing Spearow in one turn.
** The trainer will notice the player before the player blacks out. This completes the first part of the [[Trainertrainer escape glitch]], setting the [[meta-map script]] ID for Viridian Forest to 1.
 
==Glitch meta-map script activation==
Line 110:
! Program counter !! Hex !! ASM !! In-game meaning !! In-game value !! Comments
|-
| $F8FF ~ $F9AB || 00 (*173) || nop || Main data of enemy Pokémon 3~63–6 || (empty) ||
|-
| $F9AC || AC || '''xor h''' || rowspan=9 | OT name of enemy Pokémon 1<br/>(Actually the player's name) || m || a = 0x07
|-
| $F9AD || E2 || '''ld ([$FF00+c)], a''' || <{{MN>}} || ($FFF0) = 0x07
|-
| $F9AE || A0 || '''and b''' || a || a = 0x00, f = 0xA0 (zero and half-carry flags set)
|-
| $F9AF || F2 || '''ld a, ([$FF00+c)]''' || . || a = 0x07
|-
| $F9B0 || F5 || '''push af''' || ♀ || Pushes 0x07A0 onto the stack
Line 128:
| $F9B3 || 50 || ld d, b || (terminator) ||
|-
| $F9B4 ~ $F9B6 || 00 (*3) || nop || (empty) ||
|-
| $F9B7 || AC || '''xor h''' || rowspan=9 | OT name of enemy Pokémon 2<br/>(Actually the player's name) || m || a = 0x76
|-
| $F9B8 || E2 || '''ld ([$FF00+c)], a''' || <{{MN>}} || ($FFF0) = 0x76
|-
| $F9B9 || A0 || '''and b''' || a || a = 0x00, f = 0xA0 (zero and half-carry flags set)
|-
| $F9BA || F2 || '''ld a, ([$FF00+c)]''' || . || a = 0x76
|-
| $F9BB || F5 || '''push af''' || ♀ || Pushes 0x76A0 onto the stack
Line 146:
| $F9BE || 50 || ld d, b || (terminator) ||
|-
| $F9BF ~ $F9C1 || 00 (*3) || nop || (empty) ||
|-
| $F9C2 ~ $F9ED || 00 (*44) || nop || OT names of enemy Pokémon 3~63–6 || (empty) ||
|-
| $F9EE ~ $FA2F || 00 (*66) || nop || Nicknames of enemy Pokémon 1~61–6 || (empty) ||
|-
| $FA30 || 51 || ld d, c || rowspan=2 | Trainer header pointer || rowspan=2 | $5142 ||
Line 156:
| $FA31 || 42 || ld b, d ||
|-
| $FA32 ~ $FA38 || 00 (*7) || nop || Unused at this point || ||
|-
| rowspan=2 | $FA39 || rowspan=2 | 08 00 00 || rowspan=2 | ld ([$0000)], sp || Current meta-map script ID || 8 || rowspan=2 |
|-
| Unused ||
|-
| $FA3C ~ $FA40 || 00 (*5) || nop || Unused || ||
|-
| $FA41 || ?? || ?? || rowspan=5 | In-game timer || (hours) || rowspan=2 | Certainly 00 (nop) for a speedrun
Line 174:
| $FA45 || ?? || '''??''' || (frames)
|-
| $FA46 ~ $FA7F || 00 (*58) || nop || Safari data, Daycare data, Unused || (empty) ||
|-
| rowspan=3 | $FA80 || rowspan=3 | 01 ?? FF || rowspan=3 | ld bc, 0xFF?? || Current box Pokémon count || 1 || rowspan=3 |
Line 182:
| Species of current box Pokémon 2 || 0xFF terminator
|-
| $FA83 ~ $FA95 || 00 (*19) || nop || Species of current box Pokémon 3~213–21 || (empty) ||
|-
| $FA96 ~ $FAA1 || ?? (*12) || (safe) || Main data of current box Pokémon 1 || (safe) || Should contain only safe values for level 5~65–6 starter with full HP
|-
| $FAA2 || F1 || '''pop af''' || rowspan=2 | Original Trainer ID of current box Pokémon 1 || rowspan=2 | 61896 (0xF1C8) || a = 0x76, f = 0xA0
Cookies help us deliver our services. By using our services, you agree to our use of cookies.