mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-06 15:38:11 +01:00
sub_808E38C
This commit is contained in:
parent
de8ef5e125
commit
11786cc325
@ -5,38 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start SetPlayerAvatarFieldObjectIdAndObjectId
|
||||||
@ void SetPlayerAvatarFieldObjectIdAndObjectId(u8 fieldObjectId, u8 objectId)
|
@ void SetPlayerAvatarFieldObjectIdAndObjectId(u8 fieldObjectId, u8 objectId)
|
||||||
SetPlayerAvatarFieldObjectIdAndObjectId: @ 808E3C4
|
SetPlayerAvatarFieldObjectIdAndObjectId: @ 808E3C4
|
||||||
|
@ -14,16 +14,22 @@ u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
|
|||||||
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
||||||
u8 GetFieldObjectIdByXY(s16, s16);
|
u8 GetFieldObjectIdByXY(s16, s16);
|
||||||
void FieldObjectSetDirection(struct MapObject *, u8);
|
void FieldObjectSetDirection(struct MapObject *, u8);
|
||||||
u8 GetFieldObjectIdByXY(s16, s16);
|
|
||||||
u8 sub_808D4F4(void);
|
u8 sub_808D4F4(void);
|
||||||
void RemoveFieldObject(struct MapObject *);
|
|
||||||
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
|
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
|
||||||
void npc_load_two_palettes__no_record(u16, u8);
|
void npc_load_two_palettes__no_record(u16, u8);
|
||||||
void npc_load_two_palettes__and_record(u16, u8);
|
void npc_load_two_palettes__and_record(u16, u8);
|
||||||
|
void sub_808E16C(s16, s16);
|
||||||
void sub_808EAB0(u16, u8);
|
void sub_808EAB0(u16, u8);
|
||||||
void sub_8092FF0(s16, s16, s16 *, s16 *);
|
void sub_8092FF0(s16, s16, s16 *, s16 *);
|
||||||
u8 FieldObjectDirectionToImageAnimId(u8);
|
u8 FieldObjectDirectionToImageAnimId(u8);
|
||||||
void sub_80930E0(s16 *, s16 *, u8, 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
|
// Exported data declarations
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
// Static ROM declarations
|
// Static ROM declarations
|
||||||
|
|
||||||
void sub_808D450(void);
|
static void sub_808D450(void);
|
||||||
static u8 GetFieldObjectIdByLocalId(u8);
|
static u8 GetFieldObjectIdByLocalId(u8);
|
||||||
static u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
|
static u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
|
||||||
static bool8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
|
static bool8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
|
||||||
@ -30,11 +30,11 @@ static void RemoveFieldObjectInternal (struct MapObject *);
|
|||||||
/*static*/ u16 GetFieldObjectFlagIdByFieldObjectId(u8);
|
/*static*/ u16 GetFieldObjectFlagIdByFieldObjectId(u8);
|
||||||
/*static*/ const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
|
/*static*/ const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
|
||||||
void sub_8096518(struct MapObject *, struct Sprite *);
|
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*/ void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
|
||||||
/*static*/ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8);
|
/*static*/ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8);
|
||||||
/*static*/ void sub_808E894(u16);
|
/*static*/ void sub_808E894(u16);
|
||||||
/*static*/ void RemoveFieldObjectIfOutsideView(struct MapObject *);
|
static void RemoveFieldObjectIfOutsideView(struct MapObject *);
|
||||||
static void sub_808E1B8(u8, s16, s16);
|
static void sub_808E1B8(u8, s16, s16);
|
||||||
/*static*/ void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
|
/*static*/ void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
|
||||||
/*static*/ void sub_808E38C(struct MapObject *);
|
/*static*/ void sub_808E38C(struct MapObject *);
|
||||||
@ -74,7 +74,7 @@ void sub_808D438(void)
|
|||||||
sub_808D450();
|
sub_808D450();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static*/ void sub_808D450(void)
|
static void sub_808D450(void)
|
||||||
{
|
{
|
||||||
u8 spriteIdx;
|
u8 spriteIdx;
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ static u8 GetFieldObjectIdByLocalId(u8 localId)
|
|||||||
|
|
||||||
// This function has the same nonmatching quirk as in Ruby/Sapphire.
|
// This function has the same nonmatching quirk as in Ruby/Sapphire.
|
||||||
#ifdef NONMATCHING
|
#ifdef NONMATCHING
|
||||||
/*static*/ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
|
static u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
|
||||||
{
|
{
|
||||||
u8 slot;
|
u8 slot;
|
||||||
struct MapObject *mapObject;
|
struct MapObject *mapObject;
|
||||||
@ -219,7 +219,7 @@ static u8 GetFieldObjectIdByLocalId(u8 localId)
|
|||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
#else
|
#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"
|
asm_unified("\tpush {r4-r7,lr}\n"
|
||||||
"\tmov r7, r9\n"
|
"\tmov r7, r9\n"
|
||||||
@ -435,7 +435,7 @@ static bool8 GetAvailableFieldObjectSlot(u16 localId, u8 mapNum, u8 mapGroup, u8
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveFieldObject(struct MapObject *mapObject)
|
static void RemoveFieldObject(struct MapObject *mapObject)
|
||||||
{
|
{
|
||||||
mapObject->active = FALSE;
|
mapObject->active = FALSE;
|
||||||
RemoveFieldObjectInternal(mapObject);
|
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;
|
struct MapObject *mapObject;
|
||||||
const struct MapObjectGraphicsInfo *graphicsInfo;
|
const struct MapObjectGraphicsInfo *graphicsInfo;
|
||||||
@ -533,7 +533,7 @@ u8 SpawnFieldObjectInternal(struct MapObjectTemplate *mapObjectTemplate, struct
|
|||||||
return mapObjectId;
|
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;
|
const struct MapObjectGraphicsInfo *graphicsInfo;
|
||||||
struct SpriteTemplate spriteTemplate;
|
struct SpriteTemplate spriteTemplate;
|
||||||
@ -603,7 +603,7 @@ u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
|
|||||||
return SpawnFieldObject(mapObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
|
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);
|
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
|
||||||
|
|
||||||
@ -617,12 +617,12 @@ void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callba
|
|||||||
*subspriteTables = gfxInfo->subspriteTables;
|
*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);
|
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);
|
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 i;
|
||||||
u8 j;
|
u8 j;
|
||||||
@ -769,7 +769,7 @@ void RemoveFieldObjectsOutsideView(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
|
static void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
|
||||||
{
|
{
|
||||||
s16 left;
|
s16 left;
|
||||||
s16 right;
|
s16 right;
|
||||||
@ -879,3 +879,16 @@ static void sub_808E1B8(u8 mapObjectId, s16 x, s16 y)
|
|||||||
SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
|
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…
x
Reference in New Issue
Block a user