summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_effect_helpers.s44
-rw-r--r--src/field_effect_helpers.c22
2 files changed, 19 insertions, 47 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index 709c4b4fc..5095eb79c 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -6,50 +6,6 @@
.text
- thumb_func_start sub_8127F7C
-sub_8127F7C: @ 8127F7C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x32
- ldrsh r0, [r6, r1]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08127FCC @ =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x4]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, _08127FD0 @ =gSprites
- adds r5, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8127FD4
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812800C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_81280A0
- ldrb r0, [r5, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r2, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08127FCC: .4byte gMapObjects
-_08127FD0: .4byte gSprites
- thumb_func_end sub_8127F7C
-
thumb_func_start sub_8127FD4
sub_8127FD4: @ 8127FD4
push {r4,r5,lr}
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 4a511fad1..474acf939 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -34,6 +34,9 @@ static void sub_8127DD0(struct Sprite *);
static void sub_8127E30(struct Sprite *);
/*static*/ void sub_812882C(struct Sprite *, u8, u8);
static void sub_81278D8(struct Sprite *);
+/*static*/ void sub_8127FD4(struct MapObject *, struct Sprite *);
+/*static*/ void sub_812800C(struct MapObject *, struct Sprite *);
+/*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
// .rodata
@@ -998,17 +1001,30 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1)
gSprites[spriteId].data1 = data1;
}
-u8 sub_8127F5C(struct Sprite *sprite)
+/*static*/ u8 sub_8127F5C(struct Sprite *sprite)
{
return sprite->data0 & 0xF;
}
-u8 sub_8127F64(struct Sprite *sprite)
+/*static*/ u8 sub_8127F64(struct Sprite *sprite)
{
return (sprite->data0 & 0xF0) >> 4;
}
-u8 sub_8127F70(struct Sprite *sprite)
+/*static*/ u8 sub_8127F70(struct Sprite *sprite)
{
return (sprite->data0 & 0xF00) >> 8;
}
+
+void sub_8127F7C(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ mapObject = &gMapObjects[sprite->data2];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sub_8127FD4(mapObject, sprite);
+ sub_812800C(mapObject, sprite);
+ sub_81280A0(mapObject, linkedSprite, sprite);
+ sprite->oam.priority = linkedSprite->oam.priority;
+}