sub_808E38C
This commit is contained in:
parent
de8ef5e125
commit
11786cc325
3 changed files with 35 additions and 48 deletions
|
@ -5,38 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_808E38C
|
||||
@ void sub_808E38C(struct npc_state *fieldObject)
|
||||
sub_808E38C: @ 808E38C
|
||||
push {lr}
|
||||
ldrb r2, [r0]
|
||||
movs r3, 0x3
|
||||
negs r3, r3
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
movs r2, 0x4
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
ldrb r2, [r0, 0x2]
|
||||
movs r1, 0x41
|
||||
negs r1, r1
|
||||
ands r1, r2
|
||||
ands r1, r3
|
||||
movs r2, 0x5
|
||||
negs r2, r2
|
||||
ands r1, r2
|
||||
subs r2, 0x4
|
||||
ands r1, r2
|
||||
subs r2, 0x8
|
||||
ands r1, r2
|
||||
subs r2, 0x10
|
||||
ands r1, r2
|
||||
strb r1, [r0, 0x2]
|
||||
bl FieldObjectClearAnim
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_808E38C
|
||||
|
||||
thumb_func_start SetPlayerAvatarFieldObjectIdAndObjectId
|
||||
@ void SetPlayerAvatarFieldObjectIdAndObjectId(u8 fieldObjectId, u8 objectId)
|
||||
SetPlayerAvatarFieldObjectIdAndObjectId: @ 808E3C4
|
||||
|
|
|
@ -14,16 +14,22 @@ u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
|
|||
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
||||
u8 GetFieldObjectIdByXY(s16, s16);
|
||||
void FieldObjectSetDirection(struct MapObject *, u8);
|
||||
u8 GetFieldObjectIdByXY(s16, s16);
|
||||
u8 sub_808D4F4(void);
|
||||
void RemoveFieldObject(struct MapObject *);
|
||||
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
|
||||
void npc_load_two_palettes__no_record(u16, u8);
|
||||
void npc_load_two_palettes__and_record(u16, u8);
|
||||
void sub_808E16C(s16, s16);
|
||||
void sub_808EAB0(u16, u8);
|
||||
void sub_8092FF0(s16, s16, s16 *, s16 *);
|
||||
u8 FieldObjectDirectionToImageAnimId(u8);
|
||||
void sub_80930E0(s16 *, s16 *, u8, u8);
|
||||
void FieldObjectClearAnim(struct MapObject *);
|
||||
void SpawnFieldObjectsInView(s16, s16);
|
||||
u8 sprite_new(u8, u8, s16, s16, u8, u8);
|
||||
u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8);
|
||||
u8 show_sprite(u8, u8, u8);
|
||||
u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
|
||||
u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
|
||||
|
||||
// Exported data declarations
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
// Static ROM declarations
|
||||
|
||||
void sub_808D450(void);
|
||||
static void sub_808D450(void);
|
||||
static u8 GetFieldObjectIdByLocalId(u8);
|
||||
static u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
|
||||
static bool8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
|
||||
|
@ -30,11 +30,11 @@ static void RemoveFieldObjectInternal (struct MapObject *);
|
|||
/*static*/ u16 GetFieldObjectFlagIdByFieldObjectId(u8);
|
||||
/*static*/ const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
|
||||
void sub_8096518(struct MapObject *, struct Sprite *);
|
||||
/*static*/ void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *, struct SpriteTemplate *, const struct SubspriteTable **);
|
||||
static void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *, struct SpriteTemplate *, const struct SubspriteTable **);
|
||||
/*static*/ void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
|
||||
/*static*/ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8);
|
||||
/*static*/ void sub_808E894(u16);
|
||||
/*static*/ void RemoveFieldObjectIfOutsideView(struct MapObject *);
|
||||
static void RemoveFieldObjectIfOutsideView(struct MapObject *);
|
||||
static void sub_808E1B8(u8, s16, s16);
|
||||
/*static*/ void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
|
||||
/*static*/ void sub_808E38C(struct MapObject *);
|
||||
|
@ -74,7 +74,7 @@ void sub_808D438(void)
|
|||
sub_808D450();
|
||||
}
|
||||
|
||||
/*static*/ void sub_808D450(void)
|
||||
static void sub_808D450(void)
|
||||
{
|
||||
u8 spriteIdx;
|
||||
|
||||
|
@ -168,7 +168,7 @@ static u8 GetFieldObjectIdByLocalId(u8 localId)
|
|||
|
||||
// This function has the same nonmatching quirk as in Ruby/Sapphire.
|
||||
#ifdef NONMATCHING
|
||||
/*static*/ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
|
||||
static u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
|
||||
{
|
||||
u8 slot;
|
||||
struct MapObject *mapObject;
|
||||
|
@ -219,7 +219,7 @@ static u8 GetFieldObjectIdByLocalId(u8 localId)
|
|||
return slot;
|
||||
}
|
||||
#else
|
||||
/*static*/ __attribute__((naked)) u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
|
||||
static __attribute__((naked)) u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r9\n"
|
||||
|
@ -435,7 +435,7 @@ static bool8 GetAvailableFieldObjectSlot(u16 localId, u8 mapNum, u8 mapGroup, u8
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
void RemoveFieldObject(struct MapObject *mapObject)
|
||||
static void RemoveFieldObject(struct MapObject *mapObject)
|
||||
{
|
||||
mapObject->active = FALSE;
|
||||
RemoveFieldObjectInternal(mapObject);
|
||||
|
@ -472,7 +472,7 @@ void unref_sub_808D958(void)
|
|||
}
|
||||
}
|
||||
|
||||
u8 SpawnFieldObjectInternal(struct MapObjectTemplate *mapObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
|
||||
static u8 SpawnFieldObjectInternal(struct MapObjectTemplate *mapObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
|
||||
{
|
||||
struct MapObject *mapObject;
|
||||
const struct MapObjectGraphicsInfo *graphicsInfo;
|
||||
|
@ -533,7 +533,7 @@ u8 SpawnFieldObjectInternal(struct MapObjectTemplate *mapObjectTemplate, struct
|
|||
return mapObjectId;
|
||||
}
|
||||
|
||||
u8 SpawnFieldObject(struct MapObjectTemplate *mapObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
|
||||
static u8 SpawnFieldObject(struct MapObjectTemplate *mapObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
|
||||
{
|
||||
const struct MapObjectGraphicsInfo *graphicsInfo;
|
||||
struct SpriteTemplate spriteTemplate;
|
||||
|
@ -603,7 +603,7 @@ u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
|
|||
return SpawnFieldObject(mapObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
|
||||
}
|
||||
|
||||
void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
|
||||
static void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
|
||||
{
|
||||
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
|
||||
|
||||
|
@ -617,12 +617,12 @@ void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callba
|
|||
*subspriteTables = gfxInfo->subspriteTables;
|
||||
}
|
||||
|
||||
void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
|
||||
static void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
|
||||
{
|
||||
MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, gUnknown_08505438[callbackIndex], sprTemplate, subspriteTables);
|
||||
}
|
||||
|
||||
void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
|
||||
static void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
|
||||
{
|
||||
MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObjectTemplate->graphicsId, mapObjectTemplate->movementType, spriteTemplate, subspriteTables);
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ void SpawnFieldObjectsInView(s16 cameraX, s16 cameraY)
|
|||
}
|
||||
}
|
||||
|
||||
void RemoveFieldObjectsOutsideView(void)
|
||||
/*static*/ void RemoveFieldObjectsOutsideView(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 j;
|
||||
|
@ -769,7 +769,7 @@ void RemoveFieldObjectsOutsideView(void)
|
|||
}
|
||||
}
|
||||
|
||||
void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
|
||||
static void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
|
||||
{
|
||||
s16 left;
|
||||
s16 right;
|
||||
|
@ -879,3 +879,16 @@ static void sub_808E1B8(u8 mapObjectId, s16 x, s16 y)
|
|||
SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/*static*/ void sub_808E38C(struct MapObject *mapObject)
|
||||
{
|
||||
mapObject->mapobj_bit_1 = FALSE;
|
||||
mapObject->mapobj_bit_2 = TRUE;
|
||||
mapObject->mapobj_bit_22 = FALSE;
|
||||
mapObject->mapobj_bit_17 = FALSE;
|
||||
mapObject->mapobj_bit_18 = FALSE;
|
||||
mapObject->mapobj_bit_19 = FALSE;
|
||||
mapObject->mapobj_bit_20 = FALSE;
|
||||
mapObject->mapobj_bit_21 = FALSE;
|
||||
FieldObjectClearAnim(mapObject);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue