summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-22 10:24:37 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-22 10:24:37 -0400
commit9bbf823e8d112642ca3192ceb85ff9c74c4c1aa0 (patch)
tree384ebce6b100cd05e8c966b2cbe1ab9e7e5087a6
parentd0b87558f5a0910135c999dad498818eb00b554f (diff)
engine/player_step.asm
-rwxr-xr-xengine/player_step.asm265
-rw-r--r--main.asm8
2 files changed, 267 insertions, 6 deletions
diff --git a/engine/player_step.asm b/engine/player_step.asm
new file mode 100755
index 00000000..c856a78a
--- /dev/null
+++ b/engine/player_step.asm
@@ -0,0 +1,265 @@
+HandlePlayerStep_::
+ ld a, [wPlayerStepFlags]
+ and a
+ ret z
+ bit 7, a
+ jr nz, .asm_d4b6
+ bit 6, a
+ jr nz, .asm_d4c0
+ bit 5, a
+ jr nz, .asm_d4c5
+ ret
+
+.asm_d4b6
+ ld a, $4
+ ld [wd03c], a
+ call Functiond53c
+ jr .asm_d4c5
+
+.asm_d4c0
+ call Functiond517
+ jr .asm_d4c5
+
+.asm_d4c5
+ call Functiond4f2
+ ld a, [wPlayerStepVectorX]
+ ld d, a
+ ld a, [wPlayerStepVectorY]
+ ld e, a
+ ld a, [wce81]
+ sub d
+ ld [wce81], a
+ ld a, [wce82]
+ sub e
+ ld [wce82], a
+ ret
+
+ScrollScreen::
+ ld a, [wPlayerStepVectorX]
+ ld d, a
+ ld a, [wPlayerStepVectorY]
+ ld e, a
+ ld a, [hSCX]
+ add d
+ ld [hSCX], a
+ ld a, [hSCY]
+ add e
+ ld [hSCY], a
+ ret
+
+Functiond4f2: ; d4f2 (3:54f2)
+ ld hl, wd03c
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ld a, [hl]
+ ld hl, .Jumptable
+ rst JumpTable
+ ret
+
+.Jumptable
+ dw GetMovementPermissions
+ dw BufferScreen
+ dw Functiond515
+ dw Functiond516
+ dw Functiond515
+ dw Functiond515
+ dw Functiond515
+ dw Functiond515
+ dw Functiond515
+ dw Functiond515
+ dw Functiond515
+
+Functiond515:
+ ret
+
+Functiond516:
+ ret
+
+Functiond517: ; d517 (3:5517)
+ ld a, [wPlayerStepDirection]
+ and a
+ jr nz, .asm_d522
+ ld hl, wYCoord
+ inc [hl]
+ ret
+
+.asm_d522
+ cp $1
+ jr nz, .asm_d52b
+ ld hl, wYCoord
+ dec [hl]
+ ret
+
+.asm_d52b
+ cp $2
+ jr nz, .asm_d534
+ ld hl, wXCoord
+ dec [hl]
+ ret
+
+.asm_d534
+ cp $3
+ ret nz
+ ld hl, wXCoord
+ inc [hl]
+ ret
+
+Functiond53c: ; d53c (3:553c)
+ ld a, [wPlayerStepDirection]
+ and a
+ jr z, .asm_d54f
+ cp $1
+ jr z, .asm_d559
+ cp $2
+ jr z, .asm_d563
+ cp $3
+ jr z, .asm_d56d
+ ret
+
+.asm_d54f
+ call Functiond577
+ call LoadMapPart
+ call ScrollMapUp
+ ret
+
+.asm_d559
+ call Functiond5a8
+ call LoadMapPart
+ call ScrollMapDown
+ ret
+
+.asm_d563
+ call Functiond5db
+ call LoadMapPart
+ call ScrollMapRight
+ ret
+
+.asm_d56d
+ call Functiond604
+ call LoadMapPart
+ call ScrollMapLeft
+ ret
+
+Functiond577: ; d577 (3:5577)
+ ld a, [wd05b]
+ add $40
+ ld [wd05b], a
+ jr nc, .asm_d58c
+ ld a, [wd05c]
+ inc a
+ and $3
+ or $98
+ ld [wd05c], a
+.asm_d58c
+ ld hl, wd07f
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_d59a
+ ld [hl], $0
+ call Functiond59b
+.asm_d59a
+ ret
+
+Functiond59b: ; d59b (3:559b)
+ ld hl, wOverworldMapAnchor
+ ld a, [wMapWidth]
+ add $6
+ add [hl]
+ ld [hli], a
+ ret nc
+ inc [hl]
+ ret
+
+Functiond5a8: ; d5a8 (3:55a8)
+ ld a, [wd05b]
+ sub $40
+ ld [wd05b], a
+ jr nc, .asm_d5bd
+ ld a, [wd05c]
+ dec a
+ and $3
+ or $98
+ ld [wd05c], a
+.asm_d5bd
+ ld hl, wd07f
+ dec [hl]
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_d5cb
+ ld [hl], $1
+ call Functiond5cc
+.asm_d5cb
+ ret
+
+Functiond5cc: ; d5cc (3:55cc)
+ ld hl, wOverworldMapAnchor
+ ld a, [wMapWidth]
+ add $6
+ ld b, a
+ ld a, [hl]
+ sub b
+ ld [hli], a
+ ret nc
+ dec [hl]
+ ret
+
+Functiond5db: ; d5db (3:55db)
+ ld a, [wd05b]
+ ld e, a
+ and $e0
+ ld d, a
+ ld a, e
+ sub $2
+ and $1f
+ or d
+ ld [wd05b], a
+ ld hl, wd080
+ dec [hl]
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_d5f9
+ ld [hl], $1
+ call Functiond5fa
+.asm_d5f9
+ ret
+
+Functiond5fa: ; d5fa (3:55fa)
+ ld hl, wOverworldMapAnchor
+ ld a, [hl]
+ sub $1
+ ld [hli], a
+ ret nc
+ dec [hl]
+ ret
+
+Functiond604: ; d604 (3:5604)
+ ld a, [wd05b]
+ ld e, a
+ and $e0
+ ld d, a
+ ld a, e
+ add $2
+ and $1f
+ or d
+ ld [wd05b], a
+ ld hl, wd080
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_d622
+ ld [hl], $0
+ call Functiond623
+.asm_d622
+ ret
+
+Functiond623: ; d623 (3:5623)
+ ld hl, wOverworldMapAnchor
+ ld a, [hl]
+ add $1
+ ld [hli], a
+ ret nc
+ inc [hl]
+ ret
diff --git a/main.asm b/main.asm
index d01f7def..f94f17bb 100644
--- a/main.asm
+++ b/main.asm
@@ -406,11 +406,10 @@ FlagPredef:
INCLUDE "engine/health.asm"
INCLUDE "event/overworld.asm"
INCLUDE "engine/items.asm"
-
-IF DEF(GOLD)
- dr $d4a4, $d62d
+INCLUDE "engine/player_step.asm"
AnimateHPBar_:
+IF DEF(GOLD)
dr $d62d, $d892
TryAddMonToParty::
@@ -455,9 +454,6 @@ Functionf900:
ENDC
IF DEF(SILVER)
- dr $d4a2, $d62b
-
-AnimateHPBar_:
dr $d62b, $d890
TryAddMonToParty::