shithub: pokecrystal

Download patch

ref: 9aef93701a6cd301a3343c58efac31528958be22
parent: a31b4586df7a659f15f5c864c469d309bf60f719
author: yenatch <[email protected]>
date: Wed Feb 11 09:13:22 EST 2015

Split out map object code.

--- /dev/null
+++ b/engine/map_objects.asm
@@ -1,0 +1,3683 @@
+
+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
+
--- a/main.asm
+++ b/main.asm
@@ -56,3688 +56,7 @@
 ; 4049
 
 
-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
+INCLUDE "engine/map_objects.asm"
 
 
 Function5ae8: ; 5ae8