diff --git a/asm/beetle.s b/asm/beetle.s index ce288f2a..966e8398 100644 --- a/asm/beetle.s +++ b/asm/beetle.s @@ -73,7 +73,7 @@ _080217A8: strb r0, [r2] ldr r0, _080217EC @ =gLinkEntity adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldr r0, _080217F0 @ =0x0000FFFF strh r0, [r4, #0x36] adds r1, r4, #0 @@ -639,7 +639,7 @@ _08021C04: strb r0, [r1] ldr r0, _08021C50 @ =gLinkEntity adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldr r2, _08021C54 @ =gUnk_080CB5E4 ldrb r1, [r4, #0xf] adds r0, r1, #1 diff --git a/asm/bigGoron.s b/asm/bigGoron.s index dce9b2a2..208b1c9f 100644 --- a/asm/bigGoron.s +++ b/asm/bigGoron.s @@ -630,7 +630,7 @@ sub_0806D4C0: @ 0x0806D4C0 bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop adds r0, r4, #0 movs r1, #2 bl sub_0805E3A0 diff --git a/asm/bigIceBlock.s b/asm/bigIceBlock.s index deb7a0a7..7ae83af8 100644 --- a/asm/bigIceBlock.s +++ b/asm/bigIceBlock.s @@ -754,7 +754,7 @@ _08099D40: bl InitializeAnimation ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] diff --git a/asm/bigVortex.s b/asm/bigVortex.s index 119abedd..3d1d3a1b 100644 --- a/asm/bigVortex.s +++ b/asm/bigVortex.s @@ -143,7 +143,7 @@ sub_08098DC4: @ 0x08098DC4 strb r4, [r0] adds r0, r5, #0 adds r1, r6, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r1, _08098E30 @ =gLinkState movs r0, #0x1f strb r0, [r1, #0xc] diff --git a/asm/bird.s b/asm/bird.s index dcc58ce4..ba945787 100644 --- a/asm/bird.s +++ b/asm/bird.s @@ -94,7 +94,7 @@ sub_0809CF54: @ 0x0809CF54 bl PositionRelative adds r0, r4, #0 adds r1, r5, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _0809CFD8: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/book.s b/asm/book.s index 74ed9443..561f4120 100644 --- a/asm/book.s +++ b/asm/book.s @@ -274,7 +274,7 @@ sub_0809B56C: @ 0x0809B56C cmp r1, #0 beq _0809B5B0 adds r0, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _0809B5B0: pop {r4, pc} .align 2, 0 diff --git a/asm/castorWildsStatue.s b/asm/castorWildsStatue.s index 8277d219..588814d4 100644 --- a/asm/castorWildsStatue.s +++ b/asm/castorWildsStatue.s @@ -365,7 +365,7 @@ _080675EC: strb r0, [r3, #0x19] adds r0, r4, #0 adds r1, r3, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _08067646: subs r6, #1 adds r5, #2 @@ -418,7 +418,7 @@ _08067656: strb r0, [r3, #0x19] adds r0, r4, #0 adds r1, r3, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _080676B0: subs r6, #1 adds r5, #2 diff --git a/asm/cloudPiranha.s b/asm/cloudPiranha.s index a1754c01..23ceece9 100644 --- a/asm/cloudPiranha.s +++ b/asm/cloudPiranha.s @@ -392,7 +392,7 @@ sub_080386B8: @ 0x080386B8 cmp r1, #0 beq _08038720 adds r0, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _08038720: pop {r4, pc} .align 2, 0 @@ -499,7 +499,7 @@ _080387D8: cmp r1, #0 beq _080387EE adds r0, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _080387EE: pop {r4, pc} diff --git a/asm/code_08049CD4.s b/asm/code_08049CD4.s index 897a044a..a0177b4f 100644 --- a/asm/code_08049CD4.s +++ b/asm/code_08049CD4.s @@ -1154,7 +1154,7 @@ sub_0804A4E4: @ 0x0804A4E4 strb r0, [r1] adds r0, r5, #0 adds r1, r6, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldrb r0, [r7] ands r4, r0 cmp r4, #0 diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index bac62bba..9e1eb4e9 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -4,88 +4,6 @@ .syntax unified .text - - thumb_func_start sub_0806FA6C -sub_0806FA6C: @ 0x0806FA6C - push {lr} - adds r2, r0, #0 - adds r2, #0x62 - ldrb r2, [r2] - adds r3, r1, #0 - adds r3, #0x62 - strb r2, [r3] - adds r2, r0, #0 - adds r2, #0x63 - ldrb r2, [r2] - adds r3, #1 - strb r2, [r3] - movs r2, #0 - movs r3, #0 - bl PositionRelative - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806FA90 -sub_0806FA90: @ 0x0806FA90 - push {r4, r5, lr} - adds r4, r0, #0 - adds r4, #0x62 - ldrb r4, [r4] - movs r5, #0x62 - strb r4, [r5, r1] - adds r4, r0, #0 - adds r4, #0x63 - ldrb r4, [r4] - movs r5, #0x63 - strb r4, [r5, r1] - lsls r2, r2, #0x10 - lsls r3, r3, #0x10 - bl PositionRelative - pop {r4, r5, pc} - - thumb_func_start sub_0806FAB0 -sub_0806FAB0: @ 0x0806FAB0 - ldr r2, _0806FAD4 @ =gUnk_08114F78 - adds r0, #0x29 - ldrb r0, [r0] - lsls r0, r0, #0x1d - lsrs r0, r0, #0x1d - adds r0, r0, r2 - ldrb r0, [r0] - adds r1, #0x29 - movs r2, #7 - ands r2, r0 - ldrb r3, [r1] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_0806FAD4: .4byte gUnk_08114F78 - - thumb_func_start sub_0806FAD8 -sub_0806FAD8: @ 0x0806FAD8 - ldr r2, _0806FAFC @ =gUnk_08114F80 - adds r0, #0x29 - ldrb r0, [r0] - lsls r0, r0, #0x1d - lsrs r0, r0, #0x1d - adds r0, r0, r2 - ldrb r0, [r0] - adds r1, #0x29 - movs r2, #7 - ands r2, r0 - ldrb r3, [r1] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_0806FAFC: .4byte gUnk_08114F80 thumb_func_start sub_0806FB00 sub_0806FB00: @ 0x0806FB00 diff --git a/asm/code_08070698.s b/asm/code_08070698.s index 924dd878..3ad8e6c2 100644 --- a/asm/code_08070698.s +++ b/asm/code_08070698.s @@ -1128,7 +1128,7 @@ sub_08070F50: @ 0x08070F50 beq _08070F9A adds r0, r4, #0 adds r1, r5, #0 - bl sub_0806FA30 + bl PositionEntityOnTop ldrh r0, [r4, #0x12] ldrb r1, [r4, #0x1e] bl sub_080700C8 diff --git a/asm/code_08077B98.s b/asm/code_08077B98.s index 335ad265..5b61adf0 100644 --- a/asm/code_08077B98.s +++ b/asm/code_08077B98.s @@ -2434,7 +2434,7 @@ _08078DE0: strh r0, [r4, #0x32] adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r0, _08078E34 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #4 diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index 5d579f3e..4d8b35ca 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -5900,7 +5900,7 @@ sub_0807F714: @ 0x0807F714 orrs r0, r2 strb r0, [r1, #0x19] adds r0, r1, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop pop {pc} .align 2, 0 _0807F734: .4byte gUnk_08114F30 diff --git a/asm/code_080A29BC.s b/asm/code_080A29BC.s index ba7e10da..01b6f0ed 100644 --- a/asm/code_080A29BC.s +++ b/asm/code_080A29BC.s @@ -286,7 +286,7 @@ _080A2BB4: bl PositionRelative adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop adds r0, r5, #0 adds r0, #0x62 ldrb r0, [r0] @@ -499,7 +499,7 @@ sub_080A2D2C: @ 0x080A2D2C bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop str r5, [r4, #0x50] adds r0, r4, #0 adds r0, #0x62 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index b2099ae3..843fbc11 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -5359,7 +5359,7 @@ _080A7F56: strb r0, [r2] ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset adds r0, r4, #0 bl sub_080A7F9C ldrb r0, [r4, #0xa] @@ -11399,14 +11399,14 @@ sub_080AAC44: @ 0x080AAC44 bne _080AAC84 ldr r0, _080AAC80 @ =gLinkEntity adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop b _080AAC8C .align 2, 0 _080AAC80: .4byte gLinkEntity _080AAC84: ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _080AAC8C: bl sub_08077B2C ldr r2, _080AACB4 @ =gLinkState @@ -11595,7 +11595,7 @@ _080AADCC: strb r0, [r1] ldr r0, [r5, #0x50] adds r1, r5, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _080AADE0: ldrb r1, [r5, #0xa] cmp r1, #0 @@ -11664,7 +11664,7 @@ _080AAE60: .4byte gLinkEntity _080AAE64: ldr r0, [r5, #0x50] adds r1, r5, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldrb r1, [r5, #0x10] movs r0, #0x7f ands r0, r1 @@ -12021,7 +12021,7 @@ _080AB0AA: strb r0, [r5, #0xa] adds r0, r4, #0 adds r1, r5, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset _080AB124: pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -14061,7 +14061,7 @@ _080AC058: strb r0, [r1] ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldrh r0, [r4, #0x36] subs r0, #0x14 strh r0, [r4, #0x36] @@ -14084,7 +14084,7 @@ sub_080AC074: @ 0x080AC074 _080AC084: ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldrh r0, [r4, #0x36] subs r0, #0x14 strh r0, [r4, #0x36] diff --git a/asm/gibdo.s b/asm/gibdo.s index adbe9113..ecc95e2d 100644 --- a/asm/gibdo.s +++ b/asm/gibdo.s @@ -339,7 +339,7 @@ sub_080376D0: @ 0x080376D0 strb r0, [r2, #0xa] ldr r0, _08037728 @ =gLinkEntity adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r2, r4, #0 diff --git a/asm/gregal.s b/asm/gregal.s index fe3db83c..8b564620 100644 --- a/asm/gregal.s +++ b/asm/gregal.s @@ -60,7 +60,7 @@ _0806CB2C: bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _0806CB4E: adds r0, r5, #0 bl sub_0807DD64 diff --git a/asm/itemOnGround.s b/asm/itemOnGround.s index b48bbb9f..32076405 100644 --- a/asm/itemOnGround.s +++ b/asm/itemOnGround.s @@ -535,7 +535,7 @@ _08080DB4: adds r2, #1 strb r0, [r2] adds r0, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop b _08080E00 _08080DEE: ldr r0, _08080E04 @ =gUnk_030010A0 diff --git a/asm/mazaalBracelet.s b/asm/mazaalBracelet.s index ac265753..155fd48f 100644 --- a/asm/mazaalBracelet.s +++ b/asm/mazaalBracelet.s @@ -3213,7 +3213,7 @@ _0803B950: bl InitializeAnimation ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset pop {r4, pc} thumb_func_start sub_0803B978 diff --git a/asm/mazaalHead.s b/asm/mazaalHead.s index 7210acb9..6d9cd6b7 100644 --- a/asm/mazaalHead.s +++ b/asm/mazaalHead.s @@ -1631,7 +1631,7 @@ _08034A98: _08034ABA: ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset _08034AC2: pop {r4, pc} diff --git a/asm/non_matching/cloud/sub_0809F770.inc b/asm/non_matching/cloud/sub_0809F770.inc index ab696978..a2c06235 100644 --- a/asm/non_matching/cloud/sub_0809F770.inc +++ b/asm/non_matching/cloud/sub_0809F770.inc @@ -17,7 +17,7 @@ beq _0809F7B6 adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FA30 + bl PositionEntityOnTop bl Random ldrh r2, [r4, #0x2e] subs r2, #0x10 diff --git a/asm/non_matching/syrup/sub_0806A26C.inc b/asm/non_matching/syrup/sub_0806A26C.inc index c905a9dc..a807184a 100644 --- a/asm/non_matching/syrup/sub_0806A26C.inc +++ b/asm/non_matching/syrup/sub_0806A26C.inc @@ -17,7 +17,7 @@ beq _0806A2AE adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FA30 + bl PositionEntityOnTop bl Random adds r5, r0, #0 ldr r2, _0806A2B0 @ =gUnk_081121DC diff --git a/asm/object49.s b/asm/object49.s index 4621e90d..eea39070 100644 --- a/asm/object49.s +++ b/asm/object49.s @@ -484,7 +484,7 @@ _0808F41A: _0808F42E: ldr r0, [r4, #0x54] adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop b _0808F494 _0808F438: ldr r0, [r4, #0x50] @@ -531,7 +531,7 @@ _0808F486: bl sub_08004274 ldr r0, [r4, #0x54] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset _0808F494: pop {r4, pc} .align 2, 0 @@ -632,7 +632,7 @@ sub_0808F554: @ 0x0808F554 adds r5, r0, #0 ldr r0, [r5, #0x50] adds r1, r5, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset adds r1, r5, #0 adds r1, #0x63 ldrb r0, [r1] diff --git a/asm/object6A.s b/asm/object6A.s index 6a6cbb55..b8778f57 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -1189,7 +1189,7 @@ sub_08095330: @ 0x08095330 strh r0, [r4, #0x36] adds r0, r4, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _0809535E: pop {r4, r5, pc} .align 2, 0 @@ -1255,7 +1255,7 @@ sub_080953A4: @ 0x080953A4 strb r0, [r4, #0x19] adds r0, r4, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop adds r0, r4, #0 bl sub_0807DD64 _080953E0: @@ -1820,7 +1820,7 @@ sub_08095810: @ 0x08095810 bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r1, _08095848 @ =gUnk_08011940 adds r0, r4, #0 bl StartCutscene @@ -2603,7 +2603,7 @@ _08095DF4: strb r0, [r4, #0x19] adds r0, r4, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _08095E30: ldrb r2, [r4, #0xb] movs r0, #0x80 @@ -3004,7 +3004,7 @@ _08096110: strb r0, [r4, #0x19] adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop adds r1, r4, #0 adds r1, #0x38 movs r0, #2 diff --git a/asm/object99.s b/asm/object99.s index 2250754b..c1d687f8 100644 --- a/asm/object99.s +++ b/asm/object99.s @@ -70,7 +70,7 @@ _0809E490: strb r0, [r4, #0x18] adds r0, r6, #0 adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset mov r2, sb ldrb r0, [r2] ldrb r1, [r7] diff --git a/asm/objectB4.s b/asm/objectB4.s index a50e42ad..54d8da5c 100644 --- a/asm/objectB4.s +++ b/asm/objectB4.s @@ -159,7 +159,7 @@ _080A0CA0: strh r0, [r4, #0x32] adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _080A0CC0: movs r0, #0xb4 movs r1, #3 @@ -174,7 +174,7 @@ _080A0CC0: strh r0, [r4, #0x32] adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _080A0CE0: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/objectC1.s b/asm/objectC1.s index c6069a13..0f96d975 100644 --- a/asm/objectC1.s +++ b/asm/objectC1.s @@ -253,7 +253,7 @@ _080A273C: beq _080A2762 adds r0, r4, #0 adds r1, r5, #0 - bl sub_0806FA30 + bl PositionEntityOnTop ldrh r0, [r4, #0x12] ldrb r1, [r4, #0x1e] bl sub_080700C8 diff --git a/asm/octorokBoss.s b/asm/octorokBoss.s index 24c32e86..71bfb19c 100644 --- a/asm/octorokBoss.s +++ b/asm/octorokBoss.s @@ -1503,7 +1503,7 @@ _08035D28: _08035D38: ldr r0, [r5, #0x50] adds r1, r5, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r0, [r4] ldrb r0, [r0, #1] subs r0, #2 @@ -1512,7 +1512,7 @@ _08035D38: bne _08035D8A ldr r0, [r5, #0x50] adds r1, r5, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r4, [r5, #0x50] adds r0, r4, #0 adds r0, #0x74 diff --git a/asm/pita.s b/asm/pita.s index 392e0afa..69817e33 100644 --- a/asm/pita.s +++ b/asm/pita.s @@ -21,7 +21,7 @@ sub_08062E60: @ 0x08062E60 bl sub_0805E3A0 adds r0, r4, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r0, _08062EB4 @ =gUnk_0810C428 str r0, [r4, #0x48] adds r0, r4, #0 diff --git a/asm/rem.s b/asm/rem.s index c266b2dd..e3cab54e 100644 --- a/asm/rem.s +++ b/asm/rem.s @@ -607,7 +607,7 @@ _0806A860: cmp r1, #0 beq _0806A88A adds r0, r4, #0 - bl sub_0806FA30 + bl PositionEntityOnTop _0806A88A: pop {r4, pc} .align 2, 0 @@ -696,7 +696,7 @@ sub_0806A914: @ 0x0806A914 bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _0806A938: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/rupeeLike.s b/asm/rupeeLike.s index 8794d88d..ee728fad 100644 --- a/asm/rupeeLike.s +++ b/asm/rupeeLike.s @@ -176,7 +176,7 @@ sub_080293DC: @ 0x080293DC adds r4, r0, #0 ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] diff --git a/asm/smallIceBlock.s b/asm/smallIceBlock.s index 4145890c..b1a2f434 100644 --- a/asm/smallIceBlock.s +++ b/asm/smallIceBlock.s @@ -721,7 +721,7 @@ _08099706: bl sub_08004274 ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] diff --git a/asm/specialFx.s b/asm/specialFx.s index aab7540f..3d918d44 100644 --- a/asm/specialFx.s +++ b/asm/specialFx.s @@ -459,7 +459,7 @@ _080847F0: strh r0, [r5, #0x36] adds r0, r4, #0 adds r1, r5, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop adds r0, r5, #0 bl sub_080845DC pop {r4, r5, pc} diff --git a/asm/townsperson.s b/asm/townsperson.s index a6461932..fa0c7af9 100644 --- a/asm/townsperson.s +++ b/asm/townsperson.s @@ -549,7 +549,7 @@ sub_08061F94: @ 0x08061F94 cmp r1, #0 beq _08061FAC adds r0, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop _08061FAC: pop {r4, pc} .align 2, 0 diff --git a/asm/vaatiEyesMacro.s b/asm/vaatiEyesMacro.s index dc8f3005..31c6a5a6 100644 --- a/asm/vaatiEyesMacro.s +++ b/asm/vaatiEyesMacro.s @@ -328,7 +328,7 @@ _0802EEC8: _0802EED6: ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset ldr r1, _0802EF14 @ =gLinkEntity adds r0, r4, #0 bl sub_080045C4 @@ -387,7 +387,7 @@ _0802EF2C: _0802EF4A: ldr r0, [r4, #0x50] adds r1, r4, #0 - bl sub_0806FA6C + bl CopyPositionAndSpriteOffset movs r0, #0 strh r0, [r4, #0x36] pop {r4, pc} diff --git a/asm/wheaton.s b/asm/wheaton.s index 5baa714a..70310e3a 100644 --- a/asm/wheaton.s +++ b/asm/wheaton.s @@ -20,7 +20,7 @@ sub_08062E20: @ 0x08062E20 bl sub_0805E3A0 adds r0, r4, #0 adds r1, r4, #0 - bl sub_0806FAB0 + bl ResolveEntityOnTop ldr r0, _08062E5C @ =gUnk_0810C3C0 str r0, [r4, #0x48] adds r1, r4, #0 diff --git a/include/functions.h b/include/functions.h index 923c0369..40d6acfe 100644 --- a/include/functions.h +++ b/include/functions.h @@ -4,6 +4,7 @@ #include "global.h" #include "entity.h" +#include "position.h" // Identified extern u32 Random(void); @@ -23,7 +24,6 @@ extern u32 CheckKinstoneFused(u32); extern void ForceEquipItem(u8, u8); extern void LoadRoomEntityList(); void ModHealth(s32); -void PositionRelative(Entity*, Entity*, u32, u32); void CopyPosition(Entity*, Entity*); extern u32* StartCutscene(Entity*, u8*); @@ -66,7 +66,7 @@ extern void sub_0806FF88(Entity*, u32, u32); extern void sub_0807000C(Entity*); extern void sub_0805E47C(Entity*); extern void sub_0805E584(Entity*); -extern void sub_0806FAB0(Entity*, Entity*); +extern void ResolveEntityOnTop(Entity*, Entity*); extern void sub_0806ED78(Entity*); extern void sub_08068BEC(Entity*, u32); extern void sub_08078778(Entity*); diff --git a/include/position.h b/include/position.h new file mode 100644 index 00000000..bc860826 --- /dev/null +++ b/include/position.h @@ -0,0 +1,13 @@ +#ifndef POSITION_H +#define POSITION_H + +#include "global.h" +#include "entity.h" + +void CopyPosition(Entity*, Entity*); +void PositionEntityOnTop(Entity*, Entity*); +void PositionRelative(Entity*, Entity*, s32, s32); +void sub_0806FA90(Entity*, Entity*, s32, s32); +void ResolveEntityOnTop(Entity*, Entity*); + +#endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index f6bf3457..5c463c9d 100644 --- a/linker.ld +++ b/linker.ld @@ -561,9 +561,7 @@ SECTIONS { asm/code_0806ED78.o(.text); src/sub_0806F9EC.o(.text); src/sub_0806FA04.o(.text); - src/copyPosition.o(.text); - src/sub_0806FA30.o(.text); - src/positionRelative.o(.text); + src/position.o(.text); asm/code_0806FA6C.o(.text); src/sub_08070680.o(.text); asm/code_08070698.o(.text); diff --git a/src/cloud.c b/src/cloud.c index fdc75310..73cd4115 100644 --- a/src/cloud.c +++ b/src/cloud.c @@ -20,7 +20,7 @@ extern void (*gUnk_08124798[])(Entity*); extern void (*gUnk_081247A0[])(Entity*); extern void (*gUnk_081247AC[])(Entity*); extern Entity* CreateObject(u32, u32, u32); -extern void sub_0806FA30(Entity*, Entity*); +extern void PositionEntityOnTop(Entity*, Entity*); extern void sub_0807BB68(u32*, u32, u32); extern u8 gUnk_02034490; @@ -164,7 +164,7 @@ Entity* sub_0809F770(Entity* this) { cloud = CreateObject(163, 1, 0); if (cloud != NULL) { - sub_0806FA30(this, cloud); + PositionEntityOnTop(this, cloud); uVar1 = Random(); cloud->x.HALF.HI = ((cloud->x.HALF.HI - 16) + (uVar1 >> 0)) & 31; cloud->y.HALF.HI = ((cloud->y.HALF.HI - 16) + (uVar1 >> 8)) & 31; diff --git a/src/copyPosition.c b/src/copyPosition.c deleted file mode 100644 index 3819d01b..00000000 --- a/src/copyPosition.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "global.h" -#include "entity.h" - -extern void PositionRelative(); - -void CopyPosition(Entity* param_1, Entity* param_2) - -{ - PositionRelative(param_1, param_2, 0, 0); - return; -} diff --git a/src/goron.c b/src/goron.c index ad3aa2ef..9b3d3f72 100644 --- a/src/goron.c +++ b/src/goron.c @@ -81,13 +81,13 @@ void sub_08069428(Entity* this, s32 offsetX, bool32 createFx65) { Entity* fx = CreateFx(this, 4, 0); if (fx) { PositionRelative(this, fx, offsetX, 0xFFF00000); - sub_0806FAB0(this, fx); + ResolveEntityOnTop(this, fx); } if (createFx65 != 0) { fx = CreateFx(this, 65, 0); if (fx) { PositionRelative(this, fx, offsetX, 0xFFF00000); - sub_0806FAB0(this, fx); + ResolveEntityOnTop(this, fx); } } } diff --git a/src/position.c b/src/position.c new file mode 100644 index 00000000..f1711a4a --- /dev/null +++ b/src/position.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "entity.h" +#include "position.h" +#include "functions.h" + +extern u8 gUnk_08114F78[]; +extern u8 gUnk_08114F80[]; + +void CopyPosition(Entity* param_1, Entity* param_2) +{ + PositionRelative(param_1, param_2, 0, 0); +} + +void PositionEntityOnTop(Entity* ent, Entity* ent2) { + PositionRelative(ent, ent2, 0, 0); + ResolveEntityOnTop(ent, ent2); +} + +void PositionRelative(Entity* source, Entity* target, s32 offsetX, s32 offsetY) { // r0, r1, r2, r3 + s32 x; + s32 y; + + x = source->x.WORD; + target->x.WORD = x + offsetX; + + y = source->y.WORD; + target->y.WORD = y + offsetY; + + target->height = source->height; // ldr + target->collisionLayer = source->collisionLayer; + UpdateSpriteOrderAndFlip(target); +} + +void CopyPositionAndSpriteOffset(Entity *param_1,Entity *param_2) +{ + param_2->spriteOffsetX = param_1->spriteOffsetX; + param_2->spriteOffsetY = param_1->spriteOffsetY; + PositionRelative(param_1, param_2, 0, 0); +} + +void sub_0806FA90(Entity *param_1,Entity *param_2, s32 offsetX, s32 offsetY) +{ + param_2->spriteOffsetX = param_1->spriteOffsetX; + param_2->spriteOffsetY = param_1->spriteOffsetY; + PositionRelative(param_1,param_2, offsetX * 64 * 32 * 32, offsetY * 64 * 32 * 32); +} + +void ResolveEntityOnTop(Entity *param_1,Entity *param_2) +{ + param_2->ticks.b0 = gUnk_08114F78[param_1->ticks.b0]; +} + +void sub_0806FAD8(Entity *param_1,Entity *param_2) +{ + param_2->ticks.b0 = gUnk_08114F80[param_1->ticks.b0]; +} \ No newline at end of file diff --git a/src/positionRelative.c b/src/positionRelative.c deleted file mode 100644 index 2c18c7b0..00000000 --- a/src/positionRelative.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "global.h" -#include "entity.h" - -extern void UpdateSpriteOrderAndFlip(Entity*); - -void PositionRelative(Entity* source, Entity* target, s32 offsetX, s32 offsetY) { // r0, r1, r2, r3 - s32 x; - s32 y; - - x = source->x.WORD; - target->x.WORD = x + offsetX; - - y = source->y.WORD; - target->y.WORD = y + offsetY; - - target->height = source->height; // ldr - target->collisionLayer = source->collisionLayer; - UpdateSpriteOrderAndFlip(target); -} diff --git a/src/sub_0806FA30.c b/src/sub_0806FA30.c deleted file mode 100644 index 280f539a..00000000 --- a/src/sub_0806FA30.c +++ /dev/null @@ -1,23 +0,0 @@ -#include "global.h" -#include "entity.h" -extern void PositionRelative(Entity*, Entity*, s32, s32); -extern void sub_0806FAB0(Entity*, Entity*); - -void sub_0806FA30(Entity* ent, Entity* ent2) { - PositionRelative(ent, ent2, 0, 0); - sub_0806FAB0(ent, ent2); -} -/* - thumb_func_start sub_0806FA30 -sub_0806FA30: @ 0x0806FA30 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r2, #0 - movs r3, #0 - bl PositionRelative - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0806FAB0 - pop {r4, r5, pc} - */ diff --git a/src/syrup.c b/src/syrup.c index 929b6015..8b557d50 100644 --- a/src/syrup.c +++ b/src/syrup.c @@ -59,7 +59,7 @@ void sub_0806A26C(Entity *this) Entity *pEVar1; pEVar1 = CreateObject(0xf,0x2f,0); if (pEVar1 != NULL) { - sub_0806FA30(this, pEVar1); + PositionEntityOnTop(this, pEVar1); if (uVar2 = Random(), uVar2) { unk = -unk; // wtf?!