mirror of
https://github.com/pret/pokegold.git
synced 2026-05-19 02:09:45 -05:00
526 lines
6.1 KiB
NASM
Executable File
526 lines
6.1 KiB
NASM
Executable File
CheckNPCMovementPermissions: ; 6fa0 (1:6fa0)
|
|
ld hl, $6
|
|
add hl, bc
|
|
bit 5, [hl]
|
|
jr z, .asm_6fb8
|
|
ld hl, $4
|
|
add hl, bc
|
|
bit 4, [hl]
|
|
push hl
|
|
push bc
|
|
call Function700b
|
|
pop bc
|
|
pop hl
|
|
ret c
|
|
jr .asm_6fc8
|
|
|
|
.asm_6fb8
|
|
ld hl, $4
|
|
add hl, bc
|
|
bit 4, [hl]
|
|
jr nz, .asm_6fc8
|
|
push hl
|
|
push bc
|
|
call Function6fe6
|
|
pop bc
|
|
pop hl
|
|
ret c
|
|
.asm_6fc8
|
|
bit 6, [hl]
|
|
jr nz, .asm_6fd4
|
|
push hl
|
|
push bc
|
|
call WillPersonBumpIntoSomeoneElse
|
|
pop bc
|
|
pop hl
|
|
ret c
|
|
.asm_6fd4
|
|
bit 5, [hl]
|
|
jr nz, .asm_6fe4
|
|
push hl
|
|
call HasPersonReachedMovementLimit
|
|
pop hl
|
|
ret c
|
|
push hl
|
|
call IsPersonMovingOffEdgeOfScreen
|
|
pop hl
|
|
ret c
|
|
.asm_6fe4
|
|
and a
|
|
ret
|
|
|
|
Function6fe6: ; 6fe6 (1:6fe6)
|
|
call Function703e
|
|
ret c
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld d, [hl]
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld e, [hl]
|
|
ld hl, $6
|
|
add hl, bc
|
|
bit 7, [hl]
|
|
jp nz, Function7080
|
|
ld hl, $e
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld d, a
|
|
call GetTileCollision
|
|
and a
|
|
jr z, Function701d
|
|
scf
|
|
ret
|
|
|
|
Function700b: ; 700b (1:700b)
|
|
call Function703e
|
|
ret c
|
|
ld hl, $e
|
|
add hl, bc
|
|
ld a, [hl]
|
|
call GetTileCollision
|
|
cp $1
|
|
jr z, Function701d
|
|
scf
|
|
ret
|
|
|
|
Function701d
|
|
ld hl, $e
|
|
add hl, bc
|
|
ld a, [hl]
|
|
call Function705e
|
|
ret nc
|
|
push af
|
|
ld hl, $7
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $3
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, .data_703a
|
|
add hl, de
|
|
pop af
|
|
and [hl]
|
|
ret z
|
|
scf
|
|
ret
|
|
|
|
.data_703a
|
|
db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT
|
|
|
|
Function703e: ; 703e (1:703e)
|
|
ld hl, $f
|
|
add hl, bc
|
|
ld a, [hl]
|
|
call Function705e
|
|
ret nc
|
|
push af
|
|
ld hl, $7
|
|
add hl, bc
|
|
and $3
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, .data_705a
|
|
add hl, de
|
|
pop af
|
|
and [hl]
|
|
ret z
|
|
scf
|
|
ret
|
|
|
|
.data_705a
|
|
db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT
|
|
|
|
Function705e: ; 705e (1:705e)
|
|
ld d, a
|
|
and $f0
|
|
cp $b0
|
|
jr z, .asm_706b
|
|
cp $c0
|
|
jr z, .asm_706b
|
|
xor a
|
|
ret
|
|
|
|
.asm_706b
|
|
ld a, d
|
|
and $7
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, .data_7078
|
|
add hl, de
|
|
ld a, [hl]
|
|
scf
|
|
ret
|
|
|
|
.data_7078
|
|
db 8, 4, 1, 2
|
|
db 10, 6, 9, 5
|
|
|
|
Function7080: ; 7080 (1:7080)
|
|
ld hl, $7
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $3
|
|
jr z, .asm_7091
|
|
dec a
|
|
jr z, .asm_7096
|
|
dec a
|
|
jr z, .asm_709a
|
|
jr .asm_709e
|
|
|
|
.asm_7091
|
|
inc e
|
|
push de
|
|
inc d
|
|
jr .asm_70a1
|
|
|
|
.asm_7096
|
|
push de
|
|
inc d
|
|
jr .asm_70a1
|
|
|
|
.asm_709a
|
|
push de
|
|
inc e
|
|
jr .asm_70a1
|
|
|
|
.asm_709e
|
|
inc d
|
|
push de
|
|
inc e
|
|
.asm_70a1
|
|
call GetCoordTile
|
|
call GetTileCollision
|
|
pop de
|
|
and a
|
|
jr nz, .asm_70b6
|
|
call GetCoordTile
|
|
call GetTileCollision
|
|
and a
|
|
jr nz, .asm_70b6
|
|
xor a
|
|
ret
|
|
|
|
.asm_70b6
|
|
scf
|
|
ret
|
|
|
|
CheckFacingObject:
|
|
call GetFacingTileCoord
|
|
call CheckCounterTile
|
|
jr nz, .asm_70d0
|
|
ld a, [wPlayerStandingMapX]
|
|
sub d
|
|
cpl
|
|
inc a
|
|
add d
|
|
ld d, a
|
|
ld a, [wPlayerStandingMapY]
|
|
sub e
|
|
cpl
|
|
inc a
|
|
add e
|
|
ld e, a
|
|
.asm_70d0
|
|
ld bc, wObjectStructs
|
|
ld a, $0
|
|
ld [hMapObjectIndexBuffer], a
|
|
call Function7120
|
|
ret nc
|
|
ld hl, $7
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $ff
|
|
jr z, .asm_70e6
|
|
xor a
|
|
ret
|
|
|
|
.asm_70e6
|
|
scf
|
|
ret
|
|
|
|
WillPersonBumpIntoSomeoneElse: ; 70e8 (1:70e8)
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld d, [hl]
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld e, [hl]
|
|
jr Function7120
|
|
|
|
Function70f4:
|
|
ld a, [hMapObjectIndexBuffer]
|
|
call GetObjectStruct
|
|
call Function7100
|
|
call Function7120
|
|
ret
|
|
|
|
Function7100: ; 7100 (1:7100)
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld d, [hl]
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld e, [hl]
|
|
call GetSpriteDirection
|
|
and a
|
|
jr z, .asm_711a
|
|
cp $4
|
|
jr z, .asm_711c
|
|
cp $8
|
|
jr z, .asm_711e
|
|
inc d
|
|
ret
|
|
|
|
.asm_711a
|
|
inc e
|
|
ret
|
|
|
|
.asm_711c
|
|
dec e
|
|
ret
|
|
|
|
.asm_711e
|
|
dec d
|
|
ret
|
|
|
|
Function7120: ; 7120 (1:7120)
|
|
ld bc, wPlayerStruct
|
|
xor a
|
|
.asm_7124
|
|
ld [hObjectStructIndexBuffer], a
|
|
call DoesObjectHaveASprite
|
|
jr z, .asm_7172
|
|
ld hl, $4
|
|
add hl, bc
|
|
bit 7, [hl]
|
|
jr nz, .asm_7172
|
|
ld hl, $6
|
|
add hl, bc
|
|
bit 7, [hl]
|
|
jr z, .asm_7142
|
|
call Function7250
|
|
jr nc, .asm_715a
|
|
jr .asm_7152
|
|
|
|
.asm_7142
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp d
|
|
jr nz, .asm_715a
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp e
|
|
jr nz, .asm_715a
|
|
.asm_7152
|
|
ld a, [hMapObjectIndexBuffer]
|
|
ld l, a
|
|
ld a, [hConnectedMapWidth]
|
|
cp l
|
|
jr nz, .asm_7181
|
|
.asm_715a
|
|
ld hl, $12
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp d
|
|
jr nz, .asm_7172
|
|
ld hl, $13
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp e
|
|
jr nz, .asm_7172
|
|
ld a, [hConnectionStripLength]
|
|
ld l, a
|
|
ld a, [hObjectStructIndexBuffer]
|
|
cp l
|
|
jr nz, .asm_7181
|
|
.asm_7172
|
|
ld hl, $28
|
|
add hl, bc
|
|
ld b, h
|
|
ld c, l
|
|
ld a, [hConnectedMapWidth]
|
|
inc a
|
|
cp $d
|
|
jr nz, .asm_7124
|
|
and a
|
|
ret
|
|
|
|
.asm_7181
|
|
scf
|
|
ret
|
|
|
|
HasPersonReachedMovementLimit: ; 7183 (1:7183)
|
|
ld hl, $16
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_71c8
|
|
and $f
|
|
jr z, .asm_71a6
|
|
ld e, a
|
|
ld d, a
|
|
ld hl, $14
|
|
add hl, bc
|
|
ld a, [hl]
|
|
sub d
|
|
ld d, a
|
|
ld a, [hl]
|
|
add e
|
|
ld e, a
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp d
|
|
jr z, .asm_71ca
|
|
cp e
|
|
jr z, .asm_71ca
|
|
.asm_71a6
|
|
ld hl, $16
|
|
add hl, bc
|
|
ld a, [hl]
|
|
swap a
|
|
and $f
|
|
jr z, .asm_71c8
|
|
ld e, a
|
|
ld d, a
|
|
ld hl, $15
|
|
add hl, bc
|
|
ld a, [hl]
|
|
sub d
|
|
ld d, a
|
|
ld a, [hl]
|
|
add e
|
|
ld e, a
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp d
|
|
jr z, .asm_71ca
|
|
cp e
|
|
jr z, .asm_71ca
|
|
.asm_71c8
|
|
xor a
|
|
ret
|
|
|
|
.asm_71ca
|
|
scf
|
|
ret
|
|
|
|
IsPersonMovingOffEdgeOfScreen: ; 71cc (1:71cc)
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld a, [wXCoord]
|
|
cp [hl]
|
|
jr z, .asm_71dd
|
|
jr nc, .asm_71f0
|
|
add $9
|
|
cp [hl]
|
|
jr c, .asm_71f0
|
|
.asm_71dd
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld a, [wYCoord]
|
|
cp [hl]
|
|
jr z, .asm_71ee
|
|
jr nc, .asm_71f0
|
|
add $8
|
|
cp [hl]
|
|
jr c, .asm_71f0
|
|
.asm_71ee
|
|
and a
|
|
ret
|
|
|
|
.asm_71f0
|
|
scf
|
|
ret
|
|
|
|
Function71f2
|
|
ld a, [wPlayerStandingMapX]
|
|
ld d, a
|
|
ld a, [wPlayerStandingMapY]
|
|
ld e, a
|
|
ld bc, wObjectStructs
|
|
xor a
|
|
.asm_71fe
|
|
ld [hConnectedMapWidth], a
|
|
call DoesObjectHaveASprite
|
|
jr z, .asm_723f
|
|
ld hl, $3
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $15
|
|
jr nz, .asm_7215
|
|
call Function7250
|
|
jr c, .asm_724e
|
|
jr .asm_723f
|
|
|
|
.asm_7215
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp e
|
|
jr nz, .asm_722d
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp d
|
|
jr nz, .asm_722d
|
|
ld a, [hObjectStructIndexBuffer]
|
|
cp $0
|
|
jr z, .asm_723f
|
|
jr .asm_724e
|
|
|
|
.asm_722d
|
|
ld hl, $13
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp e
|
|
jr nz, .asm_723f
|
|
ld hl, $12
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp d
|
|
jr nz, .asm_723f
|
|
jr .asm_724e
|
|
|
|
.asm_723f
|
|
ld hl, $28
|
|
add hl, bc
|
|
ld b, h
|
|
ld c, l
|
|
ld a, [hConnectedMapWidth]
|
|
inc a
|
|
cp $d
|
|
jr nz, .asm_71fe
|
|
xor a
|
|
ret
|
|
|
|
.asm_724e
|
|
scf
|
|
ret
|
|
|
|
Function7250: ; 7250 (1:7250)
|
|
ld hl, $10
|
|
add hl, bc
|
|
ld a, d
|
|
sub [hl]
|
|
jr c, .asm_726a
|
|
cp $2
|
|
jr nc, .asm_726a
|
|
ld hl, $11
|
|
add hl, bc
|
|
ld a, e
|
|
sub [hl]
|
|
jr c, .asm_726a
|
|
cp $2
|
|
jr nc, .asm_726a
|
|
scf
|
|
ret
|
|
|
|
.asm_726a
|
|
and a
|
|
ret
|