From 5a020a47f3ac99bf80854817873e211cbf22102d Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 8 Sep 2017 17:34:12 -0400 Subject: [PATCH] FindFieldObjectPaletteIndexByTag --- asm/field_map_obj.s | 41 ----------------------------------------- include/field_map_obj.h | 6 ++++++ src/field_map_obj.c | 24 +++++++++++++++++++----- 3 files changed, 25 insertions(+), 46 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 9f880e0c1..2475b649b 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,47 +5,6 @@ .text - thumb_func_start FindFieldObjectPaletteIndexByTag -@ u8 FindFieldObjectPaletteIndexByTag(u16 tag) -FindFieldObjectPaletteIndexByTag: @ 808E980 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - movs r2, 0 - ldr r0, =gUnknown_0850BBC8 - ldrh r1, [r0, 0x4] - ldr r3, =0x000011ff - adds r4, r0, 0 - cmp r1, r3 - beq _0808E9C0 - adds r6, r4, 0 - adds r1, r3, 0 -_0808E998: - lsls r0, r2, 3 - adds r0, r6 - ldrh r0, [r0, 0x4] - cmp r0, r5 - bne _0808E9B0 - adds r0, r2, 0 - b _0808E9C2 - .pool -_0808E9B0: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 3 - adds r0, r4 - ldrh r0, [r0, 0x4] - cmp r0, r1 - bne _0808E998 -_0808E9C0: - movs r0, 0xFF -_0808E9C2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end FindFieldObjectPaletteIndexByTag - thumb_func_start npc_load_two_palettes__no_record @ void npc_load_two_palettes__no_record(u16 tag, u8 slot) npc_load_two_palettes__no_record: @ 808E9C8 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index bf99cec87..04bdb42d4 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -39,6 +39,12 @@ void FieldObjectTurn(struct MapObject *, u8); void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); +void gpu_pal_allocator_reset__manage_upper_four(void); +void sub_808E82C(u8, u8, u8, s16, s16); +void sub_808E7E4(u8, u8, u8); +void sub_808E78C(u8, u8, u8, u8); +void sub_808E75C(s16, s16); +void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *); // Exported data declarations diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 4e785e969..0614a82d7 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -41,8 +41,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*/ u8 sub_808E8F4(const struct SpritePalette *); -/*static*/ u16 FindFieldObjectPaletteIndexByTag(u16); +static u8 sub_808E8F4(const struct SpritePalette *); +static u8 FindFieldObjectPaletteIndexByTag(u16); // ROM data @@ -1120,7 +1120,7 @@ static void sub_808E894(u16 paletteTag) { u16 paletteSlot; - paletteSlot = (u8)FindFieldObjectPaletteIndexByTag(paletteTag); + paletteSlot = FindFieldObjectPaletteIndexByTag(paletteTag); if (paletteSlot != 0x11ff) // always true { sub_808E8F4(&gUnknown_0850BBC8[paletteSlot]); @@ -1137,7 +1137,7 @@ void sub_808E8C0(u16 *paletteTags) } } -u8 sub_808E8F4(const struct SpritePalette *spritePalette) +static u8 sub_808E8F4(const struct SpritePalette *spritePalette) { if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xff) { @@ -1148,7 +1148,7 @@ u8 sub_808E8F4(const struct SpritePalette *spritePalette) void pal_patch_for_npc(u16 paletteTag, u8 paletteSlot) { - u8 paletteIdx; + u16 paletteIdx; paletteIdx = FindFieldObjectPaletteIndexByTag(paletteTag); LoadPalette(gUnknown_0850BBC8[paletteIdx].data, 16 * paletteSlot + 256, 0x20); @@ -1163,3 +1163,17 @@ void pal_patch_for_npc_range(u16 *paletteTags, u8 minSlot, u8 maxSlot) minSlot ++; } } + +static u8 FindFieldObjectPaletteIndexByTag(u16 tag) +{ + u8 i; + + for (i = 0; gUnknown_0850BBC8[i].tag != 0x11ff; i ++) + { + if (gUnknown_0850BBC8[i].tag == tag) + { + return i; + } + } + return 0xff; +}