mirror of https://github.com/zeldaret/tmc.git
887 lines
15 KiB
ArmAsm
887 lines
15 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start sub_08069B1C
|
|
sub_08069B1C: @ 0x08069B1C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _08069B40 @ =gUnk_08111D88
|
|
ldrb r0, [r4, #0xc]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, #0
|
|
bl _call_via_r1
|
|
adds r0, r4, #0
|
|
bl sub_0806ED78
|
|
adds r0, r4, #0
|
|
bl sub_08069FE8
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08069B40: .4byte gUnk_08111D88
|
|
|
|
thumb_func_start sub_08069B44
|
|
sub_08069B44: @ 0x08069B44
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
bl sub_08069EF0
|
|
cmp r0, #0
|
|
beq _08069C30
|
|
adds r0, r5, #0
|
|
bl sub_0805ACC0
|
|
cmp r0, #0
|
|
bne _08069B64
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, #0x32
|
|
ldrsh r4, [r5, r2]
|
|
b _08069B68
|
|
_08069B64:
|
|
lsrs r1, r0, #0x10
|
|
adds r4, r0, #0
|
|
_08069B68:
|
|
ldrb r0, [r5, #0xe]
|
|
movs r3, #0x20
|
|
cmp r0, #0
|
|
beq _08069B72
|
|
adds r3, r0, #0
|
|
_08069B72:
|
|
subs r0, r1, r3
|
|
adds r2, r5, #0
|
|
adds r2, #0x6e
|
|
strh r0, [r2]
|
|
adds r1, r1, r3
|
|
adds r0, r5, #0
|
|
adds r0, #0x6c
|
|
strh r1, [r0]
|
|
adds r1, r4, #0
|
|
subs r1, #8
|
|
adds r0, #4
|
|
strh r1, [r0]
|
|
adds r0, r4, #0
|
|
adds r0, #8
|
|
adds r2, #4
|
|
strh r0, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r5, #0x24]
|
|
movs r0, #0x1e
|
|
strb r0, [r5, #0xe]
|
|
movs r4, #2
|
|
strb r4, [r5, #0x14]
|
|
adds r1, r5, #0
|
|
adds r1, #0x6a
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r5, #0
|
|
bl sub_0801E99C
|
|
adds r1, r5, #0
|
|
adds r1, #0x74
|
|
strb r0, [r1]
|
|
adds r0, r5, #0
|
|
movs r1, #2
|
|
bl sub_0805E3A0
|
|
adds r0, r5, #0
|
|
movs r1, #0xa
|
|
bl InitAnimationForceUpdate
|
|
ldrb r0, [r5, #0x10]
|
|
ands r4, r0
|
|
cmp r4, #0
|
|
beq _08069BD2
|
|
adds r0, r5, #0
|
|
bl sub_0807DD50
|
|
_08069BD2:
|
|
ldrb r0, [r5, #0xa]
|
|
cmp r0, #0
|
|
bne _08069BF2
|
|
ldr r0, _08069C34 @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08069BF2
|
|
movs r0, #0x36
|
|
bl GetInventoryValue
|
|
cmp r0, #2
|
|
beq _08069BF2
|
|
movs r0, #4
|
|
strb r0, [r5, #0xc]
|
|
_08069BF2:
|
|
ldrb r0, [r5, #0xa]
|
|
cmp r0, #2
|
|
bne _08069C30
|
|
movs r0, #0xcf
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08069C30
|
|
ldr r0, _08069C38 @ =0x00004072
|
|
movs r6, #0x2e
|
|
ldrsh r1, [r5, r6]
|
|
ldr r3, _08069C3C @ =gRoomControls
|
|
ldrh r2, [r3, #6]
|
|
subs r1, r1, r2
|
|
asrs r1, r1, #4
|
|
movs r4, #0x3f
|
|
ands r1, r4
|
|
movs r6, #0x32
|
|
ldrsh r2, [r5, r6]
|
|
ldrh r3, [r3, #8]
|
|
adds r3, #8
|
|
subs r2, r2, r3
|
|
asrs r2, r2, #4
|
|
ands r2, r4
|
|
lsls r2, r2, #6
|
|
orrs r1, r2
|
|
adds r2, r5, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
bl SetTile
|
|
_08069C30:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08069C34: .4byte gLinkState
|
|
_08069C38: .4byte 0x00004072
|
|
_08069C3C: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08069C40
|
|
sub_08069C40: @ 0x08069C40
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl UpdateAnimationSingleFrame
|
|
adds r0, r4, #0
|
|
bl sub_08069F90
|
|
cmp r0, #0
|
|
beq _08069C80
|
|
ldr r0, _08069C68 @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08069C6C
|
|
adds r0, r4, #0
|
|
bl sub_08069CB8
|
|
b _08069C7A
|
|
.align 2, 0
|
|
_08069C68: .4byte gLinkState
|
|
_08069C6C:
|
|
adds r0, r4, #0
|
|
bl sub_0806EDC4
|
|
strb r0, [r4, #0x14]
|
|
adds r0, r4, #0
|
|
bl sub_08069D00
|
|
_08069C7A:
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
b _08069CB2
|
|
_08069C80:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08069CB2
|
|
movs r0, #2
|
|
strb r0, [r4, #0xc]
|
|
bl Random
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
adds r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
bl Random
|
|
ldr r2, _08069CB4 @ =gUnk_08111DA8
|
|
movs r1, #7
|
|
ands r1, r0
|
|
adds r1, r1, r2
|
|
ldrb r0, [r1]
|
|
strb r0, [r4, #0x15]
|
|
adds r0, r4, #0
|
|
bl sub_08069F6C
|
|
_08069CB2:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08069CB4: .4byte gUnk_08111DA8
|
|
|
|
thumb_func_start sub_08069CB8
|
|
sub_08069CB8: @ 0x08069CB8
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _08069CF8 @ =gLinkEntity
|
|
bl sub_080045C4
|
|
ldr r2, _08069CFC @ =gUnk_08111DB0
|
|
ldrb r1, [r4, #0x14]
|
|
lsls r1, r1, #5
|
|
adds r0, r0, r1
|
|
adds r0, r0, r2
|
|
ldrb r1, [r0]
|
|
lsrs r0, r1, #6
|
|
strb r0, [r4, #0x14]
|
|
movs r0, #0x3f
|
|
ands r1, r0
|
|
adds r5, r4, #0
|
|
adds r5, #0x6b
|
|
strb r1, [r5]
|
|
adds r0, r4, #0
|
|
bl sub_0806A028
|
|
adds r0, r4, #0
|
|
adds r0, #0x58
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r5]
|
|
cmp r0, r1
|
|
beq _08069CF6
|
|
ldrb r1, [r5]
|
|
adds r0, r4, #0
|
|
bl InitAnimationForceUpdate
|
|
_08069CF6:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08069CF8: .4byte gLinkEntity
|
|
_08069CFC: .4byte gUnk_08111DB0
|
|
|
|
thumb_func_start sub_08069D00
|
|
sub_08069D00: @ 0x08069D00
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r4, r0, #0
|
|
adds r5, r4, #0
|
|
adds r5, #0x6b
|
|
movs r7, #8
|
|
strb r7, [r5]
|
|
bl sub_0806A028
|
|
adds r6, r4, #0
|
|
adds r6, #0x58
|
|
ldrb r0, [r6]
|
|
cmp r0, #0x1f
|
|
bls _08069D2A
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08069D4E
|
|
strb r7, [r5]
|
|
_08069D2A:
|
|
bl Random
|
|
ldr r1, _08069D50 @ =0x000001FF
|
|
ands r1, r0
|
|
cmp r1, #2
|
|
bhi _08069D3C
|
|
adds r0, r4, #0
|
|
bl sub_08069FBC
|
|
_08069D3C:
|
|
ldrb r2, [r6]
|
|
ldrb r1, [r5]
|
|
ldrb r0, [r4, #0x14]
|
|
adds r1, r1, r0
|
|
cmp r2, r1
|
|
beq _08069D4E
|
|
adds r0, r4, #0
|
|
bl InitAnimationForceUpdate
|
|
_08069D4E:
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_08069D50: .4byte 0x000001FF
|
|
|
|
thumb_func_start sub_08069D54
|
|
sub_08069D54: @ 0x08069D54
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08069F90
|
|
cmp r0, #0
|
|
bne _08069DD8
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08069DD8
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
adds r0, r4, #0
|
|
bl sub_080AEF88
|
|
ldrh r1, [r4, #0x2a]
|
|
movs r0, #0x2e
|
|
ldrsh r2, [r4, r0]
|
|
adds r0, r4, #0
|
|
adds r0, #0x6e
|
|
ldrh r0, [r0]
|
|
cmp r2, r0
|
|
bge _08069D92
|
|
adds r0, #1
|
|
strh r0, [r4, #0x2e]
|
|
movs r1, #0xe0
|
|
lsls r1, r1, #4
|
|
b _08069DA4
|
|
_08069D92:
|
|
adds r0, r4, #0
|
|
adds r0, #0x6c
|
|
ldrh r0, [r0]
|
|
cmp r2, r0
|
|
ble _08069DA4
|
|
subs r0, #1
|
|
strh r0, [r4, #0x2e]
|
|
movs r1, #0xe0
|
|
lsls r1, r1, #8
|
|
_08069DA4:
|
|
movs r0, #0x32
|
|
ldrsh r2, [r4, r0]
|
|
adds r0, r4, #0
|
|
adds r0, #0x70
|
|
ldrh r0, [r0]
|
|
cmp r2, r0
|
|
bge _08069DBA
|
|
adds r0, #1
|
|
strh r0, [r4, #0x32]
|
|
movs r1, #0xe
|
|
b _08069DCA
|
|
_08069DBA:
|
|
adds r0, r4, #0
|
|
adds r0, #0x72
|
|
ldrh r0, [r0]
|
|
cmp r2, r0
|
|
ble _08069DCA
|
|
subs r0, #1
|
|
strh r0, [r4, #0x32]
|
|
movs r1, #0xe0
|
|
_08069DCA:
|
|
adds r0, r4, #0
|
|
bl sub_0800417E
|
|
adds r0, r4, #0
|
|
bl sub_08069F6C
|
|
b _08069DF6
|
|
_08069DD8:
|
|
adds r0, r4, #0
|
|
bl sub_08069F90
|
|
cmp r0, #0
|
|
beq _08069DE6
|
|
movs r0, #1
|
|
b _08069DE8
|
|
_08069DE6:
|
|
movs r0, #3
|
|
_08069DE8:
|
|
strb r0, [r4, #0xc]
|
|
bl Random
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
adds r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
_08069DF6:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08069DF8
|
|
sub_08069DF8: @ 0x08069DF8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl UpdateAnimationSingleFrame
|
|
adds r0, r4, #0
|
|
bl sub_08069F90
|
|
cmp r0, #0
|
|
beq _08069E0E
|
|
movs r0, #1
|
|
b _08069E34
|
|
_08069E0E:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08069E22
|
|
adds r0, r4, #0
|
|
bl sub_08069D00
|
|
b _08069E42
|
|
_08069E22:
|
|
bl Random
|
|
movs r1, #0xff
|
|
ands r1, r0
|
|
cmp r1, #0x2f
|
|
bhi _08069E32
|
|
movs r0, #2
|
|
b _08069E34
|
|
_08069E32:
|
|
movs r0, #3
|
|
_08069E34:
|
|
strb r0, [r4, #0xc]
|
|
bl Random
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
adds r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
_08069E42:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08069E44
|
|
sub_08069E44: @ 0x08069E44
|
|
push {lr}
|
|
movs r1, #0
|
|
bl sub_0807DD94
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08069E50
|
|
sub_08069E50: @ 0x08069E50
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r4, r0, #0
|
|
bl sub_0806EDC4
|
|
strb r0, [r4, #0x14]
|
|
adds r5, r4, #0
|
|
adds r5, #0x6b
|
|
movs r7, #8
|
|
strb r7, [r5]
|
|
adds r0, r4, #0
|
|
bl sub_0806A028
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
adds r6, r4, #0
|
|
adds r6, #0x58
|
|
ldrb r0, [r6]
|
|
cmp r0, #0x1f
|
|
bls _08069E88
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08069EC8
|
|
strb r7, [r5]
|
|
_08069E88:
|
|
adds r0, r4, #0
|
|
bl sub_08069FBC
|
|
ldrb r2, [r6]
|
|
ldrb r1, [r5]
|
|
ldrb r0, [r4, #0x14]
|
|
adds r1, r1, r0
|
|
cmp r2, r1
|
|
beq _08069EA0
|
|
adds r0, r4, #0
|
|
bl InitAnimationForceUpdate
|
|
_08069EA0:
|
|
movs r0, #0x36
|
|
bl GetInventoryValue
|
|
cmp r0, #2
|
|
bne _08069EC8
|
|
movs r0, #7
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
movs r1, #0x29
|
|
bl InitAnimationForceUpdate
|
|
adds r0, r4, #0
|
|
bl sub_080788E0
|
|
movs r0, #0xd1
|
|
bl sub_08004488
|
|
movs r0, #0xcd
|
|
bl sub_08004488
|
|
_08069EC8:
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08069ECC
|
|
sub_08069ECC: @ 0x08069ECC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl UpdateFuseInteraction
|
|
cmp r0, #0
|
|
beq _08069EDC
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
_08069EDC:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08069EE0
|
|
sub_08069EE0: @ 0x08069EE0
|
|
push {lr}
|
|
bl UpdateAnimationSingleFrame
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_08069EE8
|
|
sub_08069EE8: @ 0x08069EE8
|
|
movs r1, #5
|
|
strb r1, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08069EF0
|
|
sub_08069EF0: @ 0x08069EF0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xa]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r0, _08069F20 @ =gUnk_08111D58
|
|
adds r1, r1, r0
|
|
adds r0, r4, #0
|
|
bl LoadExtraSpriteData
|
|
cmp r0, #0
|
|
beq _08069F28
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldr r1, _08069F24 @ =gUnk_08111E30
|
|
ldrb r0, [r4, #0xa]
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
adds r0, r4, #0
|
|
adds r0, #0x68
|
|
strh r1, [r0]
|
|
movs r0, #1
|
|
b _08069F2A
|
|
.align 2, 0
|
|
_08069F20: .4byte gUnk_08111D58
|
|
_08069F24: .4byte gUnk_08111E30
|
|
_08069F28:
|
|
movs r0, #0
|
|
_08069F2A:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08069F2C
|
|
sub_08069F2C: @ 0x08069F2C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r0, #0x5a
|
|
ldrb r2, [r0]
|
|
movs r0, #0x81
|
|
rsbs r0, r0, #0
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _08069F46
|
|
adds r0, r4, #0
|
|
adds r0, #0x68
|
|
ldrh r0, [r0]
|
|
adds r2, r2, r0
|
|
_08069F46:
|
|
subs r2, #1
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0806FF60
|
|
ldrb r2, [r4, #0x1e]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl sub_0806FF60
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
bl sub_0806FF88
|
|
adds r0, r4, #0
|
|
bl sub_0807000C
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08069F6C
|
|
sub_08069F6C: @ 0x08069F6C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0x15]
|
|
bl sub_0806F5A4
|
|
strb r0, [r4, #0x14]
|
|
ldrb r0, [r4, #0x14]
|
|
adds r1, r0, #4
|
|
adds r0, r4, #0
|
|
adds r0, #0x58
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _08069F8C
|
|
adds r0, r4, #0
|
|
bl InitAnimationForceUpdate
|
|
_08069F8C:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08069F90
|
|
sub_08069F90: @ 0x08069F90
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xa]
|
|
cmp r0, #2
|
|
bne _08069FA8
|
|
movs r0, #0xcf
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08069FA8
|
|
movs r0, #1
|
|
b _08069FB4
|
|
_08069FA8:
|
|
ldr r1, _08069FB8 @ =gLinkEntity
|
|
adds r0, r4, #0
|
|
movs r2, #0x14
|
|
movs r3, #0x14
|
|
bl sub_080041A0
|
|
_08069FB4:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08069FB8: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_08069FBC
|
|
sub_08069FBC: @ 0x08069FBC
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _08069FE4 @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
movs r1, #0x20
|
|
cmp r0, #0
|
|
beq _08069FD0
|
|
movs r1, #0x24
|
|
_08069FD0:
|
|
ldrb r0, [r2, #0x14]
|
|
cmp r0, #1
|
|
beq _08069FDA
|
|
cmp r0, #3
|
|
bne _08069FE0
|
|
_08069FDA:
|
|
adds r0, r2, #0
|
|
adds r0, #0x6b
|
|
strb r1, [r0]
|
|
_08069FE0:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08069FE4: .4byte gLinkState
|
|
|
|
thumb_func_start sub_08069FE8
|
|
sub_08069FE8: @ 0x08069FE8
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldr r0, _0806A010 @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
rsbs r0, r0, #0
|
|
lsrs r5, r0, #0x1f
|
|
adds r0, r4, #0
|
|
adds r0, #0x6a
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
beq _0806A020
|
|
cmp r5, #0
|
|
bne _0806A014
|
|
adds r0, r4, #0
|
|
bl sub_08078778
|
|
b _0806A020
|
|
.align 2, 0
|
|
_0806A010: .4byte gLinkState
|
|
_0806A014:
|
|
adds r0, r4, #0
|
|
adds r0, #0x74
|
|
ldrb r1, [r0]
|
|
adds r0, r4, #0
|
|
bl sub_080787A8
|
|
_0806A020:
|
|
adds r0, r4, #0
|
|
adds r0, #0x6a
|
|
strb r5, [r0]
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_0806A028
|
|
sub_0806A028: @ 0x0806A028
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r0, #0x39
|
|
movs r2, #0
|
|
ldrsb r2, [r0, r2]
|
|
cmp r2, #0
|
|
beq _0806A07E
|
|
ldr r0, _0806A054 @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0806A060
|
|
cmp r2, #2
|
|
bne _0806A058
|
|
movs r0, #6
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0806F118
|
|
b _0806A076
|
|
.align 2, 0
|
|
_0806A054: .4byte gLinkState
|
|
_0806A058:
|
|
adds r0, r4, #0
|
|
bl sub_0806A080
|
|
b _0806A076
|
|
_0806A060:
|
|
adds r0, r4, #0
|
|
bl sub_08069FBC
|
|
adds r0, r4, #0
|
|
bl sub_0806A080
|
|
movs r0, #0xd1
|
|
bl PlaySFX
|
|
bl sub_080791D0
|
|
_0806A076:
|
|
adds r1, r4, #0
|
|
adds r1, #0x39
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
_0806A07E:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0806A080
|
|
sub_0806A080: @ 0x0806A080
|
|
push {lr}
|
|
ldrb r2, [r0, #0xb]
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r2
|
|
lsls r1, r1, #4
|
|
ldr r2, _0806A09C @ =gUnk_02002A40
|
|
ldrb r2, [r2, #8]
|
|
lsls r2, r2, #3
|
|
ldr r3, _0806A0A0 @ =gUnk_08111E34
|
|
adds r2, r2, r3
|
|
adds r1, r1, r2
|
|
bl ShowNPCDialogue
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0806A09C: .4byte gUnk_02002A40
|
|
_0806A0A0: .4byte gUnk_08111E34
|
|
|
|
thumb_func_start sub_0806A0A4
|
|
sub_0806A0A4: @ 0x0806A0A4
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
ldr r0, _0806A0F8 @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0806A100
|
|
movs r5, #4
|
|
movs r0, #0xcf
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _0806A120
|
|
movs r5, #3
|
|
movs r0, #0xcf
|
|
bl SetLocalFlag
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r4, r1]
|
|
ldr r2, _0806A0FC @ =gRoomControls
|
|
ldrh r1, [r2, #6]
|
|
subs r0, r0, r1
|
|
asrs r0, r0, #4
|
|
movs r3, #0x3f
|
|
ands r0, r3
|
|
movs r6, #0x32
|
|
ldrsh r1, [r4, r6]
|
|
ldrh r2, [r2, #8]
|
|
adds r2, #8
|
|
subs r1, r1, r2
|
|
asrs r1, r1, #4
|
|
ands r1, r3
|
|
lsls r1, r1, #6
|
|
orrs r0, r1
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
ldrb r1, [r1]
|
|
bl sub_0807BA8C
|
|
b _0806A120
|
|
.align 2, 0
|
|
_0806A0F8: .4byte gLinkState
|
|
_0806A0FC: .4byte gRoomControls
|
|
_0806A100:
|
|
movs r5, #2
|
|
movs r0, #0xcf
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _0806A120
|
|
movs r5, #1
|
|
movs r0, #0xdb
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _0806A120
|
|
movs r5, #0
|
|
movs r0, #0xdb
|
|
bl SetLocalFlag
|
|
_0806A120:
|
|
ldr r2, _0806A13C @ =gUnk_08111F74
|
|
ldr r0, _0806A140 @ =gUnk_02002A40
|
|
ldrb r1, [r0, #8]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
adds r0, r0, r5
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
adds r1, r4, #0
|
|
bl TextboxNoOverlap
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0806A13C: .4byte gUnk_08111F74
|
|
_0806A140: .4byte gUnk_02002A40
|
|
|
|
thumb_func_start sub_0806A144
|
|
sub_0806A144: @ 0x0806A144
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r4, #4
|
|
ldr r0, _0806A18C @ =gLinkState
|
|
ldr r0, [r0, #0x30]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0806A17A
|
|
movs r4, #3
|
|
movs r0, #0x46
|
|
bl GetInventoryValue
|
|
cmp r0, #0
|
|
bne _0806A17A
|
|
movs r0, #0x29
|
|
bl CheckGlobalFlag
|
|
cmp r0, #0
|
|
beq _0806A17A
|
|
movs r0, #0x85
|
|
bl CheckLocalFlag
|
|
movs r4, #2
|
|
cmp r0, #0
|
|
bne _0806A17A
|
|
movs r4, #1
|
|
_0806A17A:
|
|
ldr r0, _0806A190 @ =gUnk_08111FD8
|
|
lsls r1, r4, #1
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1]
|
|
adds r1, r5, #0
|
|
bl TextboxNoOverlap
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0806A18C: .4byte gLinkState
|
|
_0806A190: .4byte gUnk_08111FD8
|
|
|
|
thumb_func_start sub_0806A194
|
|
sub_0806A194: @ 0x0806A194
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _0806A1CE
|
|
adds r0, r4, #0
|
|
bl sub_08069EF0
|
|
cmp r0, #0
|
|
beq _0806A1D4
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x18]
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
movs r1, #0x23
|
|
bl InitializeAnimation
|
|
b _0806A1D4
|
|
_0806A1CE:
|
|
adds r0, r4, #0
|
|
bl sub_08004274
|
|
_0806A1D4:
|
|
pop {r4, pc}
|
|
.align 2, 0 |