diff options
-rwxr-xr-x | engine/player_step.asm | 265 | ||||
-rw-r--r-- | main.asm | 8 |
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 @@ -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:: |