diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index 596463a09..a72e4afc3 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -878,6 +878,8 @@ This is a bug with `DoPlayerMovement.CheckWarp` in [engine/player_movement.asm]( ; making bumps silent. ld a, [WalkingDirection] + ; cp STANDING + ; jr z, .not_warp ld e, a ld d, 0 ld hl, .EdgeWarps @@ -889,6 +891,7 @@ This is a bug with `DoPlayerMovement.CheckWarp` in [engine/player_movement.asm]( ld a, 1 ld [wd041], a ld a, [WalkingDirection] + ; This is in the wrong place. cp STANDING jr z, .not_warp ``` @@ -1221,8 +1224,8 @@ In [engine/overworld.asm](/engine/overworld.asm): ```asm LoadSpriteGFX: ; 14306 -; Bug: b is not preserved, so -; it's useless as a next count. +; Bug: b is not preserved, so it's useless as a next count. +; Uncomment the lines below to fix. ld hl, UsedSprites ld b, SPRITE_GFX_LIST_CAPACITY @@ -1241,13 +1244,15 @@ LoadSpriteGFX: ; 14306 ret .LoadSprite: + ; push bc call GetSprite + ; pop bc ld a, l ret ; 1431e ``` -**Fix:** Surround `call GetSprite` with `push bc`/`pop bc`. +**Fix:** Uncomment `push bc` and `pop bc`. ## `ChooseWildEncounter` doesn't really validate the wild Pokémon species diff --git a/engine/overworld.asm b/engine/overworld.asm index 90291b616..a085d1d5a 100755 --- a/engine/overworld.asm +++ b/engine/overworld.asm @@ -389,8 +389,8 @@ AddSpriteGFX: ; 142e5 LoadSpriteGFX: ; 14306 -; Bug: b is not preserved, so -; it's useless as a next count. +; Bug: b is not preserved, so it's useless as a next count. +; Uncomment the lines below to fix. ld hl, UsedSprites ld b, SPRITE_GFX_LIST_CAPACITY @@ -409,7 +409,9 @@ LoadSpriteGFX: ; 14306 ret .LoadSprite: + ; push bc call GetSprite + ; pop bc ld a, l ret ; 1431e diff --git a/engine/player_movement.asm b/engine/player_movement.asm index 5bc3e1f0b..34ca81fe9 100755 --- a/engine/player_movement.asm +++ b/engine/player_movement.asm @@ -409,6 +409,8 @@ DoPlayerMovement:: ; 80000 ; making bumps silent. ld a, [WalkingDirection] + ; cp STANDING + ; jr z, .not_warp ld e, a ld d, 0 ld hl, .EdgeWarps @@ -420,6 +422,7 @@ DoPlayerMovement:: ; 80000 ld a, 1 ld [wd041], a ld a, [WalkingDirection] + ; This is in the wrong place. cp STANDING jr z, .not_warp