tmc/asm/spearMoblin.s

922 lines
15 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start SpearMoblin
SpearMoblin: @ 0x0802823C
push {r4, lr}
adds r4, r0, #0
ldr r1, _08028268 @ =gUnk_080CC790
bl EnemyFunctionHandler
movs r3, #0x20
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
ldr r1, [r4, #0x54]
cmp r1, #0
beq _08028266
ldr r0, [r1, #4]
cmp r0, #0
beq _08028266
adds r0, r4, #0
bl CopyPosition
_08028266:
pop {r4, pc}
.align 2, 0
_08028268: .4byte gUnk_080CC790
thumb_func_start sub_0802826C
sub_0802826C: @ 0x0802826C
push {lr}
ldr r2, _08028280 @ =gUnk_080CC7A8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08028280: .4byte gUnk_080CC7A8
thumb_func_start sub_08028284
sub_08028284: @ 0x08028284
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08028298
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08028298:
ldr r1, _080282BC @ =gUnk_080CC790
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080282DE
ldrb r0, [r4, #0xc]
cmp r0, #4
beq _080282C0
adds r0, r4, #0
bl sub_08028754
b _080282DE
.align 2, 0
_080282BC: .4byte gUnk_080CC790
_080282C0:
movs r0, #0x3f
ands r0, r1
cmp r0, #0
bne _080282DE
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r1, #7
movs r0, #0x16
strb r0, [r1]
adds r0, r4, #0
bl sub_08028784
_080282DE:
ldr r0, [r4, #0x54]
adds r1, r4, #0
adds r1, #0x3d
ldrb r1, [r1]
adds r0, #0x3d
strb r1, [r0]
adds r0, r4, #0
adds r0, #0x45
ldrb r5, [r0]
cmp r5, #0
bne _0802830C
movs r0, #0
strh r5, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x82
strb r0, [r1]
adds r0, r4, #0
bl sub_080287E0
ldr r0, [r4, #0x54]
bl DeleteEntity
str r5, [r4, #0x54]
_0802830C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start nullsub_13
nullsub_13: @ 0x08028310
bx lr
.align 2, 0
thumb_func_start sub_08028314
sub_08028314: @ 0x08028314
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r1, #0
movs r2, #1
strb r2, [r4, #0xc]
strb r1, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x7b
strb r1, [r0]
adds r0, #5
strb r1, [r0]
adds r0, #3
strb r1, [r0]
subs r0, #2
strb r1, [r0]
subs r0, #7
strb r1, [r0]
adds r0, #8
strb r2, [r0]
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0802835E
ldrb r1, [r4, #0xb]
lsls r0, r1, #1
strb r0, [r4, #0x14]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
lsls r1, r1, #3
strb r1, [r4, #0x15]
adds r0, r4, #0
bl sub_080287E0
b _08028368
_0802835E:
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08028604
_08028368:
movs r0, #3
bl sub_080A7EE0
cmp r0, #0
beq _08028376
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_08028376:
pop {r4, pc}
thumb_func_start sub_08028378
sub_08028378: @ 0x08028378
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x81
ldrb r0, [r1]
cmp r0, #0
beq _0802838A
subs r0, #1
strb r0, [r1]
_0802838A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _080283B8
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ands r0, r2
cmp r0, #0xf
bls _080283B0
adds r0, r4, #0
bl sub_08028728
b _080283FC
_080283B0:
adds r0, r4, #0
bl sub_08028604
b _080283FC
_080283B8:
adds r0, r4, #0
bl sub_080286CC
cmp r0, #0
beq _080283CE
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
_080283CE:
adds r0, r4, #0
bl sub_080288A4
cmp r0, #0
beq _080283FC
ldrh r1, [r4, #0x2a]
adds r0, r4, #0
bl sub_0800417E
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_080287E0
_080283FC:
ldrb r0, [r4, #0xf]
cmp r0, #0xb
bls _08028414
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0
beq _08028418
adds r0, r4, #0
bl sub_08028754
b _08028418
_08028414:
adds r0, #1
strb r0, [r4, #0xf]
_08028418:
adds r0, r4, #0
bl sub_08028858
pop {r4, pc}
thumb_func_start sub_08028420
sub_08028420: @ 0x08028420
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0802844C
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x82
strb r1, [r0]
subs r0, #2
strb r1, [r0]
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08028604
b _08028462
_0802844C:
adds r0, r4, #0
bl sub_080286CC
cmp r0, #0
beq _08028462
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
_08028462:
ldrb r0, [r4, #0xf]
cmp r0, #0xb
bls _0802847A
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0
beq _0802847E
adds r0, r4, #0
bl sub_08028754
b _0802847E
_0802847A:
adds r0, #1
strb r0, [r4, #0xf]
_0802847E:
adds r0, r4, #0
bl sub_08028858
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028488
sub_08028488: @ 0x08028488
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0
bne _08028520
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
adds r3, r0, #0
cmp r1, #2
beq _080284D2
cmp r1, #2
ble _080284F0
cmp r1, #3
beq _080284B4
cmp r1, #4
beq _080284E6
b _080284F0
_080284B4:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
movs r0, #0x8f
lsls r0, r0, #1
bl sub_08004488
b _0802850A
_080284D2:
strb r1, [r4, #0xc]
strh r2, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x40
b _08028508
_080284E6:
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
_080284F0:
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r3]
movs r0, #0x80
strh r0, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x22
_08028508:
strb r1, [r4, #0xe]
_0802850A:
movs r0, #0
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_080287E0
_08028520:
adds r0, r4, #0
bl sub_08028858
pop {r4, pc}
thumb_func_start sub_08028528
sub_08028528: @ 0x08028528
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #1
bl sub_08049DF4
adds r5, r0, #0
cmp r5, #0
bne _08028542
strb r5, [r4, #0xf]
adds r0, r4, #0
bl sub_08028728
b _08028600
_08028542:
adds r0, r4, #0
bl sub_080288C0
ldr r1, _08028590 @ =gUnk_080CC944
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r1
ldr r2, [r0]
ldr r1, [r4, #0x48]
ldrb r0, [r2]
strb r0, [r1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #1]
strb r0, [r1, #1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #6]
strb r0, [r1, #6]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #7]
strb r0, [r1, #7]
adds r0, r4, #0
adds r0, #0x7a
ldrb r1, [r0]
adds r6, r0, #0
cmp r1, #0
beq _08028594
movs r0, #0
strb r0, [r6]
adds r1, r4, #0
adds r1, #0x81
movs r0, #0x16
strb r0, [r1]
adds r0, r4, #0
bl sub_08028784
adds r1, r4, #0
adds r1, #0x7b
b _080285EE
.align 2, 0
_08028590: .4byte gUnk_080CC944
_08028594:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x20
bne _080285BC
strb r1, [r4, #0xe]
adds r0, r4, #0
adds r1, r5, #0
bl sub_080045C4
adds r5, r0, #0
ldrb r0, [r4, #0x15]
adds r1, r5, #0
bl sub_08028828
cmp r0, #0
beq _080285BC
strb r5, [r4, #0x15]
_080285BC:
ldrb r1, [r4, #0xe]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _080285D6
movs r0, #0xf0
bl sub_08004488
adds r0, r4, #0
movs r1, #2
movs r2, #0x40
bl CreateFx
_080285D6:
adds r1, r4, #0
adds r1, #0x7b
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x80
bne _080285EE
ldrb r0, [r6]
adds r0, #1
strb r0, [r6]
_080285EE:
ldrb r0, [r1]
cmp r0, #0x20
bls _080285FA
adds r0, r4, #0
bl sub_080AEF88
_080285FA:
adds r0, r4, #0
bl GetNextFrame
_08028600:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08028604
sub_08028604: @ 0x08028604
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #0
strb r1, [r4, #0xf]
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #1
bne _080286B0
bl Random
ldr r2, _08028650 @ =gUnk_080CC7BC
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _08028658
bl Random
ldr r2, _08028654 @ =gUnk_080CC7D0
movs r1, #7
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r0, #0x18
ldrb r1, [r4, #0x15]
adds r0, r0, r1
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080286B8
.align 2, 0
_08028650: .4byte gUnk_080CC7BC
_08028654: .4byte gUnk_080CC7D0
_08028658:
adds r0, r4, #0
bl sub_08049EE4
adds r5, r0, #0
adds r6, r4, #0
adds r6, #0x83
ldrb r0, [r6]
cmp r0, #0
bne _08028684
bl Random
ldr r2, _08028680 @ =gUnk_080CC7C0
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r5, r5, r0
b _080286A2
.align 2, 0
_08028680: .4byte gUnk_080CC7C0
_08028684:
bl Random
ldr r2, _080286AC @ =gUnk_080CC7C0
movs r1, #7
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r5, r5, r0
ldrb r0, [r4, #0xe]
adds r0, #0x10
strb r0, [r4, #0xe]
ldrb r0, [r6]
subs r0, #1
strb r0, [r6]
_080286A2:
adds r0, r5, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080286B8
.align 2, 0
_080286AC: .4byte gUnk_080CC7C0
_080286B0:
movs r0, #0xc
strb r0, [r4, #0xe]
strh r1, [r4, #0x24]
ldrb r0, [r4, #0x15]
_080286B8:
lsrs r5, r0, #2
ldrb r0, [r4, #0x14]
cmp r5, r0
beq _080286C8
strb r5, [r4, #0x14]
adds r0, r4, #0
bl sub_080287E0
_080286C8:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080286CC
sub_080286CC: @ 0x080286CC
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
bne _08028724
movs r0, #1
bl sub_08049DF4
adds r4, r0, #0
cmp r4, #0
beq _08028724
adds r0, r5, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #2
bne _080286FC
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x30
bl sub_0806FC80
cmp r0, #0
bne _08028720
_080286FC:
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x40
bl sub_0806FC80
cmp r0, #0
beq _08028724
adds r0, r5, #0
adds r1, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #2
ldrb r5, [r5, #0x14]
cmp r0, r5
bne _08028724
_08028720:
movs r0, #1
b _08028726
_08028724:
movs r0, #0
_08028726:
pop {r4, r5, pc}
thumb_func_start sub_08028728
sub_08028728: @ 0x08028728
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
lsrs r0, r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_080287B4
adds r4, #0x82
movs r0, #2
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_08028754
sub_08028754: @ 0x08028754
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049F84
movs r2, #0
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x83
strb r2, [r0]
adds r0, r4, #0
bl sub_080287B4
adds r4, #0x82
movs r0, #3
strb r0, [r4]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028784
sub_08028784: @ 0x08028784
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
movs r1, #0
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x83
strb r1, [r0]
adds r0, r4, #0
bl sub_080287B4
ldrb r0, [r4, #0xe]
lsls r0, r0, #1
strb r0, [r4, #0xe]
adds r4, #0x82
movs r0, #4
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_080287B4
sub_080287B4: @ 0x080287B4
push {lr}
adds r2, r0, #0
movs r1, #0
movs r0, #3
strb r0, [r2, #0xc]
movs r0, #0x20
strb r0, [r2, #0xe]
strb r1, [r2, #0xf]
adds r0, r2, #0
adds r0, #0x80
strb r1, [r0]
subs r0, #5
strb r1, [r0]
movs r0, #0
strh r1, [r2, #0x24]
adds r1, r2, #0
adds r1, #0x82
strb r0, [r1]
adds r0, r2, #0
bl sub_080287E0
pop {pc}
thumb_func_start sub_080287E0
sub_080287E0: @ 0x080287E0
push {lr}
adds r3, r0, #0
ldrb r0, [r3, #0x14]
lsrs r2, r0, #1
adds r0, r3, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #4
bhi _0802881E
lsls r0, r0, #2
ldr r1, _080287FC @ =_08028800
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080287FC: .4byte _08028800
_08028800: @ jump table
.4byte _0802881E @ case 0
.4byte _08028814 @ case 1
.4byte _0802881C @ case 2
.4byte _08028818 @ case 3
.4byte _08028814 @ case 4
_08028814:
adds r2, #4
b _0802881E
_08028818:
adds r2, #8
b _0802881E
_0802881C:
adds r2, #0xc
_0802881E:
adds r0, r3, #0
adds r1, r2, #0
bl InitializeAnimation
pop {pc}
thumb_func_start sub_08028828
sub_08028828: @ 0x08028828
push {r4, lr}
adds r4, r0, #0
adds r3, r1, #0
adds r0, r3, #4
movs r2, #0x18
ands r0, r2
adds r1, r4, #4
ands r1, r2
cmp r0, r1
bne _08028852
adds r0, r3, #5
movs r1, #7
ands r0, r1
adds r2, r4, #5
ands r2, r1
cmp r0, #2
bhi _08028852
cmp r2, #2
bhi _08028852
movs r0, #1
b _08028854
_08028852:
movs r0, #0
_08028854:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028858
sub_08028858: @ 0x08028858
push {r4, lr}
adds r4, r0, #0
bl sub_080288C0
ldr r1, _080288A0 @ =gUnk_080CC944
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r1
ldr r2, [r0]
ldr r1, [r4, #0x48]
ldrb r0, [r2]
strb r0, [r1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #1]
strb r0, [r1, #1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #6]
strb r0, [r1, #6]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #7]
strb r0, [r1, #7]
adds r0, r4, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #0
bne _08028890
strh r0, [r4, #0x24]
_08028890:
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
.align 2, 0
_080288A0: .4byte gUnk_080CC944
thumb_func_start sub_080288A4
sub_080288A4: @ 0x080288A4
ldr r2, _080288BC @ =gUnk_080CC7D8
ldrb r1, [r0, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r0, #0x2a]
ldrh r1, [r1]
ands r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
bx lr
.align 2, 0
_080288BC: .4byte gUnk_080CC7D8
thumb_func_start sub_080288C0
sub_080288C0: @ 0x080288C0
push {lr}
mov ip, r0
ldr r2, [r0, #0x54]
cmp r2, #0
beq _08028908
adds r0, r2, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08028908
adds r0, r2, #0
adds r0, #0x3e
ldrb r0, [r0]
mov r1, ip
adds r1, #0x3e
strb r0, [r1]
adds r0, r2, #0
adds r0, #0x3d
ldrb r0, [r0]
rsbs r0, r0, #0
subs r1, #1
strb r0, [r1]
adds r0, r2, #0
adds r0, #0x46
ldrh r0, [r0]
adds r1, #9
movs r3, #0
strh r0, [r1]
adds r2, #0x42
ldrb r1, [r2]
mov r0, ip
adds r0, #0x42
strb r1, [r0]
strb r3, [r2]
_08028908:
pop {pc}
.align 2, 0