summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-06 09:49:51 -0400
committerscnorton <scnorton@biociphers.org>2017-09-06 09:49:51 -0400
commitea9dabdfab6d2a28d9119c2c23db43903ad4ecae (patch)
treef389b56f73caadd0287f69e871a9eccd9eeb1bc4
parentf3f8c5ec2c476aa6db557f30dc830d6b4f9bc741 (diff)
TryGetFieldObjectIdByLocalIdAndMap
-rw-r--r--asm/field_map_obj.s50
-rw-r--r--include/field_map_obj.h2
-rw-r--r--src/field_map_obj.c21
3 files changed, 23 insertions, 50 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 6fd4e2005..45de31c5d 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,56 +5,6 @@
.text
- thumb_func_start GetFieldObjectIdByLocalIdAndMap
-@ u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId)
-GetFieldObjectIdByLocalIdAndMap: @ 808D524
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r0, 0xFE
- bls _0808D53C
- bl GetFieldObjectIdByLocalId
- b _0808D540
-_0808D53C:
- bl GetFieldObjectIdByLocalIdAndMapInternal
-_0808D540:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetFieldObjectIdByLocalIdAndMap
-
- thumb_func_start TryGetFieldObjectIdByLocalIdAndMap
-@ bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId, u8 *fieldObjectId)
-TryGetFieldObjectIdByLocalIdAndMap: @ 808D548
- push {r4,lr}
- adds r4, r3, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- bl GetFieldObjectIdByLocalIdAndMap
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _0808D56A
- movs r0, 0
- b _0808D56C
-_0808D56A:
- movs r0, 0x1
-_0808D56C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end TryGetFieldObjectIdByLocalIdAndMap
-
thumb_func_start GetFieldObjectIdByXY
@ u8 GetFieldObjectIdByXY(s16 x, s16 y)
GetFieldObjectIdByXY: @ 808D574
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index d92b28f8c..cb6eceb69 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -10,6 +10,8 @@ extern struct MapObject gUnknown_02037350[16];
// Exported ROM declarations
void sub_808D438(void);
+u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
+bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
// Exported data declarations
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 46cc0585c..61b915878 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -13,6 +13,8 @@
// Static ROM declarations
/*static*/ void sub_808D450(void);
+/*static*/ u8 GetFieldObjectIdByLocalId(u8);
+/*static*/ u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
// ROM data
@@ -75,3 +77,22 @@ u8 sub_808D4F4(void)
}
return i;
}
+
+u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId)
+{
+ if (localId < 0xff)
+ {
+ return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapId, mapGroupId);
+ }
+ return GetFieldObjectIdByLocalId(localId);
+}
+
+bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId, u8 *fieldObjectId)
+{
+ *fieldObjectId = GetFieldObjectIdByLocalIdAndMap(localId, mapId, mapGroupId);
+ if (*fieldObjectId == 16)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}