tmc/asm/projectile/projectile18.s

604 lines
9.9 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Projectile18
Projectile18: @ 0x080AABF0
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _080AAC08 @ =gUnk_0812A418
bl GetNextFunction
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_080AAC08: .4byte gUnk_0812A418
thumb_func_start sub_080AAC0C
sub_080AAC0C: @ 0x080AAC0C
push {r4, lr}
adds r4, r0, #0
ldr r1, _080AAC40 @ =gUnk_0812A430
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _080AAC3C
adds r1, r4, #0
adds r1, #0x84
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080AAC3C
subs r1, #0x3f
movs r0, #0
strb r0, [r1]
_080AAC3C:
pop {r4, pc}
.align 2, 0
_080AAC40: .4byte gUnk_0812A430
thumb_func_start sub_080AAC44
sub_080AAC44: @ 0x080AAC44
push {r4, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080AACCA
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _080AACBC
movs r0, #0x3f
ands r0, r1
cmp r0, #0
bne _080AACA0
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080AAC84
ldr r0, _080AAC80 @ =gPlayerEntity
adds r1, r4, #0
bl ResolveEntityOnTop
b _080AAC8C
.align 2, 0
_080AAC80: .4byte gPlayerEntity
_080AAC84:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl ResolveEntityOnTop
_080AAC8C:
bl ResetPlayer
ldr r2, _080AACB4 @ =gPlayerState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r1, r0
strb r1, [r2, #0x1a]
ldrb r1, [r2, #0xa]
orrs r0, r1
strb r0, [r2, #0xa]
_080AACA0:
ldr r0, _080AACB8 @ =gPlayerEntity
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
bne _080AACCA
adds r0, r4, #0
adds r0, #0x45
strb r1, [r0]
b _080AACCA
.align 2, 0
_080AACB4: .4byte gPlayerState
_080AACB8: .4byte gPlayerEntity
_080AACBC:
ldr r0, _080AACDC @ =0x00000119
bl SoundReq
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
_080AACCA:
adds r1, r4, #0
adds r1, #0x42
ldrb r0, [r1]
cmp r0, #0
beq _080AACD8
movs r0, #0
strb r0, [r1]
_080AACD8:
pop {r4, pc}
.align 2, 0
_080AACDC: .4byte 0x00000119
thumb_func_start sub_080AACE0
sub_080AACE0: @ 0x080AACE0
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080AACF4
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _080AACF4
bl DeleteThisEntity
_080AACF4:
ldrb r1, [r4, #0x18]
lsls r0, r1, #0x1e
lsrs r2, r0, #0x1e
adds r5, r4, #0
adds r5, #0x86
cmp r2, #1
bne _080AAD16
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
strb r2, [r5]
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFx
_080AAD16:
ldr r2, [r4, #0x50]
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _080AAD4A
adds r1, r2, #0
adds r1, #0x74
movs r0, #3
strb r0, [r1]
adds r1, #0xc
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
lsrs r0, r0, #1
ldrb r2, [r1]
adds r0, r0, r2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #8
bls _080AAD42
movs r0, #8
b _080AAD56
_080AAD42:
cmp r0, #0
bne _080AAD58
movs r0, #1
b _080AAD56
_080AAD4A:
adds r1, r2, #0
adds r1, #0x84
movs r0, #0
strb r0, [r1]
subs r1, #0x45
movs r0, #0x2b
_080AAD56:
strb r0, [r1]
_080AAD58:
ldrb r0, [r5]
cmp r0, #0
bne _080AAD68
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFx
_080AAD68:
bl DeleteThisEntity
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080AAD70
sub_080AAD70: @ 0x080AAD70
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
bne _080AAD82
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
_080AAD82:
ldr r0, _080AAD94 @ =gUnk_0812A440
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080AAD94: .4byte gUnk_0812A440
thumb_func_start sub_080AAD98
sub_080AAD98: @ 0x080AAD98
movs r1, #2
strb r1, [r0, #0xd]
bx lr
.align 2, 0
thumb_func_start nullsub_541
nullsub_541: @ 0x080AADA0
bx lr
.align 2, 0
thumb_func_start sub_080AADA4
sub_080AADA4: @ 0x080AADA4
push {r4, lr}
adds r4, r0, #0
bl sub_0806F3E4
cmp r0, #0
beq _080AADB8
adds r1, r4, #0
adds r1, #0x45
movs r0, #0
strb r0, [r1]
_080AADB8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080AADBC
sub_080AADBC: @ 0x080AADBC
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xb]
cmp r0, #0
bne _080AADCC
movs r0, #1
strb r0, [r5, #0xc]
b _080AADE0
_080AADCC:
movs r0, #3
strb r0, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x3f
movs r0, #0x2c
strb r0, [r1]
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl ResolveEntityOnTop
_080AADE0:
ldrb r1, [r5, #0xa]
cmp r1, #0
bne _080AAE64
strb r1, [r5, #0xe]
movs r3, #4
movs r0, #4
strb r0, [r5, #0xf]
adds r0, r5, #0
adds r0, #0x80
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r1, r5, #0
adds r1, #0x45
movs r0, #0x10
strb r0, [r1]
ldrh r0, [r5, #0x36]
adds r0, #4
movs r4, #0
strh r0, [r5, #0x36]
ldrb r2, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r5, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r5, #0x19]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
orrs r0, r3
strb r0, [r2]
ldr r1, _080AAE60 @ =gPlayerEntity
adds r0, r5, #0
bl GetFacingDirection
strb r0, [r5, #0x15]
adds r0, r5, #0
adds r0, #0x86
strb r4, [r0]
adds r1, r5, #0
adds r1, #0x84
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r1]
movs r0, #0x18
bl sub_080A7EE0
adds r1, r0, #0
cmp r1, #0
beq _080AAE7C
movs r0, #1
strb r0, [r1, #0xa]
ldrb r0, [r5, #0xb]
strb r0, [r1, #0xb]
str r5, [r1, #0x50]
b _080AAE7C
.align 2, 0
_080AAE60: .4byte gPlayerEntity
_080AAE64:
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl ResolveEntityOnTop
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl CopyPosition
_080AAE7C:
ldrb r1, [r5, #0xa]
adds r0, r5, #0
bl InitializeAnimation
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080AAE88
sub_080AAE88: @ 0x080AAE88
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _080AAED0
cmp r0, #1
bgt _080AAE9C
cmp r0, #0
beq _080AAEA2
b _080AAEF6
_080AAE9C:
cmp r0, #2
beq _080AAEE0
b _080AAEF6
_080AAEA2:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _080AAEC2
movs r0, #4
strb r0, [r4, #0xf]
ldr r1, _080AAECC @ =gPlayerEntity
adds r0, r4, #0
bl GetFacingDirection
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
_080AAEC2:
adds r0, r4, #0
bl sub_0806F69C
b _080AAEF6
.align 2, 0
_080AAECC: .4byte gPlayerEntity
_080AAED0:
ldr r0, [r4, #0x50]
cmp r0, #0
beq _080AAEDC
ldr r0, [r0, #4]
cmp r0, #0
bne _080AAEE0
_080AAEDC:
bl DeleteThisEntity
_080AAEE0:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
bne _080AAEEE
bl DeleteThisEntity
_080AAEEE:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
_080AAEF6:
adds r0, r4, #0
bl sub_080AB034
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080AAF00
sub_080AAF00: @ 0x080AAF00
push {r4, lr}
adds r4, r0, #0
bl sub_080AAF74
adds r0, r4, #0
bl sub_080AB034
pop {r4, pc}
thumb_func_start sub_080AAF10
sub_080AAF10: @ 0x080AAF10
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
adds r0, r4, #0
bl sub_080AB034
ldr r3, [r4, #0x50]
ldrb r1, [r3, #0x18]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1e
ldrb r2, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080AAF48
adds r0, r3, #0
adds r0, #0x45
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
_080AAF48:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #2
bne _080AAF60
ldrb r1, [r4, #0x10]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080AAF70
movs r0, #0x7f
ands r0, r1
b _080AAF6E
_080AAF60:
ldrb r1, [r4, #0x10]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _080AAF70
movs r0, #0x80
orrs r0, r1
_080AAF6E:
strb r0, [r4, #0x10]
_080AAF70:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080AAF74
sub_080AAF74: @ 0x080AAF74
push {r4, r5, lr}
adds r5, r0, #0
bl sub_0807953C
cmp r0, #0
beq _080AAF94
bl Random
adds r3, r5, #0
adds r3, #0x80
ldrb r1, [r3]
adds r1, #1
movs r2, #1
ands r0, r2
adds r1, r1, r0
strb r1, [r3]
_080AAF94:
ldrb r0, [r5, #0xe]
adds r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3c
bne _080AAFCC
movs r0, #0x1e
strb r0, [r5, #0xe]
ldr r4, _080AAFFC @ =gPlayerEntity
adds r1, r4, #0
adds r1, #0x3d
movs r0, #8
strb r0, [r1]
subs r0, #0xc
bl ModHealth
adds r0, r4, #0
movs r1, #0x7a
bl sub_0800449C
adds r4, #0x45
ldrb r1, [r4]
cmp r1, #0
bne _080AAFCC
adds r0, r5, #0
adds r0, #0x45
strb r1, [r0]
_080AAFCC:
adds r1, r5, #0
adds r1, #0x80
ldrb r0, [r1]
cmp r0, #0x30
bhi _080AAFE0
adds r0, r5, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0x10
bne _080AB004
_080AAFE0:
movs r2, #0
movs r0, #1
strb r0, [r5, #0xc]
strb r2, [r1]
ldr r0, _080AAFFC @ =gPlayerEntity
adds r0, #0x3d
movs r1, #0xf0
strb r1, [r0]
ldr r0, _080AB000 @ =gPlayerState
strb r2, [r0, #0x1a]
adds r0, r5, #0
adds r0, #0x45
strb r2, [r0]
b _080AB028
.align 2, 0
_080AAFFC: .4byte gPlayerEntity
_080AB000: .4byte gPlayerState
_080AB004:
bl ResetPlayer
ldr r2, _080AB02C @ =gPlayerState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r1, r0
strb r1, [r2, #0x1a]
ldrb r1, [r2, #0xa]
orrs r0, r1
strb r0, [r2, #0xa]
ldr r4, _080AB030 @ =gPlayerEntity
adds r0, r4, #0
adds r1, r5, #0
bl CopyPosition
ldrh r0, [r4, #0x36]
subs r0, #4
strh r0, [r5, #0x36]
_080AB028:
pop {r4, r5, pc}
.align 2, 0
_080AB02C: .4byte gPlayerState
_080AB030: .4byte gPlayerEntity
thumb_func_start sub_080AB034
sub_080AB034: @ 0x080AB034
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5b
ldrb r1, [r0]
movs r0, #1
ands r0, r1
ldr r1, _080AB058 @ =0x00000139
cmp r0, #0
beq _080AB04E
movs r1, #0
_080AB04E:
adds r0, r4, #0
bl sub_0801D2B4
pop {r4, pc}
.align 2, 0
_080AB058: .4byte 0x00000139