summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-10 17:04:37 -0400
committerscnorton <scnorton@biociphers.org>2017-09-10 17:04:37 -0400
commitb263dcc7cf6caab910511caf2d1c2aff9f629476 (patch)
tree67f689dfce4c0e28988ba18feffd502d743faec3
parent69a1ff984d8673bb3a93c490591866573dde2ac7 (diff)
FieldObjectSetDirection
-rw-r--r--asm/field_map_obj.s39
-rw-r--r--src/field_map_obj.c12
2 files changed, 12 insertions, 39 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index df335a0bf..11e93a4ea 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,45 +5,6 @@
.text
- thumb_func_start FieldObjectSetDirection
-@ void FieldObjectSetDirection(struct npc_state *fieldObject, u8 direction)
-FieldObjectSetDirection: @ 808EFC0
- push {r4,lr}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- adds r4, r2, 0
- ldrb r0, [r3, 0x18]
- lsls r0, 28
- lsrs r0, 28
- adds r1, r3, 0
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r3, 0x1]
- lsls r0, 30
- cmp r0, 0
- blt _0808EFF0
- movs r0, 0xF
- adds r1, r2, 0
- ands r1, r0
- ldrb r2, [r3, 0x18]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x18]
-_0808EFF0:
- lsls r2, r4, 4
- ldrb r1, [r3, 0x18]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectSetDirection
-
thumb_func_start GetFieldObjectScriptPointerByLocalIdAndMap
@ u32 GetFieldObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId)
GetFieldObjectScriptPointerByLocalIdAndMap: @ 808F004
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 3d3934aa1..d5481c573 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1478,3 +1478,15 @@ u8 obj_unfreeze(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
}
return MAX_SPRITES;
}
+
+void FieldObjectSetDirection(struct MapObject *mapObject, u8 direction)
+{
+ s8 d2;
+ mapObject->mapobj_unk_20 = mapObject->mapobj_unk_18;
+ if (!mapObject->mapobj_bit_9)
+ {
+ d2 = direction;
+ mapObject->mapobj_unk_18 = d2;
+ }
+ mapObject->placeholder18 = direction;
+}