shithub: pokecrystal

ref: e57e1ba63b2a2d966e516c8007a18463b0964b80
dir: /engine/map_objects.asm/

View raw version

INCLUDE "engine/facings.asm"

Data4273:: ; 4273
	db $00, $00, $01, $02, $00, $00
	db $06, $00, $01, $0c, $00, $00
	db $03, $00, $01, $00, $00, $00
	db $04, $00, $01, $00, $00, $00
	db $01, $00, $01, $00, $00, $00
	db $02, $00, $01, $00, $00, $00
	db $06, $00, $01, $00, $00, $00
	db $06, $01, $01, $00, $00, $00
	db $06, $02, $01, $00, $00, $00
	db $06, $03, $01, $00, $00, $00
	db $05, $00, $01, $00, $00, $00
	db $07, $00, $01, $02, $00, $00
	db $08, $00, $01, $00, $00, $00
	db $09, $00, $01, $00, $00, $00
	db $0a, $00, $01, $00, $00, $00
	db $0b, $00, $01, $00, $00, $00
	db $0c, $00, $01, $00, $00, $00
	db $0d, $00, $01, $00, $00, $00
	db $0e, $00, $01, $00, $00, $00
	db $0f, $00, $01, $02, $00, $00
	db $10, $00, $01, $02, $00, $00
	db $15, $00, $09, $2e, $01, $c0
	db $16, $00, $0a, $2e, $00, $00
	db $06, $00, $01, $0c, $00, $00
	db $06, $00, $01, $2e, $10, $00
	db $11, $00, $01, $2e, $00, $40
	db $12, $00, $01, $02, $00, $00
	db $13, $00, $00, $8e, $01, $00
	db $14, $00, $08, $8e, $02, $00
	db $17, $00, $00, $82, $00, $00
	db $19, $02, $01, $00, $00, $00
	db $18, $03, $01, $00, $00, $00
	db $11, $00, $0c, $2e, $01, $c0
	db $11, $00, $0d, $2e, $01, $c0
	db $1a, $00, $0e, $8e, $01, $00
	db $1b, $00, $0f, $8e, $02, $00
	db $03, $00, $01, $00, $00, $20
	db $00, $00, $01, $00, $00, $00
; 4357


Function4357:: ; 4357
	push bc
	ld hl, OBJECT_01
	add hl, bc
	ld a, [hl]
	push af
	ld h, b
	ld l, c
	ld bc, ObjectStruct2 - ObjectStruct1
	xor a
	call ByteFill
	pop af
	cp $ff
	jr z, .asm_4379
	bit 7, a
	jr nz, .asm_4379
	call GetMapObject
	ld hl, OBJECT_00
	add hl, bc
	ld [hl], $ff

.asm_4379
	pop bc
	ret
; 437b

Function437b: ; 437b
	call Function4386
	ret c
	call Function43f3
	call Function4427
	ret
; 4386

Function4386: ; 4386
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 6, [hl]
	ld a, [XCoord]
	ld e, a
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43b2
	cp $c
	jr nc, .asm_43b2
	ld a, [YCoord]
	ld e, a
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43b2
	cp $b
	jr nc, .asm_43b2
	jr .asm_43dc

.asm_43b2
	ld hl, OBJECT_FLAGS
	add hl, bc
	set 6, [hl]
	ld a, [XCoord]
	ld e, a
	ld hl, OBJECT_20
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43de
	cp $c
	jr nc, .asm_43de
	ld a, [YCoord]
	ld e, a
	ld hl, OBJECT_21
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43de
	cp $b
	jr nc, .asm_43de

.asm_43dc
	and a
	ret

.asm_43de
	ld hl, OBJECT_04
	add hl, bc
	bit 1, [hl]
	jr nz, .asm_43eb
	call Function4357
	scf
	ret

.asm_43eb
	ld hl, OBJECT_FLAGS
	add hl, bc
	set 6, [hl]
	and a
	ret
; 43f3

Function43f3: ; 43f3
	ld hl, OBJECT_09
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_4409
	ld hl, OBJECT_FLAGS
	add hl, bc
	bit 5, [hl]
	jr nz, .asm_4426
	cp $1
	jr z, .asm_4414
	jr .asm_4421

.asm_4409
	call Function47bc
	ld hl, OBJECT_FLAGS
	add hl, bc
	bit 5, [hl]
	jr nz, .asm_4426

.asm_4414
	call Function47dd
	ld hl, OBJECT_09
	add hl, bc
	ld a, [hl]
	and a
	ret z
	cp $1
	ret z

.asm_4421
	ld hl, Pointers4b45
	rst JumpTable
	ret

.asm_4426
	ret
; 4427

Function4427: ; 4427
	ld hl, OBJECT_04
	add hl, bc
	bit 0, [hl]
	jr nz, Function44a3

	ld hl, OBJECT_FLAGS
	add hl, bc
	bit 6, [hl]
	jr nz, Function44a3

	bit 5, [hl]
	jr nz, Function4448

	ld de, Pointers445f
	jr Function444d
; 4440

Function4440: ; 4440
	ld hl, OBJECT_04
	add hl, bc
	bit 0, [hl]
	jr nz, Function44a3
	; fallthrough
; 4448

Function4448: ; 4448
	ld de, Pointers445f + 2
	jr Function444d
; 444d

Function444d: ; 444d
	ld hl, OBJECT_11
	add hl, bc
	ld a, [hl]
	ld l, a
	ld h, 0
	add hl, hl
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call _hl_
	ret
; 445f

Pointers445f: ; 445f
	dw Function44a3
	dw Function44a3
	dw Function44b5
	dw Function44aa
	dw Function44c1
	dw Function44aa
	dw Function4508
	dw Function44aa
	dw Function4529
	dw Function44aa
	dw Function4539
	dw Function44a3
	dw Function456e
	dw Function456e
	dw Function457b
	dw Function44a3
	dw Function4582
	dw Function4582
	dw Function4589
	dw Function4589
	dw Function4590
	dw Function45a4
	dw Function45ab
	dw Function44aa
	dw Function45be
	dw Function45be
	dw Function45c5
	dw Function45c5
	dw Function45da
	dw Function44a3
	dw Function45ed
	dw Function44a3
	dw Function44e4
	dw Function44aa
; 44a3

Function44a3: ; 44a3
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $ff
	ret
; 44aa

Function44aa: ; 44aa
	call GetSpriteDirection
	or $0
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 44b5

Function44b5: ; 44b5
	ld hl, OBJECT_FACING
	add hl, bc
	ld a, [hl]
	and $1
	jr nz, Function44c1
	jp Function44aa
; 44c1

Function44c1: ; 44c1
	ld hl, OBJECT_04
	add hl, bc
	bit 3, [hl]
	jp nz, Function44aa
	ld hl, OBJECT_12
	add hl, bc
	ld a, [hl]
	inc a
	and $f
	ld [hl], a
	rrca
	rrca
	and $3
	ld d, a
	call GetSpriteDirection
	or $0
	or d
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 44e4

Function44e4: ; 44e4
	ld hl, OBJECT_04
	add hl, bc
	bit 3, [hl]
	jp nz, Function44aa
	ld hl, OBJECT_12
	add hl, bc
	ld a, [hl]
	add $2
	and $f
	ld [hl], a
	rrca
	rrca
	and $3
	ld d, a
	call GetSpriteDirection
	or $0
	or d
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 4508

Function4508: ; 4508
	ld hl, OBJECT_04
	add hl, bc
	bit 3, [hl]
	jp nz, Function44aa
	ld hl, OBJECT_12
	add hl, bc
	inc [hl]
	ld a, [hl]
	rrca
	rrca
	rrca
	and $3
	ld d, a
	call GetSpriteDirection
	or $0
	or d
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 4529

Function4529: ; 4529
	call Function453f
	ld hl, OBJECT_08
	add hl, bc
	ld a, [hl]
	or $0
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 4539

Function4539: ; 4539
	call Function453f
	jp Function44a3
; 453f

Function453f: ; 453f
	ld hl, OBJECT_12
	add hl, bc
	ld a, [hl]
	and $f0
	ld e, a
	ld a, [hl]
	inc a
	and $f
	ld d, a
	cp $4
	jr c, .asm_4558
	ld d, 0
	ld a, e
	add $10
	and $30
	ld e, a

.asm_4558
	ld a, d
	or e
	ld [hl], a
	swap e
	ld d, 0
	ld hl, .Directions
	add hl, de
	ld a, [hl]
	ld hl, OBJECT_08
	add hl, bc
	ld [hl], a
	ret
; 456a

.Directions ; 456a
	db $00, $0c, $04, $08
; 456e

Function456e: ; 456e
	call GetSpriteDirection
	rrca
	rrca
	add $10
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 457b

Function457b: ; 457b
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $15
	ret
; 4582

Function4582: ; 4582
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $14
	ret
; 4589

Function4589: ; 4589
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $17
	ret
; 4590

Function4590: ; 4590
	ld hl, OBJECT_12
	add hl, bc
	ld a, [hl]
	inc a
	and $f
	ld [hl], a
	and $8
	jr z, Function45a4
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $4
	ret
; 45a4

Function45a4: ; 45a4
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $0
	ret
; 45ab

Function45ab: ; 45ab
	ld hl, OBJECT_12
	add hl, bc
	ld a, [hl]
	inc a
	ld [hl], a
	and $c
	rrca
	rrca
	add $18
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], a
	ret
; 45be

Function45be: ; 45be
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $16
	ret
; 45c5

Function45c5: ; 45c5
	ld a, [VariableSprites + 3]
	ld d, $17
	cp $33
	jr z, .asm_45d4
	cp $47
	jr z, .asm_45d4
	ld d, $16

.asm_45d4
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], d
	ret
; 45da

Function45da: ; 45da
	ld hl, OBJECT_12
	add hl, bc
	inc [hl]
	ld a, [hl]

	ld hl, OBJECT_FACING
	add hl, bc
	and 2
	ld a, $1c
	jr z, .asm_45eb
	inc a
.asm_45eb
	ld [hl], a
	ret
; 45ed

Function45ed: ; 45ed
	ld hl, OBJECT_12
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld hl, OBJECT_FACING
	add hl, bc
	and 4
	ld a, $1e
	jr z, .asm_45fe
	inc a

.asm_45fe
	ld [hl], a
	ret
; 4600

Function4600: ; 4600

	ld hl, OBJECT_MAP_X
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_NEXT_MAP_X
	add hl, bc
	ld [hl], a

	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_NEXT_MAP_Y
	add hl, bc
	ld [hl], a

	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_NEXT_TILE
	add hl, bc
	ld [hl], a

	call Function4661
	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld a, [hl]

	call Function4679
	ret
; 462a

Function462a: ; 462a

	ld hl, OBJECT_NEXT_MAP_X
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld [hl], a

	ld hl, OBJECT_NEXT_MAP_Y
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld [hl], a

	ret
; 463f

Function463f: ; 463f
	ld hl, OBJECT_FLAGS
	add hl, bc
	bit 3, [hl]
	jr z, .asm_464f
	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld a, [hl]
	call Function4661

.asm_464f
	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld a, [hl]
	call Function4679
	ret c
	ld hl, OBJECT_NEXT_TILE
	add hl, bc
	ld a, [hl]
	call Function4679
	ret
; 4661

Function4661: ; 4661
	call Function188e
	jr z, .asm_466b
	call Function1875
	jr c, .asm_4672

.asm_466b
	ld hl, OBJECT_FLAGS
	add hl, bc
	set 3, [hl]
	ret

.asm_4672
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 3, [hl]
	ret
; 4679

Function4679: ; 4679
	and a
	ret
; 467b

Function467b: ; 467b
	xor a
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_27
	add hl, bc
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ret
; 4690

Function4690: ; 4690
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_04
	add hl, bc
	bit 2, [hl]
	jr nz, .asm_46a6

	add a
	add a
	and $c
	ld hl, OBJECT_08
	add hl, bc
	ld [hl], a

.asm_46a6
	; fallthrough
; 46a6

Function46a6: ; 46a6

	call GetStepVector

	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], a

	ld a, d
	call Function4730
	ld hl, OBJECT_NEXT_MAP_X
	add hl, bc
	add [hl]
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld [hl], a
	ld d, a

	ld a, e
	call Function4730
	ld hl, OBJECT_NEXT_MAP_Y
	add hl, bc
	add [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld [hl], a
	ld e, a

	push bc
	call Function2a3c
	pop bc

	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld [hl], a

	ret
; 46d7

Function46d7: ; 46d7

	call GetStepVector

	ld hl, OBJECT_SPRITE_X
	add hl, bc
	ld a, [hl]
	add d
	ld [hl], a

	ld hl, OBJECT_SPRITE_Y
	add hl, bc
	ld a, [hl]
	add e
	ld [hl], a

	ret
; 46e9

GetStepVector: ; 46e9
; Return (x, y, duration, speed) in (d, e, a, h).
	ld hl, OBJECT_07
	add hl, bc
	ld a, [hl]
	and $f
	add a
	add a
	ld l, a
	ld h, 0
	ld de, StepVectors
	add hl, de
	ld d, [hl]
	inc hl
	ld e, [hl]
	inc hl
	ld a, [hli]
	ld h, [hl]
	ret
; 4700

StepVectors: ; 4700
; x,  y, duration, speed
	; slow
	db  0,  1, 16, 1
	db  0, -1, 16, 1
	db -1,  0, 16, 1
	db  1,  0, 16, 1
	; normal
	db  0,  2,  8, 2
	db  0, -2,  8, 2
	db -2,  0,  8, 2
	db  2,  0,  8, 2
	; fast
	db  0,  4,  4, 4
	db  0, -4,  4, 4
	db -4,  0,  4, 4
	db  4,  0,  4, 4
; 4730

Function4730: ; 4730
	add a
	ret z
	ld a, 1
	ret nc
	ld a, -1
	ret
; 4738

Function4738: ; 4738
	ld hl, OBJECT_07
	add hl, bc
	ld a, [hl]
	and $3
	ld [wd151], a
	call Function46d7
	ld a, [wd14e]
	add d
	ld [wd14e], a
	ld a, [wd14f]
	add e
	ld [wd14f], a
	ld hl, wd150
	set 5, [hl]
	ret
; 4759

Function4759: ; 4759
	push bc
	ld e, a
	ld d, 0
	ld hl, OBJECT_01
	add hl, bc
	ld a, [hl]
	call GetMapObject
	add hl, de
	ld a, [hl]
	pop bc
	ret
; 4769

Function4769: ; 4769
	ld hl, OBJECT_01
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_477d
	push bc
	call GetMapObject
	ld hl, $0004
	add hl, bc
	ld a, [hl]
	pop bc
	ret

.asm_477d
	ld a, $6
	ret
; 4780

Function4780: ; 4780
	ld hl, OBJECT_27
	add hl, bc
	ld [hl], $0
	ret
; 4787

Function4787: ; 4787
	ld hl, OBJECT_27
	add hl, bc
	inc [hl]
	ret
; 478d

Function478d: ; 478d
	ld hl, OBJECT_27
	add hl, bc
	dec [hl]
	ret
; 4793

Function4793: ; 4793
	ld hl, OBJECT_27
	add hl, bc
	ld a, [hl]
	pop hl
	rst JumpTable
	ret
; 479b

Function479b: ; 479b
	ld hl, OBJECT_28
	add hl, bc
	ld [hl], $0
	ret
; 47a2

Function47a2: ; 47a2
	ld hl, OBJECT_28
	add hl, bc
	inc [hl]
	ret
; 47a8

Function47a8: ; 47a8
	ld hl, OBJECT_28
	add hl, bc
	ld a, [hl]
	pop hl
	rst JumpTable
	ret
; 47b0

Function47b0: ; 47b0
	ld hl, OBJECT_28
	add hl, bc
	ld a, [hl]
	ret
; 47b6

Function47b6: ; 47b6
	ld hl, OBJECT_28
	add hl, bc
	ld [hl], a
	ret
; 47bc

Function47bc: ; 47bc
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld d, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld e, [hl]
	push bc
	call Function2a3c
	pop bc
	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld [hl], a
	call Function4600
	call Function467b
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 47dd

Function47dd: ; 47dd
	call Function479b
	call Function1a2f
	ld a, [hl]
	ld hl, .Pointers
	rst JumpTable
	ret
; 47e9

.Pointers ; 47e9
	dw Function4821
	dw Function4822
	dw Function482c
	dw Function4838
	dw Function4842
	dw Function4851
	dw Function4869
	dw Function487c
	dw Function4882
	dw Function4888
	dw Function488e
	dw Function4891
	dw Function4894
	dw Function4897
	dw Function489d
	dw Function48a0
	dw Function48a6
	dw Function48ac
	dw Function48ff
	dw Function49e5
	dw Function4a21
	dw Function4958
	dw Function496e
	dw Function4abc
	dw Function498d
	dw Function4984
	dw Function4a46
	dw Function4a89
; 4821

Function4821: ; 4821
	ret
; 4822

Function4822: ; 4822
	call Random
	ld a, [hRandomAdd]
	and 1
	jp Function4af0
; 482c

Function482c: ; 482c
	call Random
	ld a, [hRandomAdd]
	and 1
	or 2
	jp Function4af0
; 4838

Function4838: ; 4838
	call Random
	ld a, [hRandomAdd]
	and 3
	jp Function4af0
; 4842

Function4842: ; 4842
	call Random
	ld a, [hRandomAdd]
	and $c
	ld hl, OBJECT_08
	add hl, bc
	ld [hl], a
	jp Function4b1d
; 4851

Function4851: ; 4851
	ld hl, OBJECT_08
	add hl, bc
	ld a, [hl]
	and $c
	ld d, a
	call Random
	ld a, [hRandomAdd]
	and $c
	cp d
	jr nz, .asm_4865
	xor $c

.asm_4865
	ld [hl], a
	jp Function4b26
; 4869

Function4869: ; 4869
	call Function462a
	call Function467b
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $1
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $5
	ret
; 487c

Function487c: ; 487c
	ld hl, Function5000
	jp Function5041
; 4882

Function4882: ; 4882
	ld hl, Function5015
	jp Function5041
; 4888

Function4888: ; 4888
	ld hl, Function5026
	jp Function5041
; 488e

Function488e: ; 488e
	jp Function5037
; 4891

Function4891: ; 4891
	jp Function5037
; 4894

Function4894: ; 4894
	jp Function5037
; 4897

Function4897: ; 4897
	ld hl, Function5000
	jp Function5041
; 489d

Function489d: ; 489d
	jp Function5037
; 48a0

Function48a0: ; 48a0
	ld hl, Function54e6
	jp Function5041
; 48a6

Function48a6: ; 48a6
	ld hl, Function500e
	jp Function5041
; 48ac

Function48ac: ; 48ac
	call Function4793
	dw Function48b3
	dw Function48f8
; 48b3

Function48b3: ; 48b3
	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld a, [hl]
	call CheckPitTile
	jr z, .asm_48f5
	ld hl, OBJECT_FLAGS
	add hl, bc
	bit 2, [hl]
	res 2, [hl]
	jr z, .asm_48ee
	ld hl, OBJECT_32
	add hl, bc
	ld a, [hl]
	and $3
	or $0
	call Function4690
	call Function6ec1
	jr c, .asm_48eb
	ld de, SFX_STRENGTH
	call PlaySFX
	call Function5538
	call Function463f
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $f
	ret

.asm_48eb
	call Function462a

.asm_48ee
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ret

.asm_48f5
	call Function4787
	; fallthrough
; 48f8

Function48f8: ; 48f8
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ret
; 48ff

Function48ff: ; 48ff
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld d, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld e, [hl]
	ld hl, OBJECT_32
	add hl, bc
	ld a, [hl]
	push bc
	call Function1ae5
	ld hl, OBJECT_07
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_494a
	ld hl, OBJECT_NEXT_MAP_X
	add hl, bc
	ld a, [hl]
	cp d
	jr z, .asm_492d
	jr c, .asm_4929
	ld a, $3
	jr .asm_493d

.asm_4929
	ld a, $2
	jr .asm_493d

.asm_492d
	ld hl, OBJECT_NEXT_MAP_Y
	add hl, bc
	ld a, [hl]
	cp e
	jr z, .asm_494a
	jr c, .asm_493b
	ld a, $0
	jr .asm_493d

.asm_493b
	ld a, $1

.asm_493d
	ld d, a
	ld hl, OBJECT_07
	add hl, bc
	ld a, [hl]
	and $c
	or d
	pop bc
	jp Function5412

.asm_494a
	pop bc
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $1
	ret
; 4958

Function4958: ; 4958
	call Function467b
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $9
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $4
	ret
; 496e

Function496e: ; 496e
	call Function467b
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $a
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $4
	ret
; 4984

Function4984: ; 4984
	call Function4793
	dw Function4996
	dw Function499c
	dw Function49b8
; 498d

Function498d: ; 498d
	call Function4793
	dw Function4996
	dw Function499c
	dw Function49c4
; 4996

Function4996: ; 4996
	call Function467b
	call Function4787
	; fallthrough
; 499c

Function499c: ; 499c
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $1
	ld hl, OBJECT_32
	add hl, bc
	ld a, [hl]
	ld a, $10
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $3
	call Function4787
	ret
; 49b8

Function49b8: ; 49b8
	ld de, .data_49c0
	call Function49d0
	jr Function4984
; 49c0

.data_49c0 ; 49c0
	db $0c, $08, $00, $04
; 49c4

Function49c4: ; 49c4
	ld de, .data_49cc
	call Function49d0
	jr Function498d
; 49cc

.data_49cc ; 49cc
	db $08, $0c, $04, $00
; 49d0

Function49d0: ; 49d0
	ld hl, OBJECT_08
	add hl, bc
	ld a, [hl]
	and $c
	rrca
	rrca
	push hl
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hl]
	pop hl
	ld [hl], a
	call Function478d
	ret
; 49e5

Function49e5: ; 49e5
	call Function4aa8
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $7
	ld hl, OBJECT_STEP_DURATION
	add hl, de
	ld a, [hl]
	inc a
	add a
	add $0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_07
	add hl, de
	ld a, [hl]
	and 3
	ld d, $e
	cp 0
	jr z, .asm_4a0f
	cp 1
	jr z, .asm_4a0f
	ld d, $c

.asm_4a0f
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], d
	ld hl, OBJECT_SPRITE_X_OFFSET
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $13
	ret
; 4a21

Function4a21: ; 4a21
	call Function467b
	call Function4aa8
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $8
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], $f0
	ld hl, OBJECT_SPRITE_X_OFFSET
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $13
	ret
; 4a46

Function4a46: ; 4a46
	call Function467b
	call Function4aa8
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $e
	ld hl, OBJECT_STEP_DURATION
	add hl, de
	ld a, [hl]
	inc a
	add a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_07
	add hl, de
	ld a, [hl]
	and 3
	ld e, a
	ld d, 0
	ld hl, .data_4a81
	add hl, de
	add hl, de
	ld d, [hl]
	inc hl
	ld e, [hl]
	ld hl, OBJECT_SPRITE_X_OFFSET
	add hl, bc
	ld [hl], d
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], e
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $13
	ret
; 4a81

.data_4a81  ; 4a81
	;   x,  y
	db  0, -4
	db  0,  8
	db  6,  2
	db -6,  2
; 4a89

Function4a89: ; 4a89
	call Function467b
	call Function4aa8
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $f
	ld hl, OBJECT_STEP_DURATION
	add hl, de
	ld a, [hl]
	add $ff
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $13
	ret
; 4aa8

Function4aa8: ; 4aa8
	ld hl, OBJECT_32
	add hl, bc
	ld a, [hl]
	push bc
	call Function1ae5
	ld d, b
	ld e, c
	pop bc
	ld hl, OBJECT_29
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ret
; 4abc

Function4abc: ; 4abc
	call Function467b
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_32
	add hl, bc
	ld a, [hl]
	call Function4ade
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], e
	ld hl, OBJECT_30
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $15
	ret
; 4ade

Function4ade: ; 4ade
	ld d, a
	and $3f
	ld e, a
	ld a, d
	rlca
	rlca
	and $3
	ld d, a
	inc d
	ld a, $1
.asm_4aeb
	dec d
	ret z
	add a
	jr .asm_4aeb
; 4af0

Function4af0: ; 4af0
	call Function4690
	call Function6ec1
	jr c, Function4b17
	call Function463f
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $2
	ld hl, wd4cf
	ld a, [$ffaf]
	cp [hl]
	jr z, .asm_4b10
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $7
	ret

.asm_4b10
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $6
	ret

Function4b17: ; 4b17
	call Function467b
	call Function462a
	; fallthrough
; 4b1d

Function4b1d: ; 4b1d
	call Random
	ld a, [hRandomAdd]
	and $7f
	jr Function4b2d
; 4b26

Function4b26: ; 4b26
	call Random
	ld a, [hRandomAdd]
	and $1f
	; fallthrough
; 4b2d

Function4b2d: ; 4b2d
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $1
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $3
	ret
; 4b45

Pointers4b45: ; 4b45
	dw Function47bc
	dw Function47dd
	dw Function4e2b
	dw Function4ddd
	dw Function4e21
	dw Function4e0c
	dw Function4e56
	dw Function4e47
	dw Function4b86
	dw Function4bbf
	dw Function4e83
	dw Function4dff
	dw Function4c18
	dw Function4c89
	dw Function4d14
	dw Function4ecd
	dw Function4d7e
	dw Function4daf
	dw Function4dc8
	dw Function4f04
	dw Function4f33
	dw Function4f33
	dw Function4f77
	dw Function4f7a
	dw Function4df0
	dw Function4f83
; 4b79

Function4b79: ; 4b79
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4b86

Function4b86: ; 4b86
	call Function47a8
	dw Function4b8d
	dw Function4ba9
; 4b8d

Function4b8d: ; 4b8d
	call Function46d7
	call UpdateJumpPosition
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	call Function46a6
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 3, [hl]
	call Function47a2
	ret
; 4ba9

Function4ba9: ; 4ba9
	call Function46d7
	call UpdateJumpPosition
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4bbf

Function4bbf: ; 4bbf
	call Function47a8
	dw Function4bca
	dw Function4bd2
	dw Function4bf2
	dw Function4bfd
; 4bca

Function4bca: ; 4bca
	ld hl, wd150
	set 7, [hl]
	call Function47a2
;	fallthrough
; 4bd2

Function4bd2: ; 4bd2
	call UpdateJumpPosition
	call Function4738
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 3, [hl]
	ld hl, wd150
	set 6, [hl]
	set 4, [hl]
	call Function47a2
	ret
; 4bf2

Function4bf2: ; 4bf2
	call Function46a6
	ld hl, wd150
	set 7, [hl]
	call Function47a2
;	fallthrough
; 4bfd

Function4bfd: ; 4bfd
	call UpdateJumpPosition
	call Function4738
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, wd150
	set 6, [hl]
	call Function4600
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4c18

Function4c18: ; 4c18
	call Function47a8
	dw Function4c23
	dw Function4c32
	dw Function4c42
	dw Function4c5d
; 4c23

Function4c23: ; 4c23
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
;	fallthrough
; 4c32

Function4c32: ; 4c32
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $4
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
	ret
; 4c42

Function4c42: ; 4c42
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_31
	add hl, bc
	ld [hl], $10
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 3, [hl]
	call Function47a2
;	fallthrough
; 4c5d

Function4c5d: ; 4c5d
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $4
	ld hl, OBJECT_31
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld d, $60
	call Sine
	ld a, h
	sub $60
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4c89

Function4c89: ; 4c89
	call Function47a8
	dw Function4c9a
	dw Function4caa
	dw Function4cb3
	dw Function4cc9
	dw Function4ceb
	dw Function4cf5
	dw Function4d01
; 4c9a

Function4c9a: ; 4c9a
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
	ret
; 4caa

Function4caa: ; 4caa
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
;	fallthrough
; 4cb3

Function4cb3: ; 4cb3
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_31
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
	ret
; 4cc9

Function4cc9: ; 4cc9
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $4
	ld hl, OBJECT_31
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld d, $60
	call Sine
	ld a, h
	sub $60
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
;	fallthrough
; 4ceb

Function4ceb: ; 4ceb
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
	ret
; 4cf5

Function4cf5: ; 4cf5
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $4
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
; 4d01

Function4d01: ; 4d01
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4d14

Function4d14: ; 4d14
	call Function47a8
	dw Function4d1f
	dw Function4d2e
	dw Function4d4f
	dw Function4d6b
; 4d1f

Function4d1f: ; 4d1f
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
;	fallthrough
; 4d2e

Function4d2e: ; 4d2e
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $2
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_31
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
;	fallthrough
; 4d4f

Function4d4f: ; 4d4f
	ld hl, OBJECT_31
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld d, $60
	call Sine
	ld a, h
	sub $60
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
;	fallthrough
; 4d6b

Function4d6b: ; 4d6b
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4d7e

Function4d7e: ; 4d7e
	call Function47a8
	dw Function4d85
	dw Function4d94
; 4d85

Function4d85: ; 4d85
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $8
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], $0
	call Function47a2
	; fallthrough
; 4d94

Function4d94: ; 4d94
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld a, [hl]
	xor 1
	ld [hl], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4daf

Function4daf: ; 4daf
	call Function4db5
	jp Function4b79
; 4db5

Function4db5: ; 4db5
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld a, [hl]
	and $1
	ld a, $1
	jr z, .asm_4dc2
	ld a, $0

.asm_4dc2
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], a
	ret
; 4dc8

Function4dc8: ; 4dc8
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld a, [hl]
	and $1
	ld a, $4
	jr z, .asm_4dd5
	ld a, $5

.asm_4dd5
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], a
	jp Function4b79
; 4ddd

Function4ddd: ; 4ddd
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4df0

Function4df0: ; 4df0
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	jp Function4357
; 4dff

Function4dff: ; 4dff
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4e0c

Function4e0c: ; 4e0c
	call Function47a8
	dw Function4e13
	dw Function4e21
; 4e13

Function4e13: ; 4e13
	call Function4769
	call Function1a47
	ld hl, OBJECT_08
	add hl, bc
	ld [hl], a
	call Function47a2
	; fallthrough
; 4e21

Function4e21: ; 4e21
	call Function4fb2
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ret
; 4e2b

Function4e2b: ; 4e2b
	call Function4fb2
	call Function46d7
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4e47

Function4e47: ; 4e47
	call Function46d7
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	jp Function4b1d
; 4e56

Function4e56: ; 4e56
; AnimateStep?
	call Function47a8
	dw Function4e5d
	dw Function4e65
; 4e5d

Function4e5d: ; 4e5d
	ld hl, wd150
	set 7, [hl]
	call Function47a2
	; fallthrough
; 4e65

Function4e65: ; 4e65
	call Function4738
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, wd150
	set 6, [hl]
	call Function4600
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4e83

Function4e83: ; 4e83
	call Function47a8
	dw Function4e8e
	dw Function4ea4
	dw Function4ead
	dw Function4ec0
; 4e8e

Function4e8e: ; 4e8e
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_12
	add hl, bc
	ld a, [hl]
	ld [hl], $2
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $2
	call Function47a2
	; fallthrough
; 4ea4

Function4ea4: ; 4ea4
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
	; fallthrough
; 4ead

Function4ead: ; 4ead
	ld hl, OBJECT_29
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_08
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $2
	call Function47a2
	; fallthrough
; 4ec0

Function4ec0: ; 4ec0
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4ecd

Function4ecd: ; 4ecd
	call Function46d7
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	push bc
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld d, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld e, [hl]
	ld hl, OBJECT_01
	add hl, bc
	ld a, [hl]
	ld b, a
	callba Function807e
	pop bc
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 2, [hl]
	call Function4600
	ld hl, OBJECT_07
	add hl, bc
	ld [hl], $ff
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4f04

Function4f04: ; 4f04
	ld hl, OBJECT_29
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, OBJECT_00
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_4f30
	ld hl, OBJECT_SPRITE_X
	add hl, de
	ld a, [hl]
	ld hl, OBJECT_SPRITE_X
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_SPRITE_Y
	add hl, de
	ld a, [hl]
	ld hl, OBJECT_SPRITE_Y
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ret nz

.asm_4f30
	jp Function4357
; 4f33

Function4f33: ; 4f33
	call Function47a8
	dw Function4f3a
	dw Function4f43
; 4f3a

Function4f3a: ; 4f3a
	xor a
	ld hl, OBJECT_29
	add hl, bc
	ld [hl], a
	call Function47a2
	; fallthrough
; 4f43

Function4f43: ; 4f43
	ld hl, OBJECT_29
	add hl, bc
	ld d, [hl]
	ld a, [wd14f]
	sub d
	ld [wd14f], a
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	jr z, .asm_4f68
	ld a, [hl]
	call Function4f6c
	ld hl, OBJECT_29
	add hl, bc
	ld [hl], a
	ld d, a
	ld a, [wd14f]
	add d
	ld [wd14f], a
	ret

.asm_4f68
	call Function4357
	ret
; 4f6c

Function4f6c: ; 4f6c
	ld hl, OBJECT_30
	add hl, bc
	and 1
	ld a, [hl]
	ret z
	cpl
	inc a
	ret
; 4f77

Function4f77: ; 4f77
	call Function47a8 ; ????
; 4f7a

Function4f7a: ; 4f7a
	call Function47a8
	dw Function4f83
	dw Function4f83
	dw Function4f83
; 4f83

Function4f83: ; 4f83
	call Function47a8
	dw Function4f8a
	dw Function4f99
; 4f8a

Function4f8a: ; 4f8a
	ld hl, OBJECT_11
	add hl, bc
	ld [hl], $10
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	ld [hl], $10
	call Function47a2
; 4f99

Function4f99: ; 4f99
	ld hl, OBJECT_STEP_DURATION
	add hl, bc
	dec [hl]
	ret nz
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], $60
	ld hl, OBJECT_12
	add hl, bc
	ld [hl], $0
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $1
	ret
; 4fb2

Function4fb2: ; 4fb2
	ret
; 4fb3

Function4fb3: ; 4fb3
	ld hl, OBJECT_29
	add hl, bc
	inc [hl]
	ld a, [hl]
	srl a
	srl a
	and 7
	ld l, a
	ld h, 0
	ld de, .y
	add hl, de
	ld a, [hl]
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], a
	ret
; 4fcd

.y ; 4fcd
	db 0, -1, -2, -3, -4, -3, -2, -1
; 4fd5

UpdateJumpPosition: ; 4fd5
	call GetStepVector
	ld a, h
	ld hl, OBJECT_31
	add hl, bc
	ld e, [hl]
	add e
	ld [hl], a
	nop
	srl e
	ld d, 0
	ld hl, .y
	add hl, de
	ld a, [hl]
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld [hl], a
	ret
; 4ff0

.y ; 4ff0
	db  -4,  -6,  -8, -10, -11, -12, -12, -12
	db -11, -10,  -9,  -8,  -6,  -4,   0,   0
; 5000

Function5000: ; 5000
	ld a, [wc2de]
	ld hl, wc2df
	ld [hl], a
	ld a, $3e
	ld [wc2de], a
	ld a, [hl]
	ret
; 500e

Function500e: ; 500e
	ld hl, wc2e3
	call Function1aae
	ret
; 5015

Function5015: ; 5015
	ld hl, OBJECT_27
	add hl, bc
	ld e, [hl]
	inc [hl]
	ld d, 0
	ld hl, wc2e2
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ld a, [hl]
	ret
; 5026

Function5026: ; 5026
	ld hl, OBJECT_27
	add hl, bc
	ld e, [hl]
	inc [hl]
	ld d, 0
	ld hl, wc2e6
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ld a, [hl]
	ret
; 5037

Function5037: ; 5037
	ld hl, Function503d
	jp Function5041
; 503d

Function503d: ; 503d
	ld a, [wc2e2]
	ret
; 5041

Function5041: ; 5041
	call Function5055
.asm_5044
	xor a
	ld [wc2ea], a
	call Function505e
	call Function506b
	ld a, [wc2ea]
	and a
	jr nz, .asm_5044
	ret
; 5055

Function5055: ; 5055
	ld a, l
	ld [wc2eb], a
	ld a, h
	ld [wc2ec], a
	ret
; 505e

Function505e: ; 505e
	ld hl, wc2eb
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 5065

Function5065: ; 5065
	ld a, $1
	ld [wc2ea], a
	ret
; 506b

Function506b: ; 506b
	push af
	call Function54b8
	pop af
	ld hl, MovementPointers
	rst JumpTable
	ret
; 5075


; 5075
INCLUDE "engine/movement.asm"
; 54b8


Function54b8: ; 54b8
	ld e, a
	ld a, [wd4ce]
	cp $ff
	ret z
	ld a, [wd4cd]
	ld d, a
	ld a, [$ffaf]
	cp d
	ret nz
	ld a, e
	cp $3e
	ret z
	cp $47
	ret z
	cp $4b
	ret z
	cp $50
	ret z
	cp $8
	ret c
	push af
	ld hl, wd4d0
	inc [hl]
	ld e, [hl]
	ld d, 0
	ld hl, wd4d1
	add hl, de
	pop af
	ld [hl], a
	ret
; 54e6

Function54e6: ; 54e6
	ld hl, wd4d0
	ld a, [hl]
	and a
	jr z, .asm_5503
	cp $ff
	jr z, .asm_5503
	dec [hl]
	ld e, a
	ld d, 0
	ld hl, wd4d1
	add hl, de
	inc e
	ld a, $ff
.asm_54fc
	ld d, [hl]
	ld [hld], a
	ld a, d
	dec e
	jr nz, .asm_54fc
	ret

.asm_5503
	call Function550a
	ret c
	ld a, $3e
	ret
; 550a

Function550a: ; 550a
	ld a, [wd4cd]
	cp $ff
	jr z, .asm_5520
	push bc
	call Function1ae5
	ld hl, OBJECT_00
	add hl, bc
	ld a, [hl]
	pop bc
	and a
	jr z, .asm_5520
	and a
	ret

.asm_5520
	ld a, $ff
	ld [wd4ce], a
	ld a, $47
	scf
	ret
; 5529

Function5529: ; 5529
	push bc
	ld de, .data_5535
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5535
	db $00, $05, $1b
; 5538

Function5538: ; 5538
	push bc
	ld de, .data_5544
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5544
	db $00, $05, $22
; 5547

Function5547: ; 5547
	push bc
	ld de, .data_5553
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5553
	db $00, $05, $1c
; 5556

Function5556: ; 5556
	push bc
	ld de, .data_5562
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5562
	db $00, $06, $23
; 5565

Function5565: ; 5565
	push bc
	push af
	ld de, .data_5576
	call Function55b9
	pop af
	ld [wc2f5], a
	call Function55ac
	pop bc
	ret

.data_5576
	db $00, $05, $1d
; 5579

Function5579: ; 5579
	push bc
	ld a, [$ffaf]
	ld c, a
	call Function5582
	pop bc
	ret
; 5582

Function5582: ; 5582
	ld de, ObjectStructs
	ld a, $d
.asm_5587
	push af
	ld hl, OBJECT_04
	add hl, de
	bit 7, [hl]
	jr z, .asm_55a1
	ld hl, OBJECT_00
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_55a1
	push bc
	xor a
	ld bc, ObjectStruct2 - ObjectStruct1
	call ByteFill
	pop bc

.asm_55a1
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, de
	ld d, h
	ld e, l
	pop af
	dec a
	jr nz, .asm_5587
	ret
; 55ac

Function55ac: ; 55ac
	call Function1a13
	ret nc
	ld d, h
	ld e, l
	callba Function8286
	ret
; 55b9

Function55b9: ; 55b9
	ld hl, wc2f0
	ld [hl], $ff
	inc hl
	ld [hl], $ff
	inc hl
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hli], a
	ld a, [$ffaf]
	ld [hli], a
	push hl
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld d, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld e, [hl]
	pop hl
	ld [hl], d
	inc hl
	ld [hl], e
	inc hl
	ld [hl], $ff
	ret
; 55e0

Function55e0:: ; 55e0
	ld a, [VramState]
	bit 0, a
	ret z
	ld bc, ObjectStructs
	xor a
.asm_55ea
	ld [$ffaf], a
	call Function1af1
	jr z, .asm_55f4
	call Function565c

.asm_55f4
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	ld a, [$ffaf]
	inc a
	cp $d
	jr nz, .asm_55ea
	ret
; 5602

Function5602: ; 5602
	call Function5645
	ld a, $0
	call Function5629
	ld a, [wd459]
	bit 7, a
	jr z, .asm_5619
	ld a, [$ffe0]
	and a
	jr z, .asm_5619
	call Function5629

.asm_5619
	call Function5920
	ret
; 561d

Function561d: ; 561d
	call Function5645
	ld a, $0
	call Function5629
	call Function5920
	ret
; 5629

Function5629: ; 5629
	cp $10
	ret nc
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $ff
	ret z
	cp $d
	ret nc
	call Function1ae5
	call Function1af1
	ret z
	call Function5673
	ret
; 5645

Function5645: ; 5645
	xor a
	ld bc, ObjectStructs
.asm_5649
	ld [$ffaf], a
	call Function5680
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	ld a, [$ffaf]
	inc a
	cp $d
	jr nz, .asm_5649
	ret
; 565c

Function565c: ; 565c
	push bc
	call Function56cd
	pop bc
	jr c, Function5680
	call Function56a3
	jr c, Function5680
	call Function5688
	callba Function4440
	xor a
	ret
; 5673

Function5673: ; 5673
	call Function56a3
	jr c, Function5680
	callba Function4440
	xor a
	ret
; 5680

Function5680: ; 5680
	ld hl, OBJECT_FACING
	add hl, bc
	ld [hl], $ff
	scf
	ret
; 5688

Function5688: ; 5688
	push bc
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld d, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld e, [hl]
	call Function2a3c
	pop bc
	ld hl, OBJECT_STANDING_TILE
	add hl, bc
	ld [hl], a
	callba Function463f
	ret
; 56a3

Function56a3: ; 56a3
	ld hl, OBJECT_MAP_X
	add hl, bc
	ld d, [hl]
	ld hl, OBJECT_MAP_Y
	add hl, bc
	ld e, [hl]
	inc d
	inc e
	ld a, [XCoord]
	cp d
	jr z, .asm_56bc
	jr nc, .asm_56cb
	add $b
	cp d
	jr c, .asm_56cb

.asm_56bc
	ld a, [YCoord]
	cp e
	jr z, .asm_56c9
	jr nc, .asm_56cb
	add $a
	cp e
	jr c, .asm_56cb

.asm_56c9
	xor a
	ret

.asm_56cb
	scf
	ret
; 56cd

Function56cd: ; 56cd
	ld a, [wd14c]
	ld d, a
	ld hl, OBJECT_SPRITE_X_OFFSET
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_SPRITE_X
	add hl, bc
	add [hl]
	add d
	cp $f0
	jr nc, .asm_56e5
	cp $a0
	jp nc, .asm_5768

.asm_56e5
	and $7
	ld d, $2
	cp $4
	jr c, .asm_56ef
	ld d, $3

.asm_56ef
	ld a, [hl]
	srl a
	srl a
	srl a
	cp $14
	jr c, .asm_56fc
	sub $20

.asm_56fc
	ld [$ffbd], a
	ld a, [wd14d]
	ld e, a
	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	ld a, [hl]
	ld hl, OBJECT_SPRITE_Y
	add hl, bc
	add [hl]
	add e
	cp $f0
	jr nc, .asm_5715
	cp $90
	jr nc, .asm_5768

.asm_5715
	and $7
	ld e, $2
	cp $4
	jr c, .asm_571f
	ld e, $3

.asm_571f
	ld a, [hl]
	srl a
	srl a
	srl a
	cp $12
	jr c, .asm_572c
	sub $20

.asm_572c
	ld [$ffbe], a
	ld hl, OBJECT_PALETTE
	add hl, bc
	bit 7, [hl]
	jr z, .asm_573e
	ld a, d
	add $2
	ld d, a
	ld a, e
	add $2
	ld e, a

.asm_573e
	ld a, d
	ld [$ffbf], a
.asm_5741
	ld a, [$ffbf]
	ld d, a
	ld a, [$ffbe]
	add e
	dec a
	cp $12
	jr nc, .asm_5763
	ld b, a
.asm_574d
	ld a, [$ffbd]
	add d
	dec a
	cp $14
	jr nc, .asm_5760
	ld c, a
	push bc
	call GetTileCoord
	pop bc
	ld a, [hl]
	cp $60
	jr nc, .asm_5768

.asm_5760
	dec d
	jr nz, .asm_574d

.asm_5763
	dec e
	jr nz, .asm_5741
	and a
	ret

.asm_5768
	scf
	ret
; 576a

Function576a:: ; 576a
	call Function5771
	call Function5781
	ret
; 5771

Function5771: ; 5771
	xor a
	ld [wd14e], a
	ld [wd14f], a
	ld [wd150], a
	ld a, $ff
	ld [wd151], a
	ret
; 5781

Function5781: ; 5781
	ld bc, ObjectStructs
	xor a
.asm_5785
	ld [$ffaf], a
	call Function1af1
	jr z, .asm_578f
	call Function437b

.asm_578f
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	ld a, [$ffaf]
	inc a
	cp $d
	jr nz, .asm_5785
	ret
; 579d

Function579d: ; 579d
	ld a, $3e
	ld [wc2de], a
	ld [wc2df], a
	xor a
	ld [wd04e], a
	ld [wd4e2], a
	call Function57bc
	callba Function149c6
	call c, Function57d9
	call Function57ca
	ret
; 57bc

Function57bc: ; 57bc
	ld hl, wd45b
	bit 7, [hl]
	jr nz, .asm_57c4
	ret

.asm_57c4
	ld a, $0
	ld [PlayerAction], a
	ret
; 57ca

Function57ca: ; 57ca
	ld hl, wd45b
	bit 5, [hl]
	ret z
	ld a, [wd45b]
	and $3
	add a
	add a
	jr Function57db
; 57d9

Function57d9: ; 57d9
	ld a, $0
	; fallthrough
; 57db

Function57db: ; 57db
	ld bc, PlayerStruct
	call Function1af8
	ret
; 57e2

Function57e2: ; 57e2
	ld a, d
	and $80
	ret z
	ld bc, $0000 ; debug?
	ld hl, OBJECT_08
	add hl, bc
	ld a, [hl]
	or d
	ld [hl], a
	ld a, d
	swap a
	and $7
	ld d, a
	ld bc, PlayerStruct
	ld hl, OBJECT_PALETTE
	add hl, bc
	ld a, [hl]
	and $f8
	or d
	ld [hl], a
	ret
; 5803

Function5803:: ; 5803
	push bc
	ld a, b
	call Function5815
	pop bc
	ret c
	ld a, c
	call Function582c
	callba Function848a
	ret
; 5815

Function5815: ; 5815
	call Function18de
	ret c
	ld a, [$ffb0]
	ld [wd4cd], a
	ret
; 581f

Function581f:: ; 581f
	call Function5826
	call Function5847
	ret
; 5826

Function5826: ; 5826
	ld a, $ff
	ld [wd4cd], a
	ret
; 582c

Function582c: ; 582c
	push af
	call Function5847
	pop af
	call Function18de
	ret c
	ld hl, OBJECT_03
	add hl, bc
	ld [hl], $13
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $0
	ld a, [$ffb0]
	ld [wd4ce], a
	ret
; 5847

Function5847: ; 5847
	ld a, [wd4ce]
	cp $ff
	ret z
	call Function1ae5
	callba Function58e3
	ld a, $ff
	ld [wd4ce], a
	ret
; 585c

Function585c:: ; 585c
	ld a, c
	call Function18de
	ret c
	push bc
	call Function587a
	pop bc
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 5, [hl]
	xor a
	ret
; 586e

Function586e: ; 586e
	call Function18de
	ret c
	ld hl, OBJECT_FLAGS
	add hl, bc
	set 5, [hl]
	xor a
	ret
; 587a

Function587a: ; 587a
	ld bc, ObjectStructs
	xor a
.asm_587e
	push af
	call Function1af1
	jr z, .asm_588a
	ld hl, OBJECT_FLAGS
	add hl, bc
	set 5, [hl]

.asm_588a
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	pop af
	inc a
	cp $d
	jr nz, .asm_587e
	ret
; 5897

Function5897:: ; 5897
	ld a, [wd4cd]
	cp $ff
	ret z
	push bc
	call Function1ae5
	ld hl, OBJECT_01
	add hl, bc
	ld a, [hl]
	pop bc
	cp c
	ret nz
	ld a, [wd4ce]
	cp $ff
	ret z
	call Function1ae5
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 5, [hl]
	ret
; 58b9

Function58b9:: ; 58b9
	push bc
	ld bc, ObjectStructs
	xor a
.asm_58be
	push af
	call Function1af1
	jr z, .asm_58ca
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 5, [hl]

.asm_58ca
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	pop af
	inc a
	cp $d
	jr nz, .asm_58be
	pop bc
	ret
; 58d8

Function58d8: ; 58d8
	call Function18de
	ret c
	ld hl, OBJECT_FLAGS
	add hl, bc
	res 5, [hl]
	ret
; 58e3

Function58e3: ; 58e3
	ld hl, OBJECT_01
	add hl, bc
	ld a, [hl]
	cp $ff
	jp z, Function5903
	push bc
	call GetMapObject
	ld hl, $0004
	add hl, bc
	ld a, [hl]
	pop bc
	ld hl, OBJECT_03
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $0
	ret
; 5903

Function5903: ; 5903
	call GetSpriteDirection
	rrca
	rrca
	ld e, a
	ld d, 0
	ld hl, .data_591c
	add hl, de
	ld a, [hl]
	ld hl, OBJECT_03
	add hl, bc
	ld [hl], a
	ld hl, OBJECT_09
	add hl, bc
	ld [hl], $0
	ret

.data_591c
	db 6, 7, 8, 9
; 5920

Function5920:: ; 5920
	ld a, [VramState]
	bit 0, a
	ret z
	xor a
	ld [$ffbd], a
	ld a, [hOAMUpdate]
	push af
	ld a, $1
	ld [hOAMUpdate], a
	call Function5991
	call Function593a
	pop af
	ld [hOAMUpdate], a
	ret
; 593a

Function593a: ; 593a
	ld a, [VramState]
	bit 1, a
	ld b, $a0
	jr z, .asm_5945
	ld b, $70

.asm_5945
	ld a, [$ffbd]
	cp b
	ret nc
	ld l, a
	ld h, $c4
	ld de, OBJECT_04
	ld a, b
	ld c, $a0
.asm_5952
	ld [hl], c
	add hl, de
	cp l
	jr nz, .asm_5952
	ret
; 5958

Function5958: ; 5958
	push hl
	push de
	push bc
	ld a, [wd14c]
	ld d, a
	ld a, [wd14d]
	ld e, a
	ld bc, ObjectStructs
	ld a, $d

.asm_5968
	push af
	call Function1af1
	jr z, .asm_597c

	ld hl, OBJECT_SPRITE_X
	add hl, bc
	ld a, [hl]
	add d
	ld [hl], a

	ld hl, OBJECT_SPRITE_Y
	add hl, bc
	ld a, [hl]
	add e
	ld [hl], a

.asm_597c
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	pop af
	dec a
	jr nz, .asm_5968

	xor a
	ld [wd14c], a
	ld [wd14d], a
	pop bc
	pop de
	pop hl
	ret
; 5991

Function5991: ; 5991
	call Function59a4
	ld c, $30
	call Function59f3
	ld c, $20
	call Function59f3
	ld c, $10
	call Function59f3
	ret
; 59a4

Function59a4: ; 59a4
	xor a
	ld hl, wc2eb
	ld bc, 13
	call ByteFill

	ld d, 0
	ld bc, ObjectStructs
	ld hl, wc2eb
.loop
	push hl
	call Function1af1
	jr z, .skip

	ld hl, OBJECT_FACING
	add hl, bc
	ld a, [hl]
	cp -1
	jr z, .skip

; Define the sprite priority.
	ld e, $10
	ld hl, OBJECT_FLAGS
	add hl, bc
	bit 0, [hl]
	jr nz, .add
	ld e, $20
	bit 1, [hl]
	jr z, .add
	ld e, $30
	jr .add

.skip
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	jr .next

.add
	ld hl, ObjectStruct2 - ObjectStruct1
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	ld a, d
	or e
	ld [hli], a

.next
	inc d
	ld a, d
	cp $d
	jr nz, .loop
	ret
; 59f3

Function59f3: ; 59f3
	ld hl, wc2eb
.next
	ld a, [hli]
	ld d, a
	and $f0
	ret z
	cp c
	jr nz, .next

	push bc
	push hl
	ld a, d
	and $f
	call Function5ac2
	call Function5a0d
	pop hl
	pop bc
	jr .next
; 5a0d

Function5a0d: ; 5a0d
	ld hl, OBJECT_SPRITE
	add hl, bc
	ld a, [hl]
	and $7f
	ld [$ffc1], a

	xor a
	bit 7, [hl]
	jr nz, .asm_5a1d
	or 8
.asm_5a1d

	ld hl, OBJECT_FLAGS
	add hl, bc
	ld e, [hl]
	bit 7, e
	jr z, .asm_5a28
	or $80
.asm_5a28

	bit 4, e
	jr z, .asm_5a2e
	or $10
.asm_5a2e

	ld hl, OBJECT_PALETTE
	add hl, bc
	ld d, a
	ld a, [hl]
	and 7
	or d
	ld d, a

	xor a
	bit 3, e
	jr z, .asm_5a3f
	or $80
.asm_5a3f
	ld [$ffc2], a

	ld hl, OBJECT_SPRITE_X
	add hl, bc
	ld a, [hl]

	ld hl, OBJECT_SPRITE_X_OFFSET
	add hl, bc
	add [hl]

	add 8

	ld e, a
	ld a, [wd14c]
	add e
	ld [$ffbf], a

	ld hl, OBJECT_SPRITE_Y
	add hl, bc
	ld a, [hl]

	ld hl, OBJECT_SPRITE_Y_OFFSET
	add hl, bc
	add [hl]

	add 12

	ld e, a
	ld a, [wd14d]
	add e
	ld [$ffc0], a

	ld hl, OBJECT_FACING
	add hl, bc
	ld a, [hl]
	cp -1
	jp z, .done
	cp NUM_FACINGS
	jp nc, .done

	ld l, a
	ld h, 0
	add hl, hl
	ld bc, Facings
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a

	ld a, [$ffbd]
	ld c, a
	ld b, Sprites / $100
	ld a, [hli]
	ld [$ffbe], a
	add c
	cp SpritesEnd % $100
	jr nc, .full

.addsprite
	ld a, [$ffc0]
	add [hl]
	inc hl

	ld [bc], a
	inc c

	ld a, [$ffbf]
	add [hl]
	inc hl

	ld [bc], a
	inc c

	ld e, [hl]
	inc hl

	ld a, [$ffc1]
	bit 2, e
	jr z, .asm_5aa3
	xor a
.asm_5aa3
	add [hl]
	inc hl

	ld [bc], a
	inc c

	ld a, e
	bit 1, a
	jr z, .asm_5aaf
	ld a, [$ffc2]
	or e
.asm_5aaf
	and $f0
	or d
	ld [bc], a
	inc c

	ld a, [$ffbe]
	dec a
	ld [$ffbe], a
	jr nz, .addsprite

	ld a, c
	ld [$ffbd], a

.done
	xor a
	ret

.full
	scf
	ret
; 5ac2

Function5ac2: ; 5ac2
	ld c, a
	ld b, 0
	ld hl, .Addresses
	add hl, bc
	add hl, bc
	ld c, [hl]
	inc hl
	ld b, [hl]
	ret
; 5ace

.Addresses ; 5ace
	dw PlayerStruct
	dw ObjectStruct1
	dw ObjectStruct2
	dw ObjectStruct3
	dw ObjectStruct4
	dw ObjectStruct5
	dw ObjectStruct6
	dw ObjectStruct7
	dw ObjectStruct8
	dw ObjectStruct9
	dw ObjectStruct10
	dw ObjectStruct11
	dw ObjectStruct12
; 5ae8