summaryrefslogtreecommitdiff
path: root/engine/map_objects.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/map_objects.asm')
-rwxr-xr-xengine/map_objects.asm243
1 files changed, 237 insertions, 6 deletions
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index a3a74c17..3572435b 100755
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -402,12 +402,243 @@ INCLUDE "engine/movement_pattern.asm"
INCLUDE "engine/step_types.asm"
INCLUDE "engine/movement.asm"
-Function53b1:
- dr $53b1, $5457
-Function5457:
- dr $5457, $54d7
-Function54d7:
- dr $54d7, $557f
+Function5429: ; 5429 (1:5429)
+ call InitStep
+ ld hl, $1f
+ add hl, bc
+ ld [hl], $0
+ ld hl, $5
+ add hl, bc
+ res 3, [hl]
+ ld hl, $b
+ add hl, bc
+ ld [hl], $2
+ call Function54c8
+ ld hl, wCenteredObject
+ ld a, [hMapObjectIndexBuffer]
+ cp [hl]
+ jr z, .asm_5450
+ ld hl, $9
+ add hl, bc
+ ld [hl], $8
+ ret
+
+.asm_5450
+ ld hl, $9
+ add hl, bc
+ ld [hl], $9
+ ret
+Function5457: ; 5457 (1:5457)
+ ld e, a
+ ld a, [wObjectFollow_Follower]
+ cp $ff
+ ret z
+ ld a, [wObjectFollow_Leader]
+ ld d, a
+ ld a, [hMapObjectIndexBuffer]
+ 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, wFollowerMovementQueueLength
+ inc [hl]
+ ld e, [hl]
+ ld d, $0
+ ld hl, wFollowMovementQueue
+ add hl, de
+ pop af
+ ld [hl], a
+ ret
+
+GetFollowerNextMovementByte:
+ ld hl, wFollowerMovementQueueLength
+ ld a, [hl]
+ and a
+ jr z, .asm_54a2
+ cp $ff
+ jr z, .asm_54a2
+ dec [hl]
+ ld e, a
+ ld d, $0
+ ld hl, wFollowMovementQueue
+ add hl, de
+ inc e
+ ld a, $ff
+.asm_549b
+ ld d, [hl]
+ ld [hld], a
+ ld a, d
+ dec e
+ jr nz, .asm_549b
+ ret
+
+.asm_54a2
+ call Function54a9
+ ret c
+ ld a, $3e
+ ret
+
+Function54a9: ; 54a9 (1:54a9)
+ ld a, [wObjectFollow_Leader]
+ cp $ff
+ jr z, .asm_54bf
+ push bc
+ call GetObjectStruct
+ ld hl, $0
+ add hl, bc
+ ld a, [hl]
+ pop bc
+ and a
+ jr z, .asm_54bf
+ and a
+ ret
+
+.asm_54bf
+ ld a, $ff
+ ld [wObjectFollow_Follower], a
+ ld a, $47
+ scf
+ ret
+
+Function54c8: ; 54c8 (1:54c8)
+ push bc
+ ld de, .data
+ call Function5558
+ call Function554b
+ pop bc
+ ret
+
+.data db $fc, PAL_OW_SILVER, SPRITEMOVEDATA_SHADOW
+
+Function54d7: ; 54d7 (1:54d7)
+ push bc
+ ld de, .data
+ call Function5558
+ call Function554b
+ pop bc
+ ret
+
+.data db $fe, PAL_OW_SILVER, SPRITEMOVEDATA_BOULDERDUST
+
+Function54e6: ; 54e6 (1:54e6)
+ push bc
+ ld de, .data
+ call Function5558
+ call Function554b
+ pop bc
+ ret
+
+.data db $f8, PAL_OW_SILVER, SPRITEMOVEDATA_EMOTE
+
+Function54f5: ; 54f5 (1:54f5)
+ push bc
+ ld de, .data
+ call Function5558
+ call Function554b
+ pop bc
+ ret
+
+.data db $fe, PAL_OW_TREE, SPRITEMOVEDATA_GRASS
+
+Function5504: ; 5504 (1:5504)
+ push bc
+ push af
+ ld de, .data
+ call Function5558
+ pop af
+ ld [wce9e], a
+ call Function554b
+ pop bc
+ ret
+
+.data db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SCREENSHAKE
+
+Function5518: ; 5518 (1:5518)
+ push bc
+ ld a, [hMapObjectIndexBuffer]
+ ld c, a
+ call Function5521
+ pop bc
+ ret
+
+Function5521: ; 5521 (1:5521)
+ ld de, wPlayerStruct
+ ld a, $d
+.asm_5526
+ push af
+ ld hl, $4
+ add hl, de
+ bit 7, [hl]
+ jr z, .asm_5540
+ ld hl, $0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_5540
+ push bc
+ xor a
+ ld bc, $28
+ call ByteFill
+ pop bc
+.asm_5540
+ ld hl, $28
+ add hl, de
+ ld d, h
+ ld e, l
+ pop af
+ dec a
+ jr nz, .asm_5526
+ ret
+
+Function554b: ; 554b (1:554b)
+ call FindFirstEmptyObjectStruct
+ ret nc
+ ld d, h
+ ld e, l
+ callba CopyTempObjectToObjectStruct
+ ret
+
+Function5558: ; 5558 (1:5558)
+ ld hl, wce99
+ 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, [hMapObjectIndexBuffer]
+ ld [hli], a
+ push hl
+ ld hl, $10
+ add hl, bc
+ ld d, [hl]
+ ld hl, $11
+ add hl, bc
+ ld e, [hl]
+ pop hl
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], $ff
+ ret
+
Function557f::
dr $557f, $5730
Function5730::