mirror of https://github.com/zeldaret/tmc.git
3259 lines
54 KiB
ArmAsm
3259 lines
54 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start Object6A
|
|
Object6A: @ 0x08094A44
|
|
push {lr}
|
|
ldr r2, _08094A58 @ =gUnk_08122A34
|
|
ldrb r1, [r0, #0xa]
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r2
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08094A58: .4byte gUnk_08122A34
|
|
|
|
thumb_func_start sub_08094A5C
|
|
sub_08094A5C: @ 0x08094A5C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08094A78
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
movs r1, #4
|
|
bl InitializeAnimation
|
|
_08094A78:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094A90
|
|
sub_08094A90: @ 0x08094A90
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08094ACE
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
ldr r1, _08094AE4 @ =gUnk_08114F30
|
|
ldrb r2, [r4, #0x19]
|
|
lsrs r0, r2, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x19]
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitAnimationForceUpdate
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_08094ACE:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08094AE4: .4byte gUnk_08114F30
|
|
|
|
thumb_func_start sub_08094AE8
|
|
sub_08094AE8: @ 0x08094AE8
|
|
push {r4, r5, lr}
|
|
adds r5, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #1
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08094B08
|
|
ldr r1, [r5, #4]
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08094B08:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094B0C
|
|
sub_08094B0C: @ 0x08094B0C
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldrh r0, [r2, #0x36]
|
|
subs r0, #1
|
|
movs r3, #0
|
|
strh r0, [r2, #0x36]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r1, #0x20
|
|
rsbs r1, r1, #0
|
|
cmp r0, r1
|
|
bgt _08094B30
|
|
ldr r0, _08094B2C @ =0x0000FFE0
|
|
strh r0, [r2, #0x36]
|
|
b _08094B34
|
|
.align 2, 0
|
|
_08094B2C: .4byte 0x0000FFE0
|
|
_08094B30:
|
|
ldr r0, _08094B38 @ =gUnk_02033280
|
|
strb r3, [r0, #6]
|
|
_08094B34:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08094B38: .4byte gUnk_02033280
|
|
|
|
thumb_func_start sub_08094B3C
|
|
sub_08094B3C: @ 0x08094B3C
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, [r2, #0x34]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
adds r0, r0, r1
|
|
str r0, [r2, #0x34]
|
|
movs r0, #0x36
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, #0xd
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
blt _08094B60
|
|
ldr r0, _08094B5C @ =0x0000FFF3
|
|
strh r0, [r2, #0x36]
|
|
b _08094B66
|
|
.align 2, 0
|
|
_08094B5C: .4byte 0x0000FFF3
|
|
_08094B60:
|
|
ldr r1, _08094B68 @ =gUnk_02033280
|
|
movs r0, #0
|
|
strb r0, [r1, #6]
|
|
_08094B66:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08094B68: .4byte gUnk_02033280
|
|
|
|
thumb_func_start sub_08094B6C
|
|
sub_08094B6C: @ 0x08094B6C
|
|
adds r0, #0x29
|
|
ldrb r2, [r0]
|
|
movs r1, #0x39
|
|
rsbs r1, r1, #0
|
|
ands r1, r2
|
|
movs r2, #0x18
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094B80
|
|
sub_08094B80: @ 0x08094B80
|
|
adds r0, #0x29
|
|
ldrb r2, [r0]
|
|
movs r1, #0x39
|
|
rsbs r1, r1, #0
|
|
ands r1, r2
|
|
movs r2, #0x10
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094B94
|
|
sub_08094B94: @ 0x08094B94
|
|
push {r4, lr}
|
|
movs r0, #0x6a
|
|
movs r1, #0x22
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08094BD2
|
|
ldr r0, _08094BD4 @ =gLinkEntity
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r0, _08094BD8 @ =0x0000FFD0
|
|
strh r0, [r4, #0x36]
|
|
ldr r1, _08094BDC @ =gUnk_0800AEDC
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
adds r0, r4, #0
|
|
bl sub_080A29BC
|
|
ldrh r0, [r4, #0x36]
|
|
adds r0, #0x10
|
|
strh r0, [r4, #0x36]
|
|
ldrh r0, [r4, #0x32]
|
|
adds r0, #1
|
|
strh r0, [r4, #0x32]
|
|
_08094BD2:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08094BD4: .4byte gLinkEntity
|
|
_08094BD8: .4byte 0x0000FFD0
|
|
_08094BDC: .4byte gUnk_0800AEDC
|
|
|
|
thumb_func_start sub_08094BE0
|
|
sub_08094BE0: @ 0x08094BE0
|
|
push {r4, lr}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #6
|
|
movs r1, #0x6a
|
|
movs r2, #6
|
|
movs r3, #0x22
|
|
bl sub_0805EB2C
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08094C22
|
|
ldr r0, _08094C28 @ =gLinkEntity
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r0, _08094C2C @ =0x0000FFF4
|
|
strh r0, [r4, #0x36]
|
|
ldrh r0, [r4, #0x32]
|
|
adds r0, #1
|
|
strh r0, [r4, #0x32]
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl InitAnimationForceUpdate
|
|
_08094C22:
|
|
add sp, #4
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08094C28: .4byte gLinkEntity
|
|
_08094C2C: .4byte 0x0000FFF4
|
|
|
|
thumb_func_start sub_08094C30
|
|
sub_08094C30: @ 0x08094C30
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldr r5, [r4, #0x50]
|
|
cmp r5, #0
|
|
beq _08094C40
|
|
ldr r0, [r5, #4]
|
|
cmp r0, #0
|
|
bne _08094C44
|
|
_08094C40:
|
|
bl DeleteThisEntity
|
|
_08094C44:
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08094C74
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
bl sub_0805E3A0
|
|
ldr r1, _08094C84 @ =gUnk_08114F30
|
|
ldrb r0, [r5, #0x19]
|
|
lsrs r0, r0, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
ldrb r2, [r4, #0x19]
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x19]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl InitAnimationForceUpdate
|
|
_08094C74:
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08094C84: .4byte gUnk_08114F30
|
|
|
|
thumb_func_start sub_08094C88
|
|
sub_08094C88: @ 0x08094C88
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldrb r1, [r5, #0xc]
|
|
cmp r1, #0
|
|
beq _08094CA0
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08094CCC
|
|
bl DeleteThisEntity
|
|
b _08094CDA
|
|
_08094CA0:
|
|
adds r0, r1, #1
|
|
strb r0, [r5, #0xc]
|
|
ldrb r1, [r5, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r5, #0x18]
|
|
adds r0, r5, #0
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
ldrb r0, [r5, #0xb]
|
|
cmp r0, #0x43
|
|
bgt _08094CCC
|
|
cmp r0, #0x40
|
|
blt _08094CCC
|
|
adds r0, r5, #0
|
|
adds r1, r5, #0
|
|
bl sub_0806FAD8
|
|
_08094CCC:
|
|
ldrb r4, [r5, #0xa]
|
|
ldrb r0, [r5, #0xb]
|
|
strb r0, [r5, #0xa]
|
|
adds r0, r5, #0
|
|
bl sub_08080CB4
|
|
strb r4, [r5, #0xa]
|
|
_08094CDA:
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_08094CDC
|
|
sub_08094CDC: @ 0x08094CDC
|
|
push {lr}
|
|
movs r0, #0x6a
|
|
movs r1, #3
|
|
movs r2, #0x62
|
|
bl CreateObject
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08094D0A
|
|
ldr r1, _08094D0C @ =gRoomControls
|
|
ldrh r0, [r1, #6]
|
|
adds r0, #0xe0
|
|
strh r0, [r2, #0x2e]
|
|
movs r3, #0x96
|
|
lsls r3, r3, #2
|
|
adds r0, r3, #0
|
|
ldrh r1, [r1, #8]
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0x32]
|
|
movs r0, #0xa2
|
|
lsls r0, r0, #1
|
|
bl PlaySFX
|
|
_08094D0A:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08094D0C: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08094D10
|
|
sub_08094D10: @ 0x08094D10
|
|
push {lr}
|
|
sub sp, #4
|
|
movs r0, #0x62
|
|
str r0, [sp]
|
|
movs r0, #6
|
|
movs r1, #0x6a
|
|
movs r2, #6
|
|
movs r3, #3
|
|
bl sub_0805EB2C
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08094D2E
|
|
movs r0, #0xff
|
|
strb r0, [r1, #0xc]
|
|
_08094D2E:
|
|
add sp, #4
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094D34
|
|
sub_08094D34: @ 0x08094D34
|
|
push {lr}
|
|
movs r0, #0x6a
|
|
movs r1, #0x15
|
|
movs r2, #0xd
|
|
bl CreateObject
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08094D68
|
|
ldr r1, _08094D6C @ =gRoomControls
|
|
movs r3, #0x80
|
|
lsls r3, r3, #1
|
|
adds r0, r3, #0
|
|
ldrh r3, [r1, #6]
|
|
adds r0, r0, r3
|
|
strh r0, [r2, #0x2e]
|
|
movs r3, #0x96
|
|
lsls r3, r3, #2
|
|
adds r0, r3, #0
|
|
ldrh r1, [r1, #8]
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0x32]
|
|
movs r0, #0xa2
|
|
lsls r0, r0, #1
|
|
bl PlaySFX
|
|
_08094D68:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08094D6C: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08094D70
|
|
sub_08094D70: @ 0x08094D70
|
|
push {lr}
|
|
sub sp, #4
|
|
movs r0, #0xd
|
|
str r0, [sp]
|
|
movs r0, #6
|
|
movs r1, #0x6a
|
|
movs r2, #6
|
|
movs r3, #0x15
|
|
bl sub_0805EB2C
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08094D8E
|
|
movs r0, #0xff
|
|
strb r0, [r1, #0xc]
|
|
_08094D8E:
|
|
add sp, #4
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094D94
|
|
sub_08094D94: @ 0x08094D94
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r1, [r4, #0xc]
|
|
cmp r1, #0
|
|
beq _08094DAC
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08094DCE
|
|
bl DeleteThisEntity
|
|
b _08094DD4
|
|
_08094DAC:
|
|
adds r0, r1, #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, #3
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitAnimationForceUpdate
|
|
_08094DCE:
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
_08094DD4:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094DD8
|
|
sub_08094DD8: @ 0x08094DD8
|
|
push {lr}
|
|
movs r0, #0x6a
|
|
movs r1, #4
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08094E06
|
|
ldr r1, _08094E08 @ =gRoomControls
|
|
ldrh r0, [r1, #6]
|
|
adds r0, #0xf0
|
|
strh r0, [r2, #0x2e]
|
|
movs r3, #0x96
|
|
lsls r3, r3, #2
|
|
adds r0, r3, #0
|
|
ldrh r1, [r1, #8]
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0x32]
|
|
movs r0, #0xa2
|
|
lsls r0, r0, #1
|
|
bl PlaySFX
|
|
_08094E06:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08094E08: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08094E0C
|
|
sub_08094E0C: @ 0x08094E0C
|
|
push {lr}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #6
|
|
movs r1, #0x6a
|
|
movs r2, #6
|
|
movs r3, #4
|
|
bl sub_0805EB2C
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08094E2A
|
|
movs r0, #0xff
|
|
strb r0, [r1, #0xc]
|
|
_08094E2A:
|
|
add sp, #4
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094E30
|
|
sub_08094E30: @ 0x08094E30
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xb]
|
|
cmp r0, #0
|
|
bne _08094E88
|
|
ldr r0, _08094E80 @ =gUnk_030010A0
|
|
ldr r0, [r0]
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08094E48
|
|
b _08094F94
|
|
_08094E48:
|
|
movs r0, #0x6a
|
|
movs r1, #5
|
|
movs r2, #1
|
|
bl CreateObject
|
|
adds r5, r0, #0
|
|
cmp r5, #0
|
|
bne _08094E5A
|
|
b _08094F94
|
|
_08094E5A:
|
|
bl Random
|
|
ldr r4, _08094E84 @ =gRoomControls
|
|
movs r1, #0xf0
|
|
bl __modsi3
|
|
ldrh r1, [r4, #0xa]
|
|
adds r1, r1, r0
|
|
strh r1, [r5, #0x2e]
|
|
bl Random
|
|
movs r1, #0xa0
|
|
bl __modsi3
|
|
ldrh r1, [r4, #0xc]
|
|
adds r1, r1, r0
|
|
strh r1, [r5, #0x32]
|
|
b _08094F94
|
|
.align 2, 0
|
|
_08094E80: .4byte gUnk_030010A0
|
|
_08094E84: .4byte gRoomControls
|
|
_08094E88:
|
|
cmp r0, #1
|
|
bne _08094F44
|
|
ldrb r1, [r4, #0xc]
|
|
cmp r1, #1
|
|
beq _08094ED4
|
|
cmp r1, #1
|
|
bgt _08094E9C
|
|
cmp r1, #0
|
|
beq _08094EA6
|
|
b _08094F94
|
|
_08094E9C:
|
|
cmp r1, #2
|
|
beq _08094F08
|
|
cmp r1, #3
|
|
beq _08094F22
|
|
b _08094F94
|
|
_08094EA6:
|
|
strb r0, [r4, #0xc]
|
|
ldr r0, _08094ED0 @ =0xFF600000
|
|
str r0, [r4, #0x34]
|
|
str r1, [r4, #0x20]
|
|
adds r0, r4, #0
|
|
movs r1, #6
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitializeAnimation
|
|
adds r0, r4, #0
|
|
bl sub_080002B8
|
|
cmp r0, #0xd
|
|
bne _08094F94
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
b _08094F94
|
|
.align 2, 0
|
|
_08094ED0: .4byte 0xFF600000
|
|
_08094ED4:
|
|
ldr r1, [r4, #0x34]
|
|
ldr r0, [r4, #0x20]
|
|
subs r1, r1, r0
|
|
str r1, [r4, #0x34]
|
|
ldr r2, _08094F04 @ =0xFFFFE000
|
|
adds r0, r0, r2
|
|
str r0, [r4, #0x20]
|
|
cmp r1, #0
|
|
ble _08094F94
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
movs r1, #0
|
|
strb r0, [r4, #0xc]
|
|
str r1, [r4, #0x34]
|
|
str r1, [r4, #0x20]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl InitializeAnimation
|
|
movs r0, #0xbf
|
|
lsls r0, r0, #1
|
|
bl sub_08004488
|
|
b _08094F94
|
|
.align 2, 0
|
|
_08094F04: .4byte 0xFFFFE000
|
|
_08094F08:
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08094F94
|
|
bl DeleteThisEntity
|
|
b _08094F94
|
|
_08094F22:
|
|
ldr r0, [r4, #0x34]
|
|
ldr r1, [r4, #0x20]
|
|
subs r0, r0, r1
|
|
str r0, [r4, #0x34]
|
|
ldr r0, _08094F40 @ =0xFFFFE000
|
|
adds r1, r1, r0
|
|
str r1, [r4, #0x20]
|
|
adds r0, r4, #0
|
|
bl sub_080040A8
|
|
cmp r0, #0
|
|
bne _08094F94
|
|
bl DeleteThisEntity
|
|
b _08094F94
|
|
.align 2, 0
|
|
_08094F40: .4byte 0xFFFFE000
|
|
_08094F44:
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08094F94
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #1
|
|
beq _08094F68
|
|
cmp r0, #1
|
|
bgt _08094F5E
|
|
cmp r0, #0
|
|
beq _08094F7A
|
|
b _08094F94
|
|
_08094F5E:
|
|
cmp r0, #2
|
|
beq _08094F72
|
|
cmp r0, #3
|
|
beq _08094F84
|
|
b _08094F94
|
|
_08094F68:
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
bl InitializeAnimation
|
|
b _08094F94
|
|
_08094F72:
|
|
ldrb r0, [r4, #0x18]
|
|
movs r1, #0x40
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x18]
|
|
_08094F7A:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitializeAnimation
|
|
b _08094F94
|
|
_08094F84:
|
|
ldrb r0, [r4, #0x18]
|
|
movs r1, #0x40
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x18]
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
bl InitializeAnimation
|
|
_08094F94:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094F98
|
|
sub_08094F98: @ 0x08094F98
|
|
push {lr}
|
|
movs r0, #0x6a
|
|
movs r1, #5
|
|
movs r2, #0
|
|
bl CreateObject
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08094FA8
|
|
sub_08094FA8: @ 0x08094FA8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #4
|
|
bhi _08095086
|
|
lsls r0, r0, #2
|
|
ldr r1, _08094FBC @ =_08094FC0
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08094FBC: .4byte _08094FC0
|
|
_08094FC0: @ jump table
|
|
.4byte _08094FD4 @ case 0
|
|
.4byte _08094FF0 @ case 1
|
|
.4byte _08095024 @ case 2
|
|
.4byte _08095040 @ case 3
|
|
.4byte _08095070 @ case 4
|
|
_08094FD4:
|
|
movs r1, #0
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0x1e]
|
|
adds r2, r4, #0
|
|
adds r2, #0x29
|
|
ldrb r0, [r2]
|
|
movs r1, #7
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r4, #0
|
|
bl sub_080787B4
|
|
b _08095086
|
|
_08094FF0:
|
|
adds r1, r4, #0
|
|
adds r1, #0x39
|
|
movs r0, #0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, #0
|
|
beq _08095086
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
movs r0, #2
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_080788E0
|
|
ldr r0, _08095020 @ =gLinkState
|
|
movs r1, #0xc
|
|
strb r1, [r0, #0xc]
|
|
adds r0, #0x38
|
|
movs r1, #0x36
|
|
strb r1, [r0]
|
|
movs r0, #2
|
|
bl sub_08078A90
|
|
b _08095086
|
|
.align 2, 0
|
|
_08095020: .4byte gLinkState
|
|
_08095024:
|
|
movs r0, #0x36
|
|
bl GetInventoryValue
|
|
cmp r0, #2
|
|
bne _08095086
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x18]
|
|
subs r0, #7
|
|
ands r0, r1
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x18]
|
|
b _08095086
|
|
_08095040:
|
|
ldr r0, _0809506C @ =gLinkEntity
|
|
ldrb r0, [r0, #0xc]
|
|
cmp r0, #0xc
|
|
beq _08095086
|
|
movs r0, #4
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0x5b
|
|
bl CheckGlobalFlag
|
|
cmp r0, #0
|
|
bne _08095086
|
|
movs r0, #0x1c
|
|
movs r1, #0
|
|
movs r2, #0
|
|
bl CreateItemEntity
|
|
movs r0, #0x5b
|
|
bl SetGlobalFlag
|
|
movs r0, #0x3c
|
|
strb r0, [r4, #0xe]
|
|
b _08095086
|
|
.align 2, 0
|
|
_0809506C: .4byte gLinkEntity
|
|
_08095070:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08095086
|
|
movs r0, #5
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #1
|
|
bl sub_08078A90
|
|
_08095086:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08095088
|
|
sub_08095088: @ 0x08095088
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #1
|
|
beq _080950C8
|
|
cmp r0, #1
|
|
bgt _0809509C
|
|
cmp r0, #0
|
|
beq _080950A2
|
|
b _0809510A
|
|
_0809509C:
|
|
cmp r0, #2
|
|
beq _080950F0
|
|
b _0809510A
|
|
_080950A2:
|
|
movs r0, #0x5b
|
|
bl GetInventoryValue
|
|
cmp r0, #0
|
|
beq _080950B0
|
|
bl DeleteThisEntity
|
|
_080950B0:
|
|
movs r0, #1
|
|
strb r0, [r5, #0xc]
|
|
adds r2, r5, #0
|
|
adds r2, #0x29
|
|
ldrb r0, [r2]
|
|
movs r1, #7
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r5, #0
|
|
bl sub_080787B4
|
|
b _0809510A
|
|
_080950C8:
|
|
adds r1, r5, #0
|
|
adds r1, #0x39
|
|
movs r0, #0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, #0
|
|
beq _0809510A
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
movs r0, #2
|
|
strb r0, [r5, #0xc]
|
|
adds r0, r5, #0
|
|
bl sub_080788E0
|
|
ldr r0, _080950EC @ =0x00001F1F
|
|
movs r1, #0
|
|
bl sub_08078AA8
|
|
b _0809510A
|
|
.align 2, 0
|
|
_080950EC: .4byte 0x00001F1F
|
|
_080950F0:
|
|
ldr r0, _0809511C @ =gTextBox
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0809510A
|
|
movs r0, #0x5b
|
|
movs r1, #0
|
|
movs r2, #0
|
|
bl CreateItemEntity
|
|
bl DeleteThisEntity
|
|
_0809510A:
|
|
ldrb r4, [r5, #0xa]
|
|
movs r0, #0x5b
|
|
strb r0, [r5, #0xa]
|
|
adds r0, r5, #0
|
|
bl sub_08080CB4
|
|
strb r4, [r5, #0xa]
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0809511C: .4byte gTextBox
|
|
|
|
thumb_func_start sub_08095120
|
|
sub_08095120: @ 0x08095120
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _0809514C
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
adds r1, r4, #0
|
|
bl sub_0806FAD8
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
bl InitAnimationForceUpdate
|
|
_0809514C:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095164
|
|
sub_08095164: @ 0x08095164
|
|
push {lr}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #6
|
|
movs r1, #0x6a
|
|
movs r2, #6
|
|
movs r3, #8
|
|
bl sub_0805EB2C
|
|
cmp r0, #0
|
|
beq _08095182
|
|
movs r1, #3
|
|
bl InitAnimationForceUpdate
|
|
_08095182:
|
|
add sp, #4
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095188
|
|
sub_08095188: @ 0x08095188
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080951B4
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
adds r1, r4, #0
|
|
bl sub_0806FAD8
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitAnimationForceUpdate
|
|
_080951B4:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_080951C4
|
|
sub_080951C4: @ 0x080951C4
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080951E8
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
movs r1, #0
|
|
ldr r0, _08095240 @ =0x0000FFF0
|
|
strh r0, [r4, #0x36]
|
|
strb r1, [r4, #0xe]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl InitializeAnimation
|
|
_080951E8:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
movs r1, #0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #0
|
|
bne _08095218
|
|
str r0, [r4, #0x34]
|
|
str r0, [r4, #0x50]
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
bne _08095218
|
|
adds r0, #1
|
|
strb r0, [r4, #0xe]
|
|
movs r0, #0xe6
|
|
bl PlaySFX
|
|
_08095218:
|
|
ldr r3, [r4, #0x50]
|
|
cmp r3, #0
|
|
beq _0809523C
|
|
ldrb r1, [r3, #0x18]
|
|
lsls r1, r1, #0x1e
|
|
lsrs r1, r1, #0x1e
|
|
ldrb r2, [r4, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x18]
|
|
ldrh r0, [r3, #0x2e]
|
|
adds r0, #0x10
|
|
strh r0, [r4, #0x2e]
|
|
ldrh r0, [r3, #0x32]
|
|
subs r0, #0x10
|
|
strh r0, [r4, #0x32]
|
|
_0809523C:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08095240: .4byte 0x0000FFF0
|
|
|
|
thumb_func_start sub_08095244
|
|
sub_08095244: @ 0x08095244
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5, #0xa]
|
|
cmp r0, #0
|
|
bne _0809527C
|
|
movs r0, #0x6a
|
|
movs r1, #0xa
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _0809527C
|
|
str r5, [r4, #0x50]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #0xd
|
|
ldr r3, _08095280 @ =0xFFF00000
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl PositionRelative
|
|
ldr r1, _08095284 @ =gUnk_0801183C
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_0809527C:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08095280: .4byte 0xFFF00000
|
|
_08095284: .4byte gUnk_0801183C
|
|
|
|
thumb_func_start sub_08095288
|
|
sub_08095288: @ 0x08095288
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
bne _080952AA
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0xd]
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitAnimationForceUpdate
|
|
_080952AA:
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #0
|
|
beq _080952F0
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #5
|
|
adds r0, r4, #0
|
|
bl sub_080044EC
|
|
cmp r0, #1
|
|
bhi _080952D4
|
|
movs r0, #0
|
|
strb r0, [r4, #0xd]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
movs r3, #0xc0
|
|
lsls r3, r3, #8
|
|
adds r0, r4, #0
|
|
adds r1, r2, #0
|
|
bl sub_0805EC9C
|
|
b _080952F0
|
|
_080952D4:
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
ldrb r3, [r4, #0xe]
|
|
lsls r3, r3, #8
|
|
adds r0, r4, #0
|
|
adds r1, r2, #0
|
|
bl sub_0805EC9C
|
|
ldrb r0, [r4, #0xe]
|
|
adds r0, #0xa
|
|
strb r0, [r4, #0xe]
|
|
adds r0, r4, #0
|
|
bl sub_0806F69C
|
|
_080952F0:
|
|
ldr r3, [r4, #0x54]
|
|
cmp r3, #0
|
|
beq _080952FE
|
|
adds r0, r3, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
_080952FE:
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
ldr r3, [r4, #0x50]
|
|
cmp r3, #0
|
|
beq _08095328
|
|
ldrb r1, [r3, #0x18]
|
|
lsls r1, r1, #0x1e
|
|
lsrs r1, r1, #0x1e
|
|
ldrb r2, [r4, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x18]
|
|
ldr r0, [r3, #4]
|
|
cmp r0, #0
|
|
bne _0809532C
|
|
bl DeleteThisEntity
|
|
b _0809532C
|
|
_08095328:
|
|
bl DeleteThisEntity
|
|
_0809532C:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095330
|
|
sub_08095330: @ 0x08095330
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0xb
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _0809535E
|
|
str r4, [r5, #0x54]
|
|
str r5, [r4, #0x54]
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r0, _08095360 @ =0x0000FFF0
|
|
strh r0, [r4, #0x36]
|
|
adds r0, r4, #0
|
|
adds r1, r4, #0
|
|
bl ResolveEntityOnTop
|
|
_0809535E:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08095360: .4byte 0x0000FFF0
|
|
|
|
thumb_func_start sub_08095364
|
|
sub_08095364: @ 0x08095364
|
|
push {r4, r5, r6, lr}
|
|
ldr r6, [r0, #0x54]
|
|
cmp r6, #0
|
|
beq _0809539E
|
|
movs r5, #0
|
|
movs r0, #2
|
|
strb r0, [r6, #0x1e]
|
|
adds r0, r6, #0
|
|
adds r0, #0x38
|
|
movs r4, #1
|
|
strb r4, [r0]
|
|
adds r0, r6, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
str r5, [r6, #0x54]
|
|
strb r4, [r6, #0xd]
|
|
ldr r0, _080953A0 @ =0x0000FFF0
|
|
strh r0, [r6, #0x36]
|
|
movs r0, #7
|
|
strb r0, [r6, #0x15]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0xa
|
|
str r0, [r6, #0x20]
|
|
movs r0, #0x80
|
|
strh r0, [r6, #0x24]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
bl InitAnimationForceUpdate
|
|
_0809539E:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_080953A0: .4byte 0x0000FFF0
|
|
|
|
thumb_func_start sub_080953A4
|
|
sub_080953A4: @ 0x080953A4
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080953E0
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldr r0, _08095414 @ =0x0000FFF0
|
|
strh r0, [r4, #0x36]
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
bl sub_0805E3A0
|
|
ldr r1, _08095418 @ =gUnk_08114F30
|
|
ldrb r2, [r4, #0x19]
|
|
lsrs r0, r2, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x19]
|
|
adds r0, r4, #0
|
|
adds r1, r4, #0
|
|
bl ResolveEntityOnTop
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_080953E0:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
ldrb r0, [r4, #0xa]
|
|
cmp r0, #0xd
|
|
bne _08095412
|
|
adds r0, r4, #0
|
|
adds r0, #0x5b
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
ldr r1, _0809541C @ =0x00000139
|
|
cmp r0, #0
|
|
beq _0809540C
|
|
movs r1, #0
|
|
_0809540C:
|
|
adds r0, r4, #0
|
|
bl sub_0801D2B4
|
|
_08095412:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08095414: .4byte 0x0000FFF0
|
|
_08095418: .4byte gUnk_08114F30
|
|
_0809541C: .4byte 0x00000139
|
|
|
|
thumb_func_start sub_08095420
|
|
sub_08095420: @ 0x08095420
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r6, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0xc
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095450
|
|
ldr r3, _08095454 @ =0xFFF00000
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
movs r2, #0
|
|
bl PositionRelative
|
|
ldr r1, [r6, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08095450:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08095454: .4byte 0xFFF00000
|
|
|
|
thumb_func_start nullsub_527
|
|
nullsub_527: @ 0x08095458
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0809545C
|
|
sub_0809545C: @ 0x0809545C
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
adds r6, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0xd
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r5, r0, #0
|
|
cmp r5, #0
|
|
beq _080954A6
|
|
ldr r3, _080954A8 @ =0xFFF00000
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
movs r2, #0
|
|
bl PositionRelative
|
|
ldr r1, [r6, #4]
|
|
adds r0, r5, #0
|
|
bl StartCutscene
|
|
adds r1, r5, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
movs r0, #0x6a
|
|
movs r1, #2
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _080954A6
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
str r5, [r4, #0x50]
|
|
_080954A6:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_080954A8: .4byte 0xFFF00000
|
|
|
|
thumb_func_start sub_080954AC
|
|
sub_080954AC: @ 0x080954AC
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x1a
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _080954D6
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r1, _080954D8 @ =gUnk_08015B14
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_080954D6:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080954D8: .4byte gUnk_08015B14
|
|
|
|
thumb_func_start sub_080954DC
|
|
sub_080954DC: @ 0x080954DC
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
beq _08095598
|
|
cmp r0, #1
|
|
bgt _080954F0
|
|
cmp r0, #0
|
|
beq _080954FC
|
|
b _0809562C
|
|
_080954F0:
|
|
cmp r0, #2
|
|
beq _080955B8
|
|
cmp r0, #3
|
|
bne _080954FA
|
|
b _08095620
|
|
_080954FA:
|
|
b _0809562C
|
|
_080954FC:
|
|
ldrb r0, [r4, #0xe]
|
|
adds r5, r0, #0
|
|
cmp r5, #0
|
|
beq _0809550A
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
b _0809562C
|
|
_0809550A:
|
|
movs r0, #1
|
|
movs r2, #1
|
|
strb r0, [r4, #0xc]
|
|
strb r5, [r4, #0xd]
|
|
ldrb r1, [r4, #0x18]
|
|
subs r0, #5
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, #0x18]
|
|
strh r5, [r4, #0x36]
|
|
adds r3, r4, #0
|
|
adds r3, #0x29
|
|
ldrb r1, [r3]
|
|
movs r0, #8
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r3]
|
|
ldrh r1, [r4, #0x2e]
|
|
adds r0, r4, #0
|
|
adds r0, #0x68
|
|
strh r1, [r0]
|
|
ldrh r0, [r4, #0x32]
|
|
adds r1, r4, #0
|
|
adds r1, #0x6a
|
|
strh r0, [r1]
|
|
adds r0, r4, #0
|
|
adds r0, #0x6c
|
|
strh r5, [r0]
|
|
ldr r1, _08095590 @ =gUnk_08122AE0
|
|
ldrb r0, [r4, #0xb]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
adds r5, r4, #0
|
|
adds r5, #0x6e
|
|
strb r0, [r5]
|
|
ldr r1, _08095594 @ =gUnk_08122AE8
|
|
ldrb r0, [r4, #0xb]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
adds r0, r4, #0
|
|
bl sub_0801D2B4
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
ldrb r1, [r4, #0xb]
|
|
adds r1, #2
|
|
adds r0, r4, #0
|
|
bl InitializeAnimation
|
|
adds r0, r4, #0
|
|
bl sub_08095754
|
|
bl Random
|
|
movs r1, #6
|
|
bl __modsi3
|
|
movs r1, #0xde
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
bl PlaySFX
|
|
adds r1, r5, #0
|
|
b _08095630
|
|
.align 2, 0
|
|
_08095590: .4byte gUnk_08122AE0
|
|
_08095594: .4byte gUnk_08122AE8
|
|
_08095598:
|
|
ldrh r0, [r4, #0x36]
|
|
subs r0, #1
|
|
strh r0, [r4, #0x36]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
movs r2, #0x10
|
|
rsbs r2, r2, #0
|
|
adds r1, r4, #0
|
|
adds r1, #0x6e
|
|
cmp r0, r2
|
|
bgt _08095630
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
strh r2, [r4, #0x36]
|
|
b _08095630
|
|
_080955B8:
|
|
adds r5, r4, #0
|
|
adds r5, #0x6c
|
|
ldrh r0, [r5]
|
|
adds r0, #1
|
|
strh r0, [r5]
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0x40
|
|
bls _080955CE
|
|
movs r0, #0x40
|
|
strh r0, [r5]
|
|
_080955CE:
|
|
ldr r3, _0809561C @ =gSineTable
|
|
movs r2, #0x6e
|
|
adds r2, r2, r4
|
|
mov ip, r2
|
|
ldrb r0, [r2]
|
|
adds r0, #0x40
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r2, #0
|
|
ldrsh r1, [r0, r2]
|
|
ldrh r0, [r5]
|
|
lsls r0, r0, #8
|
|
adds r2, r1, #0
|
|
muls r2, r0, r2
|
|
asrs r2, r2, #0x10
|
|
strh r2, [r4, #0x2e]
|
|
mov r1, ip
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r3, #0
|
|
ldrsh r1, [r0, r3]
|
|
ldrh r0, [r5]
|
|
lsls r0, r0, #7
|
|
muls r1, r0, r1
|
|
asrs r1, r1, #0x10
|
|
strh r1, [r4, #0x32]
|
|
adds r0, r4, #0
|
|
adds r0, #0x68
|
|
ldrh r0, [r0]
|
|
adds r2, r2, r0
|
|
strh r2, [r4, #0x2e]
|
|
adds r0, r4, #0
|
|
adds r0, #0x6a
|
|
ldrh r0, [r0]
|
|
adds r1, r1, r0
|
|
strh r1, [r4, #0x32]
|
|
mov r1, ip
|
|
b _08095630
|
|
.align 2, 0
|
|
_0809561C: .4byte gSineTable
|
|
_08095620:
|
|
movs r0, #0x24
|
|
ldrsh r1, [r4, r0]
|
|
ldrb r2, [r4, #0x15]
|
|
adds r0, r4, #0
|
|
bl sub_0806F62C
|
|
_0809562C:
|
|
adds r1, r4, #0
|
|
adds r1, #0x6e
|
|
_08095630:
|
|
ldrb r0, [r1]
|
|
adds r0, #4
|
|
strb r0, [r1]
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #0
|
|
beq _0809564A
|
|
adds r0, r4, #0
|
|
bl sub_080040A8
|
|
cmp r0, #0
|
|
bne _0809564A
|
|
bl DeleteThisEntity
|
|
_0809564A:
|
|
ldrb r1, [r4, #0x15]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0809565E
|
|
ldrb r1, [r4, #0x18]
|
|
movs r0, #0x41
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
b _08095664
|
|
_0809565E:
|
|
ldrb r0, [r4, #0x18]
|
|
movs r1, #0x40
|
|
orrs r0, r1
|
|
_08095664:
|
|
strb r0, [r4, #0x18]
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_0809567C
|
|
sub_0809567C: @ 0x0809567C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
strh r0, [r4, #0x24]
|
|
adds r0, r4, #0
|
|
adds r0, #0x68
|
|
movs r2, #0
|
|
ldrsh r1, [r0, r2]
|
|
lsls r1, r1, #0x10
|
|
ldr r0, [r4, #0x2c]
|
|
subs r0, r0, r1
|
|
adds r1, r4, #0
|
|
adds r1, #0x6a
|
|
movs r3, #0
|
|
ldrsh r2, [r1, r3]
|
|
lsls r2, r2, #0x10
|
|
ldr r1, [r4, #0x30]
|
|
subs r1, r1, r2
|
|
bl sub_080045DA
|
|
strb r0, [r4, #0x15]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080956B4
|
|
sub_080956B4: @ 0x080956B4
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bne _080956E2
|
|
adds r0, #1
|
|
strb r0, [r5, #0xc]
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl InitializeAnimation
|
|
adds r4, r5, #0
|
|
adds r4, #0x68
|
|
ldrh r2, [r5, #0x2e]
|
|
ldrh r1, [r5, #0x32]
|
|
movs r0, #7
|
|
_080956D4:
|
|
strh r2, [r4]
|
|
adds r4, #2
|
|
strh r1, [r4]
|
|
adds r4, #2
|
|
subs r0, #1
|
|
cmp r0, #0
|
|
bge _080956D4
|
|
_080956E2:
|
|
adds r0, r5, #0
|
|
bl GetNextFrame
|
|
ldrb r0, [r5, #0xb]
|
|
ldr r1, _08095724 @ =gUnk_030010A0
|
|
ldr r1, [r1]
|
|
adds r0, r0, r1
|
|
movs r1, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080956FE
|
|
adds r0, r5, #0
|
|
bl sub_080957B4
|
|
_080956FE:
|
|
ldr r6, [r5, #0x50]
|
|
cmp r6, #0
|
|
beq _08095728
|
|
ldrb r1, [r6, #0x18]
|
|
lsls r1, r1, #0x1e
|
|
lsrs r1, r1, #0x1e
|
|
ldrb r2, [r5, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, #0x18]
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0
|
|
bne _0809572C
|
|
bl DeleteThisEntity
|
|
b _0809572C
|
|
.align 2, 0
|
|
_08095724: .4byte gUnk_030010A0
|
|
_08095728:
|
|
bl DeleteThisEntity
|
|
_0809572C:
|
|
adds r4, r5, #0
|
|
adds r4, #0x68
|
|
adds r0, r5, #0
|
|
adds r0, #0x6c
|
|
adds r1, r4, #0
|
|
movs r2, #0x1c
|
|
bl sub_0801D66C
|
|
ldrh r0, [r4, #0x14]
|
|
strh r0, [r5, #0x2e]
|
|
ldrh r0, [r4, #0x16]
|
|
strh r0, [r5, #0x32]
|
|
ldrh r0, [r6, #0x36]
|
|
strh r0, [r5, #0x36]
|
|
ldrh r0, [r6, #0x2e]
|
|
strh r0, [r4, #0x1c]
|
|
ldrh r0, [r6, #0x32]
|
|
strh r0, [r4, #0x1e]
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095754
|
|
sub_08095754: @ 0x08095754
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldrb r2, [r5, #0xb]
|
|
movs r0, #0x6a
|
|
movs r1, #0xf
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _0809577A
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl sub_0806FAD8
|
|
_0809577A:
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_0809577C
|
|
sub_0809577C: @ 0x0809577C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08095796
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldr r0, _080957B0 @ =0x0000FFF0
|
|
strh r0, [r4, #0x36]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl InitializeAnimation
|
|
_08095796:
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080957AE
|
|
bl DeleteThisEntity
|
|
_080957AE:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_080957B0: .4byte 0x0000FFF0
|
|
|
|
thumb_func_start sub_080957B4
|
|
sub_080957B4: @ 0x080957B4
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x10
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _080957DA
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl sub_0806FAD8
|
|
_080957DA:
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_080957DC
|
|
sub_080957DC: @ 0x080957DC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080957F8
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitAnimationForceUpdate
|
|
_080957F8:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095810
|
|
sub_08095810: @ 0x08095810
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x11
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095844
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl ResolveEntityOnTop
|
|
ldr r1, _08095848 @ =gUnk_08011940
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08095844:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08095848: .4byte gUnk_08011940
|
|
|
|
thumb_func_start sub_0809584C
|
|
sub_0809584C: @ 0x0809584C
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
adds r0, #0x45
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0809586C
|
|
ldr r0, _080958D0 @ =gUnk_020342F8
|
|
subs r1, #1
|
|
bl ReadBit
|
|
cmp r0, #0
|
|
bne _0809586C
|
|
bl DeleteThisEntity
|
|
_0809586C:
|
|
ldrb r0, [r5, #0xe]
|
|
cmp r0, #0
|
|
beq _08095880
|
|
ldrb r0, [r5, #0xb]
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
beq _08095880
|
|
bl DeleteThisEntity
|
|
_08095880:
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bne _080958B2
|
|
adds r0, #1
|
|
strb r0, [r5, #0xc]
|
|
adds r1, r5, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r5, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
ldr r1, _080958D4 @ =gUnk_08114F30
|
|
ldrb r2, [r5, #0x19]
|
|
lsrs r0, r2, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, #0x19]
|
|
adds r0, r5, #0
|
|
bl sub_0807DD64
|
|
_080958B2:
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r5, #0
|
|
bl sub_0807DDE4
|
|
ldrb r4, [r5, #0xa]
|
|
movs r0, #0x5c
|
|
strb r0, [r5, #0xa]
|
|
adds r0, r5, #0
|
|
bl sub_08080CB4
|
|
strb r4, [r5, #0xa]
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080958D0: .4byte gUnk_020342F8
|
|
_080958D4: .4byte gUnk_08114F30
|
|
|
|
thumb_func_start sub_080958D8
|
|
sub_080958D8: @ 0x080958D8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080958EC
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_080958EC:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08095914
|
|
adds r0, r4, #0
|
|
bl sub_08095954
|
|
_08095914:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095918
|
|
sub_08095918: @ 0x08095918
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _0809593C
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
movs r1, #6
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl InitializeAnimation
|
|
_0809593C:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095954
|
|
sub_08095954: @ 0x08095954
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x14
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _080959B8
|
|
str r5, [r4, #0x50]
|
|
ldrb r0, [r5, #0x14]
|
|
ldr r1, _080959AC @ =gUnk_08122AF8
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
ldrsb r2, [r0, r2]
|
|
lsls r2, r2, #0x10
|
|
movs r3, #1
|
|
ldrsb r3, [r0, r3]
|
|
lsls r3, r3, #0x10
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl PositionRelative
|
|
ldr r0, _080959B0 @ =0x0000FFFD
|
|
strh r0, [r4, #0x36]
|
|
ldr r1, _080959B4 @ =gUnk_08012C48
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
movs r0, #0x92
|
|
lsls r0, r0, #1
|
|
bl sub_08004488
|
|
adds r2, r5, #0
|
|
adds r2, #0x5a
|
|
ldrb r1, [r2]
|
|
movs r0, #0xfe
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
b _080959C4
|
|
.align 2, 0
|
|
_080959AC: .4byte gUnk_08122AF8
|
|
_080959B0: .4byte 0x0000FFFD
|
|
_080959B4: .4byte gUnk_08012C48
|
|
_080959B8:
|
|
ldr r0, _080959C8 @ =gUnk_02033280
|
|
ldr r1, [r0]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
_080959C4:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080959C8: .4byte gUnk_02033280
|
|
|
|
thumb_func_start sub_080959CC
|
|
sub_080959CC: @ 0x080959CC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080959F2
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r4, #0x18]
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_080959F2:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x81
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
adds r0, r4, #0
|
|
bl sub_08095D30
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095A1C
|
|
sub_08095A1C: @ 0x08095A1C
|
|
push {r4, r5, lr}
|
|
adds r5, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x16
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095A5E
|
|
ldr r1, _08095A60 @ =gRoomControls
|
|
ldrh r0, [r1, #6]
|
|
adds r0, #0xe8
|
|
strh r0, [r4, #0x2e]
|
|
movs r2, #0x9c
|
|
lsls r2, r2, #1
|
|
adds r0, r2, #0
|
|
ldrh r1, [r1, #8]
|
|
adds r0, r0, r1
|
|
strh r0, [r4, #0x32]
|
|
ldr r0, _08095A64 @ =0x0000FFFC
|
|
strh r0, [r4, #0x36]
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r1, [r5, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08095A5E:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08095A60: .4byte gRoomControls
|
|
_08095A64: .4byte 0x0000FFFC
|
|
|
|
thumb_func_start sub_08095A68
|
|
sub_08095A68: @ 0x08095A68
|
|
push {lr}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #6
|
|
movs r1, #0x6a
|
|
movs r2, #6
|
|
movs r3, #0x16
|
|
bl sub_0805EB2C
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08095A86
|
|
movs r0, #0xff
|
|
strb r0, [r1, #0xc]
|
|
_08095A86:
|
|
add sp, #4
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095A8C
|
|
sub_08095A8C: @ 0x08095A8C
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #5
|
|
bhi _08095B44
|
|
lsls r0, r0, #2
|
|
ldr r1, _08095AA0 @ =_08095AA4
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08095AA0: .4byte _08095AA4
|
|
_08095AA4: @ jump table
|
|
.4byte _08095ABC @ case 0
|
|
.4byte _08095ACC @ case 1
|
|
.4byte _08095ADC @ case 2
|
|
.4byte _08095AE6 @ case 3
|
|
.4byte _08095B12 @ case 4
|
|
.4byte _08095B1C @ case 5
|
|
_08095ABC:
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
movs r1, #0
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0x1e]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_08095ACC:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
b _08095B44
|
|
_08095ADC:
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0x78
|
|
strb r0, [r4, #0xe]
|
|
_08095AE6:
|
|
ldrb r1, [r4, #0x18]
|
|
lsls r0, r1, #0x1e
|
|
lsrs r0, r0, #0x1e
|
|
movs r5, #1
|
|
eors r0, r5
|
|
movs r3, #4
|
|
rsbs r3, r3, #0
|
|
adds r2, r3, #0
|
|
ands r2, r1
|
|
orrs r2, r0
|
|
strb r2, [r4, #0x18]
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08095B44
|
|
movs r0, #1
|
|
strb r5, [r4, #0xc]
|
|
ands r2, r3
|
|
orrs r2, r0
|
|
b _08095B42
|
|
_08095B12:
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0x78
|
|
strb r0, [r4, #0xe]
|
|
_08095B1C:
|
|
ldrb r1, [r4, #0x18]
|
|
lsls r0, r1, #0x1e
|
|
lsrs r0, r0, #0x1e
|
|
movs r5, #1
|
|
eors r0, r5
|
|
movs r3, #4
|
|
rsbs r3, r3, #0
|
|
adds r2, r3, #0
|
|
ands r2, r1
|
|
orrs r2, r0
|
|
strb r2, [r4, #0x18]
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08095B44
|
|
strb r5, [r4, #0xc]
|
|
ands r2, r3
|
|
_08095B42:
|
|
strb r2, [r4, #0x18]
|
|
_08095B44:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095B48
|
|
sub_08095B48: @ 0x08095B48
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bne _08095B78
|
|
adds r0, #1
|
|
strb r0, [r5, #0xc]
|
|
adds r1, r5, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r5, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
ldr r1, _08095BA8 @ =gUnk_08114F30
|
|
ldrb r2, [r5, #0x19]
|
|
lsrs r0, r2, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, #0x19]
|
|
_08095B78:
|
|
ldrb r0, [r5, #0x18]
|
|
movs r4, #4
|
|
rsbs r4, r4, #0
|
|
adds r1, r4, #0
|
|
ands r1, r0
|
|
strb r1, [r5, #0x18]
|
|
ldr r2, [r5, #0x50]
|
|
cmp r2, #0
|
|
beq _08095BCE
|
|
adds r0, r2, #0
|
|
adds r0, #0x5a
|
|
ldrb r3, [r0]
|
|
movs r0, #0x40
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
bne _08095BAC
|
|
movs r0, #0x80
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08095BCE
|
|
bl DeleteThisEntity
|
|
b _08095BDC
|
|
.align 2, 0
|
|
_08095BA8: .4byte gUnk_08114F30
|
|
_08095BAC:
|
|
adds r0, r1, #0
|
|
ands r0, r4
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r5, #0x18]
|
|
ldrh r0, [r2, #0x12]
|
|
ldrb r1, [r2, #0x1e]
|
|
bl sub_080700C8
|
|
ldrb r1, [r0]
|
|
adds r2, r5, #0
|
|
adds r2, #0x62
|
|
strb r1, [r2]
|
|
ldrb r0, [r0, #1]
|
|
adds r1, r5, #0
|
|
adds r1, #0x63
|
|
strb r0, [r1]
|
|
_08095BCE:
|
|
ldrb r4, [r5, #0xa]
|
|
ldrb r0, [r5, #0xb]
|
|
strb r0, [r5, #0xa]
|
|
adds r0, r5, #0
|
|
bl sub_08080CB4
|
|
strb r4, [r5, #0xa]
|
|
_08095BDC:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095BE0
|
|
sub_08095BE0: @ 0x08095BE0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r2, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x18
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08095BFC
|
|
str r4, [r1, #0x50]
|
|
adds r0, r4, #0
|
|
bl CopyPosition
|
|
_08095BFC:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095C00
|
|
sub_08095C00: @ 0x08095C00
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldrb r1, [r2, #0xc]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08095C14
|
|
bl DeleteThisEntity
|
|
b _08095C46
|
|
_08095C14:
|
|
ldr r3, [r2, #0x50]
|
|
cmp r3, #0
|
|
beq _08095C46
|
|
adds r1, r2, #0
|
|
adds r1, #0x60
|
|
movs r0, #0xe8
|
|
strh r0, [r1]
|
|
ldrb r0, [r3, #0x18]
|
|
lsls r0, r0, #0x1e
|
|
lsrs r0, r0, #0x1e
|
|
cmp r0, #1
|
|
bne _08095C38
|
|
ldrb r1, [r2, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r2, #0x18]
|
|
b _08095C46
|
|
_08095C38:
|
|
ldrb r0, [r2, #0x18]
|
|
movs r1, #4
|
|
rsbs r1, r1, #0
|
|
ands r1, r0
|
|
movs r0, #1
|
|
orrs r1, r0
|
|
strb r1, [r2, #0x18]
|
|
_08095C46:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_08095C48
|
|
sub_08095C48: @ 0x08095C48
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x19
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08095C66
|
|
str r1, [r4, #0x54]
|
|
str r4, [r1, #0x50]
|
|
adds r0, r4, #0
|
|
bl CopyPosition
|
|
_08095C66:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08095C68
|
|
sub_08095C68: @ 0x08095C68
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08095C80
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x1e]
|
|
ldrh r2, [r4, #0x12]
|
|
adds r0, r4, #0
|
|
bl sub_080042D0
|
|
_08095C80:
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
beq _08095CAA
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #7
|
|
bhi _08095CA4
|
|
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]
|
|
_08095CA4:
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
bne _08095CAE
|
|
_08095CAA:
|
|
bl DeleteThisEntity
|
|
_08095CAE:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08095CB0
|
|
sub_08095CB0: @ 0x08095CB0
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x1b
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095CDC
|
|
str r4, [r5, #0x54]
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
movs r0, #0x10
|
|
strb r0, [r4, #0xe]
|
|
ldrb r0, [r5, #0x1e]
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r0, [r5, #0x1e]
|
|
strb r0, [r4, #0x1f]
|
|
_08095CDC:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095CE0
|
|
sub_08095CE0: @ 0x08095CE0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08095D06
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r4, #0x18]
|
|
adds r0, r4, #0
|
|
movs r1, #6
|
|
bl sub_0805E3A0
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_08095D06:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
adds r0, r4, #0
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #0x81
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
adds r0, r4, #0
|
|
bl sub_08095D30
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095D30
|
|
sub_08095D30: @ 0x08095D30
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
adds r0, r1, #0
|
|
cmp r0, #0
|
|
beq _08095D4E
|
|
ldr r1, _08095D50 @ =gUnk_08122B00
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, #0x81
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
adds r0, r2, #0
|
|
bl sub_0801D2B4
|
|
_08095D4E:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08095D50: .4byte gUnk_08122B00
|
|
|
|
thumb_func_start sub_08095D54
|
|
sub_08095D54: @ 0x08095D54
|
|
push {r4, r5, lr}
|
|
adds r5, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x1c
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095D86
|
|
ldr r0, _08095D88 @ =gLinkEntity
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r1, [r5, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08095D86:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08095D88: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_08095D8C
|
|
sub_08095D8C: @ 0x08095D8C
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r6, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x1d
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095DB8
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r1, [r6, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08095DB8:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095DBC
|
|
sub_08095DBC: @ 0x08095DBC
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldr r5, _08095DF0 @ =gUnk_02033280
|
|
ldr r0, [r5]
|
|
movs r1, #0x10
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08095DD0
|
|
bl DeleteThisEntity
|
|
_08095DD0:
|
|
ldrb r0, [r4, #0xb]
|
|
cmp r0, #0
|
|
bne _08095DF4
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08095DE6
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_08095DE6:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
b _08095E74
|
|
.align 2, 0
|
|
_08095DF0: .4byte gUnk_02033280
|
|
_08095DF4:
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08095E30
|
|
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, #0x4b
|
|
bl InitializeAnimation
|
|
ldr r1, _08095E78 @ =gUnk_08114F30
|
|
ldrb r2, [r4, #0x19]
|
|
lsrs r0, r2, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x19]
|
|
adds r0, r4, #0
|
|
adds r1, r4, #0
|
|
bl ResolveEntityOnTop
|
|
_08095E30:
|
|
ldrb r2, [r4, #0xb]
|
|
movs r0, #0x80
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08095E56
|
|
ldr r0, [r5]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xa
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08095E56
|
|
movs r0, #0xff
|
|
strb r0, [r4, #0xb]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xb
|
|
str r0, [r4, #0x20]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #8
|
|
strh r0, [r4, #0x24]
|
|
_08095E56:
|
|
movs r0, #0x24
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r4, #0
|
|
bl sub_08003FC4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
adds r0, r4, #0
|
|
bl sub_080040A8
|
|
cmp r0, #0
|
|
bne _08095E74
|
|
bl DeleteThisEntity
|
|
_08095E74:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08095E78: .4byte gUnk_08114F30
|
|
|
|
thumb_func_start sub_08095E7C
|
|
sub_08095E7C: @ 0x08095E7C
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r6, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x1e
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08095EA8
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r1, [r6, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08095EA8:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08095EAC
|
|
sub_08095EAC: @ 0x08095EAC
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
mov sb, r0
|
|
adds r4, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x1e
|
|
movs r2, #1
|
|
bl CreateObject
|
|
adds r5, r0, #0
|
|
cmp r5, #0
|
|
beq _08095F2A
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _08095EE0
|
|
movs r7, #0x10
|
|
movs r6, #0x1f
|
|
movs r0, #0x80
|
|
lsls r0, r0, #7
|
|
mov sl, r0
|
|
movs r2, #0
|
|
mov r8, r2
|
|
b _08095F02
|
|
_08095EE0:
|
|
movs r7, #8
|
|
movs r6, #0xf
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xb
|
|
mov sl, r0
|
|
ldr r4, _08095F34 @ =gUnk_08122B0E
|
|
bl Random
|
|
movs r1, #7
|
|
ands r1, r0
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r4
|
|
movs r0, #0
|
|
ldrsh r2, [r1, r0]
|
|
mov r8, r2
|
|
movs r0, #0xff
|
|
strb r0, [r5, #0xb]
|
|
_08095F02:
|
|
bl Random
|
|
adds r4, r0, #0
|
|
ands r4, r6
|
|
subs r4, r7, r4
|
|
bl Random
|
|
ands r6, r0
|
|
subs r3, r7, r6
|
|
lsls r4, r4, #0x10
|
|
lsls r3, r3, #0x10
|
|
mov r0, sb
|
|
adds r1, r5, #0
|
|
adds r2, r4, #0
|
|
bl PositionRelative
|
|
mov r2, sl
|
|
str r2, [r5, #0x20]
|
|
mov r0, r8
|
|
strh r0, [r5, #0x24]
|
|
_08095F2A:
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_08095F34: .4byte gUnk_08122B0E
|
|
|
|
thumb_func_start sub_08095F38
|
|
sub_08095F38: @ 0x08095F38
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08095FC2
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0xff
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r0, [r4, #0xb]
|
|
cmp r0, #4
|
|
beq _08095F64
|
|
cmp r0, #4
|
|
bgt _08095F5A
|
|
cmp r0, #3
|
|
beq _08095F60
|
|
b _08095F6A
|
|
_08095F5A:
|
|
cmp r0, #6
|
|
beq _08095F68
|
|
b _08095F6A
|
|
_08095F60:
|
|
movs r1, #0
|
|
b _08095F6A
|
|
_08095F64:
|
|
movs r1, #1
|
|
b _08095F6A
|
|
_08095F68:
|
|
movs r1, #4
|
|
_08095F6A:
|
|
adds r0, r4, #0
|
|
bl sub_0801D2B4
|
|
ldr r0, _08095F90 @ =gLinkEntity
|
|
adds r0, #0x5a
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08095F98
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
ldr r0, _08095F94 @ =0x000008BF
|
|
str r0, [r1]
|
|
movs r0, #0x34
|
|
strb r0, [r4, #0xe]
|
|
movs r0, #0xb5
|
|
b _08095FA6
|
|
.align 2, 0
|
|
_08095F90: .4byte gLinkEntity
|
|
_08095F94: .4byte 0x000008BF
|
|
_08095F98:
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
ldr r0, _08096020 @ =0x000008E3
|
|
str r0, [r1]
|
|
movs r0, #0x55
|
|
strb r0, [r4, #0xe]
|
|
movs r0, #0xd6
|
|
_08095FA6:
|
|
strb r0, [r4, #0xf]
|
|
ldr r0, _08096024 @ =gLinkEntity
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
adds r2, r4, #0
|
|
adds r2, #0x29
|
|
ldrb r1, [r2]
|
|
movs r0, #8
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #3
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08095FC2:
|
|
ldr r5, _08096024 @ =gLinkEntity
|
|
adds r2, r5, #0
|
|
adds r2, #0x5a
|
|
ldrb r1, [r2]
|
|
movs r0, #0x10
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08095FE0
|
|
movs r0, #0xef
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
movs r0, #0xea
|
|
lsls r0, r0, #1
|
|
bl PlaySFX
|
|
_08095FE0:
|
|
ldrh r0, [r5, #0x12]
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
ldr r2, [r1]
|
|
lsrs r1, r2, #8
|
|
cmp r0, r1
|
|
bne _08095FFC
|
|
adds r0, r5, #0
|
|
adds r0, #0x58
|
|
ldrb r1, [r0]
|
|
lsls r0, r2, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r1, r0
|
|
beq _08096000
|
|
_08095FFC:
|
|
bl DeleteThisEntity
|
|
_08096000:
|
|
ldr r0, _08096024 @ =gLinkEntity
|
|
ldrb r0, [r0, #0x1e]
|
|
ldrb r1, [r4, #0xe]
|
|
subs r0, r0, r1
|
|
ldrb r1, [r4, #0xf]
|
|
adds r0, r0, r1
|
|
ldrb r1, [r4, #0x1e]
|
|
cmp r0, r1
|
|
beq _0809601E
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r1, [r4, #0x1e]
|
|
ldrh r2, [r4, #0x12]
|
|
adds r0, r4, #0
|
|
bl sub_080042D0
|
|
_0809601E:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08096020: .4byte 0x000008E3
|
|
_08096024: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_08096028
|
|
sub_08096028: @ 0x08096028
|
|
push {r4, r5, lr}
|
|
movs r4, #6
|
|
movs r5, #0xc0
|
|
lsls r5, r5, #2
|
|
adds r0, r5, #0
|
|
movs r1, #0x7b
|
|
bl CheckLocalFlagByOffset
|
|
cmp r0, #0
|
|
bne _0809603E
|
|
movs r4, #4
|
|
_0809603E:
|
|
adds r0, r5, #0
|
|
movs r1, #0x7a
|
|
bl CheckLocalFlagByOffset
|
|
cmp r0, #0
|
|
bne _0809604C
|
|
movs r4, #3
|
|
_0809604C:
|
|
movs r0, #0x6a
|
|
movs r1, #0x1f
|
|
adds r2, r4, #0
|
|
bl CreateObject
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_08096058
|
|
sub_08096058: @ 0x08096058
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _0809606C
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
_0809606C:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08096084
|
|
sub_08096084: @ 0x08096084
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _080960A0
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r0, r4, #0
|
|
bl sub_0807DD64
|
|
ldrb r1, [r4, #0xb]
|
|
adds r0, r4, #0
|
|
bl InitializeAnimation
|
|
_080960A0:
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r4, #0
|
|
bl sub_0807DDE4
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
ldr r0, [r4, #0x50]
|
|
cmp r0, #0
|
|
beq _080960C0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
_080960C0:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080960C4
|
|
sub_080960C4: @ 0x080960C4
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r6, r1, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x23
|
|
movs r2, #0x49
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08096110
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r1, _08096160 @ =gUnk_08114F34
|
|
ldrb r0, [r5, #0x19]
|
|
lsrs r0, r0, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
ldrb r2, [r4, #0x19]
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x19]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl sub_0806FAD8
|
|
ldr r1, [r6, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_08096110:
|
|
movs r0, #0x6a
|
|
movs r1, #0x24
|
|
movs r2, #0x4a
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _0809615E
|
|
str r5, [r4, #0x50]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
ldr r1, _08096164 @ =gUnk_08114F30
|
|
ldrb r0, [r5, #0x19]
|
|
lsrs r0, r0, #6
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #6
|
|
ldrb r2, [r4, #0x19]
|
|
movs r0, #0x3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x19]
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl ResolveEntityOnTop
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r1, [r6, #4]
|
|
adds r0, r4, #0
|
|
bl StartCutscene
|
|
adds r1, r4, #0
|
|
adds r1, #0x84
|
|
str r0, [r1]
|
|
_0809615E:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08096160: .4byte gUnk_08114F34
|
|
_08096164: .4byte gUnk_08114F30
|
|
|
|
thumb_func_start sub_08096168
|
|
sub_08096168: @ 0x08096168
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _0809618C
|
|
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, #0x4b
|
|
bl InitializeAnimation
|
|
_0809618C:
|
|
adds r0, r4, #0
|
|
bl GetNextFrame
|
|
movs r0, #0x24
|
|
ldrsh r1, [r4, r0]
|
|
ldrb r2, [r4, #0x15]
|
|
adds r0, r4, #0
|
|
bl sub_0806F62C
|
|
adds r0, r4, #0
|
|
bl sub_080040A8
|
|
cmp r0, #0
|
|
bne _080961AC
|
|
bl DeleteThisEntity
|
|
_080961AC:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080961B0
|
|
sub_080961B0: @ 0x080961B0
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r7, r0, #0
|
|
movs r5, #0
|
|
ldr r6, _080961F0 @ =gUnk_08122B1E
|
|
_080961B8:
|
|
movs r0, #0x6a
|
|
movs r1, #0x25
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _080961E6
|
|
adds r0, r7, #0
|
|
adds r1, r4, #0
|
|
bl CopyPosition
|
|
lsls r0, r5, #5
|
|
strb r0, [r4, #0x15]
|
|
bl Random
|
|
movs r2, #0xf8
|
|
lsls r2, r2, #1
|
|
adds r1, r2, #0
|
|
ands r0, r1
|
|
ldrh r1, [r6]
|
|
adds r0, r0, r1
|
|
strh r0, [r4, #0x24]
|
|
_080961E6:
|
|
adds r6, #2
|
|
adds r5, #1
|
|
cmp r5, #7
|
|
ble _080961B8
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_080961F0: .4byte gUnk_08122B1E
|
|
|
|
thumb_func_start sub_080961F4
|
|
sub_080961F4: @ 0x080961F4
|
|
ldrb r2, [r0, #0x18]
|
|
movs r1, #4
|
|
rsbs r1, r1, #0
|
|
ands r1, r2
|
|
movs r2, #1
|
|
orrs r1, r2
|
|
strb r1, [r0, #0x18]
|
|
movs r1, #0
|
|
strb r1, [r0, #0x1e]
|
|
bx lr
|
|
|
|
thumb_func_start sub_08096208
|
|
sub_08096208: @ 0x08096208
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
lsls r1, r1, #1
|
|
ldr r0, _08096238 @ =gUnk_08122B2E
|
|
adds r4, r1, r0
|
|
movs r0, #0x6a
|
|
movs r1, #0x26
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08096234
|
|
movs r2, #0
|
|
ldrsb r2, [r4, r2]
|
|
lsls r2, r2, #0x10
|
|
movs r3, #1
|
|
ldrsb r3, [r4, r3]
|
|
lsls r3, r3, #0x10
|
|
adds r0, r5, #0
|
|
bl PositionRelative
|
|
_08096234:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08096238: .4byte gUnk_08122B2E
|
|
|
|
thumb_func_start sub_0809623C
|
|
sub_0809623C: @ 0x0809623C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x27
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _0809625A
|
|
ldr r3, _0809625C @ =0xFFF00000
|
|
adds r0, r4, #0
|
|
movs r2, #0
|
|
bl PositionRelative
|
|
_0809625A:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0809625C: .4byte 0xFFF00000
|
|
|
|
thumb_func_start sub_08096260
|
|
sub_08096260: @ 0x08096260
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #0x6a
|
|
movs r1, #0x28
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _0809627E
|
|
ldr r3, _08096280 @ =0xFFF00000
|
|
adds r0, r4, #0
|
|
movs r2, #0
|
|
bl PositionRelative
|
|
_0809627E:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08096280: .4byte 0xFFF00000
|
|
|
|
thumb_func_start sub_08096284
|
|
sub_08096284: @ 0x08096284
|
|
push {lr}
|
|
movs r1, #0xd
|
|
bl sub_0809629C
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08096290
|
|
sub_08096290: @ 0x08096290
|
|
push {lr}
|
|
movs r1, #0xe
|
|
bl sub_0809629C
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0809629C
|
|
sub_0809629C: @ 0x0809629C
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r6, r1, #0
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bne _080962B2
|
|
movs r0, #1
|
|
strb r0, [r5, #0xc]
|
|
adds r0, r5, #0
|
|
bl sub_0807DD64
|
|
_080962B2:
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl sub_0807DDAC
|
|
adds r0, r5, #0
|
|
bl sub_0807DDE4
|
|
movs r1, #0x80
|
|
lsls r1, r1, #5
|
|
adds r0, r5, #0
|
|
bl sub_08003FC4
|
|
ldrb r4, [r5, #0xa]
|
|
strb r6, [r5, #0xa]
|
|
adds r0, r5, #0
|
|
bl sub_08080CB4
|
|
strb r4, [r5, #0xa]
|
|
pop {r4, r5, r6, pc}
|
|
|
|
thumb_func_start sub_080962D8
|
|
sub_080962D8: @ 0x080962D8
|
|
push {lr}
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
movs r0, #6
|
|
bl DoFade
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080962E8
|
|
sub_080962E8: @ 0x080962E8
|
|
push {lr}
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
movs r0, #7
|
|
bl DoFade
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080962F8
|
|
sub_080962F8: @ 0x080962F8
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldr r4, [r1, #4]
|
|
lsls r4, r4, #4
|
|
ldr r0, _08096318 @ =gUnk_08122B3C
|
|
adds r4, r4, r0
|
|
ldrb r2, [r4, #0xc]
|
|
adds r3, r4, #0
|
|
adds r3, #8
|
|
adds r0, r5, #0
|
|
movs r1, #1
|
|
bl sub_08078850
|
|
str r4, [r5, #0x48]
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08096318: .4byte gUnk_08122B3C
|