From f15191bfc28effef4155b26186bd4236182b88aa Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 6 Sep 2017 09:52:31 -0400 Subject: [PATCH] GetFieldObjectIdByXY --- asm/field_map_obj.s | 41 ----------------------------------------- include/field_map_obj.h | 1 + src/field_map_obj.c | 15 ++++++++++++++- 3 files changed, 15 insertions(+), 42 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 45de31c5de..106fde0605 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 cb6eceb692..3100f72ffc 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 61b9158780..88b9d7eab4 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; +}