summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-06 09:52:31 -0400
committerscnorton <scnorton@biociphers.org>2017-09-06 09:52:31 -0400
commitf15191bfc28effef4155b26186bd4236182b88aa (patch)
tree046ddec330c7fcc4a28e6189f6e8e37d1b0086e7
parentea9dabdfab6d2a28d9119c2c23db43903ad4ecae (diff)
GetFieldObjectIdByXY
-rw-r--r--asm/field_map_obj.s41
-rw-r--r--include/field_map_obj.h1
-rw-r--r--src/field_map_obj.c15
3 files changed, 15 insertions, 42 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 45de31c5d..106fde060 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,47 +5,6 @@
.text
- thumb_func_start GetFieldObjectIdByXY
-@ u8 GetFieldObjectIdByXY(s16 x, s16 y)
-GetFieldObjectIdByXY: @ 808D574
- push {r4-r6,lr}
- movs r3, 0
- ldr r5, =gUnknown_02037350
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r1, 16
-_0808D582:
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r5
- ldrb r0, [r2]
- lsls r0, 31
- cmp r0, 0
- beq _0808D5A2
- movs r6, 0x10
- ldrsh r0, [r2, r6]
- cmp r0, r4
- bne _0808D5A2
- movs r6, 0x12
- ldrsh r0, [r2, r6]
- cmp r0, r1
- beq _0808D5AC
-_0808D5A2:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _0808D582
-_0808D5AC:
- adds r0, r3, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetFieldObjectIdByXY
-
thumb_func_start GetFieldObjectIdByLocalIdAndMapInternal
@ u8 GetFieldObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapId, u8 mapGroupId)
GetFieldObjectIdByLocalIdAndMapInternal: @ 808D5B8
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index cb6eceb69..3100f72ff 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -12,6 +12,7 @@ extern struct MapObject gUnknown_02037350[16];
void sub_808D438(void);
u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
+u8 GetFieldObjectIdByXY(s16, s16);
// Exported data declarations
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 61b915878..88b9d7eab 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -90,9 +90,22 @@ u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId)
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId, u8 *fieldObjectId)
{
*fieldObjectId = GetFieldObjectIdByLocalIdAndMap(localId, mapId, mapGroupId);
- if (*fieldObjectId == 16)
+ if (*fieldObjectId == ARRAY_COUNT(gUnknown_02037350))
{
return TRUE;
}
return FALSE;
}
+
+u8 GetFieldObjectIdByXY(s16 x, s16 y)
+{
+ u8 i;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_02037350); i ++)
+ {
+ if (gUnknown_02037350[i].active && gUnknown_02037350[i].coords2.x == x && gUnknown_02037350[i].coords2.y == y)
+ {
+ break;
+ }
+ }
+ return i;
+}