From f85116d50caa38e19828ade69ff3d21431869f5f Mon Sep 17 00:00:00 2001 From: mariob92 <21146795-mariob92@users.noreply.gitlab.com> Date: Sun, 8 Sep 2024 18:58:43 +0200 Subject: [PATCH] completed documentation of vola flags --- include/enums.h | 87 ++++++++++++++++++++------------------ src/core2/ba/marker.c | 30 +++++++------ src/core2/ch/trainers.c | 8 ++-- src/core2/ch/wadingboots.c | 8 ++-- src/lair/code_0.c | 10 ++--- 5 files changed, 76 insertions(+), 67 deletions(-) diff --git a/include/enums.h b/include/enums.h index a2363fa3..14b7a222 100644 --- a/include/enums.h +++ b/include/enums.h @@ -242,33 +242,31 @@ enum volatile_flags_e { VOLATILE_FLAG_9_HAS_SEEN_ZUBBAS_FF_MINIGAME, VOLATILE_FLAG_A_HAS_SEEN_TIPTUP_FF_MINIGAME, VOLATILE_FLAG_B_HAS_SEEN_SANDCASTLE_FF_MINIGAME, - VOLATILE_FLAG_C, - VOLATILE_FLAG_D, - VOLATILE_FLAG_E, - VOLATILE_FLAG_F, - VOLATILE_FLAG_10, - VOLATILE_FLAG_11, - VOLATILE_FLAG_12, + VOLATILE_FLAG_C_HAS_SEEN_SPRING_PAD, + VOLATILE_FLAG_D_HAS_SEEN_FLIGHT_PAD, + VOLATILE_FLAG_E, // related to chxmastree, GV waterctrl and RBB anchorswitch + VOLATILE_FLAG_F_HAS_MEET_TURBO_SHOES, + VOLATILE_FLAG_10_HAS_MEET_WADING_BOOTS, + VOLATILE_FLAG_11, // unused + VOLATILE_FLAG_12, // unused VOLATILE_FLAG_13_HAS_TRIGGERED_MUMBO_VACATION_TEXT, - VOLATILE_FLAG_14, - VOLATILE_FLAG_15, - VOLATILE_FLAG_16, - VOLATILE_FLAG_17, - VOLATILE_FLAG_18, - + VOLATILE_FLAG_14, // unused + VOLATILE_FLAG_15, // unused + VOLATILE_FLAG_16, // related to beta function "return to lair" + VOLATILE_FLAG_17, // 17 and 18: related to 50 note door and demo mode (?) + VOLATILE_FLAG_18, // 17 and 18: related to 50 note door and demo mode (?) VOLATILE_FLAG_19_CURRENT_LEVEL_ID, // 4 bits for current level ID - - VOLATILE_FLAG_1D = 0x1D, - VOLATILE_FLAG_1E, - VOLATILE_FLAG_1F_IN_CHARACTER_PARADE = 0x1F, + // VOLATILE_FLAG_1A to VOLATILE_FLAG_1C belong to VOLATILE_FLAG_19_CURRENT_LEVEL_ID + VOLATILE_FLAG_1D = 0x1D, // unused + VOLATILE_FLAG_1E, // related to warp cauldron or dingpot + VOLATILE_FLAG_1F_IN_CHARACTER_PARADE, VOLATILE_FLAG_20_BEGIN_CHARACTER_PARADE, - VOLATILE_FLAG_21, - VOLATILE_FLAG_22, - - VOLATILE_FLAG_23_FINAL_BOSS_PHASE = 0x23, // 3 bits for current phase in final boss fight - + VOLATILE_FLAG_21, // related to FF + VOLATILE_FLAG_22, // related to baddies escape text + VOLATILE_FLAG_23_FINAL_BOSS_PHASE, // 3 bits for current phase in final boss fight + // VOLATILE_FLAG_24 to VOLATILE_FLAG_25 belong to VOLATILE_FLAG_23_FINAL_BOSS_PHASE VOLATILE_FLAG_26_FF_GRUNTY_QUESTIONS = 0x26, // 60 bits FFQ Grunty Question related (two bits for every question) - + // VOLATILE_FLAG_27 to VOLATILE_FLAG_61 belong to VOLATILE_FLAG_26_FF_GRUNTY_QUESTIONS VOLATILE_FLAG_62_FF_GRUNTY_QUESTIONS_INITIALIZED = 0x62, VOLATILE_FLAG_63, // related to demo mode VOLATILE_FLAG_64, // related to demo mode @@ -290,10 +288,13 @@ enum volatile_flags_e { VOLATILE_FLAG_74_SANDCASTLE_INFINITE_EGGS, VOLATILE_FLAG_75_SANDCASTLE_INFINITE_RED_FEATHERS, VOLATILE_FLAG_76_SANDCASTLE_INFINITE_GOLD_FEATHERS, - - VOLATILE_FLAG_78_SANDCASTLE_NO_BONUS = 0x78, - - VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC = 0x7D, + VOLATILE_FLAG_77, // unused + VOLATILE_FLAG_78_SANDCASTLE_NO_BONUS, + VOLATILE_FLAG_79, // unused + VOLATILE_FLAG_7A, // unused + VOLATILE_FLAG_7B, // unused + VOLATILE_FLAG_7C, // unused + VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC, VOLATILE_FLAG_7E_SANDCASTLE_RAISE_PIPE_TO_BRENTILDA, VOLATILE_FLAG_7F_SANDCASTLE_OPEN_CC, VOLATILE_FLAG_80_SANDCASTLE_REMOVE_GRILL_NEAR_BGS_JIGGY, @@ -345,23 +346,29 @@ enum volatile_flags_e { VOLATILE_FLAG_AE_BGS_WALKWAY_JIGGY_MISSED, VOLATILE_FLAG_AF_BGS_MAZE_JIGGY_MISSED, VOLATILE_FLAG_B0_NOT_ENOUGH_NOTES, - VOLATILE_FLAG_B2 = 0xB2, - VOLATILE_FLAG_B3, - VOLATILE_FLAG_B4, - VOLATILE_FLAG_B5, - - VOLATILE_FLAG_BB = 0xBB, - VOLATILE_FLAG_BC, - VOLATILE_FLAG_BD, - VOLATILE_FLAG_BE, - VOLATILE_FLAG_BF, - - VOLATILE_FLAG_C0_BEGIN_FINAL_CHARACTER_PARADE = 0xC0, + VOLATILE_FLAG_B1, // unused + VOLATILE_FLAG_B2, // ccw related + VOLATILE_FLAG_B3, // boggy2 related + VOLATILE_FLAG_B4, // fp related + VOLATILE_FLAG_B5, // ccw related + VOLATILE_FLAG_B6_WITCH_SWITCH_PRESSED_MM, + VOLATILE_FLAG_B7_WITCH_SWITCH_PRESSED_MMM, + VOLATILE_FLAG_B8_WITCH_SWITCH_PRESSED_TTC, + VOLATILE_FLAG_B9_WITCH_SWITCH_PRESSED_RBB, + VOLATILE_FLAG_BA_WITCH_SWITCH_PRESSED_CCW, + VOLATILE_FLAG_BB_WITCH_SWITCH_PRESSED_FP, + VOLATILE_FLAG_BC_WITCH_SWITCH_PRESSED_CC, + VOLATILE_FLAG_BD_WITCH_SWITCH_PRESSED_BGS, + VOLATILE_FLAG_BE_WITCH_SWITCH_PRESSED_GV, + VOLATILE_FLAG_BF, // witch switch related + VOLATILE_FLAG_C0_BEGIN_FINAL_CHARACTER_PARADE, VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE, VOLATILE_FLAG_C2_NOBONUS_TEXT, VOLATILE_FLAG_C3, // SNS picture related VOLATILE_FLAG_C4_WOZZA_HIDE_IN_SNS_PARADE, - VOLATILE_FLAG_C5_WISHYWASHYBANJO_TEXT + VOLATILE_FLAG_C5_WISHYWASHYBANJO_TEXT, + + VOLATILE_FLAG_NUM_FLAGS }; enum level_flags_e diff --git a/src/core2/ba/marker.c b/src/core2/ba/marker.c index 46d2b9ca..210c2f77 100644 --- a/src/core2/ba/marker.c +++ b/src/core2/ba/marker.c @@ -195,6 +195,7 @@ void __baMarker_8028BAB0(enum jiggy_e jiggy_id, s32 arg1, s32 arg2, s32 arg3){ func_8030E6D4(SFX_90_SWITCH_PRESS); } +// arg1 - if bit 0x400000 is set, it's a volatile flag, else it's a file progress flag (for witch switches) void __baMarker_8028BB1C(s32 arg0, u32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6){ u32 sp24; if(arg0 != 1) @@ -203,8 +204,9 @@ void __baMarker_8028BB1C(s32 arg0, u32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 a if(func_8028ECAC() == 1) return; + // if bit 0x400000 of arg1 is set, it's a volatile flag, else it's a file progress flag (for witch switches) if(arg1 & 0x400000){ - sp24 = arg1 + 0xFFC00000; + sp24 = arg1 + 0xFFC00000; // weird truncing if(!volatileFlag_get(sp24)){ volatileFlag_set(sp24, 1); func_8030E6D4(SFX_90_SWITCH_PRESS); @@ -379,8 +381,8 @@ void __baMarker_resolveCollision(Prop *other_prop){ } break; - case 0x231: //L8028C104 - case 0x244: //L8028C104 + case MARKER_231_WARP_CAULDRON: //L8028C104 + case MARKER_244_DINGPOT: //L8028C104 { if(func_8028ECAC() == 1) @@ -463,38 +465,38 @@ void __baMarker_resolveCollision(Prop *other_prop){ break; case MARKER_161_GV_WITCH_SWITCH: //L8028C384 - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000BE, 0x6E, 0x7D, 0x19, 0x14, 0xA0); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_BE_WITCH_SWITCH_PRESSED_GV, 0x6E, 0x7D, 0x19, 0x14, 0xA0); break; case MARKER_162_BGS_WITCH_SWITCH: //L8028C3BC - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000BD, 0x71, 0x7C, 0x18, 0x14, 0x9F); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_BD_WITCH_SWITCH_PRESSED_BGS, 0x71, 0x7C, 0x18, 0x14, 0x9F); break; case MARKER_166_CC_WITCH_SWITCH: //L8028C3F4 - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000BC, 0x6A, 0x7A, 0x17, 0x14, 0x9A); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_BC_WITCH_SWITCH_PRESSED_CC, 0x6A, 0x7A, 0x17, 0x14, 0x9A); break; case MARKER_22B_FP_WITCH_SWITCH: //L8028C42C - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000BB, 0x6F, 0x3A, 0x13, 0x15, 0x47); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_BB_WITCH_SWITCH_PRESSED_FP, 0x6F, 0x3A, 0x13, 0x15, 0x47); break; case MARKER_22A_CCW_WITCH_SWITCH: //L8028C464 - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000BA, 0x79, 0x39, 0x12, 0x15, 0x46); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_BA_WITCH_SWITCH_PRESSED_CCW, 0x79, 0x39, 0x12, 0x15, 0x46); break; case MARKER_103_MM_WITCH_SWITCH: //L8028C49C - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000B6, 0x69, 0x26, 1, 4, 0x18); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_B6_WITCH_SWITCH_PRESSED_MM, 0x69, 0x26, 1, 4, 0x18); break; case MARKER_104_MMM_WITCH_SWITCH: //L8028C4D4 - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000B7, 0x6F, 0x27, 2, 0x14, 0x19); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_B7_WITCH_SWITCH_PRESSED_MMM, 0x6F, 0x27, 2, 0x14, 0x19); break; case MARKER_105_TTC_WITCH_SWITCH: //L8028C50C - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000B8, 0x6D, 0x28, 3, 0x14, 0x1A); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_B8_WITCH_SWITCH_PRESSED_TTC, 0x6D, 0x28, 3, 0x14, 0x1A); break; case MARKER_106_RBB_WITCH_SWITCH: //L8028C544 - __baMarker_8028BB1C(plyr_hitbox_type, 0x4000B9, 0x76, 0x29, 4, 0xe, 0x1C); + __baMarker_8028BB1C(plyr_hitbox_type, 0x400000 | VOLATILE_FLAG_B9_WITCH_SWITCH_PRESSED_RBB, 0x76, 0x29, 4, 0xe, 0x1C); break; case MARKER_11B_WATER_LEVEL_SWITCH_1: //L8028C57C @@ -715,7 +717,7 @@ void __baMarker_resolveCollision(Prop *other_prop){ if(ability_isUnlocked(ABILITY_D_SHOCK_JUMP)){ miscflag_set(MISC_FLAG_2_ON_SPRING_PAD); }else{ - if(!volatileFlag_getAndSet(VOLATILE_FLAG_C, 1)){ + if(!volatileFlag_getAndSet(VOLATILE_FLAG_C_HAS_SEEN_SPRING_PAD, 1)){ func_80311480(0xA24, 4, 0, 0, 0, 0); } } @@ -727,7 +729,7 @@ void __baMarker_resolveCollision(Prop *other_prop){ if(ability_isUnlocked(ABILITY_9_FLIGHT)){ miscflag_set(MISC_FLAG_1_ON_FLIGHT_PAD); } - else if(! volatileFlag_getAndSet(VOLATILE_FLAG_D, 1)){ + else if(! volatileFlag_getAndSet(VOLATILE_FLAG_D_HAS_SEEN_FLIGHT_PAD, 1)){ func_80311480(0xA25, 4, 0, 0, 0, 0); } break; diff --git a/src/core2/ch/trainers.c b/src/core2/ch/trainers.c index 5dfdedce..df2d2cb1 100644 --- a/src/core2/ch/trainers.c +++ b/src/core2/ch/trainers.c @@ -70,19 +70,19 @@ void chtrainers_update(Actor *this){ subaddie_set_state(this, 0); } - if(!volatileFlag_get(VOLATILE_FLAG_F) && ability_isUnlocked(ABILITY_11_TURBO_TALON)){ - volatileFlag_set(VOLATILE_FLAG_F, TRUE); + if(!volatileFlag_get(VOLATILE_FLAG_F_HAS_MEET_TURBO_SHOES) && ability_isUnlocked(ABILITY_11_TURBO_TALON)){ + volatileFlag_set(VOLATILE_FLAG_F_HAS_MEET_TURBO_SHOES, TRUE); } switch(this->state){ case 0://L802CA5A8 if(func_803296D8(this, 2000) || sp2C){ if( func_80329530(this, 0xfa) - && !volatileFlag_get(VOLATILE_FLAG_F) + && !volatileFlag_get(VOLATILE_FLAG_F_HAS_MEET_TURBO_SHOES) && player_getTransformation() == TRANSFORM_1_BANJO ){ if(func_80311480(0xda4, 0, NULL, NULL, NULL, NULL)){ - volatileFlag_set(VOLATILE_FLAG_F, TRUE); + volatileFlag_set(VOLATILE_FLAG_F_HAS_MEET_TURBO_SHOES, TRUE); } }//L802CA620 _chtrainers_802CA378(this, sp2C); diff --git a/src/core2/ch/wadingboots.c b/src/core2/ch/wadingboots.c index 74324a41..c3f2aec1 100644 --- a/src/core2/ch/wadingboots.c +++ b/src/core2/ch/wadingboots.c @@ -45,8 +45,8 @@ void chwadingboots_update(Actor *this){ subaddie_set_state(this, 0); } - if(!volatileFlag_get(VOLATILE_FLAG_10) && ability_isUnlocked(ABILITY_E_WADING_BOOTS)){ - volatileFlag_set(VOLATILE_FLAG_10, TRUE); + if(!volatileFlag_get(VOLATILE_FLAG_10_HAS_MEET_WADING_BOOTS) && ability_isUnlocked(ABILITY_E_WADING_BOOTS)){ + volatileFlag_set(VOLATILE_FLAG_10_HAS_MEET_WADING_BOOTS, TRUE); } switch(this->state){ @@ -65,12 +65,12 @@ void chwadingboots_update(Actor *this){ } } - if(volatileFlag_get(VOLATILE_FLAG_10)) break; + if(volatileFlag_get(VOLATILE_FLAG_10_HAS_MEET_WADING_BOOTS)) break; if(!func_80329530(this, 250)) break; if(player_getTransformation() != TRANSFORM_1_BANJO) break; if(func_80311480(ASSET_DA5_DIALOG_WADINGBOOTS_MEET, 0, NULL, NULL, NULL, NULL)){ - volatileFlag_set(VOLATILE_FLAG_10, TRUE); + volatileFlag_set(VOLATILE_FLAG_10_HAS_MEET_WADING_BOOTS, TRUE); } break; diff --git a/src/lair/code_0.c b/src/lair/code_0.c index d8557607..082285ff 100644 --- a/src/lair/code_0.c +++ b/src/lair/code_0.c @@ -872,7 +872,7 @@ void func_803880BC(Actor *this) __spawnQueue_add_1((GenFunction_1)func_80387E94, reinterpret_cast(s32, this->marker)); - if (volatileFlag_get(VOLATILE_FLAG_BC) && !fileProgressFlag_get(FILEPROG_9A_CC_WITCH_SWITCH_PRESSED)) + if (volatileFlag_get(VOLATILE_FLAG_BC_WITCH_SWITCH_PRESSED_CC) && !fileProgressFlag_get(FILEPROG_9A_CC_WITCH_SWITCH_PRESSED)) FUNC_8030E624(SFX_3F6_UNKNOWN, 0.75f, 30000); } @@ -892,7 +892,7 @@ void func_803880BC(Actor *this) } } - if (volatileFlag_get(VOLATILE_FLAG_BC) && !fileProgressFlag_get(FILEPROG_9B_LAIR_CC_WITCH_SWITCH_EYES_ACTIVE)) + if (volatileFlag_get(VOLATILE_FLAG_BC_WITCH_SWITCH_PRESSED_CC) && !fileProgressFlag_get(FILEPROG_9B_LAIR_CC_WITCH_SWITCH_EYES_ACTIVE)) { this->position_y += 1.7; @@ -944,7 +944,7 @@ void func_803882B0(Actor *this) this->unk60 = 0; } - if (this->pitch == 90.f || !volatileFlag_get(VOLATILE_FLAG_BB)) + if (this->pitch == 90.f || !volatileFlag_get(VOLATILE_FLAG_BB_WITCH_SWITCH_PRESSED_FP)) return; if (this->pitch == 0) @@ -1481,7 +1481,7 @@ void lair_func_803894B0(Actor *this) return; } - this->unk1C[0] = volatileFlag_get(VOLATILE_FLAG_BD) ? 22 : 0; + this->unk1C[0] = volatileFlag_get(VOLATILE_FLAG_BD_WITCH_SWITCH_PRESSED_BGS) ? 22 : 0; } if (!this->unk1C[0]) @@ -1612,7 +1612,7 @@ void func_80389934(Actor *this) { case 21: { - if (volatileFlag_get(VOLATILE_FLAG_BE)) + if (volatileFlag_get(VOLATILE_FLAG_BE_WITCH_SWITCH_PRESSED_GV)) { this->unk1C[0] = 25;