pokeheartgold/src/sys_flags.c

347 lines
9.1 KiB
C

#include "global.h"
#include "constants/sndseq.h"
#include "constants/maps.h"
#include "constants/flags.h"
#include "sys_flags.h"
struct MusicOverride {
u16 map;
u16 flag;
u16 seq;
};
static const struct MusicOverride sMusicOverrideMap[] = {
{ MAP_D22R0101, FLAG_BUG_CONTEST_ACTIVE, SEQ_GS_TAIKAIMAE_D5 },
{ MAP_R35R0201, FLAG_BUG_CONTEST_ACTIVE, SEQ_GS_TAIKAIMAE },
{ MAP_R36R0201, FLAG_BUG_CONTEST_ACTIVE, SEQ_GS_TAIKAIMAE },
{ MAP_T04GYM0101, FLAG_UNK_994, SEQ_GS_EYE_ROCKET },
{ MAP_R24, FLAG_UNK_995, SEQ_GS_EYE_ROCKET },
{ MAP_D10R0101, FLAG_UNK_999, SEQ_GS_SAFARI_FIELD },
{ MAP_D23R0101, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
{ MAP_D23R0102, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
{ MAP_D23R0103, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
{ MAP_D23R0104, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
{ MAP_D23R0105, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
{ MAP_D23R0106, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
{ MAP_D23R0107, FLAG_ROCKET_TAKEOVER_ACTIVE, SEQ_GS_SENKYO },
};
void SetScriptFlag(SaveVarsFlags* state, u16 flag_id) {
Save_VarsFlags_SetFlagInArray(state, flag_id);
}
void ClearScriptFlag(SaveVarsFlags* state, u16 flag_id) {
Save_VarsFlags_ClearFlagInArray(state, flag_id);
}
BOOL CheckScriptFlag(SaveVarsFlags* state, u16 flag_id) {
return Save_VarsFlags_CheckFlagInArray(state, flag_id);
}
BOOL FlagAction(SaveVarsFlags* state, u32 action, u32 flag_id) {
switch (action) {
case FLAG_ACTION_SET:
SetScriptFlag(state, flag_id);
break;
case FLAG_ACTION_CLEAR:
ClearScriptFlag(state, flag_id);
break;
case FLAG_ACTION_CHECK:
return CheckScriptFlag(state, flag_id);
default:
GF_ASSERT(FALSE);
}
return FALSE;
}
void SetFlag960(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_960);
}
BOOL CheckFlag960(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_960);
}
void SetGameClearFlag(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_GAME_CLEAR);
}
BOOL CheckGameClearFlag(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_GAME_CLEAR);
}
void Save_VarsFlags_SetHaveFollowerFlag(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_HAVE_FOLLOWER);
}
void Save_VarsFlags_ClearHaveFollowerFlag(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_HAVE_FOLLOWER);
}
BOOL Save_VarsFlags_CheckHaveFollower(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_HAVE_FOLLOWER);
}
void SetFlag99C(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_99C);
}
void SetFlag965(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_965);
}
void ClearFlag965(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_UNK_965);
}
BOOL CheckFlag965(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_965);
}
void Save_VarsFlags_SetRocketCostumeFlag(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_SYS_ROCKET_COSTUME);
}
void Save_VarsFlags_ClearRocketCostumeFlag(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_SYS_ROCKET_COSTUME);
}
BOOL Save_VarsFlags_CheckRocketCostumeFlag(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_ROCKET_COSTUME);
}
BOOL EventFlagCheck_RematchGroup(SaveVarsFlags* state, u16 flag_id) {
return CheckScriptFlag(state, FLAG_UNK_97B + flag_id);
}
void Save_VarsFlags_SetAlphPuzzleFlag(SaveVarsFlags* state, u8 flag) {
switch (flag) {
case 0:
SetScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_KABUTO);
return;
case 1:
SetScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_AERODACTYL);
return;
case 2:
SetScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_OMANYTE);
return;
case 3:
SetScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_HO_OH);
return;
}
}
BOOL Save_VarsFlags_CheckAlphPuzzleFlag(SaveVarsFlags* state, u8 flag) {
BOOL ret = FALSE;
switch (flag) {
case 0:
ret = CheckScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_KABUTO);
break;
case 1:
ret = CheckScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_AERODACTYL);
break;
case 2:
ret = CheckScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_OMANYTE);
break;
case 3:
ret = CheckScriptFlag(state, FLAG_SYS_ALPH_PUZZLE_HO_OH);
break;
}
return ret;
}
void Save_VarsFlags_MomsSavingsFlagAction(SaveVarsFlags* state, BOOL set) {
if (set) {
SetScriptFlag(state, FLAG_SYS_MOMS_SAVINGS);
} else {
ClearScriptFlag(state, FLAG_SYS_MOMS_SAVINGS);
}
}
BOOL Save_VarsFlags_MomsSavingsFlagCheck(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_MOMS_SAVINGS);
}
u16 GetOverriddenMapMusic(SaveVarsFlags* state, u32 map_no) {
for (u32 i = 0; i < NELEMS(sMusicOverrideMap); i++) {
if (map_no == sMusicOverrideMap[i].map && CheckScriptFlag(state, sMusicOverrideMap[i].flag)) {
return sMusicOverrideMap[i].seq;
}
}
return 0;
}
void SetFlag966(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_966);
}
void ClearFlag966(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_UNK_966);
}
BOOL CheckFlag966(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_966);
}
BOOL CheckMetBill(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_MET_BILL);
}
void SetFlag975(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_975);
}
void ClearFlag975(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_UNK_975);
}
void Save_VarsFlags_SetSafariSysFlag(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_SYS_SAFARI);
}
void Save_VarsFlags_ClearSafariSysFlag(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_SYS_SAFARI);
}
BOOL Save_VarsFlags_CheckSafariSysFlag(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_SAFARI);
}
BOOL Save_VarsFlags_CheckBugContestFlag(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_996);
}
void Save_VarsFlags_SetPalParkSysFlag(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_SYS_PAL_PARK);
}
void Save_VarsFlags_ClearPalParkSysFlag(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_SYS_PAL_PARK);
}
BOOL Save_VarsFlags_CheckPalParkSysFlag(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_PAL_PARK);
}
void ClearFlag972(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_UNK_972);
}
BOOL StrengthFlagAction(SaveVarsFlags* state, u32 action) {
return FlagAction(state, action, FLAG_STRENGTH_ACTIVE);
}
void SysFlagFlashSet(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_SYS_FLASH);
}
void SysFlagFlashClear(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_SYS_FLASH);
}
BOOL SysFlagFlashCheck(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_FLASH);
}
void SysFlagDefogSet(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_SYS_DEFOG);
}
void SysFlagDefogClear(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_SYS_DEFOG);
}
BOOL SysFlagDefogCheck(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_DEFOG);
}
BOOL Save_VarsFlags_FlypointFlagAction(SaveVarsFlags* state, u32 action, u32 flypoint_flag_no) {
GF_ASSERT(flypoint_flag_no < 38);
return FlagAction(state, action, FLAG_SYS_FLYPOINT_PALLET + flypoint_flag_no);
}
void SetFlag970(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_970);
}
BOOL CheckGotStarter(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_GOT_STARTER);
}
BOOL CheckGotPokegear(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_GOT_POKEGEAR);
}
BOOL CheckGotPokedex(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_GOT_POKEDEX);
}
BOOL CheckGotMenuIconI(SaveVarsFlags* state, s32 icon_idx) {
GF_ASSERT(icon_idx < 4);
return CheckScriptFlag(state, FLAG_GOT_BAG + icon_idx);
}
BOOL CheckFlag96A(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_96A);
}
BOOL sub_020669B4(SaveVarsFlags* state, u32 a1) {
if (a1 > 2) {
return FALSE;
}
return CheckScriptFlag(state, FLAG_UNK_96B + a1);
}
BOOL CheckDisabledCianwoodWaterfall(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_CIANWOOD_WATERFALL_DISABLE);
}
BOOL CheckSolvedLtSurgeGym(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SYS_SOLVED_LT_SURGE_GYM);
}
BOOL CheckFlag982(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_982);
}
BOOL CheckFlag09A(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_09A);
}
BOOL CheckFlag997(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_997);
}
void SetFlag99A(SaveVarsFlags* state) {
SetScriptFlag(state, FLAG_UNK_99A);
}
void ClearFlag99A(SaveVarsFlags* state) {
ClearScriptFlag(state, FLAG_UNK_99A);
}
BOOL CheckFlag99A(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_UNK_99A);
}
BOOL CheckBattledSnorlax(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_SNORLAX_MEET);
}
BOOL CheckBattledRedGyarados(SaveVarsFlags* state) {
return CheckScriptFlag(state, FLAG_RED_GYARADOS_MEET);
}
void ChangeFlag99D(SaveVarsFlags* state, BOOL set) {
if (set) {
SetScriptFlag(state, FLAG_UNK_99D);
} else {
ClearScriptFlag(state, FLAG_UNK_99D);
}
}