diff options
Diffstat (limited to 'engine/map_objects.asm')
-rwxr-xr-x | engine/map_objects.asm | 243 |
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:: |