tmc/asm/townMinish.s

741 lines
12 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0806AC3C
sub_0806AC3C: @ 0x0806AC3C
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #3
bhi _0806ACBA
ldr r4, _0806AC6C @ =gLinkEntity
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x18
movs r3, #0x18
bl sub_080041A0
cmp r0, #0
beq _0806AC70
adds r0, r5, #0
adds r1, r4, #0
bl sub_080045C4
adds r2, r0, #0
movs r0, #0x1e
ands r2, r0
b _0806AC74
.align 2, 0
_0806AC6C: .4byte gLinkEntity
_0806AC70:
ldrb r0, [r5, #0x14]
lsls r2, r0, #2
_0806AC74:
adds r0, r5, #0
adds r0, #0x69
ldrb r3, [r0]
adds r4, r0, #0
cmp r2, r3
beq _0806AC9A
subs r0, r2, r3
movs r1, #0x1f
ands r0, r1
cmp r0, #0xf
bgt _0806AC8E
subs r0, r3, #1
b _0806AC90
_0806AC8E:
adds r0, r3, #1
_0806AC90:
strb r0, [r4]
ldrb r1, [r4]
movs r0, #0x1f
ands r0, r1
strb r0, [r4]
_0806AC9A:
ldrb r1, [r4]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _0806ACBA
ldrb r0, [r4]
bl sub_0806F5B0
strb r0, [r5, #0x14]
ldrb r1, [r5, #0x14]
lsrs r1, r1, #1
movs r0, #2
eors r1, r0
adds r0, r5, #0
bl InitializeAnimation
_0806ACBA:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0806ACC4
sub_0806ACC4: @ 0x0806ACC4
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #1
beq _0806AD28
cmp r5, #1
bgt _0806ACD8
cmp r5, #0
beq _0806ACE4
b _0806ADEA
_0806ACD8:
cmp r5, #2
beq _0806ADB8
cmp r5, #3
bne _0806ACE2
b _0806ADDC
_0806ACE2:
b _0806ADEA
_0806ACE4:
ldrb r1, [r4, #0xa]
lsls r1, r1, #4
ldr r0, _0806AD24 @ =gUnk_08112674
adds r1, r1, r0
adds r0, r4, #0
bl LoadExtraSpriteData
cmp r0, #0
bne _0806ACF8
b _0806ADFA
_0806ACF8:
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x6a
strb r0, [r1]
lsls r0, r0, #1
strb r0, [r4, #0x14]
strb r5, [r4, #0xe]
adds r0, r4, #0
bl sub_0801E99C
adds r1, r4, #0
adds r1, #0x68
strb r0, [r1]
adds r0, r4, #0
bl sub_0807DD50
ldrb r1, [r4, #0x14]
lsrs r1, r1, #1
adds r1, #8
b _0806ADCE
.align 2, 0
_0806AD24: .4byte gUnk_08112674
_0806AD28:
adds r5, r4, #0
adds r5, #0x39
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #2
bne _0806AD44
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r5]
adds r0, r4, #0
bl sub_0806F118
b _0806ADEA
_0806AD44:
adds r0, r4, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r4, #0
bl sub_0806AEA8
ldrb r0, [r4, #0xb]
cmp r0, #0xa
bne _0806AD8A
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #0
beq _0806AD8A
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r5]
ldr r1, _0806ADAC @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
bl sub_0806F5A4
adds r1, r0, #0
adds r1, #8
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
adds r0, r4, #0
bl sub_0806AFE8
_0806AD8A:
ldrb r0, [r4, #0xa]
cmp r0, #1
bne _0806ADEA
ldr r0, _0806ADAC @ =gLinkEntity
ldrb r3, [r0, #0x14]
lsrs r3, r3, #1
ldr r0, _0806ADB0 @ =gUnk_081126E4
adds r0, r3, r0
ldrb r2, [r0]
lsls r3, r3, #2
ldr r0, _0806ADB4 @ =gUnk_081126D4
adds r3, r3, r0
adds r0, r4, #0
movs r1, #1
bl sub_08078850
b _0806ADEA
.align 2, 0
_0806ADAC: .4byte gLinkEntity
_0806ADB0: .4byte gUnk_081126E4
_0806ADB4: .4byte gUnk_081126D4
_0806ADB8:
ldr r0, _0806ADD8 @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0806ADEA
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x14]
lsrs r1, r1, #1
adds r1, #4
_0806ADCE:
adds r0, r4, #0
bl InitializeAnimation
b _0806ADEA
.align 2, 0
_0806ADD8: .4byte gTextBox
_0806ADDC:
adds r0, r4, #0
bl UpdateFuseInteraction
cmp r0, #0
beq _0806ADEA
movs r0, #1
strb r0, [r4, #0xc]
_0806ADEA:
adds r0, r4, #0
adds r0, #0x59
ldrb r0, [r0]
cmp r0, #0xff
beq _0806ADFA
adds r0, r4, #0
bl GetNextFrame
_0806ADFA:
pop {r4, r5, pc}
thumb_func_start sub_0806ADFC
sub_0806ADFC: @ 0x0806ADFC
push {lr}
adds r1, r0, #0
adds r1, #0x68
ldrb r1, [r1]
bl sub_08078784
pop {pc}
.align 2, 0
thumb_func_start TownMinish_Head
TownMinish_Head: @ 0x0806AE0C
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _0806AE62
adds r0, r4, #0
adds r0, #0x69
ldrb r0, [r0]
lsrs r2, r0, #1
adds r0, r4, #0
adds r0, #0x5b
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0806AE3C
adds r2, #0x1c
adds r0, r4, #0
movs r1, #0
bl SetExtraSpriteFrame
b _0806AE46
_0806AE3C:
adds r0, r4, #0
movs r1, #0
movs r2, #0xff
bl SetExtraSpriteFrame
_0806AE46:
ldrb r2, [r4, #0x1e]
adds r0, r4, #0
movs r1, #1
bl SetExtraSpriteFrame
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl SetSpriteSubEntryOffsetData1
adds r0, r4, #0
bl sub_0807000C
b _0806AEA4
_0806AE62:
adds r0, r4, #0
adds r0, #0x5a
ldrb r2, [r0]
cmp r2, #0xff
beq _0806AE72
movs r0, #0x81
rsbs r0, r0, #0
ands r2, r0
_0806AE72:
adds r0, r4, #0
adds r0, #0x5b
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0806AE82
movs r2, #0xff
_0806AE82:
adds r0, r4, #0
movs r1, #0
bl SetExtraSpriteFrame
ldrb r2, [r4, #0x1e]
adds r0, r4, #0
movs r1, #1
bl SetExtraSpriteFrame
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl SetSpriteSubEntryOffsetData1
adds r0, r4, #0
bl sub_0807000C
_0806AEA4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0806AEA8
sub_0806AEA8: @ 0x0806AEA8
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x82
ldrh r5, [r6]
ldr r0, _0806AED4 @ =0x0000FFDF
ands r0, r5
strh r0, [r6]
movs r0, #0x20
ands r0, r5
cmp r0, #0
beq _0806AECA
movs r1, #0x80
lsls r1, r1, #7
adds r0, r4, #0
bl sub_08003FC4
_0806AECA:
adds r0, r4, #0
bl sub_0807DDE4
strh r5, [r6]
pop {r4, r5, r6, pc}
.align 2, 0
_0806AED4: .4byte 0x0000FFDF
thumb_func_start sub_0806AED8
sub_0806AED8: @ 0x0806AED8
push {lr}
movs r1, #0
strb r1, [r0, #0xe]
bl sub_0806AEE4
pop {pc}
thumb_func_start sub_0806AEE4
sub_0806AEE4: @ 0x0806AEE4
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
adds r7, r0, #0
cmp r7, #0
beq _0806AEF6
subs r0, #1
strb r0, [r4, #0xe]
b _0806AF5A
_0806AEF6:
movs r0, #2
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0x20
movs r2, #0x20
bl sub_0806EDD8
adds r3, r0, #0
cmp r3, #0
bge _0806AF16
adds r0, r4, #0
adds r0, #0x6a
ldrb r1, [r0]
lsls r0, r1, #1
strb r0, [r4, #0x14]
lsls r3, r1, #3
_0806AF16:
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #5
asrs r1, r3, #1
lsls r1, r1, #1
ldr r2, _0806AF5C @ =gUnk_081125F4
adds r1, r1, r2
adds r0, r0, r1
ldrb r6, [r0]
ldrb r5, [r0, #1]
movs r0, #0x80
ands r0, r5
cmp r0, #0
beq _0806AF3A
adds r0, r3, #0
bl sub_0806F5B0
strb r0, [r4, #0x14]
_0806AF3A:
movs r0, #0x7f
ands r5, r0
adds r0, r4, #0
adds r0, #0x5a
strb r6, [r0]
strb r5, [r4, #0x1e]
adds r1, r4, #0
adds r1, #0x5b
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x58
strb r7, [r0]
subs r1, #2
movs r0, #0xff
strb r0, [r1]
_0806AF5A:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0806AF5C: .4byte gUnk_081125F4
thumb_func_start sub_0806AF60
sub_0806AF60: @ 0x0806AF60
push {lr}
ldrb r2, [r0, #0x14]
lsrs r2, r2, #1
ldr r1, [r1, #4]
adds r1, r1, r2
bl InitializeAnimation
pop {pc}
thumb_func_start sub_0806AF70
sub_0806AF70: @ 0x0806AF70
movs r1, #0x90
lsls r1, r1, #0xa
str r1, [r0, #0x20]
bx lr
thumb_func_start sub_0806AF78
sub_0806AF78: @ 0x0806AF78
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
ldr r0, [r4, #0x34]
cmp r0, #0
blt _0806AF9E
ldr r0, [r4, #0x20]
cmp r0, #0
bgt _0806AF9E
movs r0, #0
str r0, [r4, #0x34]
adds r0, r4, #0
adds r1, r5, #0
bl sub_0806AF70
_0806AF9E:
pop {r4, r5, pc}
thumb_func_start sub_0806AFA0
sub_0806AFA0: @ 0x0806AFA0
push {r4, lr}
adds r4, r0, #0
bl sub_0806ED78
cmp r0, #0
beq _0806AFBA
movs r0, #0x24
ldrsh r1, [r4, r0]
rsbs r1, r1, #0
ldrb r2, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F62C
_0806AFBA:
pop {r4, pc}
thumb_func_start sub_0806AFBC
sub_0806AFBC: @ 0x0806AFBC
push {lr}
adds r3, r0, #0
ldr r0, _0806AFE0 @ =gUnk_02002A40
ldrb r0, [r0, #8]
subs r0, #2
cmp r0, #0
bge _0806AFCC
movs r0, #0
_0806AFCC:
ldrb r1, [r3, #0xb]
lsls r1, r1, #6
lsls r0, r0, #3
ldr r2, _0806AFE4 @ =gUnk_081126F0
adds r0, r0, r2
adds r1, r1, r0
adds r0, r3, #0
bl ShowNPCDialogue
pop {pc}
.align 2, 0
_0806AFE0: .4byte gUnk_02002A40
_0806AFE4: .4byte gUnk_081126F0
thumb_func_start sub_0806AFE8
sub_0806AFE8: @ 0x0806AFE8
push {lr}
movs r2, #0
str r2, [r1, #0x14]
ldr r3, _0806B000 @ =gUnk_08112BF0
ldrb r2, [r0, #0xb]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_0806B000: .4byte gUnk_08112BF0
thumb_func_start sub_0806B004
sub_0806B004: @ 0x0806B004
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r1, #0
movs r4, #0
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0806B050
movs r0, #0x73
bl CheckLocalFlag
cmp r0, #0
beq _0806B048
movs r0, #0x46
bl GetInventoryValue
cmp r0, #0
bne _0806B044
movs r4, #3
movs r0, #0x78
bl CheckLocalFlag
cmp r0, #0
bne _0806B050
movs r4, #2
movs r0, #1
str r0, [r5, #0x14]
movs r0, #0x78
bl SetLocalFlag
b _0806B050
_0806B044:
movs r4, #4
b _0806B050
_0806B048:
movs r4, #1
movs r0, #0x6a
bl SetLocalFlag
_0806B050:
ldr r0, _0806B060 @ =gUnk_08112C40
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r6, #0
bl TextboxNoOverlap
pop {r4, r5, r6, pc}
.align 2, 0
_0806B060: .4byte gUnk_08112C40
thumb_func_start sub_0806B064
sub_0806B064: @ 0x0806B064
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0806B082
movs r4, #1
movs r0, #0x73
bl CheckLocalFlag
cmp r0, #0
beq _0806B082
movs r4, #2
_0806B082:
ldr r0, _0806B094 @ =gUnk_08112C4A
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B094: .4byte gUnk_08112C4A
thumb_func_start sub_0806B098
sub_0806B098: @ 0x0806B098
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #2
movs r0, #0x46
bl GetInventoryValue
cmp r0, #0
bne _0806B0C0
movs r4, #1
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0806B0C0
movs r0, #0x2a
bl CheckGlobalFlag
rsbs r1, r0, #0
orrs r1, r0
lsrs r4, r1, #0x1f
_0806B0C0:
ldr r2, _0806B0DC @ =gUnk_08112C50
ldrb r1, [r5, #0xb]
subs r1, #7
lsls r0, r1, #1
adds r0, r0, r1
adds r0, r0, r4
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B0DC: .4byte gUnk_08112C50
thumb_func_start sub_0806B0E0
sub_0806B0E0: @ 0x0806B0E0
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0
movs r0, #0x38
movs r1, #0xb8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r0, #0x48
movs r1, #0xb8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r0, #0x38
movs r1, #0xc8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r0, #0x48
movs r1, #0xc8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r5, #1
_0806B120:
ldr r0, _0806B130 @ =gUnk_08112C5C
lsls r1, r5, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r4, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B130: .4byte gUnk_08112C5C
thumb_func_start sub_0806B134
sub_0806B134: @ 0x0806B134
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0x45
bl GetInventoryValue
cmp r0, #0
beq _0806B158
movs r4, #2
movs r0, #0x7b
bl CheckLocalFlag
cmp r0, #0
bne _0806B160
movs r4, #1
movs r0, #0x7b
bl SetLocalFlag
b _0806B160
_0806B158:
movs r4, #0
movs r0, #0x4a
bl SetGlobalFlag
_0806B160:
ldr r0, _0806B17C @ =gUnk_02002A40
ldrb r0, [r0, #8]
cmp r0, #5
bls _0806B16A
movs r4, #3
_0806B16A:
ldr r0, _0806B180 @ =gUnk_08112C60
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B17C: .4byte gUnk_02002A40
_0806B180: .4byte gUnk_08112C60
thumb_func_start TownMinish_Fusion
TownMinish_Fusion: @ 0x0806B184
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0806B1C4
ldrb r1, [r4, #0xa]
lsls r1, r1, #4
ldr r0, _0806B1C0 @ =gUnk_08112674
adds r1, r1, r0
adds r0, r4, #0
bl LoadExtraSpriteData
cmp r0, #0
beq _0806B1CA
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, #6
bl InitializeAnimation
b _0806B1CA
.align 2, 0
_0806B1C0: .4byte gUnk_08112674
_0806B1C4:
adds r0, r4, #0
bl GetNextFrame
_0806B1CA:
pop {r4, pc}