Match sub_80416E0 thanks to @Eebit

This commit is contained in:
Seth Barberee 2023-11-17 15:33:57 -08:00
parent 1a51dc6ae5
commit 3b8bc8f67b
2 changed files with 54 additions and 78 deletions

View File

@ -2803,74 +2803,4 @@ sub_80416A4:
bx r1
thumb_func_end sub_80416A4
thumb_func_start sub_80416E0
sub_80416E0:
push {r4,r5,lr}
sub sp, 0x28
adds r3, r0, 0
lsls r2, 24
lsrs r5, r2, 24
str r1, [sp]
movs r2, 0
str r2, [sp, 0x4]
movs r4, 0x1
negs r4, r4
str r4, [sp, 0x8]
mov r1, sp
ldr r0, [r3]
cmp r0, 0
bge _08041700
adds r0, 0xFF
_08041700:
asrs r0, 8
strh r0, [r1, 0xC]
mov r1, sp
ldr r0, [r3, 0x4]
cmp r0, 0
bge _0804170E
adds r0, 0xFF
_0804170E:
asrs r0, 8
strh r0, [r1, 0xE]
str r4, [sp, 0x14]
mov r0, sp
strh r2, [r0, 0x10]
strh r2, [r0, 0x12]
ldr r0, _08041738
str r0, [sp, 0x18]
add r0, sp, 0x1C
bl sub_8004E8C
mov r0, sp
movs r1, 0
bl sub_8041764
adds r4, r0, 0
cmp r5, 0
beq _08041758
movs r5, 0
b _08041744
.align 2, 0
_08041738: .4byte 0x0000ffff
_0804173C:
movs r0, 0x42
bl sub_803E46C
adds r5, 0x1
_08041744:
cmp r5, 0x63
bgt _08041754
adds r0, r4, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _0804173C
_08041754:
movs r4, 0x1
negs r4, r4
_08041758:
adds r0, r4, 0
add sp, 0x28
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80416E0
.align 2,0

View File

@ -16,6 +16,20 @@ struct unkStruct_80420E8
u32 unk8;
};
typedef struct unkStruct_80416E0
{
s32 unk0;
s32 unk4;
s32 unk8;
u16 x;
u16 y;
u16 unk10;
u16 unk12;
s32 unk14;
u32 unk18;
} unkStruct_80416E0;
extern u32 gStatusSpriteMasks_SleepStatus[];
extern u32 gStatusSpriteMasks_NonVolatileStatus[];
extern u32 gStatusSpriteMasks_ImmobilizeStatus[];
@ -33,18 +47,15 @@ extern u32 gStatusSpriteMasks_MuzzledStatus[];
extern void sub_803ED30(u8, Entity *pokemon, u8, u8);
extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2);
extern void sub_80416E0(Entity *pokemon, u32, u32);
extern u8 sub_8042768(Entity *pokemon);
extern u32 sub_806F62C(u32);
extern void PlaySoundEffect(u32);
extern u8 sub_803F428(Position *pos);
extern void sub_8041550(Entity *pokemon, u32, u32, u32, u32, u32);
void sub_80421C0(Entity *pokemon, u16 r1);
void EntityUpdateStatusSprites(Entity *entity);
extern s32 gUnknown_202EDC8;
extern u8 gUnknown_203B40D;
extern s16 gUnknown_2026E4E;
@ -55,12 +66,47 @@ extern void sub_803EA10(void);
extern void sub_8042E98(void);
extern void sub_803E46C(u32);
extern void sub_800EE5C(u32);
extern u32 sub_800E890(u32 *);
extern void sub_800EF64(void);
extern u8 sub_800E9A8(u32);
extern u32 sub_800E890(unkStruct_80416E0 *);
u32 sub_8041764(u32 *param_1, u8 param_2)
u32 sub_8041764(unkStruct_80416E0 *param_1, u8 param_2);
s32 sub_80416E0(Position32 *pos, u32 param_2, u8 param_3)
{
sub_800EE5C(*param_1);
int counter;
s32 ret;
unkStruct_80416E0 auStack_10;
unkStruct_2039DB0 auStack_18; // Size: 0xC
auStack_10.unk0 = param_2;
auStack_10.unk4 = 0;
auStack_10.unk8 = -1;
auStack_10.x = pos->x / 256;
auStack_10.y = pos->y / 256;
auStack_10.unk14 = -1;
auStack_10.unk10 = 0;
auStack_10.unk12 = 0;
auStack_10.unk18 = 0xffff;
sub_8004E8C(&auStack_18);
ret = sub_8041764(&auStack_10,0);
if (param_3 != 0) {
counter = 0;
while ((counter < 100 && (sub_800E9A8(ret) != 0))) {
sub_803E46C(0x42);
counter++;
}
ret = -1;
}
return ret;
}
u32 sub_8041764(unkStruct_80416E0 *param_1, u8 param_2)
{
sub_800EE5C(param_1->unk0);
sub_800EF64();
if(param_2)
sub_803E46C(0x42);
@ -817,9 +863,9 @@ void sub_804218C(Entity *pokemon, Entity *target)
sub_804151C(target, 0x2A, 1);
}
void sub_804219C(Entity *pokemon)
void sub_804219C(Position32 *pos)
{
sub_80416E0(pokemon, 0x90, 1);
sub_80416E0(pos, 0x90, 1);
}
void sub_80421AC(Entity *pokemon, Entity * target)