summaryrefslogtreecommitdiff
path: root/src/field_effect_helpers.c
diff options
context:
space:
mode:
authorgarak <garakmon@gmail.com>2018-12-16 20:05:31 -0500
committerGitHub <noreply@github.com>2018-12-16 20:05:31 -0500
commite292d0ca8375a8c54907d6bcf404e2e084344156 (patch)
treeb9c59449d47bf73d98d3e38fa26804a163d871ab /src/field_effect_helpers.c
parent10237e8d13b35474ea999b4e9139f9a48a80c53d (diff)
parentd1e6e705ccf05f93933ae4494b1d388550d81d26 (diff)
Merge branch 'master' into fldeff
Diffstat (limited to 'src/field_effect_helpers.c')
-rwxr-xr-xsrc/field_effect_helpers.c157
1 files changed, 21 insertions, 136 deletions
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 1f90c02b9..3046eccd5 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -1007,15 +1007,15 @@ void UpdateSurfBlobFieldEffect(struct Sprite *sprite)
static void SynchroniseSurfAnim(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 surfBlobDirectionAnims[] = {
- 0, // DIR_NONE
- 0, // DIR_SOUTH
- 1, // DIR_NORTH
- 2, // DIR_WEST
- 3, // DIR_EAST
- 0,
- 0,
- 1,
- 1,
+ [DIR_NONE] = 0,
+ [DIR_SOUTH] = 0,
+ [DIR_NORTH] = 1,
+ [DIR_WEST] = 2,
+ [DIR_EAST] = 3,
+ [DIR_SOUTHWEST] = 0,
+ [DIR_SOUTHEAST] = 0,
+ [DIR_NORTHWEST] = 1,
+ [DIR_NORTHEAST] = 1,
};
if (sub_8155640(sprite) == 0)
@@ -1547,150 +1547,35 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
-#ifdef NONMATCHING
-static void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+static void sub_81561FC(struct Sprite *sprite, u8 z, u8 offset)
{
u8 i;
- s16 xlo;
- s16 xhi;
- s16 lx;
- s16 lyhi;
- s16 ly;
- s16 ylo;
- s16 yhi;
- struct EventObject *eventObject; // r4
- const struct EventObjectGraphicsInfo *graphicsInfo; // destroyed
- struct Sprite *linkedSprite; // r5
+ s16 var, xhi, lyhi, yhi, ylo;
+ const struct EventObjectGraphicsInfo *graphicsInfo; // Unused Variable
+ struct Sprite *linkedSprite;
SetObjectSubpriorityByZCoord(z, sprite, offset);
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i ++)
{
- eventObject = &gEventObjects[i];
+ struct EventObject *eventObject = &gEventObjects[i];
if (eventObject->active)
{
graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
linkedSprite = &gSprites[eventObject->spriteId];
xhi = sprite->pos1.x + sprite->centerToCornerVecX;
- xlo = sprite->pos1.x - sprite->centerToCornerVecX;
- lx = linkedSprite->pos1.x;
- if (xhi < lx && xlo > lx)
+ var = sprite->pos1.x - sprite->centerToCornerVecX;
+ if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
{
lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
- ly = linkedSprite->pos1.y;
+ var = linkedSprite->pos1.y;
ylo = sprite->pos1.y - sprite->centerToCornerVecY;
yhi = ylo + linkedSprite->centerToCornerVecY;
- if ((lyhi < yhi || lyhi < ylo) && ly > yhi)
+ if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
{
- if (sprite->subpriority <= linkedSprite->subpriority)
- {
- sprite->subpriority = linkedSprite->subpriority + 2;
- break;
- }
+ sprite->subpriority = linkedSprite->subpriority + 2;
+ break;
}
}
}
}
}
-#else
-NAKED void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
-{
- asm_unified("push {r4-r7,lr}\n\
- adds r6, r0, 0\n\
- adds r0, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r1, r6, 0\n\
- bl SetObjectSubpriorityByZCoord\n\
- movs r7, 0\n\
-_08156212:\n\
- lsls r0, r7, 3\n\
- adds r0, r7\n\
- lsls r0, 2\n\
- ldr r1, =gEventObjects\n\
- adds r4, r0, r1\n\
- ldrb r0, [r4]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _081562B4\n\
- ldrb r0, [r4, 0x5]\n\
- bl GetEventObjectGraphicsInfo\n\
- ldrb r1, [r4, 0x4]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, =gSprites\n\
- adds r5, r0, r1\n\
- adds r0, r6, 0\n\
- adds r0, 0x28\n\
- movs r2, 0\n\
- ldrsb r2, [r0, r2]\n\
- ldrh r0, [r6, 0x20]\n\
- adds r1, r0, r2\n\
- subs r0, r2\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- movs r0, 0x20\n\
- ldrsh r2, [r5, r0]\n\
- cmp r1, r2\n\
- bge _081562B4\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- cmp r0, r2\n\
- ble _081562B4\n\
- adds r0, r5, 0\n\
- adds r0, 0x29\n\
- movs r3, 0\n\
- ldrsb r3, [r0, r3]\n\
- ldrh r2, [r5, 0x22]\n\
- adds r2, r3\n\
- ldrh r4, [r5, 0x22]\n\
- adds r0, r6, 0\n\
- adds r0, 0x29\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- ldrh r0, [r6, 0x22]\n\
- subs r0, r1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r3, r0, r3\n\
- lsls r2, 16\n\
- asrs r2, 16\n\
- lsls r3, 16\n\
- asrs r3, 16\n\
- cmp r2, r3\n\
- blt _0815628C\n\
- cmp r2, r0\n\
- bge _081562B4\n\
-_0815628C:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _081562B4\n\
- adds r2, r6, 0\n\
- adds r2, 0x43\n\
- adds r0, r5, 0\n\
- adds r0, 0x43\n\
- ldrb r1, [r0]\n\
- ldrb r0, [r2]\n\
- cmp r0, r1\n\
- bhi _081562B4\n\
- adds r0, r1, 0x2\n\
- strb r0, [r2]\n\
- b _081562BE\n\
- .pool\n\
-_081562B4:\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- cmp r7, 0xF\n\
- bls _08156212\n\
-_081562BE:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0");
-}
-#endif