tmc/asm/bowUse.s

339 lines
5.5 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0801917C
sub_0801917C: @ 0x0801917C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xa]
cmp r2, #0
bne _08019188
b _0801934A
_08019188:
ldr r0, [r4, #0x74]
subs r0, #1
str r0, [r4, #0x74]
cmp r0, #0
bne _0801919C
adds r0, r4, #0
bl sub_08019468
bl sub_0805E780
_0801919C:
adds r0, r4, #0
bl sub_08004274
ldr r0, [r4, #0x74]
cmp r0, #0x17
bhi _080191BA
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_080191BA:
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
adds r0, #0x40
ldrb r1, [r0]
movs r5, #4
adds r6, r0, #0
cmp r1, #0xe
bne _080191D0
movs r5, #1
_080191D0:
ldr r2, [r4, #0x6c]
ldr r3, [r4, #0x70]
adds r0, r4, #0
adds r1, r5, #0
bl sub_08008782
cmp r0, #0
beq _080191EE
ldrb r0, [r6]
cmp r0, #0xe
beq _080191EA
bl sub_0805E780
_080191EA:
movs r7, #1
b _080191F0
_080191EE:
movs r7, #0
_080191F0:
ldrb r0, [r6]
cmp r0, #0xe
bne _0801920E
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0801920E
adds r0, r4, #0
movs r1, #0x14
movs r2, #0
bl CreateFX
_0801920E:
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _0801921A
adds r0, r4, #0
bl sub_0800451C
_0801921A:
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08019288 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r4, r5]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0801928C @ =gLinkEntity
adds r1, #0x38
ldrb r1, [r1]
movs r2, #0x80
bl sub_080002F0
cmp r0, #0
bne _080192D0
cmp r7, #0
bne _080192D0
ldr r1, _08019290 @ =gUnk_08003E44
movs r0, #0x2e
ldrsh r2, [r4, r0]
movs r5, #0x32
ldrsh r3, [r4, r5]
adds r0, r4, #0
bl sub_080040D8
cmp r0, #0
beq _080192D0
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r6]
cmp r0, #0xe
bne _08019294
adds r0, r4, #0
bl sub_08019468
adds r0, r4, #0
adds r0, #0x58
ldrb r1, [r0]
adds r1, #0xf
adds r0, r4, #0
bl sub_08004260
b _080192A2
.align 2, 0
_08019288: .4byte gRoomControls
_0801928C: .4byte gLinkEntity
_08019290: .4byte gUnk_08003E44
_08019294:
adds r0, r4, #0
adds r0, #0x58
ldrb r1, [r0]
adds r1, #2
adds r0, r4, #0
bl sub_08004260
_080192A2:
adds r0, r4, #0
bl sub_08017744
ldrb r0, [r4, #0x10]
movs r1, #0x7f
ands r1, r0
movs r0, #0
strb r1, [r4, #0x10]
strh r0, [r4, #0x24]
ldr r0, [r4, #0x2c]
cmp r0, #0
bge _080192BC
movs r0, #0
_080192BC:
str r0, [r4, #0x2c]
ldr r0, [r4, #0x30]
cmp r0, #0
bge _080192C6
movs r0, #0
_080192C6:
str r0, [r4, #0x30]
movs r0, #0xc5
lsls r0, r0, #1
bl PlaySFX
_080192D0:
adds r5, r4, #0
adds r5, #0x41
ldrb r0, [r5]
cmp r0, #0
bne _080192DC
b _08019402
_080192DC:
cmp r7, #0
beq _080192E2
b _08019402
_080192E2:
ldrb r0, [r6]
cmp r0, #0xe
bne _080192EE
adds r0, r4, #0
bl sub_08019468
_080192EE:
adds r0, r4, #0
bl sub_08017744
ldrb r1, [r5]
movs r0, #0x3f
ands r0, r1
cmp r0, #0x42
bne _08019336
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #3
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r0, r1
strb r0, [r4, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
movs r0, #0x80
lsls r0, r0, #8
str r0, [r4, #0x20]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #6
bl sub_08004260
b _08019402
_08019336:
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #1
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
strb r0, [r4, #0x18]
b _08019402
_0801934A:
ldr r1, _0801938C @ =gLinkState
ldr r0, [r1, #0x2c]
cmp r0, r4
bne _0801935E
adds r0, r1, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
bne _08019368
str r0, [r1, #0x2c]
_0801935E:
adds r0, r1, #0
adds r0, #0x21
strb r2, [r0]
bl sub_0805E780
_08019368:
adds r0, r4, #0
adds r0, #0x68
ldrb r0, [r0]
cmp r0, #0xa
bne _08019398
ldr r0, _0801938C @ =gLinkState
adds r2, r0, #0
adds r2, #0x21
ldrb r0, [r2]
adds r1, r0, #0
cmp r1, #0
beq _08019398
cmp r1, #0x77
bhi _08019390
adds r0, #1
strb r0, [r2]
b _08019398
.align 2, 0
_0801938C: .4byte gLinkState
_08019390:
adds r1, r4, #0
adds r1, #0x40
movs r0, #0xe
strb r0, [r1]
_08019398:
ldr r0, _08019404 @ =gUnk_02002A40
adds r0, #0xad
ldrb r5, [r0]
ldrb r1, [r4, #0x1e]
ldr r2, [r4, #0x78]
subs r1, r1, r2
ldr r0, _08019408 @ =gLinkEntity
ldrb r0, [r0, #0x1e]
cmp r1, r0
beq _080193C2
adds r0, r0, r2
strb r0, [r4, #0x1e]
cmp r5, #0
bne _080193B8
adds r0, #0x2a
strb r0, [r4, #0x1e]
_080193B8:
ldrb r1, [r4, #0x1e]
ldrh r2, [r4, #0x12]
adds r0, r4, #0
bl sub_080042D0
_080193C2:
ldr r0, _08019408 @ =gLinkEntity
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080193FA
cmp r5, #0
beq _080193FA
adds r0, r4, #0
adds r0, #0x40
ldrb r2, [r0]
movs r0, #4
movs r1, #1
movs r3, #9
bl sub_08077CB8
cmp r0, #0
beq _080193FA
ldr r2, _0801940C @ =gLinkState
ldrb r1, [r2, #4]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #4]
movs r0, #1
rsbs r0, r0, #0
bl ModArrows
_080193FA:
ldr r1, _08019408 @ =gLinkEntity
adds r0, r4, #0
bl sub_08078E84
_08019402:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08019404: .4byte gUnk_02002A40
_08019408: .4byte gLinkEntity
_0801940C: .4byte gLinkState