tmc/asm/bowMoblin.s

718 lines
12 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0803C1E0
sub_0803C1E0: @ 0x0803C1E0
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r1, #0
movs r2, #1
strb r2, [r4, #0xc]
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 _0803C228
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_0803C690
b _0803C232
_0803C228:
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803C4B0
_0803C232:
pop {r4, pc}
thumb_func_start sub_0803C234
sub_0803C234: @ 0x0803C234
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x81
ldrb r0, [r1]
cmp r0, #0
beq _0803C246
subs r0, #1
strb r0, [r1]
_0803C246:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r3, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C292
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
adds r2, r0, #1
strb r2, [r1]
adds r0, r2, #0
ands r0, r3
cmp r0, #0xf
bls _0803C26E
adds r0, r4, #0
bl sub_0803C5C4
b _0803C2D2
_0803C26E:
movs r0, #3
ands r2, r0
cmp r2, #0
bne _0803C28A
bl Random
movs r1, #0x10
ands r1, r0
cmp r1, #0
beq _0803C28A
adds r0, r4, #0
bl sub_0803C624
b _0803C2D2
_0803C28A:
adds r0, r4, #0
bl sub_0803C4B0
b _0803C2D2
_0803C292:
adds r0, r4, #0
bl sub_0803C6F8
cmp r0, #0
beq _0803C2C2
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_0803C690
b _0803C2D2
_0803C2C2:
adds r0, r4, #0
bl sub_0803C568
cmp r0, #0
beq _0803C2D2
adds r0, r4, #0
bl sub_0803C5F0
_0803C2D2:
adds r0, r4, #0
bl sub_0803C6DC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C2DC
sub_0803C2DC: @ 0x0803C2DC
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 _0803C308
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_0803C4B0
b _0803C31E
_0803C308:
adds r0, r4, #0
bl sub_0803C568
cmp r0, #0
beq _0803C31E
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
_0803C31E:
ldrb r0, [r4, #0xf]
cmp r0, #0xb
bls _0803C336
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0
beq _0803C33A
adds r0, r4, #0
bl sub_0803C5F0
b _0803C33A
_0803C336:
adds r0, #1
strb r0, [r4, #0xf]
_0803C33A:
adds r0, r4, #0
bl sub_0803C6DC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C344
sub_0803C344: @ 0x0803C344
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C3F8
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
adds r2, r0, #0
cmp r1, #5
bhi _0803C3C8
lsls r0, r1, #2
ldr r1, _0803C36C @ =_0803C370
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803C36C: .4byte _0803C370
_0803C370: @ jump table
.4byte _0803C3C8 @ case 0
.4byte _0803C3C8 @ case 1
.4byte _0803C3A6 @ case 2
.4byte _0803C388 @ case 3
.4byte _0803C3BE @ case 4
.4byte _0803C39C @ case 5
_0803C388:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
b _0803C3E2
_0803C39C:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
b _0803C3E2
_0803C3A6:
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strh r1, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x40
b _0803C3E0
_0803C3BE:
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
_0803C3C8:
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r2]
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
_0803C3E0:
strb r1, [r4, #0xe]
_0803C3E2:
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_0803C690
_0803C3F8:
adds r0, r4, #0
bl sub_0803C6DC
pop {r4, pc}
thumb_func_start sub_0803C400
sub_0803C400: @ 0x0803C400
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
adds r1, r0, #0
cmp r1, #0
beq _0803C458
subs r0, #1
strb r0, [r4, #0xf]
movs r2, #0xff
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _0803C4AC
adds r0, r4, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #3
bne _0803C450
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ands r0, r2
cmp r0, #2
bhi _0803C450
bl Random
movs r1, #0xc0
ands r1, r0
cmp r1, #0
beq _0803C450
strb r5, [r4, #0xe]
adds r0, r4, #0
bl sub_0803C690
adds r0, r4, #0
bl sub_0803C6DC
b _0803C4AC
_0803C450:
adds r0, r4, #0
bl sub_0803C634
b _0803C4AC
_0803C458:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _0803C46C
cmp r0, #0x18
beq _0803C494
b _0803C49A
_0803C46C:
ldrb r2, [r4, #0x14]
lsls r0, r2, #2
strb r0, [r4, #0x15]
lsls r2, r2, #0x18
lsrs r2, r2, #0x19
adds r0, r4, #0
movs r1, #0xd
bl sub_0804A98C
adds r2, r0, #0
cmp r2, #0
beq _0803C49A
str r2, [r4, #0x54]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r2, #0x15]
str r4, [r2, #0x50]
b _0803C49A
_0803C494:
strb r1, [r4, #0xe]
movs r0, #0x20
strb r0, [r4, #0xf]
_0803C49A:
adds r0, r4, #0
bl sub_0803C6DC
ldr r0, [r4, #0x54]
cmp r0, #0
beq _0803C4AC
adds r0, r4, #0
bl sub_0803C714
_0803C4AC:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803C4B0
sub_0803C4B0: @ 0x0803C4B0
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
movs r1, #0
strb r1, [r5, #0xf]
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #1
bne _0803C54C
bl Random
ldr r1, _0803C4F0 @ =gUnk_080CFFA4
movs r7, #7
ands r0, r7
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r5, #0xe]
movs r0, #0x80
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
beq _0803C4F4
bl Random
adds r4, r0, #0
movs r0, #6
ands r4, r0
lsls r0, r4, #2
strb r0, [r5, #0x15]
b _0803C556
.align 2, 0
_0803C4F0: .4byte gUnk_080CFFA4
_0803C4F4:
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
adds r6, r5, #0
adds r6, #0x83
ldrb r0, [r6]
cmp r0, #0
bne _0803C520
bl Random
ldr r2, _0803C51C @ =gUnk_080CFFAC
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r4, r4, r0
b _0803C53E
.align 2, 0
_0803C51C: .4byte gUnk_080CFFAC
_0803C520:
bl Random
ldr r1, _0803C548 @ =gUnk_080CFFAC
ands r0, r7
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r4, r4, r0
ldrb r0, [r5, #0xe]
adds r0, #0x10
strb r0, [r5, #0xe]
ldrb r0, [r6]
subs r0, #1
strb r0, [r6]
_0803C53E:
adds r0, r4, #4
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
b _0803C554
.align 2, 0
_0803C548: .4byte gUnk_080CFFAC
_0803C54C:
movs r0, #0xc
strb r0, [r5, #0xe]
strh r1, [r5, #0x24]
ldrb r0, [r5, #0x15]
_0803C554:
lsrs r4, r0, #2
_0803C556:
ldrb r0, [r5, #0x14]
cmp r4, r0
beq _0803C564
strb r4, [r5, #0x14]
adds r0, r5, #0
bl sub_0803C690
_0803C564:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0803C568
sub_0803C568: @ 0x0803C568
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
bne _0803C5C0
movs r0, #1
bl sub_08049DF4
adds r4, r0, #0
cmp r4, #0
beq _0803C5C0
adds r0, r5, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #2
bne _0803C598
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x30
bl sub_0806FC80
cmp r0, #0
bne _0803C5BC
_0803C598:
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x40
bl sub_0806FC80
cmp r0, #0
beq _0803C5C0
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 _0803C5C0
_0803C5BC:
movs r0, #1
b _0803C5C2
_0803C5C0:
movs r0, #0
_0803C5C2:
pop {r4, r5, pc}
thumb_func_start sub_0803C5C4
sub_0803C5C4: @ 0x0803C5C4
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_0803C664
adds r4, #0x82
movs r0, #2
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_0803C5F0
sub_0803C5F0: @ 0x0803C5F0
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]
subs r0, #9
strb r2, [r0]
adds r0, r4, #0
bl sub_0803C664
adds r4, #0x82
movs r0, #3
strb r0, [r4]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C624
sub_0803C624: @ 0x0803C624
push {r4, lr}
adds r4, r0, #0
bl sub_0803C664
adds r4, #0x82
movs r0, #5
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_0803C634
sub_0803C634: @ 0x0803C634
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_0803C664
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_0803C664
sub_0803C664: @ 0x0803C664
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_0803C690
pop {pc}
thumb_func_start sub_0803C690
sub_0803C690: @ 0x0803C690
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, #5
bhi _0803C6D2
lsls r0, r0, #2
ldr r1, _0803C6AC @ =_0803C6B0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803C6AC: .4byte _0803C6B0
_0803C6B0: @ jump table
.4byte _0803C6D2 @ case 0
.4byte _0803C6C8 @ case 1
.4byte _0803C6D0 @ case 2
.4byte _0803C6CC @ case 3
.4byte _0803C6C8 @ case 4
.4byte _0803C6CC @ case 5
_0803C6C8:
adds r2, #4
b _0803C6D2
_0803C6CC:
adds r2, #8
b _0803C6D2
_0803C6D0:
adds r2, #0xc
_0803C6D2:
adds r0, r3, #0
adds r1, r2, #0
bl InitializeAnimation
pop {pc}
thumb_func_start sub_0803C6DC
sub_0803C6DC: @ 0x0803C6DC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #0
bne _0803C6EA
strh r0, [r4, #0x24]
_0803C6EA:
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
thumb_func_start sub_0803C6F8
sub_0803C6F8: @ 0x0803C6F8
ldr r2, _0803C710 @ =gUnk_080CFFBC
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
_0803C710: .4byte gUnk_080CFFBC
thumb_func_start sub_0803C714
sub_0803C714: @ 0x0803C714
push {lr}
ldr r1, [r0, #0x54]
ldrb r3, [r0, #0x14]
ldr r2, _0803C734 @ =gUnk_080CFFC4
adds r3, r3, r2
movs r2, #0
ldrsb r2, [r3, r2]
lsls r2, r2, #0x10
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
lsls r3, r3, #0x10
bl PositionRelative
pop {pc}
.align 2, 0
_0803C734: .4byte gUnk_080CFFC4