tmc/asm/ocarina.s

150 lines
2.5 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Ocarina
Ocarina: @ 0x08076B78
push {lr}
ldr r3, _08076B94 @ =gOcarinaStates
ldrb r2, [r0, #4]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
ldr r1, _08076B98 @ =gLinkEntity
adds r1, #0x7a
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
pop {pc}
.align 2, 0
_08076B94: .4byte gOcarinaStates
_08076B98: .4byte gLinkEntity
thumb_func_start OcarinaUse
OcarinaUse: @ 0x08076B9C
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
ldr r3, _08076BB4 @ =gLinkState
ldrb r0, [r3, #0xc]
cmp r0, #0x18
bne _08076BB8
adds r0, r4, #0
bl sub_08077E78
b _08076C1C
.align 2, 0
_08076BB4: .4byte gLinkState
_08076BB8:
ldrb r1, [r4, #9]
movs r0, #0xf
orrs r0, r1
strb r0, [r4, #9]
ldr r1, _08076C20 @ =gLinkEntity
movs r0, #4
strb r0, [r1, #0x14]
ldrb r2, [r1, #0x18]
subs r0, #0x45
ands r0, r2
strb r0, [r1, #0x18]
ldrb r2, [r1, #0x10]
movs r0, #0x7f
ands r0, r2
strb r0, [r1, #0x10]
adds r1, #0x7a
movs r0, #2
strh r0, [r1]
ldr r0, [r3, #0x30]
movs r1, #0x80
lsls r1, r1, #0x15
orrs r0, r1
str r0, [r3, #0x30]
adds r1, r3, #0
adds r1, #0x27
movs r0, #0xff
strb r0, [r1]
ldr r1, _08076C24 @ =gUnk_02034490
movs r0, #1
strb r0, [r1]
movs r1, #8
asrs r1, r5
ldrb r2, [r3, #0xa]
adds r0, r1, #0
orrs r0, r2
strb r0, [r3, #0xa]
ldrb r0, [r3, #0xb]
orrs r1, r0
strb r1, [r3, #0xb]
bl sub_08078F60
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077D38
ldr r0, _08076C28 @ =0x00000216
bl PlaySFX
bl sub_0805E544
_08076C1C:
pop {r4, r5, pc}
.align 2, 0
_08076C20: .4byte gLinkEntity
_08076C24: .4byte gUnk_02034490
_08076C28: .4byte 0x00000216
thumb_func_start OcarinaUpdate
OcarinaUpdate: @ 0x08076C2C
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
bl UpdateItemAnim
ldrb r1, [r5, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08076C6E
ldr r0, _08076C70 @ =gLinkEntity
ldrb r2, [r0, #0x10]
movs r4, #0
movs r1, #0x80
orrs r1, r2
strb r1, [r0, #0x10]
ldr r2, _08076C74 @ =gLinkState
ldr r1, [r2, #0x30]
ldr r3, _08076C78 @ =0xEFFFFFFF
ands r1, r3
str r1, [r2, #0x30]
adds r2, #0x27
strb r4, [r2]
ldr r1, _08076C7C @ =gUnk_02034490
strb r4, [r1]
bl CreateBird
bl UnfreezeTime
adds r0, r5, #0
adds r1, r6, #0
bl sub_08077E78
_08076C6E:
pop {r4, r5, r6, pc}
.align 2, 0
_08076C70: .4byte gLinkEntity
_08076C74: .4byte gLinkState
_08076C78: .4byte 0xEFFFFFFF
_08076C7C: .4byte gUnk_02034490