From b174637d188288ac7f454efeb4c97afd26c0d872 Mon Sep 17 00:00:00 2001 From: Behemoth Date: Wed, 26 Aug 2020 02:21:46 +0200 Subject: [PATCH] - label effect functions - combine object creation function --- asm/bobomb.s | 2 +- asm/chestSpawner.s | 4 +- asm/code_08016DF8.s | 2 +- asm/code_08070698.s | 2 +- asm/code_080732D0.s | 8 +-- asm/code_08078778.s | 4 +- asm/code_0807CC3C.s | 10 ++-- asm/code_080A29BC.s | 28 +++++----- asm/code_080A5574.s | 4 +- asm/createFx.s | 13 ----- asm/crenalBeanSprout.s | 2 +- asm/gleerok.s | 2 +- asm/guardWithSpear.s | 8 +-- asm/itemOnGround.s | 2 +- asm/likeLike.s | 4 +- asm/manager23.s | 2 +- asm/manager37.s | 2 +- asm/managerF.s | 2 +- asm/object35.s | 2 +- asm/object6A.s | 2 +- asm/object91.s | 2 +- asm/octorokBoss.s | 2 +- asm/pesto.s | 2 +- asm/pina.s | 2 +- asm/pinwheel.s | 2 +- asm/spinyBeetle.s | 2 +- asm/stockwell.s | 8 +-- asm/sturgeon.s | 2 +- include/functions.h | 2 +- linker.ld | 3 -- src/code_080A29BC.c | 69 ------------------------ src/createObject.c | 98 ++++++++++++++++++++++++++++++----- src/createObjectWithParent.c | 14 ----- src/enemy/rupeeLike.c | 2 +- src/enemy/vaatiBall.c | 2 +- src/enemy/wisp.c | 2 +- src/npc/forestMinish.c | 3 +- src/npc/tingleSiblings.c | 44 ++++++++++++++-- src/object/objectA.c | 2 +- src/object/treeHidingPortal.c | 4 +- 40 files changed, 192 insertions(+), 180 deletions(-) delete mode 100644 asm/createFx.s delete mode 100644 src/code_080A29BC.c delete mode 100644 src/createObjectWithParent.c diff --git a/asm/bobomb.s b/asm/bobomb.s index 13cc7b13..7dc63497 100644 --- a/asm/bobomb.s +++ b/asm/bobomb.s @@ -409,7 +409,7 @@ _0802C964: cmp r1, #8 bne _0802C972 adds r0, r4, #0 - bl sub_080A29FC + bl CreateDustSmall _0802C972: adds r0, r4, #0 bl sub_0802CC18 diff --git a/asm/chestSpawner.s b/asm/chestSpawner.s index 2d5c6661..9416152c 100644 --- a/asm/chestSpawner.s +++ b/asm/chestSpawner.s @@ -532,7 +532,7 @@ _0808424C: movs r0, #0x72 bl PlaySFX adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust _08084258: movs r0, #3 strb r0, [r4, #0xc] @@ -596,7 +596,7 @@ _080842BA: ldrb r1, [r1] bl sub_0807BA8C adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust _080842D4: pop {r4, pc} .align 2, 0 diff --git a/asm/code_08016DF8.s b/asm/code_08016DF8.s index 69973edf..b30e6ecb 100644 --- a/asm/code_08016DF8.s +++ b/asm/code_08016DF8.s @@ -469,7 +469,7 @@ _08017196: cmp r1, #0 bne _080171A4 adds r0, r5, #0 - bl sub_080A2B80 + bl CreateSparkle _080171A4: ldr r0, _080171B8 @ =gUnk_02002A40 adds r3, r0, #0 diff --git a/asm/code_08070698.s b/asm/code_08070698.s index 738b3fa8..ce1b6779 100644 --- a/asm/code_08070698.s +++ b/asm/code_08070698.s @@ -542,7 +542,7 @@ _08070BC8: cmp r0, #0 bne _08070BE4 adds r0, r5, #0 - bl sub_080A2A64 + bl CreateWaterTrace _08070BE4: pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index f8c6d611..4eacdd99 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -3691,14 +3691,14 @@ _08074E54: movs r1, #8 movs r2, #0x18 rsbs r2, r2, #0 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark b _08074EF0 _08074E62: adds r0, r4, #0 movs r1, #8 movs r2, #0x18 rsbs r2, r2, #0 - bl sub_080A2D0C + bl CreateSpeechBubbleQuestionMark b _08074EF0 _08074E70: ldrb r0, [r4, #0x18] @@ -4261,7 +4261,7 @@ _08075270: movs r2, #0x1c rsbs r2, r2, #0 adds r0, r4, #0 - bl sub_080A2D1C + bl CreateSpeechBubbleSleep str r0, [r4, #0x6c] cmp r0, #0 beq _0807528C @@ -4280,7 +4280,7 @@ sub_0807529C: @ 0x0807529C movs r2, #0x20 rsbs r2, r2, #0 movs r1, #8 - bl sub_080A2D0C + bl CreateSpeechBubbleQuestionMark pop {pc} .align 2, 0 diff --git a/asm/code_08078778.s b/asm/code_08078778.s index f3bcc358..475e152d 100644 --- a/asm/code_08078778.s +++ b/asm/code_08078778.s @@ -5117,7 +5117,7 @@ _0807AECC: cmp r0, #0 bne _0807AEDE adds r0, r4, #0 - bl sub_080A2A64 + bl CreateWaterTrace _0807AEDE: pop {r4, pc} .align 2, 0 @@ -5517,7 +5517,7 @@ sub_0807B1A8: @ 0x0807B1A8 cmp r0, #0 bne _0807B1D0 adds r0, r4, #0 - bl sub_080A2B80 + bl CreateSparkle _0807B1D0: pop {r4, pc} .align 2, 0 diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index 9cc86918..bb51d941 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -1806,14 +1806,14 @@ _0807DC82: movs r1, #8 movs r2, #0x18 rsbs r2, r2, #0 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark b _0807DD40 _0807DC90: adds r0, r5, #0 movs r1, #8 movs r2, #0x18 rsbs r2, r2, #0 - bl sub_080A2D0C + bl CreateSpeechBubbleQuestionMark b _0807DD40 _0807DC9E: adds r0, r6, #0 @@ -5183,7 +5183,7 @@ sub_0807F3F8: @ 0x0807F3F8 movs r2, #0x18 rsbs r2, r2, #0 movs r1, #8 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark pop {pc} .align 2, 0 _0807F408: .4byte gPlayerEntity @@ -5195,7 +5195,7 @@ sub_0807F40C: @ 0x0807F40C movs r2, #0x18 rsbs r2, r2, #0 movs r1, #8 - bl sub_080A2D0C + bl CreateSpeechBubbleQuestionMark pop {pc} .align 2, 0 _0807F41C: .4byte gPlayerEntity @@ -5936,7 +5936,7 @@ sub_0807F93C: @ 0x0807F93C movs r3, #0xff ands r1, r3 ands r2, r3 - bl sub_080A2D1C + bl CreateSpeechBubbleSleep pop {pc} .align 2, 0 diff --git a/asm/code_080A29BC.s b/asm/code_080A29BC.s index 6d214977..291dd7c3 100644 --- a/asm/code_080A29BC.s +++ b/asm/code_080A29BC.s @@ -9,7 +9,7 @@ sub_080A2A84: @ 0x080A2A84 push {r4, r5, r6, r7, lr} adds r5, r1, #0 - bl sub_080A2A64 + bl CreateWaterTrace adds r6, r0, #0 cmp r6, #0 beq _080A2AD2 @@ -132,8 +132,8 @@ _080A2B74: .align 2, 0 _080A2B7C: .4byte gSineTable - thumb_func_start sub_080A2B80 -sub_080A2B80: @ 0x080A2B80 + thumb_func_start CreateSparkle +CreateSparkle: @ 0x080A2B80 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0xf @@ -331,38 +331,38 @@ _080A2CF8: pop {r4, r5, pc} .align 2, 0 - thumb_func_start sub_080A2CFC -sub_080A2CFC: @ 0x080A2CFC + thumb_func_start CreateSpeechBubbleExclamationMark +CreateSpeechBubbleExclamationMark: @ 0x080A2CFC push {r4, lr} adds r4, r1, #0 adds r3, r2, #0 movs r1, #0 adds r2, r4, #0 - bl sub_080A2D2C + bl CreateSpeechBubble pop {r4, pc} - thumb_func_start sub_080A2D0C -sub_080A2D0C: @ 0x080A2D0C + thumb_func_start CreateSpeechBubbleQuestionMark +CreateSpeechBubbleQuestionMark: @ 0x080A2D0C push {r4, lr} adds r4, r1, #0 adds r3, r2, #0 movs r1, #1 adds r2, r4, #0 - bl sub_080A2D2C + bl CreateSpeechBubble pop {r4, pc} - thumb_func_start sub_080A2D1C -sub_080A2D1C: @ 0x080A2D1C + thumb_func_start CreateSpeechBubbleSleep +CreateSpeechBubbleSleep: @ 0x080A2D1C push {r4, lr} adds r4, r1, #0 adds r3, r2, #0 movs r1, #2 adds r2, r4, #0 - bl sub_080A2D2C + bl CreateSpeechBubble pop {r4, pc} - thumb_func_start sub_080A2D2C -sub_080A2D2C: @ 0x080A2D2C + thumb_func_start CreateSpeechBubble +CreateSpeechBubble: @ 0x080A2D2C push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r4, r1, #0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index ba695e1a..4a9bcdc1 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -8153,7 +8153,7 @@ sub_080A9448: @ 0x080A9448 cmp r0, #0 bne _080A9464 adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust bl DeleteThisEntity b _080A9486 _080A9464: @@ -13507,7 +13507,7 @@ _080ABC2A: bl ModHealth _080ABC32: adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust bl DeleteThisEntity b _080ABC52 _080ABC3E: diff --git a/asm/createFx.s b/asm/createFx.s deleted file mode 100644 index 991aa1c4..00000000 --- a/asm/createFx.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .text - .syntax unified - - thumb_func_start CreateFx -CreateFx: @ 0x080A29AC - push {r4, lr} - adds r4, r1, #0 - adds r3, r2, #0 - movs r1, #0xf - adds r2, r4, #0 - bl CreateObjectWithParent - pop {r4, pc} \ No newline at end of file diff --git a/asm/crenalBeanSprout.s b/asm/crenalBeanSprout.s index df8bfdc6..9cbb5a75 100644 --- a/asm/crenalBeanSprout.s +++ b/asm/crenalBeanSprout.s @@ -603,7 +603,7 @@ sub_08096780: @ 0x08096780 strb r0, [r5, #0xc] strb r1, [r5, #0xd] adds r0, r5, #0 - bl sub_080A29BC + bl CreateDust b _080967E0 .align 2, 0 _080967D4: .4byte gUnk_0812319C diff --git a/asm/gleerok.s b/asm/gleerok.s index 4f5462b4..fba60dd6 100644 --- a/asm/gleerok.s +++ b/asm/gleerok.s @@ -857,7 +857,7 @@ _0802D6C4: rsbs r2, r2, #0 adds r0, r5, #0 movs r1, #0xc - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark _0802D6D8: strb r6, [r5, #0x14] b _0802D6EC diff --git a/asm/guardWithSpear.s b/asm/guardWithSpear.s index 1ffd80f5..621a1d62 100644 --- a/asm/guardWithSpear.s +++ b/asm/guardWithSpear.s @@ -234,7 +234,7 @@ _080641E6: cmp r0, #0 bne _08064222 adds r0, r5, #0 - bl sub_080A29FC + bl CreateDustSmall _08064222: adds r4, r5, #0 adds r4, #0x71 @@ -299,7 +299,7 @@ _0806428C: cmp r0, #0 bne _080642AC adds r0, r5, #0 - bl sub_080A29FC + bl CreateDustSmall _080642AC: pop {r4, r5, r6, pc} .align 2, 0 @@ -379,7 +379,7 @@ _08064306: cmp r0, #0 bne _08064342 adds r0, r5, #0 - bl sub_080A29FC + bl CreateDustSmall _08064342: adds r4, r5, #0 adds r4, #0x71 @@ -444,7 +444,7 @@ _080643AC: cmp r0, #0 bne _080643CC adds r0, r5, #0 - bl sub_080A29FC + bl CreateDustSmall _080643CC: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/itemOnGround.s b/asm/itemOnGround.s index 56f4fa8a..e42f4bf9 100644 --- a/asm/itemOnGround.s +++ b/asm/itemOnGround.s @@ -545,7 +545,7 @@ _08080DEE: cmp r0, #0 bne _08080E00 adds r0, r4, #0 - bl sub_080A2B80 + bl CreateSparkle _08080E00: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/likeLike.s b/asm/likeLike.s index 618b6227..fa3c4f96 100644 --- a/asm/likeLike.s +++ b/asm/likeLike.s @@ -312,7 +312,7 @@ sub_08027F84: @ 0x08027F84 movs r1, #0 bl InitializeAnimation adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust _08027FB0: pop {r4, pc} .align 2, 0 @@ -403,7 +403,7 @@ sub_0802802C: @ 0x0802802C strb r2, [r4, #0x15] strb r2, [r4, #0xe] adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust _0802805A: pop {r4, pc} diff --git a/asm/manager23.s b/asm/manager23.s index acdd6c56..c5387705 100644 --- a/asm/manager23.s +++ b/asm/manager23.s @@ -188,7 +188,7 @@ sub_0805BDB4: @ 0x0805BDB4 movs r2, #0x3a ldrsh r1, [r4, r2] ldrb r2, [r4, #0xb] - bl sub_080A29C8 + bl CreateDustAt ldrh r0, [r4, #0x3e] bl ClearFlag ldrh r0, [r4, #0x20] diff --git a/asm/manager37.s b/asm/manager37.s index 106e9932..7ffdb9c7 100644 --- a/asm/manager37.s +++ b/asm/manager37.s @@ -124,7 +124,7 @@ _0805DF1A: rsbs r2, r2, #0 adds r0, r5, #0 movs r1, #8 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark adds r2, r0, #0 cmp r2, #0 beq _0805DF3C diff --git a/asm/managerF.s b/asm/managerF.s index 93add104..60d32fc0 100644 --- a/asm/managerF.s +++ b/asm/managerF.s @@ -333,7 +333,7 @@ sub_08059124: @ 0x08059124 movs r2, #0x3a ldrsh r1, [r4, r2] ldrb r2, [r4, #0xb] - bl sub_080A29C8 + bl CreateDustAt ldrh r0, [r4, #0x38] lsls r0, r0, #0x10 asrs r0, r0, #0x14 diff --git a/asm/object35.s b/asm/object35.s index f99aae2c..586fc402 100644 --- a/asm/object35.s +++ b/asm/object35.s @@ -356,7 +356,7 @@ _0808BAEA: strb r4, [r2, #0x1e] _0808BAFC: adds r0, r2, #0 - bl sub_080A29BC + bl CreateDust pop {r4, pc} thumb_func_start sub_0808BB04 diff --git a/asm/object6A.s b/asm/object6A.s index dedb6152..71508057 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -211,7 +211,7 @@ sub_08094B94: @ 0x08094B94 adds r1, #0x84 str r0, [r1] adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust ldrh r0, [r4, #0x36] adds r0, #0x10 strh r0, [r4, #0x36] diff --git a/asm/object91.s b/asm/object91.s index faa013cd..fff595ca 100644 --- a/asm/object91.s +++ b/asm/object91.s @@ -470,7 +470,7 @@ _0809C74A: cmp r0, #0 bne _0809C772 ldr r0, [r5, #0x54] - bl sub_080A2B80 + bl CreateSparkle _0809C772: adds r3, r5, #0 adds r3, #0x7e diff --git a/asm/octorokBoss.s b/asm/octorokBoss.s index d713b2b4..a6043de6 100644 --- a/asm/octorokBoss.s +++ b/asm/octorokBoss.s @@ -1233,7 +1233,7 @@ _08035B18: movs r2, #0x18 rsbs r2, r2, #0 movs r1, #0xc - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark _08035B2C: pop {pc} .align 2, 0 diff --git a/asm/pesto.s b/asm/pesto.s index 80a94b95..444b0ceb 100644 --- a/asm/pesto.s +++ b/asm/pesto.s @@ -229,7 +229,7 @@ sub_0802409C: @ 0x0802409C adds r0, r4, #0 bl InitializeAnimation adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust pop {r4, pc} thumb_func_start sub_080240B8 diff --git a/asm/pina.s b/asm/pina.s index 80d77d98..11a47b9a 100644 --- a/asm/pina.s +++ b/asm/pina.s @@ -297,7 +297,7 @@ sub_08063C74: @ 0x08063C74 movs r2, #0x18 rsbs r2, r2, #0 movs r1, #8 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark _08063C8C: pop {pc} .align 2, 0 diff --git a/asm/pinwheel.s b/asm/pinwheel.s index 29916fb2..aaa5c88a 100644 --- a/asm/pinwheel.s +++ b/asm/pinwheel.s @@ -84,7 +84,7 @@ sub_080A2420: @ 0x080A2420 movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 - bl sub_080A29BC + bl CreateDust _080A243A: pop {r4, pc} diff --git a/asm/spinyBeetle.s b/asm/spinyBeetle.s index 8a910315..b65ad269 100644 --- a/asm/spinyBeetle.s +++ b/asm/spinyBeetle.s @@ -933,7 +933,7 @@ sub_08033E1C: @ 0x08033E1C rsbs r2, r2, #0 adds r0, r4, #0 movs r1, #0xa - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark pop {r4, pc} .align 2, 0 _08033EA4: .4byte 0xFFF00000 diff --git a/asm/stockwell.s b/asm/stockwell.s index 013f39ac..6d643e31 100644 --- a/asm/stockwell.s +++ b/asm/stockwell.s @@ -233,7 +233,7 @@ sub_080651F8: @ 0x080651F8 rsbs r2, r2, #0 adds r0, r4, #0 movs r1, #8 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark movs r0, #1 bl sub_08078A90 _0806522A: @@ -281,7 +281,7 @@ _08065264: rsbs r2, r2, #0 adds r0, r4, #0 movs r1, #8 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark b _0806528A _0806527E: movs r0, #0 @@ -612,7 +612,7 @@ sub_080654DC: @ 0x080654DC movs r2, #0x18 rsbs r2, r2, #0 movs r1, #8 - bl sub_080A2D0C + bl CreateSpeechBubbleQuestionMark pop {pc} .align 2, 0 @@ -622,7 +622,7 @@ sub_080654EC: @ 0x080654EC movs r2, #0x18 rsbs r2, r2, #0 movs r1, #8 - bl sub_080A2CFC + bl CreateSpeechBubbleExclamationMark pop {pc} .align 2, 0 diff --git a/asm/sturgeon.s b/asm/sturgeon.s index 6537ba17..66a5193b 100644 --- a/asm/sturgeon.s +++ b/asm/sturgeon.s @@ -282,7 +282,7 @@ sub_08064C9C: @ 0x08064C9C cmp r0, #0 bne _08064CB8 adds r0, r2, #0 - bl sub_080A29BC + bl CreateDust _08064CB8: pop {pc} .align 2, 0 diff --git a/include/functions.h b/include/functions.h index 585d8518..5d2da623 100644 --- a/include/functions.h +++ b/include/functions.h @@ -194,7 +194,7 @@ extern void sub_08004488(u32); extern void sub_08004596(Entity*, u32); extern u32 sub_0807953C(void); extern void ResetPlayer(void); -extern void sub_080A29BC(Entity*); +extern void CreateDust(Entity*); extern void sub_080AE068(Entity*); extern Manager* GetEmptyManager(void); extern void AppendEntityToList(void*, u32); diff --git a/linker.ld b/linker.ld index 4bb21a9c..93819bfd 100644 --- a/linker.ld +++ b/linker.ld @@ -880,9 +880,6 @@ SECTIONS { asm/sub_080A2838.o(.text); asm/sub_080A285C.o(.text); src/createObject.o(.text); - src/createObjectWithParent.o(.text); - asm/createFx.o(.text); - src/code_080A29BC.o(.text); asm/code_080A29BC.o(.text); asm/playSFX.o(.text); asm/code_080A3480.o(.text); diff --git a/src/code_080A29BC.c b/src/code_080A29BC.c deleted file mode 100644 index 7fa80ee2..00000000 --- a/src/code_080A29BC.c +++ /dev/null @@ -1,69 +0,0 @@ -#include "global.h" -#include "entity.h" -#include "room.h" - -void sub_080A29BC(Entity *parent) -{ - CreateFx(parent, 2, 0); -} - -void sub_080A29C8(s32 xOff, s32 yOff, u32 layer) -{ - Entity *pEVar1; - - pEVar1 = CreateObject(0xf, 2, 0); - if (pEVar1 != NULL) { - pEVar1->x.HALF.HI = gRoomControls.roomOriginX + xOff; - pEVar1->y.HALF.HI = gRoomControls.roomOriginY + yOff; - pEVar1->collisionLayer = layer; - } -} - -void sub_080A29FC(Entity *parent) -{ - CreateFx(parent, 0x11, 0); -} - -void sub_080A2A08(Entity *parent) -{ - CreateFx(parent, 0x6, 0); -} - -void sub_080A2A14(Entity *parent) -{ - CreateFx(parent, 0xb, 0); -} - -Entity * sub_080A2A20(Entity *parent, u32 form, u32 parameter) -{ - Entity *pEVar1; - - pEVar1 = CreateObjectWithParent(parent, 0, form, parameter); - if (pEVar1 != NULL) { - pEVar1->actionDelay = 5; - } - return pEVar1; -} - -Entity * sub_080A2A3C(Entity *parent, u32 form, u32 subtype, u32 param_4) -{ - Entity *ent; - - ent = CreateObjectWithParent(parent, 0, form, subtype); - if (ent != NULL) { - ent->actionDelay = 5; - ent->field_0x86 = param_4; - } - return ent; -} - -Entity * sub_080A2A64(Entity *parent) -{ - Entity *pEVar1; - - pEVar1 = CreateFx(parent, 0x20, 0); - if (pEVar1 != NULL) { - pEVar1->spritePriority.b0 = 7; - } - return pEVar1; -} \ No newline at end of file diff --git a/src/createObject.c b/src/createObject.c index 93db1d93..d58c995a 100644 --- a/src/createObject.c +++ b/src/createObject.c @@ -1,21 +1,95 @@ #include "global.h" #include "entity.h" +#include "room.h" extern Entity* GetEmptyEntity(); extern void AppendEntityToList(Entity*, u8); -Entity* CreateObject(u32 subtype, u32 param1, u32 param2) +Entity* CreateObject(u32 subtype, u32 form, u32 parameter) { + Entity* ent; -{ - Entity* newEnt; - - newEnt = GetEmptyEntity(); - if (newEnt != NULL) { - (newEnt->entityType).type = 6; - (newEnt->entityType).subtype = subtype; - (newEnt->entityType).form = param1; - (newEnt->entityType).parameter = param2; - AppendEntityToList(newEnt, 6); + ent = GetEmptyEntity(); + if (ent != NULL) { + ent->entityType.type = 6; + ent->entityType.subtype = subtype; + ent->entityType.form = form; + ent->entityType.parameter = parameter; + AppendEntityToList(ent, 6); } - return newEnt; + return ent; +} + +Entity* CreateObjectWithParent(Entity* parentEnt, u32 subtype, u32 form, u32 parameter) { + Entity* ent; + + ent = CreateObject(subtype, form, parameter); + if (ent != NULL) { + ent->parent = parentEnt; + CopyPosition(parentEnt, ent); + } + + return ent; +} + +Entity* CreateFx(Entity* parentEnt, u32 param1, u32 param2) { + asm("nop"); + CreateObjectWithParent(parentEnt, 0, 0x60, 0); +} + +void CreateDust(Entity* parent) { + CreateFx(parent, 2, 0); +} + +void CreateDustAt(s32 xOff, s32 yOff, u32 layer) { + Entity* ent; + + ent = CreateObject(0xf, 2, 0); + if (ent != NULL) { + ent->x.HALF.HI = gRoomControls.roomOriginX + xOff; + ent->y.HALF.HI = gRoomControls.roomOriginY + yOff; + ent->collisionLayer = layer; + } +} + +void CreateDustSmall(Entity* parent) { + CreateFx(parent, 0x11, 0); +} + +void CreateExplosionBroken(Entity* parent) { + CreateFx(parent, 0x6, 0); +} + +void CreateWaterSplash(Entity* parent) { + CreateFx(parent, 0xb, 0); +} + +Entity* sub_080A2A20(Entity* parent, u32 form, u32 parameter) { + Entity* ent; + + ent = CreateObjectWithParent(parent, 0, form, parameter); + if (ent != NULL) { + ent->actionDelay = 5; + } + return ent; +} + +Entity* sub_080A2A3C(Entity* parent, u32 form, u32 subtype, u32 param_4) { + Entity* ent; + + ent = CreateObjectWithParent(parent, 0, form, subtype); + if (ent != NULL) { + ent->actionDelay = 5; + ent->field_0x86 = param_4; + } + return ent; +} + +Entity* CreateWaterTrace(Entity* parent) { + Entity* ent; + + ent = CreateFx(parent, 0x20, 0); + if (ent != NULL) { + ent->spritePriority.b0 = 7; + } + return ent; } diff --git a/src/createObjectWithParent.c b/src/createObjectWithParent.c deleted file mode 100644 index 8aca834d..00000000 --- a/src/createObjectWithParent.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "global.h" -#include "entity.h" - -Entity* CreateObjectWithParent(Entity* parentEnt, u32 subtype, u32 param1, u32 param2) { - Entity* ent; - - ent = CreateObject(subtype, param1, param2); - if (ent != NULL) { - ent->parent = parentEnt; - CopyPosition(parentEnt, ent); - } - - return ent; -} diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 7a021657..8a011dad 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -262,7 +262,7 @@ void sub_08029770(Entity* this) { InitializeAnimation(this, 2); this->attachedEntity->spriteSettings.b.draw = TRUE; InitializeAnimation(this->attachedEntity, 6); - sub_080A29BC(this); + CreateDust(this); } } diff --git a/src/enemy/vaatiBall.c b/src/enemy/vaatiBall.c index ba12afd7..fcbc04f3 100644 --- a/src/enemy/vaatiBall.c +++ b/src/enemy/vaatiBall.c @@ -37,7 +37,7 @@ void VaatiBall(Entity* this) { this->flags &= 0x7f; this->currentHealth = -1; parent->field_0x80.HALF.LO--; - sub_080A29BC(this); + CreateDust(this); PlaySFX(0x1c3); } } diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c index b56ff33a..2c7431d6 100644 --- a/src/enemy/wisp.c +++ b/src/enemy/wisp.c @@ -109,7 +109,7 @@ void sub_080336DC(Entity* this) { this->y.HALF.HI = this->field_0x82.HWORD; break; case 0x18: - sub_080A29BC(this); + CreateDust(this); break; case 0xc: this->spriteSettings.b.draw = TRUE; diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index d0d1d36d..5b3e8f7d 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -20,7 +20,6 @@ extern void sub_0807000C(Entity*); extern void sub_08060158(Entity*); extern u32 CheckKinstoneFused(u32); extern Entity* FindEntityInListBySubtype(u32, u32, u32); -extern void sub_080A29BC(Entity* parent); extern void DeleteEntity(Entity*); extern u32 Random(void); extern void ModBombs(s32); @@ -236,7 +235,7 @@ void sub_08060318(void) { for (i = 2; i >= 0; i--) { ent = FindEntityInListBySubtype(8, 2, 2); if (ent != NULL) { - sub_080A29BC(ent); + CreateDust(ent); DeleteEntity(ent); } } diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index ab50c63c..b3d56ae8 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -12,8 +12,7 @@ extern void (*const gUnk_0810FBFC[])(Entity*); void TingleSiblings(Entity* this) { if ((this->flags & 2) != 0) { sub_08064DE4(this); - } - else { + } else { sub_08064D78(this); } } @@ -40,4 +39,43 @@ void sub_08064DCC(Entity* this) { sub_08064EE8(this); InitAnimationForceUpdate(this, 2); this->action = 1; -} \ No newline at end of file +} +/* +void sub_08064DE4(Entity* this) { + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings = this->spriteSettings & 0xfc | 1; + this->animationState = '\x04'; + sub_0807DD50(this); + break; + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + GetFacingDirection(this, &gPlayerEntity); + InitAnimationForceUpdate(this, sub_0806F5A4()); + sub_0806F118(this); + } else { + sub_0807DD94(this, 0); + } + break; + case 2: + if (UpdateFuseInteraction(this)) { + this->action = 1; + sub_0801E99C(this); + } + break; + } + { + u8 bVar1 = this->frames.all; + u8 bVar5 = bVar1 & 0xf; + this->frames.all = bVar5 ^ bVar1; + if (bVar1 & 0xf) { + Entity* fx = CreateFx(this, bVar5 == 3 ? 0x2a : 0x29, 0); + if (fx && bVar5 == 2) { + fx->spriteSettings.b.flipX = 1; + } + } + } +}*/ diff --git a/src/object/objectA.c b/src/object/objectA.c index c68d503b..72c4e61a 100644 --- a/src/object/objectA.c +++ b/src/object/objectA.c @@ -32,7 +32,7 @@ void ObjectA(Entity *this) { } else if (this->interactType != 0) { SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); SetFlag(this->field_0x86); - sub_080A29BC(this); + CreateDust(this); sub_080526F8(-1); DeleteThisEntity(); } diff --git a/src/object/treeHidingPortal.c b/src/object/treeHidingPortal.c index 52fa5a25..ab7888c5 100644 --- a/src/object/treeHidingPortal.c +++ b/src/object/treeHidingPortal.c @@ -6,7 +6,7 @@ extern void sub_0809E96C(Entity*); extern u32 sub_0800419C(Entity*, Entity*, u32, u32); -extern void sub_080A2B80(Entity*); +extern void CreateSparkle(Entity*); extern u32 sub_0809E9A0(void); extern void sub_08078A90(u32); extern void sub_0809E918(Entity*); @@ -37,7 +37,7 @@ void sub_0809E86C(Entity* this) { if (sub_0800419C(this, &gPlayerEntity, 0x30, 0x30)) { if (CheckGlobalFlag(EZERO_1ST)) { if (((gScreenTransition & 3) == 0)) { - sub_080A2B80(this); + CreateSparkle(this); } } }