mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-20 09:51:24 -05:00
139 lines
2.7 KiB
C
139 lines
2.7 KiB
C
#include "global.h"
|
|
#include "constants/direction.h"
|
|
#include "code_80861A8.h"
|
|
|
|
#include "code_803E668.h"
|
|
#include "code_806CD90.h"
|
|
#include "dungeon_music.h"
|
|
|
|
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 s32 sub_800E890(unkStruct_80416E0 *);
|
|
|
|
struct unkStruct_8107380
|
|
{
|
|
u8 unk0[12];
|
|
};
|
|
extern struct unkStruct_8107380 gUnknown_8107380;
|
|
|
|
extern const u8 *gUnknown_810665C[];
|
|
extern const u8 *gUnknown_810668C[];
|
|
extern const u8 *gUnknown_81066D4[];
|
|
extern const u8 *gUnknown_81066F0[];
|
|
extern const u8 *gUnknown_810671C[];
|
|
|
|
static void sub_80861EC(Entity *);
|
|
|
|
void sub_800EE5C(s32);
|
|
void sub_800EF64();
|
|
void sub_803E46C(s32);
|
|
s32 sub_800E700(s32);
|
|
void sub_800569C(Position *, EntitySpriteInfo *, u8);
|
|
void sub_8085F44(void);
|
|
|
|
void sub_8052FB8(const u8 *);
|
|
|
|
void sub_8086124(Entity *entity, u8 param_2)
|
|
{
|
|
entity->info->unk160 = param_2;
|
|
}
|
|
|
|
void sub_8086130(void)
|
|
{
|
|
DungeonFadeOutBGM(0x3c);
|
|
sub_803E708(0x3c,0x46);
|
|
sub_8052FB8(*gUnknown_810665C);
|
|
sub_803E708(0x1e,0x46);
|
|
sub_8052FB8(*gUnknown_810668C);
|
|
sub_803E708(0x1e,0x46);
|
|
sub_8052FB8(*gUnknown_81066D4);
|
|
sub_803E708(0x1e,0x46);
|
|
sub_8052FB8(*gUnknown_81066F0);
|
|
sub_803E708(0x1e,0x46);
|
|
sub_8052FB8(*gUnknown_810671C);
|
|
sub_803E708(0x1e,0x46);
|
|
}
|
|
|
|
void sub_80861A8(Entity *a0)
|
|
{
|
|
sub_806CDD4(a0, 0, NUM_DIRECTIONS);
|
|
}
|
|
|
|
void sub_80861B8(Entity *a0, u8 r1, s32 direction)
|
|
{
|
|
EntityInfo *info;
|
|
|
|
info = a0->info;
|
|
|
|
sub_806CDD4(a0, r1, direction);
|
|
info->unkFE = r1;
|
|
}
|
|
|
|
void sub_80861D4(Entity *a0, u8 r1, s32 direction)
|
|
{
|
|
sub_806CDD4(a0, r1, direction);
|
|
sub_80861EC(a0);
|
|
}
|
|
|
|
void sub_80861EC(Entity *a0)
|
|
{
|
|
a0->info->unkFE = 0x63;
|
|
}
|
|
|
|
s32 sub_80861F8(s16 param_1,Entity *param_2,bool32 param_3)
|
|
{
|
|
EntityInfo *info;
|
|
s32 uVar2;
|
|
s32 uStack_38;
|
|
Position pos;
|
|
unkStruct_80416E0 stack;
|
|
struct unkStruct_8107380 stack4;
|
|
|
|
#ifdef NONMATCHING
|
|
s32 param_1_s32 = param_1;
|
|
#else
|
|
register s32 param_1_s32 asm("r5") = param_1;
|
|
#endif
|
|
|
|
u8 param_3_bool32 = param_3;
|
|
|
|
sub_800EE5C(param_1);
|
|
sub_800EF64();
|
|
sub_803E46C(0x46);
|
|
info = param_2->info;
|
|
pos.x = 0;
|
|
pos.y = 0;
|
|
uStack_38 = sub_800E700(param_1_s32);
|
|
if (uStack_38 != -1) {
|
|
sub_800569C(&pos,¶m_2->spriteInfo,uStack_38);
|
|
}
|
|
stack.unk0 = param_1_s32;
|
|
stack.unk4 = 0;
|
|
stack.unk8 = (u32)(info->action).direction;
|
|
stack.x = (param_2->pixelPos).x / 256;
|
|
stack.y = (param_2->pixelPos).y / 256;
|
|
|
|
stack.unk10 = pos.x;
|
|
stack.unk12 = pos.y;
|
|
stack.unk14 = uStack_38;
|
|
stack.unk18 = 0xffff;
|
|
stack4 = gUnknown_8107380;
|
|
|
|
uVar2 = sub_800E890(&stack);
|
|
if (param_3_bool32 != '\0') {
|
|
sub_8085F44();
|
|
uVar2 = -1;
|
|
}
|
|
return uVar2;
|
|
}
|