summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-08 13:41:55 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-08 13:41:55 -0400
commitddcce8c3bc831023894191ceac058b8f2fe31ced (patch)
tree255a3ac99e5a938fde7e85f9fff2d0f38fee3dfc
parentad99377734e1f982a347e33da60c82bf1120c2f3 (diff)
FieldObjectTurn
-rw-r--r--asm/field_map_obj.s76
-rw-r--r--include/field_map_obj.h2
-rw-r--r--src/field_map_obj.c22
3 files changed, 23 insertions, 77 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 798da2ae5..e4e4850dc 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,82 +5,6 @@
.text
- thumb_func_start FieldObjectTurn
-@ void FieldObjectTurn(struct npc_state *fieldObject, u8 direction)
-FieldObjectTurn: @ 808E544
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- bl FieldObjectSetDirection
- ldrb r0, [r6, 0x1]
- lsls r0, 27
- cmp r0, 0
- blt _0808E58A
- ldrb r0, [r6, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r5, =gSprites
- adds r4, r5
- ldrb r0, [r6, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrb r1, [r6, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl SeekSpriteAnim
-_0808E58A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end FieldObjectTurn
-
- thumb_func_start FieldObjectTurnByLocalIdAndMap
-@ void FieldObjectTurnByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId)
-FieldObjectTurnByLocalIdAndMap: @ 808E594
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r4, r3, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0808E5C8
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- adds r1, r4, 0
- bl FieldObjectTurn
-_0808E5C8:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end FieldObjectTurnByLocalIdAndMap
-
thumb_func_start sub_808E5D4
sub_808E5D4: @ 808E5D4
push {lr}
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 7b0905c93..34e8d4ac0 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -34,6 +34,8 @@ u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
void sub_8093038(s16, s16, s16 *, s16 *);
void CameraObjectReset1(void);
void FieldObjectSetGraphicsId(struct MapObject *, u8);
+void FieldObjectTurn(struct MapObject *, u8);
+void FieldObjectTurnByLocalIdAndMap(u8, u8, u8);
// Exported data declarations
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index b85432e69..55f1fd9fb 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -944,7 +944,7 @@ void FieldObjectSetGraphicsId(struct MapObject *mapObject, u8 graphicsId)
}
}
-void unref_sub_808E504(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
+void FieldObjectSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
{
u8 mapObjectId;
@@ -953,3 +953,23 @@ void unref_sub_808E504(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
FieldObjectSetGraphicsId(&gMapObjects[mapObjectId], graphicsId);
}
}
+
+void FieldObjectTurn(struct MapObject *mapObject, u8 direction)
+{
+ FieldObjectSetDirection(mapObject, direction);
+ if (!mapObject->mapobj_bit_12)
+ {
+ StartSpriteAnim(&gSprites[mapObject->spriteId], FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
+ SeekSpriteAnim(&gSprites[mapObject->spriteId], 0);
+ }
+}
+
+void FieldObjectTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction)
+{
+ u8 mapObjectId;
+
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ FieldObjectTurn(&gMapObjects[mapObjectId], direction);
+ }
+}