diff options
| author | theo3 <arisstephenson2@gmail.com> | 2020-06-16 12:06:23 -0700 |
|---|---|---|
| committer | theo3 <arisstephenson2@gmail.com> | 2020-06-16 12:06:23 -0700 |
| commit | 1e384fe0a36b7e48341a93f6a792bb3ed05aeaaa (patch) | |
| tree | 4dd5219fdca56a50325b3490b4e15efb4039467a /src | |
| parent | c9ab3b981551537f27f46d7f3a5364a9377cab9f (diff) | |
position.c tentative
Diffstat (limited to 'src')
| -rw-r--r-- | src/cloud.c | 4 | ||||
| -rw-r--r-- | src/copyPosition.c | 11 | ||||
| -rw-r--r-- | src/goron.c | 4 | ||||
| -rw-r--r-- | src/position.c | 56 | ||||
| -rw-r--r-- | src/positionRelative.c | 19 | ||||
| -rw-r--r-- | src/sub_0806FA30.c | 23 | ||||
| -rw-r--r-- | src/syrup.c | 2 |
7 files changed, 61 insertions, 58 deletions
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?! |
