From db02fad00a9ad09227ee3f4d01c4eddf0765a54a Mon Sep 17 00:00:00 2001 From: theo3 Date: Fri, 17 Jul 2020 16:46:47 -0700 Subject: [PATCH] item.c --- asm/code_08076C80.s | 48 --------------------------------------------- src/item.c | 21 +++++++++++++++++++- 2 files changed, 20 insertions(+), 49 deletions(-) diff --git a/asm/code_08076C80.s b/asm/code_08076C80.s index d564bc2d..cf1c87bf 100644 --- a/asm/code_08076C80.s +++ b/asm/code_08076C80.s @@ -6,54 +6,6 @@ .text - thumb_func_start sub_08076D94 -sub_08076D94: @ 0x08076D94 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - bl sub_08077EFC - adds r1, r0, #0 - cmp r1, #0 - beq _08076DBC - ldr r2, _08076DB8 @ =gLinkState - ldrb r1, [r2, #3] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #3] - adds r0, r4, #0 - bl UpdateItemAnim - b _08076DC8 - .align 2, 0 -_08076DB8: .4byte gLinkState -_08076DBC: - ldr r0, _08076DCC @ =gLinkState - strb r1, [r0, #3] - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_08077E78 -_08076DC8: - pop {r4, r5, pc} - .align 2, 0 -_08076DCC: .4byte gLinkState - - thumb_func_start GustJar -GustJar: @ 0x08076DD0 - push {lr} - ldr r2, _08076DEC @ =gLinkState - adds r2, #0xa8 - movs r3, #3 - strb r3, [r2] - ldr r3, _08076DF0 @ =gUnk_0811BDF4 - ldrb r2, [r0, #4] - lsls r2, r2, #2 - adds r2, r2, r3 - ldr r2, [r2] - bl _call_via_r2 - pop {pc} - .align 2, 0 -_08076DEC: .4byte gLinkState -_08076DF0: .4byte gUnk_0811BDF4 - thumb_func_start sub_08076DF4 sub_08076DF4: @ 0x08076DF4 push {r4, r5, r6, r7, lr} diff --git a/src/item.c b/src/item.c index 607a7d83..b757fa6c 100644 --- a/src/item.c +++ b/src/item.c @@ -52,9 +52,10 @@ extern void sub_08077BB8(ItemBehavior*); extern void CreatePlayerBomb(ItemBehavior*, u32); extern u32 sub_08077EFC(); +extern void (*const gOcarinaStates[4])(ItemBehavior*, u32); extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32); extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32); -extern void (*const gOcarinaStates[4])(ItemBehavior*, u32); +extern void (*const gUnk_0811BDF4[])(ItemBehavior* beh, u32); extern u8 gUnk_02034490; #if 0 @@ -138,4 +139,22 @@ void sub_08076D34(ItemBehavior* beh, u32 arg1) { gLinkState.field_0x3[0] = 0; sub_08077E78(beh, arg1); } +} + +void sub_08076D94(ItemBehavior *beh, u32 arg1) +{ + if (sub_08077EFC(beh)) { + gLinkState.field_0x3[0] |= 1; + UpdateItemAnim(beh); + } + else { + gLinkState.field_0x3[0] = 0; + sub_08077E78(beh, arg1); + } +} + +void GustJar(ItemBehavior *beh, u32 arg1) +{ + gLinkState.field_0xa8[0] = 3; + gUnk_0811BDF4[beh->stateID](beh, arg1); } \ No newline at end of file