Adding Running Shoes (aka Speeding up walking) in Pokémon Red (pokered)

One item I feel is missing from the Pokémon Generation 1 games is the Running Shoes. When activated, they increase the speed at which you move around the game. You can achieve this with the Bicycle, but it is only available later in the game. In this post, I will document how I simply added this running ability globally whilst the ‘B button’ is pressed.

Looking through the pokered source, I identified the logic surrounding moving the player around the game within home/overworld.asm.

.moveAhead2
  ld hl, wFlags_0xcd60
  res 2, [hl]
+ ld a, [hJoyHeld]
+ and B_BUTTON
+ jr nz, .speedUp
  ld a, [wWalkBikeSurfState]
  dec a ; riding a bike?
  jr nz, .normalPlayerSpriteAdvancement
  ld a, [wd736]
  bit 6, a ; jumping a ledge?
  jr nz, .normalPlayerSpriteAdvancement
+ .speedUp
  call DoBikeSpeedup
  .normalPlayerSpriteAdvancement
  call AdvancePlayerSprite

With this small modification, if the ‘B button’ is pressed, we jump directly to the new speedUp label, which instructs the engine to perform the bike speedup. This in turn provides us with the ability to ‘run’ throughout the game at the same speed as if you were on a bike.