pokegold/engine/player_step.asm
2016-06-22 10:24:37 -04:00

266 lines
3.2 KiB
NASM
Executable File

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