mirror of https://github.com/zeldaret/tmc.git
1095 lines
18 KiB
ArmAsm
1095 lines
18 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start sub_08063CF8
|
|
sub_08063CF8: @ 0x08063CF8
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldrb r1, [r2, #0x10]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08063D1C
|
|
ldr r0, _08063D18 @ =gUnk_0810F544
|
|
ldrb r1, [r2, #0xc]
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r2, #0
|
|
bl _call_via_r1
|
|
b _08063D22
|
|
.align 2, 0
|
|
_08063D18: .4byte gUnk_0810F544
|
|
_08063D1C:
|
|
adds r0, r2, #0
|
|
bl sub_08063D24
|
|
_08063D22:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_08063D24
|
|
sub_08063D24: @ 0x08063D24
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _08063D40 @ =gUnk_0810F550
|
|
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
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08063D40: .4byte gUnk_0810F550
|
|
|
|
thumb_func_start sub_08063D44
|
|
sub_08063D44: @ 0x08063D44
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r0, _08063DA0 @ =gUnk_03003DBC
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x46
|
|
bhi _08063DC6
|
|
ldrb r0, [r4, #9]
|
|
movs r1, #0x15
|
|
eors r0, r1
|
|
rsbs r1, r0, #0
|
|
orrs r1, r0
|
|
lsrs r1, r1, #0x1f
|
|
lsls r1, r1, #4
|
|
ldr r0, _08063DA4 @ =gUnk_0810F524
|
|
adds r1, r1, r0
|
|
adds r0, r4, #0
|
|
bl LoadExtraSpriteData
|
|
cmp r0, #0
|
|
beq _08063DC6
|
|
adds r0, r4, #0
|
|
movs r1, #4
|
|
bl InitializeAnimation
|
|
ldr r0, _08063DA8 @ =gUnk_0810F6BC
|
|
ldrb r1, [r4, #0xa]
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r4, #0
|
|
movs r2, #0
|
|
bl sub_0806EE04
|
|
ldrb r0, [r4, #0xa]
|
|
cmp r0, #0
|
|
blt _08063DB6
|
|
cmp r0, #3
|
|
bgt _08063DAC
|
|
movs r0, #0xc
|
|
bl sub_080A7EE0
|
|
str r4, [r0, #0x50]
|
|
movs r1, #0x3c
|
|
strb r1, [r0, #0xf]
|
|
b _08063DB6
|
|
.align 2, 0
|
|
_08063DA0: .4byte gUnk_03003DBC
|
|
_08063DA4: .4byte gUnk_0810F524
|
|
_08063DA8: .4byte gUnk_0810F6BC
|
|
_08063DAC:
|
|
cmp r0, #5
|
|
bgt _08063DB6
|
|
adds r0, r4, #0
|
|
bl sub_08078778
|
|
_08063DB6:
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
movs r1, #0
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0xa]
|
|
adds r0, r4, #0
|
|
bl sub_08063DC8
|
|
_08063DC6:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08063DC8
|
|
sub_08063DC8: @ 0x08063DC8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xa]
|
|
cmp r0, #0xff
|
|
bne _08063DF8
|
|
movs r0, #2
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
ldr r1, _08063DF4 @ =gLinkEntity
|
|
adds r0, r4, #0
|
|
bl sub_080045C4
|
|
bl sub_0806F5A4
|
|
strb r0, [r4, #0x14]
|
|
ldrb r1, [r4, #0x14]
|
|
adds r1, #4
|
|
adds r0, r4, #0
|
|
bl InitAnimationForceUpdate
|
|
b _08063E4C
|
|
.align 2, 0
|
|
_08063DF4: .4byte gLinkEntity
|
|
_08063DF8:
|
|
adds r0, r4, #0
|
|
bl sub_0806EE20
|
|
adds r0, r4, #0
|
|
adds r0, #0x3e
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r4, #0x14]
|
|
cmp r0, r1
|
|
beq _08063E18
|
|
strb r0, [r4, #0x14]
|
|
ldrb r1, [r4, #0x14]
|
|
adds r1, #4
|
|
adds r0, r4, #0
|
|
bl InitializeAnimation
|
|
b _08063E1E
|
|
_08063E18:
|
|
adds r0, r4, #0
|
|
bl sub_08004274
|
|
_08063E1E:
|
|
adds r2, r4, #0
|
|
adds r2, #0x39
|
|
movs r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #0
|
|
beq _08063E4C
|
|
movs r1, #0
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r2]
|
|
ldr r1, _08063E50 @ =gLinkEntity
|
|
adds r0, r4, #0
|
|
bl sub_080045C4
|
|
bl sub_0806F5A4
|
|
adds r1, r0, #0
|
|
adds r0, r4, #0
|
|
bl InitializeAnimation
|
|
adds r0, r4, #0
|
|
bl sub_08064428
|
|
_08063E4C:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08063E50: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_08063E54
|
|
sub_08063E54: @ 0x08063E54
|
|
push {lr}
|
|
ldrb r1, [r0, #0xe]
|
|
subs r1, #1
|
|
strb r1, [r0, #0xe]
|
|
lsls r1, r1, #0x18
|
|
cmp r1, #0
|
|
bne _08063E68
|
|
movs r0, #0xf
|
|
bl SetRoomFlag
|
|
_08063E68:
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08063E6C
|
|
sub_08063E6C: @ 0x08063E6C
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _08063E8C @ =gTextBox
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08063E8A
|
|
movs r0, #1
|
|
strb r0, [r2, #0xc]
|
|
ldrb r1, [r2, #0x14]
|
|
adds r1, #4
|
|
adds r0, r2, #0
|
|
bl InitializeAnimation
|
|
_08063E8A:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08063E8C: .4byte gTextBox
|
|
|
|
thumb_func_start sub_08063E90
|
|
sub_08063E90: @ 0x08063E90
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #9]
|
|
movs r1, #0x15
|
|
eors r0, r1
|
|
rsbs r1, r0, #0
|
|
orrs r1, r0
|
|
lsrs r1, r1, #0x1f
|
|
lsls r1, r1, #4
|
|
ldr r0, _08063EC8 @ =gUnk_0810F524
|
|
adds r1, r1, r0
|
|
adds r0, r4, #0
|
|
bl LoadExtraSpriteData
|
|
cmp r0, #0
|
|
beq _08063F1E
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0xe]
|
|
cmp r1, #0
|
|
beq _08063ECC
|
|
adds r1, r4, #0
|
|
adds r1, #0x70
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
b _08063ED2
|
|
.align 2, 0
|
|
_08063EC8: .4byte gUnk_0810F524
|
|
_08063ECC:
|
|
adds r0, r4, #0
|
|
adds r0, #0x70
|
|
strb r1, [r0]
|
|
_08063ED2:
|
|
movs r0, #0
|
|
strb r0, [r4, #0xe]
|
|
adds r0, r4, #0
|
|
bl sub_0805ACC0
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
bne _08063EF2
|
|
ldrh r0, [r4, #0x2e]
|
|
adds r1, r4, #0
|
|
adds r1, #0x68
|
|
strh r0, [r1]
|
|
ldrh r0, [r4, #0x32]
|
|
adds r1, #2
|
|
strh r0, [r1]
|
|
b _08063EFE
|
|
_08063EF2:
|
|
lsrs r1, r2, #0x10
|
|
adds r0, r4, #0
|
|
adds r0, #0x68
|
|
strh r1, [r0]
|
|
adds r0, #2
|
|
strh r2, [r0]
|
|
_08063EFE:
|
|
adds r1, r4, #0
|
|
adds r1, #0x71
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
subs r1, #0x39
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
bl sub_08063F20
|
|
_08063F1E:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08063F20
|
|
sub_08063F20: @ 0x08063F20
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl sub_08004274
|
|
adds r2, r4, #0
|
|
adds r2, #0x39
|
|
movs r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #0
|
|
beq _08063F72
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
movs r1, #0
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r2]
|
|
ldr r1, _08063F74 @ =gLinkEntity
|
|
adds r0, r4, #0
|
|
bl sub_080045C4
|
|
bl sub_0806F5A4
|
|
adds r1, r0, #0
|
|
adds r0, r4, #0
|
|
adds r0, #0x70
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
adds r1, r1, r0
|
|
adds r0, r4, #0
|
|
bl InitializeAnimation
|
|
adds r0, r4, #0
|
|
bl sub_08064428
|
|
_08063F72:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08063F74: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_08063F78
|
|
sub_08063F78: @ 0x08063F78
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _08063FA8 @ =gTextBox
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08063FA6
|
|
ldrb r0, [r2, #0xc]
|
|
subs r0, #1
|
|
strb r0, [r2, #0xc]
|
|
ldrb r1, [r2, #0x14]
|
|
lsrs r1, r1, #1
|
|
adds r0, r2, #0
|
|
adds r0, #0x70
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
adds r0, #4
|
|
adds r1, r1, r0
|
|
adds r0, r2, #0
|
|
bl InitializeAnimation
|
|
_08063FA6:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08063FA8: .4byte gTextBox
|
|
|
|
thumb_func_start sub_08063FAC
|
|
sub_08063FAC: @ 0x08063FAC
|
|
push {r4, r5, r6, lr}
|
|
adds r6, r0, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x3f
|
|
adds r2, r0, #0
|
|
ands r2, r1
|
|
ldrb r3, [r6, #0x1e]
|
|
adds r5, r0, #0
|
|
ands r5, r3
|
|
adds r1, r6, #0
|
|
adds r1, #0x5b
|
|
ldrb r1, [r1]
|
|
adds r4, r0, #0
|
|
ands r4, r1
|
|
ldrb r0, [r6, #9]
|
|
cmp r0, #0x15
|
|
bne _08063FEC
|
|
movs r0, #0x40
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08063FE2
|
|
adds r5, #0x21
|
|
movs r2, #1
|
|
rsbs r2, r2, #0
|
|
movs r4, #0
|
|
b _08063FF6
|
|
_08063FE2:
|
|
adds r2, #0x19
|
|
cmp r4, #0
|
|
beq _08063FF6
|
|
adds r4, #0x1f
|
|
b _08063FF6
|
|
_08063FEC:
|
|
adds r2, #0x46
|
|
adds r5, #0x2d
|
|
cmp r4, #0
|
|
beq _08063FF6
|
|
adds r4, #0x4c
|
|
_08063FF6:
|
|
subs r4, #1
|
|
adds r0, r6, #0
|
|
movs r1, #0
|
|
bl sub_0806FF60
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
adds r2, r5, #0
|
|
bl sub_0806FF60
|
|
adds r0, r6, #0
|
|
movs r1, #2
|
|
adds r2, r4, #0
|
|
bl sub_0806FF60
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
bl sub_0806FF88
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
movs r2, #2
|
|
bl sub_0806FFD8
|
|
adds r0, r6, #0
|
|
bl sub_0807000C
|
|
pop {r4, r5, r6, pc}
|
|
|
|
thumb_func_start sub_08064030
|
|
sub_08064030: @ 0x08064030
|
|
ldr r0, _08064040 @ =gRoomVars
|
|
ldr r2, [r0, #0x68]
|
|
rsbs r0, r2, #0
|
|
orrs r0, r2
|
|
lsrs r0, r0, #0x1f
|
|
str r0, [r1, #0x14]
|
|
bx lr
|
|
.align 2, 0
|
|
_08064040: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_08064044
|
|
sub_08064044: @ 0x08064044
|
|
ldr r1, _0806404C @ =gUnk_030010A0
|
|
movs r0, #1
|
|
strb r0, [r1, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0806404C: .4byte gUnk_030010A0
|
|
|
|
thumb_func_start sub_08064050
|
|
sub_08064050: @ 0x08064050
|
|
push {lr}
|
|
adds r2, r1, #0
|
|
movs r1, #0
|
|
str r1, [r2, #4]
|
|
ldrb r0, [r0, #0xb]
|
|
cmp r0, #0x12
|
|
beq _08064072
|
|
cmp r0, #0x12
|
|
bgt _08064068
|
|
cmp r0, #0x11
|
|
beq _0806406E
|
|
b _0806407A
|
|
_08064068:
|
|
cmp r0, #0x13
|
|
beq _08064076
|
|
b _0806407A
|
|
_0806406E:
|
|
movs r0, #1
|
|
b _08064078
|
|
_08064072:
|
|
movs r0, #2
|
|
b _08064078
|
|
_08064076:
|
|
movs r0, #3
|
|
_08064078:
|
|
str r0, [r2, #4]
|
|
_0806407A:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0806407C
|
|
sub_0806407C: @ 0x0806407C
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
adds r5, r1, #0
|
|
ldrb r0, [r5, #0x18]
|
|
cmp r0, #0
|
|
bne _080640E8
|
|
adds r0, #1
|
|
strb r0, [r5, #0x18]
|
|
bl Random
|
|
movs r1, #0x3f
|
|
ands r0, r1
|
|
adds r0, #0x20
|
|
strh r0, [r5, #0x12]
|
|
bl Random
|
|
adds r1, r0, #0
|
|
movs r0, #0x18
|
|
ands r1, r0
|
|
ldrb r0, [r4, #0x15]
|
|
cmp r0, #8
|
|
beq _080640C4
|
|
cmp r0, #8
|
|
bgt _080640B2
|
|
cmp r0, #0
|
|
beq _080640BC
|
|
b _080640DA
|
|
_080640B2:
|
|
cmp r0, #0x10
|
|
beq _080640CC
|
|
cmp r0, #0x18
|
|
beq _080640D4
|
|
b _080640DA
|
|
_080640BC:
|
|
cmp r1, #0x10
|
|
bne _080640DA
|
|
movs r1, #8
|
|
b _080640DA
|
|
_080640C4:
|
|
cmp r1, #0x18
|
|
bne _080640DA
|
|
movs r1, #0x10
|
|
b _080640DA
|
|
_080640CC:
|
|
cmp r1, #0
|
|
bne _080640DA
|
|
movs r1, #0x18
|
|
b _080640DA
|
|
_080640D4:
|
|
cmp r1, #8
|
|
bne _080640DA
|
|
movs r1, #0
|
|
_080640DA:
|
|
strb r1, [r4, #0x15]
|
|
adds r0, r1, #0
|
|
bl sub_0806F5B0
|
|
strb r0, [r4, #0x14]
|
|
movs r0, #0x80
|
|
strh r0, [r4, #0x24]
|
|
_080640E8:
|
|
ldrb r0, [r4, #0x14]
|
|
lsrs r2, r0, #1
|
|
adds r1, r2, #4
|
|
adds r0, r4, #0
|
|
adds r0, #0x58
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _0806410A
|
|
adds r0, r4, #0
|
|
adds r0, #0x70
|
|
movs r1, #0
|
|
ldrsb r1, [r0, r1]
|
|
adds r1, #4
|
|
adds r1, r2, r1
|
|
adds r0, r4, #0
|
|
bl InitializeAnimation
|
|
_0806410A:
|
|
adds r0, r4, #0
|
|
bl sub_080AEF88
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r4, r0]
|
|
adds r2, r4, #0
|
|
adds r2, #0x68
|
|
movs r3, #0
|
|
ldrsh r0, [r2, r3]
|
|
subs r1, r1, r0
|
|
cmp r1, #0x10
|
|
ble _0806412C
|
|
ldrh r0, [r2]
|
|
adds r0, #0x10
|
|
strh r0, [r4, #0x2e]
|
|
movs r0, #1
|
|
strh r0, [r5, #0x12]
|
|
_0806412C:
|
|
movs r3, #0x10
|
|
rsbs r3, r3, #0
|
|
cmp r1, r3
|
|
bge _0806413E
|
|
ldrh r0, [r2]
|
|
subs r0, #0x10
|
|
strh r0, [r4, #0x2e]
|
|
movs r0, #1
|
|
strh r0, [r5, #0x12]
|
|
_0806413E:
|
|
movs r6, #0x32
|
|
ldrsh r1, [r4, r6]
|
|
adds r2, r4, #0
|
|
adds r2, #0x6a
|
|
movs r6, #0
|
|
ldrsh r0, [r2, r6]
|
|
subs r1, r1, r0
|
|
cmp r1, #0x10
|
|
ble _0806415A
|
|
ldrh r0, [r2]
|
|
adds r0, #0x10
|
|
strh r0, [r4, #0x32]
|
|
movs r0, #1
|
|
strh r0, [r5, #0x12]
|
|
_0806415A:
|
|
cmp r1, r3
|
|
bge _08064168
|
|
ldrh r0, [r2]
|
|
subs r0, #0x10
|
|
strh r0, [r4, #0x32]
|
|
movs r0, #1
|
|
strh r0, [r5, #0x12]
|
|
_08064168:
|
|
ldrh r0, [r5, #0x12]
|
|
subs r0, #1
|
|
strh r0, [r5, #0x12]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
beq _0806417A
|
|
ldr r1, _0806417C @ =gUnk_02033280
|
|
movs r0, #0
|
|
strb r0, [r1, #6]
|
|
_0806417A:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0806417C: .4byte gUnk_02033280
|
|
|
|
thumb_func_start sub_08064180
|
|
sub_08064180: @ 0x08064180
|
|
push {lr}
|
|
movs r0, #7
|
|
movs r1, #0x15
|
|
movs r2, #7
|
|
bl sub_0805EB00
|
|
cmp r0, #0
|
|
beq _08064194
|
|
bl DeleteEntity
|
|
_08064194:
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08064198
|
|
sub_08064198: @ 0x08064198
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r4, r5, #0
|
|
adds r4, #0x71
|
|
ldrb r1, [r4]
|
|
movs r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #0
|
|
ble _080641AE
|
|
subs r0, r1, #1
|
|
strb r0, [r4]
|
|
_080641AE:
|
|
ldr r0, _080641D8 @ =gLinkEntity
|
|
movs r2, #0x32
|
|
ldrsh r1, [r0, r2]
|
|
movs r2, #0x32
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r1, r0
|
|
cmp r1, #2
|
|
ble _080641C0
|
|
movs r1, #2
|
|
_080641C0:
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bge _080641CA
|
|
adds r1, r0, #0
|
|
_080641CA:
|
|
adds r6, r4, #0
|
|
cmp r1, #0
|
|
beq _08064256
|
|
cmp r1, #0
|
|
ble _080641DC
|
|
movs r0, #0x10
|
|
b _080641DE
|
|
.align 2, 0
|
|
_080641D8: .4byte gLinkEntity
|
|
_080641DC:
|
|
movs r0, #0
|
|
_080641DE:
|
|
strb r0, [r5, #0x15]
|
|
cmp r1, #0
|
|
bge _080641E6
|
|
rsbs r1, r1, #0
|
|
_080641E6:
|
|
lsls r0, r1, #8
|
|
strh r0, [r5, #0x24]
|
|
movs r0, #0x32
|
|
ldrsh r4, [r5, r0]
|
|
adds r0, r5, #0
|
|
bl sub_080AEF88
|
|
movs r1, #0x32
|
|
ldrsh r0, [r5, r1]
|
|
adds r6, r5, #0
|
|
adds r6, #0x71
|
|
cmp r4, r0
|
|
beq _08064256
|
|
ldr r0, _080642B0 @ =gLinkEntity
|
|
movs r2, #0x24
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #1
|
|
cmp r1, r0
|
|
ble _08064222
|
|
ldr r0, _080642B4 @ =gUnk_030010A0
|
|
ldr r0, [r0]
|
|
movs r1, #6
|
|
bl __modsi3
|
|
cmp r0, #0
|
|
bne _08064222
|
|
adds r0, r5, #0
|
|
bl sub_080A29FC
|
|
_08064222:
|
|
adds r4, r5, #0
|
|
adds r4, #0x71
|
|
movs r0, #0xa
|
|
strb r0, [r4]
|
|
ldrb r0, [r5, #0x15]
|
|
bl sub_0806F5B0
|
|
strb r0, [r5, #0x14]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x19
|
|
adds r1, r5, #0
|
|
adds r1, #0x70
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r1, #4
|
|
adds r1, r0, r1
|
|
adds r0, r5, #0
|
|
adds r0, #0x58
|
|
adds r6, r4, #0
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _08064256
|
|
adds r0, r5, #0
|
|
bl InitializeAnimation
|
|
_08064256:
|
|
movs r0, #0
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, #0
|
|
bne _0806428C
|
|
ldr r1, _080642B0 @ =gLinkEntity
|
|
adds r0, r5, #0
|
|
bl sub_080045C4
|
|
bl sub_0806F5B0
|
|
strb r0, [r5, #0x14]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x19
|
|
adds r1, r5, #0
|
|
adds r1, #0x70
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r1, r0, r1
|
|
adds r0, r5, #0
|
|
adds r0, #0x58
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _0806428C
|
|
adds r0, r5, #0
|
|
bl InitializeAnimation
|
|
_0806428C:
|
|
adds r0, r5, #0
|
|
bl sub_0806ED78
|
|
movs r0, #0x36
|
|
ldrsh r4, [r5, r0]
|
|
ldr r0, _080642B0 @ =gLinkEntity
|
|
ldrh r0, [r0, #0x36]
|
|
strh r0, [r5, #0x36]
|
|
cmp r4, #0
|
|
bge _080642AC
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _080642AC
|
|
adds r0, r5, #0
|
|
bl sub_080A29FC
|
|
_080642AC:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_080642B0: .4byte gLinkEntity
|
|
_080642B4: .4byte gUnk_030010A0
|
|
|
|
thumb_func_start sub_080642B8
|
|
sub_080642B8: @ 0x080642B8
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r4, r5, #0
|
|
adds r4, #0x71
|
|
ldrb r1, [r4]
|
|
movs r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #0
|
|
ble _080642CE
|
|
subs r0, r1, #1
|
|
strb r0, [r4]
|
|
_080642CE:
|
|
ldr r0, _080642F8 @ =gLinkEntity
|
|
movs r2, #0x2e
|
|
ldrsh r1, [r0, r2]
|
|
movs r2, #0x2e
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r1, r0
|
|
cmp r1, #2
|
|
ble _080642E0
|
|
movs r1, #2
|
|
_080642E0:
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bge _080642EA
|
|
adds r1, r0, #0
|
|
_080642EA:
|
|
adds r6, r4, #0
|
|
cmp r1, #0
|
|
beq _08064376
|
|
cmp r1, #0
|
|
ble _080642FC
|
|
movs r0, #8
|
|
b _080642FE
|
|
.align 2, 0
|
|
_080642F8: .4byte gLinkEntity
|
|
_080642FC:
|
|
movs r0, #0x18
|
|
_080642FE:
|
|
strb r0, [r5, #0x15]
|
|
cmp r1, #0
|
|
bge _08064306
|
|
rsbs r1, r1, #0
|
|
_08064306:
|
|
lsls r0, r1, #8
|
|
strh r0, [r5, #0x24]
|
|
movs r0, #0x2e
|
|
ldrsh r4, [r5, r0]
|
|
adds r0, r5, #0
|
|
bl sub_080AEF88
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r5, r1]
|
|
adds r6, r5, #0
|
|
adds r6, #0x71
|
|
cmp r4, r0
|
|
beq _08064376
|
|
ldr r0, _080643D0 @ =gLinkEntity
|
|
movs r2, #0x24
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #1
|
|
cmp r1, r0
|
|
ble _08064342
|
|
ldr r0, _080643D4 @ =gUnk_030010A0
|
|
ldr r0, [r0]
|
|
movs r1, #6
|
|
bl __modsi3
|
|
cmp r0, #0
|
|
bne _08064342
|
|
adds r0, r5, #0
|
|
bl sub_080A29FC
|
|
_08064342:
|
|
adds r4, r5, #0
|
|
adds r4, #0x71
|
|
movs r0, #0xa
|
|
strb r0, [r4]
|
|
ldrb r0, [r5, #0x15]
|
|
bl sub_0806F5B0
|
|
strb r0, [r5, #0x14]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x19
|
|
adds r1, r5, #0
|
|
adds r1, #0x70
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r1, #4
|
|
adds r1, r0, r1
|
|
adds r0, r5, #0
|
|
adds r0, #0x58
|
|
adds r6, r4, #0
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _08064376
|
|
adds r0, r5, #0
|
|
bl InitializeAnimation
|
|
_08064376:
|
|
movs r0, #0
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, #0
|
|
bne _080643AC
|
|
ldr r1, _080643D0 @ =gLinkEntity
|
|
adds r0, r5, #0
|
|
bl sub_080045C4
|
|
bl sub_0806F5B0
|
|
strb r0, [r5, #0x14]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x19
|
|
adds r1, r5, #0
|
|
adds r1, #0x70
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r1, r0, r1
|
|
adds r0, r5, #0
|
|
adds r0, #0x58
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _080643AC
|
|
adds r0, r5, #0
|
|
bl InitializeAnimation
|
|
_080643AC:
|
|
adds r0, r5, #0
|
|
bl sub_0806ED78
|
|
movs r0, #0x36
|
|
ldrsh r4, [r5, r0]
|
|
ldr r0, _080643D0 @ =gLinkEntity
|
|
ldrh r0, [r0, #0x36]
|
|
strh r0, [r5, #0x36]
|
|
cmp r4, #0
|
|
bge _080643CC
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _080643CC
|
|
adds r0, r5, #0
|
|
bl sub_080A29FC
|
|
_080643CC:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_080643D0: .4byte gLinkEntity
|
|
_080643D4: .4byte gUnk_030010A0
|
|
|
|
thumb_func_start sub_080643D8
|
|
sub_080643D8: @ 0x080643D8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #2
|
|
bl CheckGlobalFlag
|
|
cmp r0, #0
|
|
bne _080643EA
|
|
movs r3, #0
|
|
b _08064406
|
|
_080643EA:
|
|
movs r0, #2
|
|
bl GetInventoryValue
|
|
cmp r0, #0
|
|
bne _080643F8
|
|
movs r3, #1
|
|
b _08064406
|
|
_080643F8:
|
|
movs r0, #3
|
|
bl GetInventoryValue
|
|
movs r3, #3
|
|
cmp r0, #0
|
|
bne _08064406
|
|
movs r3, #2
|
|
_08064406:
|
|
ldrb r1, [r4, #0xb]
|
|
rsbs r0, r1, #0
|
|
orrs r0, r1
|
|
lsrs r0, r0, #0x1f
|
|
ldr r2, _08064424 @ =gUnk_0810F6D4
|
|
lsls r1, r3, #1
|
|
lsls r0, r0, #3
|
|
adds r1, r1, r0
|
|
adds r1, r1, r2
|
|
ldrh r0, [r1]
|
|
adds r1, r4, #0
|
|
bl TextboxNoOverlap
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08064424: .4byte gUnk_0810F6D4
|
|
|
|
thumb_func_start sub_08064428
|
|
sub_08064428: @ 0x08064428
|
|
push {lr}
|
|
adds r3, r0, #0
|
|
ldr r0, _0806444C @ =gUnk_02002A40
|
|
ldrb r0, [r0, #8]
|
|
subs r1, r0, #2
|
|
cmp r1, #0
|
|
bge _08064438
|
|
movs r1, #0
|
|
_08064438:
|
|
ldrb r2, [r3, #0xb]
|
|
movs r0, #0x80
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08064454
|
|
ldrb r0, [r3, #0xb]
|
|
lsls r0, r0, #3
|
|
ldr r1, _08064450 @ =gUnk_0810CF4C
|
|
b _08064460
|
|
.align 2, 0
|
|
_0806444C: .4byte gUnk_02002A40
|
|
_08064450: .4byte gUnk_0810CF4C
|
|
_08064454:
|
|
movs r0, #0x7f
|
|
ands r0, r2
|
|
lsls r0, r0, #6
|
|
lsls r1, r1, #3
|
|
ldr r2, _0806446C @ =gUnk_0810D0A4
|
|
adds r1, r1, r2
|
|
_08064460:
|
|
adds r1, r0, r1
|
|
adds r0, r3, #0
|
|
bl ShowNPCDialogue
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0806446C: .4byte gUnk_0810D0A4
|
|
|
|
thumb_func_start sub_08064470
|
|
sub_08064470: @ 0x08064470
|
|
push {lr}
|
|
ldr r0, _08064484 @ =gLinkState
|
|
adds r0, #0xab
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
beq _0806447E
|
|
movs r0, #0
|
|
_0806447E:
|
|
str r0, [r1, #0x14]
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08064484: .4byte gLinkState
|
|
|
|
thumb_func_start sub_08064488
|
|
sub_08064488: @ 0x08064488
|
|
push {lr}
|
|
ldr r1, _080644A0 @ =gLinkState
|
|
adds r0, r1, #0
|
|
adds r0, #0xa8
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
beq _0806449C
|
|
adds r1, #0xab
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
_0806449C:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_080644A0: .4byte gLinkState
|
|
|
|
thumb_func_start sub_080644A4
|
|
sub_080644A4: @ 0x080644A4
|
|
ldr r0, _080644B0 @ =gLinkState
|
|
adds r0, #0xab
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_080644B0: .4byte gLinkState
|
|
|
|
thumb_func_start sub_080644B4
|
|
sub_080644B4: @ 0x080644B4
|
|
push {lr}
|
|
adds r2, r1, #0
|
|
movs r3, #0
|
|
ldrb r1, [r0, #0x14]
|
|
ldr r0, [r2, #4]
|
|
cmp r1, r0
|
|
bne _080644C4
|
|
movs r3, #1
|
|
_080644C4:
|
|
str r3, [r2, #0x14]
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_080644C8
|
|
sub_080644C8: @ 0x080644C8
|
|
push {r4, lr}
|
|
adds r2, r0, #0
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r2, r1]
|
|
ldr r3, _08064500 @ =gRoomControls
|
|
movs r4, #0xa
|
|
ldrsh r1, [r3, r4]
|
|
subs r1, r0, r1
|
|
adds r0, r1, #0
|
|
adds r0, #8
|
|
cmp r0, #0
|
|
blt _08064504
|
|
adds r0, r1, #0
|
|
subs r0, #8
|
|
cmp r0, #0xf0
|
|
bgt _08064504
|
|
movs r0, #0x32
|
|
ldrsh r1, [r2, r0]
|
|
movs r2, #0xc
|
|
ldrsh r0, [r3, r2]
|
|
subs r0, r1, r0
|
|
cmp r0, #0
|
|
blt _08064504
|
|
subs r0, #0x18
|
|
cmp r0, #0xa0
|
|
bgt _08064504
|
|
movs r0, #1
|
|
b _08064506
|
|
.align 2, 0
|
|
_08064500: .4byte gRoomControls
|
|
_08064504:
|
|
movs r0, #0
|
|
_08064506:
|
|
pop {r4, pc}
|