diff options
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/code_800F12D0.c | 9 | ||||
| -rw-r--r-- | src/code/z_env_flags.c | 33 |
2 files changed, 33 insertions, 9 deletions
diff --git a/src/code/code_800F12D0.c b/src/code/code_800F12D0.c deleted file mode 100644 index d34f11e81..000000000 --- a/src/code/code_800F12D0.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F12D0/func_800F12D0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F12D0/func_800F1304.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F12D0/func_800F1374.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F12D0/func_800F13E8.s") diff --git a/src/code/z_env_flags.c b/src/code/z_env_flags.c new file mode 100644 index 000000000..d76681512 --- /dev/null +++ b/src/code/z_env_flags.c @@ -0,0 +1,33 @@ +#include "global.h" + +void EnvFlags_UnsetAll(GlobalContext* globalCtx) { + u8 i; + + for (i = 0; i < ARRAY_COUNT(globalCtx->envFlags); i++) { + globalCtx->envFlags[i] = 0; + } +} + +void EnvFlags_Set(GlobalContext* globalCtx, s16 flag) { + s16 index = flag / 16; + s16 bit = flag % 16; + s16 mask = 1 << bit; + + globalCtx->envFlags[index] |= mask; +} + +void EnvFlags_Unset(GlobalContext* globalCtx, s16 flag) { + s16 index = flag / 16; + s16 bit = flag % 16; + s16 mask = (1 << bit) ^ 0xFFFF; + + globalCtx->envFlags[index] &= mask; +} + +s32 EnvFlags_Get(GlobalContext* globalCtx, s16 flag) { + s16 index = flag / 16; + s16 bit = flag % 16; + s16 mask = 1 << bit; + + return globalCtx->envFlags[index] & mask; +} |
