mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-16 00:41:24 -05:00
137 lines
2.8 KiB
C
137 lines
2.8 KiB
C
#include "global.h"
|
|
#include "globaldata.h"
|
|
#include "code_800E9E4.h"
|
|
#include "def_filearchives.h"
|
|
#include "file_system.h"
|
|
#include "memory.h"
|
|
|
|
struct unkStruct_800F18C
|
|
{
|
|
s32 effectID;
|
|
u32 counter;
|
|
};
|
|
|
|
struct unkStruct_203B0D4
|
|
{
|
|
struct unkStruct_800F18C unk0[2];
|
|
};
|
|
|
|
extern struct unkStruct_203B0D4 *gUnknown_203B0D4;
|
|
|
|
void sub_800F034(void)
|
|
{
|
|
s32 index;
|
|
if(gUnknown_203B0D4 == NULL)
|
|
{
|
|
gUnknown_203B0D4 = MemoryAlloc(sizeof(struct unkStruct_203B0D4), 0xB);
|
|
MemoryClear8(gUnknown_203B0D4, sizeof(struct unkStruct_203B0D4));
|
|
}
|
|
for(index = 0; index < 2; index++)
|
|
{
|
|
gUnknown_203B0D4->unk0[index].effectID = -1;
|
|
gUnknown_203B0D4->unk0[index].counter = 0;
|
|
}
|
|
}
|
|
|
|
void sub_800F078(void)
|
|
{
|
|
if(gUnknown_203B0D4)
|
|
{
|
|
MemoryFree(gUnknown_203B0D4);
|
|
gUnknown_203B0D4 = NULL;
|
|
}
|
|
}
|
|
|
|
void sub_800F094(void)
|
|
{
|
|
s32 index;
|
|
for(index = 0; index < 2; index++)
|
|
{
|
|
gUnknown_203B0D4->unk0[index].effectID = -1;
|
|
gUnknown_203B0D4->unk0[index].counter = 0;
|
|
}
|
|
}
|
|
|
|
s32 sub_800F0C0(s32 animType, s32 effectID)
|
|
{
|
|
if (animType == 3) {
|
|
if (gUnknown_203B0D4->unk0[0].effectID == effectID) return 0;
|
|
}
|
|
else {
|
|
if (gUnknown_203B0D4->unk0[1].effectID == effectID) return 1;
|
|
}
|
|
return -3;
|
|
}
|
|
|
|
|
|
s32 sub_800F0F4(s32 animType, s32 effectID)
|
|
{
|
|
if (animType == 3) {
|
|
if (gUnknown_203B0D4->unk0[0].effectID == effectID) return -2;
|
|
if (gUnknown_203B0D4->unk0[0].counter == 0) return 0;
|
|
}
|
|
else {
|
|
if (gUnknown_203B0D4->unk0[1].effectID == effectID) return -2;
|
|
if (gUnknown_203B0D4->unk0[1].counter == 0) return 1;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2)
|
|
{
|
|
if(gUnknown_203B0D4->unk0[index].counter == 0)
|
|
gUnknown_203B0D4->unk0[index].effectID = r2->effectId;
|
|
}
|
|
|
|
void sub_800F15C(s32 effectID)
|
|
{
|
|
s32 index;
|
|
|
|
for(index = 0; index < 2; index++)
|
|
{
|
|
if(gUnknown_203B0D4->unk0[index].effectID == effectID)
|
|
{
|
|
gUnknown_203B0D4->unk0[index].counter++;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
struct unkStruct_800F18C *sub_800F18C(s32 index)
|
|
{
|
|
return &gUnknown_203B0D4->unk0[index];
|
|
}
|
|
|
|
s32 sub_800F19C(s32 index)
|
|
{
|
|
if(gUnknown_203B0D4->unk0[index].counter == 0)
|
|
return 0;
|
|
else
|
|
return 1;
|
|
}
|
|
|
|
OpenedFile * sub_800F1C0(u32 animType, s32 effectID)
|
|
{
|
|
u8 fileName [8];
|
|
|
|
switch(animType)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
sprintf(fileName,"efob%03d",effectID);
|
|
break;
|
|
case 4:
|
|
sprintf(fileName,"efbg%03d",effectID);
|
|
break;
|
|
|
|
}
|
|
return Call_OpenFileAndGetFileDataPtr(fileName,&gEffectFileArchive);
|
|
}
|
|
|
|
void sub_800F204(OpenedFile *file)
|
|
{
|
|
CloseFile(file);
|
|
}
|
|
|