document more vola flags

This commit is contained in:
mariob92
2024-09-08 17:59:41 +02:00
parent 35f93d5505
commit f451eae4e2
33 changed files with 184 additions and 172 deletions

View File

@@ -57,7 +57,7 @@ void animCache_flushAll(void){
for(i = 0; i<340; i++){
if(D_80379E20[i].alive){
volatileFlag_get(VOLATILE_FLAG_0);
volatileFlag_get(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ);
D_80379E20[i].life = 0;
boneTransformList_free(D_80379E20[i].bone_xform);
D_80379E20[i].bone_xform = NULL;

View File

@@ -583,10 +583,10 @@ void __baMarker_resolveCollision(Prop *other_prop){
return;
if( map_get() == MAP_8E_GL_FURNACE_FUN
&& volatileFlag_get(VOLATILE_FLAG_0)
&& volatileFlag_get(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ)
&& !fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)
){
func_80356540(FILEPROG_A6_FURNACE_FUN_COMPLETE);
volatileFlag_setAndTriggerDialog_4(VOLATILE_FLAG_A6_FF_FOUND_HONEYCOMB);
func_8030E6D4(SFX_126_AUDIENCE_BOOING);
}
@@ -695,10 +695,10 @@ void __baMarker_resolveCollision(Prop *other_prop){
if(__baMarker_8028BC20(marker))
return;
if( map_get() == MAP_8E_GL_FURNACE_FUN
&& volatileFlag_get(VOLATILE_FLAG_0)
&& volatileFlag_get(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ)
&& !fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)
){
func_80356540(FILEPROG_A7_NEAR_PUZZLE_PODIUM_TEXT);
volatileFlag_setAndTriggerDialog_4(VOLATILE_FLAG_A7_FF_FOUND_EXTRALIFE);
func_8030E6D4(SFX_127_AUDIENCE_MIXED);
}
func_8025A6EC(COMUSIC_15_EXTRA_LIFE_COLLECTED, 0x7FFF);
@@ -715,7 +715,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(0xC, 1)){
if(!volatileFlag_getAndSet(VOLATILE_FLAG_C, 1)){
func_80311480(0xA24, 4, 0, 0, 0, 0);
}
}
@@ -727,7 +727,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(0xD, 1)){
else if(! volatileFlag_getAndSet(VOLATILE_FLAG_D, 1)){
func_80311480(0xA25, 4, 0, 0, 0, 0);
}
break;

View File

@@ -77,7 +77,7 @@ void func_802D77D4(Actor *this) {
ml_vec3f_diff_copy(sp4C, this->position, sp40);
if (((sp4C[0] * sp4C[0]) + (sp4C[2] * sp4C[2])) < (sp3C * sp3C)) {
if ((this->position[1] < sp40[1]) && (sp40[1] <= local->unk0[1])) {
if (volatileFlag_get(VOLATILE_FLAG_2) == 0) {
if (volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME) == 0) {
func_8028F738(this->position, local->unk0, (f32)this->unkF4_8, local->unkC);
}
}

View File

@@ -246,7 +246,7 @@ void chCrab_update(Actor *this) {
if (!jiggyscore_isCollected(JIGGY_10_TTC_SANDCASTLE)) {
mapSpecificFlags_set(1, 0);
}
if (volatileFlag_get(VOLATILE_FLAG_2)) {
if (volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)) {
marker_despawn(this->marker);
return;
}
@@ -279,7 +279,7 @@ void chCrab_update(Actor *this) {
if (map_get() == MAP_A_TTC_SANDCASTLE) {
if( !mapSpecificFlags_get(0)
&& levelSpecificFlags_get(2)
&& !volatileFlag_get(VOLATILE_FLAG_2)
&& !volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)
&& !jiggyscore_isCollected(JIGGY_10_TTC_SANDCASTLE)
&& func_80329530(this, 1600)
) {

View File

@@ -1,6 +1,7 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "enums.h"
extern void func_802BE720(void);
extern f32 func_8033A244(f32);
@@ -71,7 +72,7 @@ void func_802C7B6C(u32 arg0){
mapSpecificFlags_set(arg0, 0);
}
void func_802C7B8C(Actor *this, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6){
void func_802C7B8C(Actor *this, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, enum volatile_flags_e arg6){
if( !mapSpecificFlags_get(arg1)
&& mapSpecificFlags_get(arg2)
&& item_getCount(ITEM_0_HOURGLASS_TIMER) == 0
@@ -79,7 +80,7 @@ void func_802C7B8C(Actor *this, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5
func_8028FCC8(1);
actor_collisionOff(this);
func_802BAFE4(arg3);
func_80356520(arg6);
volatileFlag_setAndTriggerDialog_0(arg6);
timedFunc_set_4(0.6f, (GenFunction_4)func_802C7AF8, (s32)this->position[0], (s32)this->position[1], (s32)this->position[2], arg4);
timedFunc_set_2(0.6f, (GenFunction_2)func_802C7AB0, (s32)this->marker, arg5);
timedFunc_set_0(1.0f, (GenFunction_0)func_802BE720);
@@ -174,10 +175,10 @@ void chjiggy_update(Actor *this){
chjiggy_updateRotation(this);
switch(chjiggy_getJiggyId(this)){
case JIGGY_20_BGS_ELEVATED_WALKWAY: //L802C7FE8
func_802C7B8C(this, 4, 3, 0xD, 5, 2, 0xae);
func_802C7B8C(this, 4, 3, 0xD, 5, 2, VOLATILE_FLAG_AE_BGS_WALKWAY_JIGGY_MISSED);
break;
case JIGGY_25_BGS_MAZE://L802C8018
func_802C7B8C(this, 0xd, 0xc, 0x1e, 9, 0xb, 0xaf);
func_802C7B8C(this, 0xd, 0xc, 0x1e, 9, 0xb, VOLATILE_FLAG_AF_BGS_MAZE_JIGGY_MISSED);
break;
case JIGGY_2F_FP_XMAS_TREE://L802C8048
if(levelSpecificFlags_get(0x29))

View File

@@ -336,7 +336,7 @@ void func_8029B85C(ActorMarker *caller, enum asset_e text_id, s32 arg2){
}
void func_8029B890(void){
if(!fileProgressFlag_get(FILEPROG_A8_HAS_DIED) && !volatileFlag_get(VOLATILE_FLAG_2)){
if(!fileProgressFlag_get(FILEPROG_A8_HAS_DIED) && !volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)){
func_803114D0();
if(bs_getState() == 0x54){
func_8029B62C();

View File

@@ -341,7 +341,7 @@ void func_802BC2CC(s32 arg0) {
if (volatileFlag_get(VOLATILE_FLAG_E) != 0) {
func_80347A14(0);
}
if (volatileFlag_getAndSet(0xE, 0) || func_802D686C() || (arg0 == 0x63) || !func_802BB720(arg0, D_8037D908, D_8037D918, &sp1C)) {
if (volatileFlag_getAndSet(VOLATILE_FLAG_E, 0) || func_802D686C() || (arg0 == 0x63) || !func_802BB720(arg0, D_8037D908, D_8037D918, &sp1C)) {
if (ncCameraType == CAMERA_TYPE_2_DYNAMIC) {
func_802BE794();
}

View File

@@ -14,7 +14,7 @@ void chextralife_update(Actor *this){
if(!this->initialized){
func_8032AA58(this, 0.8f);
this->initialized = TRUE;
if(volatileFlag_get(VOLATILE_FLAG_1) || volatileFlag_get(VOLATILE_FLAG_2)){
if(volatileFlag_get(VOLATILE_FLAG_1) || volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)){
marker_despawn(this->marker);
}
}

View File

@@ -105,7 +105,7 @@ void chHoneycomb_update(Actor *this){
local->uid = (!this->unk44_2)? D_8037DDC0 : func_802C9C40(this);
if( honeycombscore_get(local->uid)
|| volatileFlag_get(VOLATILE_FLAG_1)
|| volatileFlag_get(VOLATILE_FLAG_2)
|| volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)
){
marker_despawn(this->marker);
return;

View File

@@ -574,7 +574,7 @@ void func_802D4680(Actor *this){
if(func_80258640(this->position, sp1C) < 150.0f && func_8028F20C()){
if(func_8028ECAC() == 0 || func_8028ECAC() == BSGROUP_8_TROT){
if(map_get() == MAP_8E_GL_FURNACE_FUN){
volatileFlag_set(VOLATILE_FLAG_0, 0);
volatileFlag_set(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ, 0);
func_802D4614(MAP_80_GL_FF_ENTRANCE);
}
else{

View File

@@ -70,7 +70,7 @@ void func_802E0B10(Actor *this){
}
if( mumboscore_get(local->uid)
|| volatileFlag_get(VOLATILE_FLAG_1)
|| volatileFlag_get(VOLATILE_FLAG_2)
|| volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)
|| volatileFlag_get(VOLATILE_FLAG_1F_IN_CHARACTER_PARADE)
){
marker_despawn(this->marker);

View File

@@ -265,7 +265,7 @@ void func_802E3E7C(enum game_mode_e mode){
sp28 = D_8037E8E0.exit;
prev_mode = D_8037E8E0.unk0;
func_802E3BF8(GAME_MODE_2_UNKNOWN, 0);
if(!volatileFlag_getAndSet(0x21, 0) || map_getLevel(map_get()) == map_getLevel(D_8037E8E0.map)){
if(!volatileFlag_getAndSet(VOLATILE_FLAG_21, 0) || map_getLevel(map_get()) == map_getLevel(D_8037E8E0.map)){
if(!volatileFlag_get(VOLATILE_FLAG_1F_IN_CHARACTER_PARADE))
mapSavestate_save(map_get());
}

View File

@@ -136,7 +136,7 @@ void __chMinigame_setState(Actor *this, u32 arg1) {
volatileFlag_set(VOLATILE_FLAG_4, 1);
func_8028F918(2);
func_8025AB00();
func_8025A70C((volatileFlag_get(VOLATILE_FLAG_5)) ? COMUSIC_3B_MINIGAME_VICTORY : COMUSIC_3C_MINIGAME_LOSS);
func_8025A70C((volatileFlag_get(VOLATILE_FLAG_5_FF_MINIGAME_WON)) ? COMUSIC_3B_MINIGAME_VICTORY : COMUSIC_3C_MINIGAME_LOSS);
func_802E4A70();
volatileFlag_set(VOLATILE_FLAG_21, TRUE);
timedFunc_set_3(2.0f, (GenFunction_3)func_802E4078, MAP_8E_GL_FURNACE_FUN, 1, 1);
@@ -154,7 +154,7 @@ void chMinigame_update(Actor *this){
this->unk16C_4 = 1;
this->unk10_12 = __chminigame_getCurrentMapId();
actor_collisionOff(this);
if(!volatileFlag_get(VOLATILE_FLAG_2)){
if(!volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)){
func_8031A678(this);
return;
}
@@ -169,12 +169,12 @@ void chMinigame_update(Actor *this){
marker_despawn(this->marker);
return;
}
volatileFlag_set(VOLATILE_FLAG_5, 0);
volatileFlag_set(VOLATILE_FLAG_5_FF_MINIGAME_WON, 0);
volatileFlag_set(VOLATILE_FLAG_3, 0);
__chMinigame_setState(this, MINIGAME_STATE_1_INTRODUCE_GAME);
gcpausemenu_80314AC8(0);
}
if(volatileFlag_get(VOLATILE_FLAG_2)){
if(volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)){
switch(this->state){
case MINIGAME_STATE_1_INTRODUCE_GAME://L8031AB2C
if(this->unk138_24)

View File

@@ -297,7 +297,7 @@ void warp_gvEnterMatchingPyramid(s32 arg0, s32 arg1) {
void warp_gvEnterWaterPyramidUpper(s32 arg0, s32 arg1) {
func_80244C78(0);
volatileFlag_set(VOLATILE_FLAG_AC, 1);
volatileFlag_set(VOLATILE_FLAG_AC_GV_TRAPDOOR_MISSED, 1);
func_8031CC8C(arg0, 0x1502);
}
@@ -534,7 +534,7 @@ void func_8031DAA8(s32 arg0, s32 arg1) {
void func_8031DAE0(s32 arg0, s32 arg1) {
if (mapSpecificFlags_get(2) == 0) {
volatileFlag_set(VOLATILE_FLAG_AD, 1);
volatileFlag_set(VOLATILE_FLAG_AD_MMM_CHURCH_DOOR_MISSED, 1);
func_80244C78(0);
mapSpecificFlags_set(2, 1);
func_8025A6EC(COMUSIC_3B_MINIGAME_VICTORY, 0x6D60);

View File

@@ -37,7 +37,7 @@ void func_803216D0(enum map_e map){
levelSpecificFlags_clear();
bsStoredState_clearTimers();
func_803219A8();
if( volatileFlag_getAndSet(0x17, FALSE)
if( volatileFlag_getAndSet(VOLATILE_FLAG_17, FALSE)
&& getGameMode() != 0
&& D_80383300.level != LEVEL_D_CUTSCENE
&& map != MAP_91_FILE_SELECT

View File

@@ -286,7 +286,7 @@ void __overlay_bgs_release(void){ return; }
void func_80322D38(void){
if( map_get() == MAP_10_BGS_MR_VILE
&& volatileFlag_get(VOLATILE_FLAG_2)
&& volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)
&& volatileFlag_get(VOLATILE_FLAG_7_HAS_SEEN_VILE_FF_MINIGAME)
){
player_setTransformation(TRANSFORM_5_CROC);

View File

@@ -888,7 +888,7 @@ void cube_fromFile(Struct61s *file_ptr, Cube *cube) {
}
if (file_getByte_ifExpected(file_ptr, 8, &sp47)) {
sp34 = volatileFlag_get(VOLATILE_FLAG_1) + volatileFlag_get(VOLATILE_FLAG_2) + volatileFlag_get(VOLATILE_FLAG_1F_IN_CHARACTER_PARADE);
sp34 = volatileFlag_get(VOLATILE_FLAG_1) + volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME) + volatileFlag_get(VOLATILE_FLAG_1F_IN_CHARACTER_PARADE);
if ((sp34) && gcparade_8031B4CC()) {
sp34 = 0;

View File

@@ -250,7 +250,7 @@ void func_803465E4(void){
}//L8034667C
if(D_80385FE0){
if(gctransition_done() || volatileFlag_get(VOLATILE_FLAG_0)){
if(gctransition_done() || volatileFlag_get(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ)){
if(D_80385FE4){
item_dec(ITEM_16_LIFE);
func_802FACA4(ITEM_14_HEALTH);

View File

@@ -36,28 +36,28 @@ MapProgressFlagToDialogID fileProgressDialogMap[] = {
/* This progress IDs are not saved in the save file, like when Banjo goes near a Note door which requires more notes than the Banjo has. */
/* Triggers a dialog every time after the game restarts. */
MapProgressFlagToDialogID volatileProgressDialogMap[] = {
{0x9E, 0xBA3},
{0x9F, 0xCE8},
{0xA0, 0x1032},
{0xA1, 0x1033},
{0xA2, 0x1034},
{0xA3, 0x1035},
{0xA4, 0x1036},
{0xA5, 0x1037},
{0xA6, 0x1038},
{0xA7, 0x1039},
{0xA8, 0x103A},
{0xA9, 0x103B},
{0xAA, 0x103C},
{0xAB, 0x103D},
{0xAC, 0xA88},
{0xAD, 0xAE2},
{0xAE, 0xC8B},
{0xAF, 0xC8C},
{0xB0, 0xFBD},
{0xC2, 0xE36},
{0xC5, 0xDB6},
MapProgressFlagToDialogID gVolatileFlagDialogMap[] = {
{VOLATILE_FLAG_9E_BETA_OILY_SCUM, 0xBA3}, // Oily scum (unused)
{VOLATILE_FLAG_9F_BETA_DIVE_IN_ICY_WATER, 0xCE8}, // Dive in icy water (unused)
{VOLATILE_FLAG_A0_FF_FIRST_ANSWER_RIGHT, 0x1032},
{VOLATILE_FLAG_A1_FF_NEXT_ANSWER_RIGHT, 0x1033},
{VOLATILE_FLAG_A2_FF_GRUNTY_ANSWER_RIGHT, 0x1034},
{VOLATILE_FLAG_A3_FF_FIRST_ANSWER_WRONG, 0x1035},
{VOLATILE_FLAG_A4_FF_NEXT_ANSWER_WRONG, 0x1036},
{VOLATILE_FLAG_A5_FF_UNUSED, 0x1037}, // FF "the choice is yours"
{VOLATILE_FLAG_A6_FF_FOUND_HONEYCOMB, 0x1038},
{VOLATILE_FLAG_A7_FF_FOUND_EXTRALIFE, 0x1039},
{VOLATILE_FLAG_A8_FF_GOT_JOKER, 0x103A},
{VOLATILE_FLAG_A9_FF_USED_JOKER, 0x103B},
{VOLATILE_FLAG_AA_FF_LOW_HEALTH, 0x103C},
{VOLATILE_FLAG_AB_LAST_LIFE_ON_SKULL, 0x103D},
{VOLATILE_FLAG_AC_GV_TRAPDOOR_MISSED, 0xA88},
{VOLATILE_FLAG_AD_MMM_CHURCH_DOOR_MISSED, 0xAE2},
{VOLATILE_FLAG_AE_BGS_WALKWAY_JIGGY_MISSED, 0xC8B},
{VOLATILE_FLAG_AF_BGS_MAZE_JIGGY_MISSED, 0xC8C},
{VOLATILE_FLAG_B0_NOT_ENOUGH_NOTES, 0xFBD},
{VOLATILE_FLAG_C2_NOBONUS_TEXT, 0xE36},
{VOLATILE_FLAG_C5_WISHYWASHYBANJO_TEXT, 0xDB6},
{ -1, -1}
};
@@ -101,31 +101,34 @@ void func_8035646C(enum file_progress_e progress_flag) {
}
/* Checks for a specific "volatile" progress flag and triggers a dialog only if the progress flag was not set and sets the progress flag */
s32 func_8035648C(s32 arg0, s32 arg1) {
s32 volatileFlag_setAndTriggerDialog(enum volatile_flags_e id, s32 arg1) {
s32 index;
if (volatileFlag_get(arg0) != 0) {
if (volatileFlag_get(id) != 0) {
return 0;
} else {
index = __findIndex(volatileProgressDialogMap, arg0);
index = __findIndex(gVolatileFlagDialogMap, id);
if (index != -1) {
if (func_80311480(volatileProgressDialogMap[index].value, arg1, 0, 0, 0, 0) != 0) {
volatileFlag_set(arg0, 1);
if (func_80311480(gVolatileFlagDialogMap[index].value, arg1, 0, 0, 0, 0) != 0) {
volatileFlag_set(id, 1);
}
return volatileFlag_get(arg0);
return volatileFlag_get(id);
}
return 0;
}
}
void func_80356520(s32 arg0) {
func_8035648C(arg0, 0);
// called for dialogs when banjo is not fast enough to reach a door or jiggy and for NOBONUS text
void volatileFlag_setAndTriggerDialog_0(s32 arg0) {
volatileFlag_setAndTriggerDialog(arg0, 0);
}
void func_80356540(s32 arg0) {
func_8035648C(arg0, 4);
// called for FFQ dialogs
void volatileFlag_setAndTriggerDialog_4(s32 arg0) {
volatileFlag_setAndTriggerDialog(arg0, 4);
}
void func_80356560(s32 arg0) {
func_8035648C(arg0, 0xE);
// called for WISHYWASHYBANJO dialog
void volatileFlag_setAndTriggerDialog_E(s32 arg0) {
volatileFlag_setAndTriggerDialog(arg0, 0xE);
}

View File

@@ -990,7 +990,7 @@ s32 gcPauseMenu_update(void){
case 1://L80313908 //return to lair
volatileFlag_set(VOLATILE_FLAG_16, 1);
if(map_get() == MAP_8E_GL_FURNACE_FUN){
volatileFlag_set(VOLATILE_FLAG_0,0);
volatileFlag_set(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ,0);
func_802E4078(MAP_80_GL_FF_ENTRANCE, 2, 1);
}else{
func_802E4078(D_8036C560[level-1].map, D_8036C560[level-1].exit, 1);
@@ -1003,7 +1003,7 @@ s32 gcPauseMenu_update(void){
break;
case 3://L8031399C
func_802C5994();
volatileFlag_set(VOLATILE_FLAG_0,0);
volatileFlag_set(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ,0);
if(!fileProgressFlag_get(FILEPROG_BD_ENTER_LAIR_CUTSCENE) || fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){
gcPauseMenu_setState(0x14);
}else{