summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-08 17:34:12 -0400
committerscnorton <scnorton@biociphers.org>2017-09-08 17:34:12 -0400
commit5a020a47f3ac99bf80854817873e211cbf22102d (patch)
treefa37502fec3bfe2b5678afddd2e9c167d23d8e1c
parent07b1668623f6d028d1c1f32c29e377064f577680 (diff)
FindFieldObjectPaletteIndexByTag
-rw-r--r--asm/field_map_obj.s41
-rw-r--r--include/field_map_obj.h6
-rw-r--r--src/field_map_obj.c24
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;
+}