From 1de5a14a35f6da79a2bc603ce5a0cb3a116c31b0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 8 Sep 2017 15:18:03 -0400 Subject: [PATCH] sub_808E894 --- asm/field_map_obj.s | 21 --------------------- include/data3.h | 10 ++++++++++ src/field_map_obj.c | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 include/data3.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index e1925f10ef..992f70a117 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,27 +5,6 @@ .text - thumb_func_start sub_808E894 -sub_808E894: @ 808E894 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl FindFieldObjectPaletteIndexByTag - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, =0x000011ff - cmp r1, r0 - beq _0808E8B2 - lsls r0, r1, 3 - ldr r1, =gUnknown_0850BBC8 - adds r0, r1 - bl sub_808E8F4 -_0808E8B2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_808E894 - thumb_func_start sub_808E8C0 sub_808E8C0: @ 808E8C0 push {r4-r6,lr} diff --git a/include/data3.h b/include/data3.h new file mode 100644 index 0000000000..1f082e3fba --- /dev/null +++ b/include/data3.h @@ -0,0 +1,10 @@ +// +// Created by Scott Norton on 9/8/17. +// + +#ifndef POKEEMERALD_DATA3_H +#define POKEEMERALD_DATA3_H + +extern const struct SpritePalette gUnknown_0850BBC8[]; + +#endif //POKEEMERALD_DATA3_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index cb33908441..7122bcc9eb 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4,6 +4,7 @@ #include "malloc.h" #include "sprite.h" #include "rom4.h" +#include "data3.h" #include "berry.h" #include "field_player_avatar.h" #include "event_data.h" @@ -39,6 +40,8 @@ static void RemoveFieldObjectIfOutsideView(struct MapObject *); static void sub_808E1B8(u8, s16, s16); static void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8); /*static*/ void sub_808E38C(struct MapObject *); +/*static*/ void sub_808E8F4(const struct SpritePalette *); +/*static*/ u16 FindFieldObjectPaletteIndexByTag(u16); // ROM data @@ -1111,3 +1114,14 @@ void gpu_pal_allocator_reset__manage_upper_four(void) FreeAllSpritePalettes(); gReservedSpritePaletteCount = 12; } + +void sub_808E894(u16 paletteTag) +{ + u16 paletteSlot; + + paletteSlot = (u8)FindFieldObjectPaletteIndexByTag(paletteTag); + if (paletteSlot != 0x11ff) // always true + { + sub_808E8F4(&gUnknown_0850BBC8[paletteSlot]); + } +}