Decompile flag code

This commit is contained in:
gamemasterplc 2023-12-28 07:13:39 -06:00
parent bf300c37d1
commit f96afa27da
9 changed files with 77 additions and 23 deletions

41
src/game/flag.c Normal file
View file

@ -0,0 +1,41 @@
#include "common.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;
}
u32 _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));
}