shithub: pokecrystal

Download patch

ref: 417f3c7c7211687a40e3363f8ee9c7033a3f0201
parent: 4ee7e027bea9832568bee9de84ec4c4894976a31
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Sat Feb 16 10:45:55 EST 2019

Bug fix: allow Surfing across map connections

--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -1254,7 +1254,66 @@
 
 ([Video](https://www.youtube.com/watch?v=XFOWvMNG-zw))
 
-*To do:* Identify specific code causing this bug and fix it.
+**Fix:**
+
+First, edit `UsedSurfScript` in [engine/events/overworld.asm](/engine/events/overworld.asm):
+
+```diff
+ UsedSurfScript:
+ 	writetext UsedSurfText ; "used SURF!"
+ 	waitbutton
+ 	closetext
+ 
+ 	callasm .empty_fn ; empty function
+ 
+ 	copybytetovar wBuffer2
+ 	writevarcode VAR_MOVEMENT
+ 
+ 	special ReplaceKrisSprite
+ 	special PlayMapMusic
+-; step into the water (slow_step DIR, step_end)
+ 	special SurfStartStep
+-	applymovement PLAYER, wMovementBuffer
+ 	end
+```
+
+Then edit `SurfStartStep` in [engine/overworld/player_object.asm](/engine/overworld/player_object.asm):
+
+```diff
+ SurfStartStep:
+-	call InitMovementBuffer
+-	call .GetMovementData
+-	call AppendToMovementBuffer
+-	ld a, movement_step_end
+-	call AppendToMovementBuffer
+-	ret
+-
+-.GetMovementData:
+	ld a, [wPlayerDirection]
+	srl a
+	srl a
+	maskbits NUM_DIRECTIONS
+	ld e, a
+	ld d, 0
+ 	ld hl, .movement_data
+ 	add hl, de
+-	ld a, [hl]
+-	ret
++	add hl, de
++	add hl, de
++	ld a, BANK(.movement_data)
++	jp StartAutoInput
+
+ .movement_data
+-	slow_step DOWN
+-	slow_step UP
+-	slow_step LEFT
+-	slow_step RIGHT
++	db D_DOWN,  0, -1
++	db D_UP,    0, -1
++	db D_LEFT,  0, -1
++	db D_RIGHT, 0, -1
+```
 
 
 ## Swimming NPCs aren't limited by their movement radius
--- a/engine/events/catch_tutorial.asm
+++ b/engine/events/catch_tutorial.asm
@@ -35,8 +35,8 @@
 	ldh [hJoyPressed], a
 	ld a, [wOptions]
 	push af
-	and $f8
-	add $3
+	and $ff ^ TEXT_DELAY_MASK
+	add TEXT_DELAY_MED
 	ld [wOptions], a
 	ld hl, .AutoInput
 	ld a, BANK(.AutoInput)