marioparty4/src/game/flag.c
2024-04-02 13:31:26 -05:00

42 lines
No EOL
717 B
C

#include "dolphin.h"
#include "game/gamework_data.h"
static u8 _Sys_Flag[16];
static u8 *GetFlagPtr(u32 flag)
{
u8 *ret;
u32 group = flag >> 16;
if((flag & 0xFFFF0000) == 0x30000) {
ret = _Sys_Flag;
} else {
ret = &GWSystem.flag[group][0];
}
return ret;
}
s32 _CheckFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;
return flag_ptr[index/8] & (1 << (index % 8));
}
void _SetFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;
flag_ptr[index/8] |= (1 << (index % 8));
}
void _ClearFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;
flag_ptr[index/8] &= ~(1 << (index % 8));
}
void _InitFlag(void)
{
memset(_Sys_Flag, 0, sizeof(_Sys_Flag));
}