Submission Text Full Submission Page
Improvement over [3655] GB Pokémon: Blue Version "warp glitch" by gifvex in 10:12.00. This submission intends to go along with the decision in #9293: CasualPokePlayer's GBC Pokémon: Crystal Version "save glitch" in 02:15.24 and have Red/Blue and Yellow non-save glitch runs be separated instead of obsoleting each other.

Game objectives

  • Completes the game as fast as possible without save data corruption

ACE setup

This run like the previous run abuses 0xF8FF ACE. This ends up resulting in the player name being executed twice, then Box Pokemon data, along with other inconsequential data. The player is named "Mn].♀Pkdo", where Mn and Pk are both 1 character. The trainer ID is manipulated to be 0x06D6. The boxed Pokemon's DVs are manipulated to be 0xC282. This results in the following payload:
; player name 1
ldh [c],a
sbc a ; z and n set
ldh a,[c]
push af ; [sp] = 0xFFC0
pop hl ; hl = 0xFFC0, [hl] = 0xE9
and e ; a = 0x8D
xor [hl] ; a = 0x64
; player name 2
ldh [c],a
sbc a ; z and n set
ldh a,[c]
push af ; [sp] = 0x64C0
pop hl ; hl = 0x64C0
and e
xor [hl]
; boxed Pokemon
; catch rate
dec l ; hl = 0x64BF
; growl
dec l ; hl = 0x64BE
; tid
ld b,0xD6
; dvs and pp
jp nz,0x2382
The end of the payload does a jump to 0x2382. This is a ROM address, in the middle of some of the game's music code. This ends up calling the Bankswitch function in the game, which switches the ROM bank over to whatever b has and jumps to whatever hl has. This means the game bankswitches to bank 0x16 (keep in mind the game only has 0x40 ROM banks, so any b value higher than 0x3F effectively gets moduloed by 0x40, 0xD6 % 0x40 = 0x16), and jumps to 0x64BE. 0x64BE in bank 0x16 is the middle of the Hall of Fame script. This is also in fact around the same place the current save glitch movie ends up redirecting execution to.
The previous movie opted to jump to the game's warp code with the parameter set to the Hall Of Fame room. This loses around 10 seconds, mainly as you have to wait for Oak's speech. As such, redirecting execution directly to the Hall Of Fame's script comprises most of the timesave in this TAS.

Route

  • The trainer ID is manipulated to be 0x06D6. 0x0616, 0x0656, and 0x0696 also work, but 0x06D6 ended up being the fastest to manipulate.
  • The player is named "Mn].♀Pkdo" and the Rival is set to the preset RED name. This preset name is why Blue is used over Red, as it is shorter than the Rival preset name in Red.
  • Charmander is picked as the starter, with 0xC282 DVs. 0xC482 would also work for this TAS. In theory, a ton of other DVs would work for the ACE payload, but 0xC282 and 0xC482 are the best in this case, as they are the only ones which give Charmander 0 HP DVs, and thus gives Charmander 18 HP (even 1 HP DV would bump Charmander's HP to 19). It is not nicknamed, as the name is not shown enough to save time nicknaming. Squirtle and Bulbasaur cannot be used, as they have Tackle, which ruins the payload used.
  • The Rival fight is purposefully lost, as it does not need to be won and it is fastest to lose. This is done in 3 turns, each comprising of a 1/256 miss with Growl, and a 1/39 crit with Tackle. A 1/39 Tackle crit does 6 damage to Charmander, so having 18 HP allows for a 3 turn fight. Who doesn't love a 1/1178114537369 Rival fight.
  • Options are set after the Rival fight. Keeping animations on during the Rival fight saves a bit of time due to Tackle being faster with animations on rather than off.
  • A Level 5 Spearow is caught with 0xE8E3 DVs. Various DVs were workable here: Attack must be 10, 12, or 14; Defense must be 0, 2, 4, 6, or 8; Speed must be 14; Special can be any value.
  • Charmander is deposited into the PC, and the Pokemon Center is used to set the blackout location.
  • A Level 5 Pikachu is manipulated at the end of the forest to deathwarp. Pikachu's stats are irrelevant (even if Pikachu had 0 special and Spearow had 15 special, Thundershock crit is a guaranteed KO).
  • The first bug catcher fight is manipulated to have 2 1/39 crits from Weedle, allowing for red bar for the rest of the run. The L9 Weedle is KO'd with a 1/39 non-crit and a high roll non-crit.
  • The second bug catcher's L9 Weedle has the same KO requirements, 1/39 non-crit and a high roll non-crit.
  • The third bug catcher's Pokemon can all be OHKO'd with crits.
  • The Hall of Fame still needs input to clear some textboxes to advance to the credits, so input doesn't end until those textboxes are cleared.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15438
Location: 127.0.0.1
Emulator Coder, Judge, Experienced player (676)
Joined: 2/26/2020
Posts: 736
Location: California
Needs a movie file replacement to fix the platform being misdetected as GBC. https://tasvideos.org/UserFiles/Info/638631044263071919

1727642010