summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-10 11:21:54 -0400
committerscnorton <scnorton@biociphers.org>2017-09-10 11:21:54 -0400
commit64dc157df603a6d3c1b59a60ad9f286ebd66fce5 (patch)
treeae01c7b6f5eb4c262795d2e2ae636b7bec620241
parent4645837cc2ce36c9638853552649f182486af8b2 (diff)
sub_8128124
-rw-r--r--asm/field_effect_helpers.s40
-rw-r--r--include/sprite.h2
-rw-r--r--src/field_effect_helpers.c19
3 files changed, 19 insertions, 42 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index af38da6cf..337eaa4c8 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -6,46 +6,6 @@
.text
- thumb_func_start sub_8128124
-sub_8128124: @ 8128124
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08128168 @ =gDummySpriteTemplate
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r1, _0812816C @ =gSprites
- adds r2, r1
- ldr r1, _08128170 @ =sub_8128174
- str r1, [r2, 0x1C]
- movs r1, 0x3E
- adds r1, r2
- mov r12, r1
- ldrb r1, [r1]
- movs r3, 0x4
- orrs r1, r3
- mov r3, r12
- strb r1, [r3]
- strh r4, [r2, 0x2E]
- movs r1, 0x1
- strh r1, [r2, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128168: .4byte gDummySpriteTemplate
-_0812816C: .4byte gSprites
-_08128170: .4byte sub_8128174
- thumb_func_end sub_8128124
-
thumb_func_start sub_8128174
sub_8128174: @ 8128174
push {lr}
diff --git a/include/sprite.h b/include/sprite.h
index 5682a7c1d..0d84c8127 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -299,4 +299,6 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+extern const struct SpriteTemplate gDummySpriteTemplate;
+
#endif // GUARD_SPRITE_H
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 6bfb7f3fb..e58fb9b31 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -36,7 +36,8 @@ static void sub_8127E30(struct Sprite *);
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 *);
+static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
+/*static*/ void sub_8128174(struct Sprite *);
// .rodata
@@ -1145,7 +1146,7 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru
}
#endif
-void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
+static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
{
u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)];
u8 v0;
@@ -1177,3 +1178,17 @@ void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struc
}
}
}
+
+u8 sub_8128124(u8 oldSpriteId)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1);
+ sprite = &gSprites[spriteId];
+ sprite->callback = sub_8128174;
+ sprite->invisible = TRUE;
+ sprite->data0 = oldSpriteId;
+ sprite->data1 = 1;
+ return spriteId;
+}