mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-21 11:43:37 +01:00
MapObjectExec***Anim
This commit is contained in:
parent
5f189fa53b
commit
4e22f1e55f
@ -5,74 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start FieldObjectExecSpecialAnim
|
|
||||||
@ void FieldObjectExecSpecialAnim(struct npc_state *fieldObject, struct obj *object)
|
|
||||||
FieldObjectExecSpecialAnim: @ 809388C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r2, =gUnknown_0850DC50
|
|
||||||
ldrb r0, [r4, 0x1C]
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r2
|
|
||||||
movs r3, 0x32
|
|
||||||
ldrsh r2, [r1, r3]
|
|
||||||
ldr r0, [r0]
|
|
||||||
lsls r2, 2
|
|
||||||
adds r2, r0
|
|
||||||
ldr r2, [r2]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r2
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080938B8
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0x80
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4]
|
|
||||||
_080938B8:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end FieldObjectExecSpecialAnim
|
|
||||||
|
|
||||||
thumb_func_start FieldObjectExecRegularAnim
|
|
||||||
@ bool8 FieldObjectExecRegularAnim(struct npc_state *fieldObject, struct obj *object)
|
|
||||||
FieldObjectExecRegularAnim: @ 80938C4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
ldr r1, =gUnknown_0850DC50
|
|
||||||
ldrb r0, [r4, 0x1C]
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
movs r2, 0x32
|
|
||||||
ldrsh r1, [r5, r2]
|
|
||||||
ldr r0, [r0]
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r0
|
|
||||||
ldr r2, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl _call_via_r2
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080938F4
|
|
||||||
movs r0, 0
|
|
||||||
b _080938FE
|
|
||||||
.pool
|
|
||||||
_080938F4:
|
|
||||||
movs r0, 0xFF
|
|
||||||
strb r0, [r4, 0x1C]
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r5, 0x32]
|
|
||||||
movs r0, 0x1
|
|
||||||
_080938FE:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end FieldObjectExecRegularAnim
|
|
||||||
|
|
||||||
thumb_func_start FieldObjectSetRegularAnim
|
thumb_func_start FieldObjectSetRegularAnim
|
||||||
@ void FieldObjectSetRegularAnim(struct npc_state *fieldObject, struct obj *object, u8 animState)
|
@ void FieldObjectSetRegularAnim(struct npc_state *fieldObject, struct obj *object, u8 animState)
|
||||||
FieldObjectSetRegularAnim: @ 8093904
|
FieldObjectSetRegularAnim: @ 8093904
|
||||||
|
@ -42,4 +42,6 @@ extern const u8 gUnknown_0850DC3F[4][4];
|
|||||||
|
|
||||||
extern const u8 gUnknown_0850DBA0[5];
|
extern const u8 gUnknown_0850DBA0[5];
|
||||||
|
|
||||||
|
extern bool8 (*const *const gUnknown_0850DC50[])(struct MapObject *, struct Sprite *);
|
||||||
|
|
||||||
#endif //GUARD_DATA3_H
|
#endif //GUARD_DATA3_H
|
||||||
|
@ -4081,8 +4081,11 @@ u32 zffu_offset_calc(u8 a0, u8 a1)
|
|||||||
u32 state_to_direction(u8 a0, u32 a1, u32 a2)
|
u32 state_to_direction(u8 a0, u32 a1, u32 a2)
|
||||||
{
|
{
|
||||||
u32 zffuOffset;
|
u32 zffuOffset;
|
||||||
u8 a1_2 = a1;
|
u8 a1_2;
|
||||||
u8 a2_2 = a2;
|
u8 a2_2;
|
||||||
|
|
||||||
|
a1_2 = a1;
|
||||||
|
a2_2 = a2;
|
||||||
if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST)
|
if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@ -4090,3 +4093,22 @@ u32 state_to_direction(u8 a0, u32 a1, u32 a2)
|
|||||||
zffuOffset = zffu_offset_calc(a1_2, a2);
|
zffuOffset = zffu_offset_calc(a1_2, a2);
|
||||||
return gUnknown_0850DC3F[a0 - 1][zffuOffset - 1];
|
return gUnknown_0850DC3F[a0 - 1][zffuOffset - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
|
||||||
|
{
|
||||||
|
if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
|
||||||
|
{
|
||||||
|
mapObject->mapobj_bit_7 = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite)
|
||||||
|
{
|
||||||
|
if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
|
||||||
|
{
|
||||||
|
mapObject->mapobj_unk_1C = 0xFF;
|
||||||
|
sprite->data2 = 0;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user