Merge branch 'mr-origin-91'

This commit is contained in:
banjo.decomp 2024-10-08 02:13:18 -05:00
commit 6fb4f2b3f1
25 changed files with 289 additions and 199 deletions

View File

@ -13,11 +13,11 @@
#define SPRITE_TYPE_RGBA16 (1 << 10) ////0x400
#define SPRITE_TYPE_RGBA32 (1 << 11)
enum file_progress_e{
FILEPROG_0_UNKNOWN,
FILEPROG_1_UNKNOWN,
FILEPROG_2_UNKNOWN,
FILEPROG_3_MUSIC_NOTE_TEXT,
enum file_progress_e {
FILEPROG_0_TIPTUP_MINIGAME_PROGRESS,
// unused
// unused
FILEPROG_3_MUSIC_NOTE_TEXT = 0x03,
FILEPROG_4_MUMBO_TOKEN_TEXT,
FILEPROG_5_BLUE_EGG_TEXT,
FILEPROG_6_RED_FEATHER_TEXT,
@ -79,17 +79,17 @@ enum file_progress_e{
FILEPROG_46_CCW_WITCH_SWITCH_JIGGY_PRESSED,
FILEPROG_47_FP_WITCH_SWITCH_JIGGY_PRESSED,
FILEPROG_48_FP_WITCH_SWITCH_ADVENT_DOOR_OPEN,
// {index=0x49, type="Prog", level=6, name="Pink Cauldron 1 Active"},
// {index=0x4A, type="Prog", level=6, name="Pink Cauldron 2 Active"},
// {index=0x4B, type="Prog", level=6, name="Green Cauldron 1 Active"},
// {index=0x4C, type="Prog", level=6, name="Green Cauldron 2 Active"},
// {index=0x4D, type="Prog", level=6, name="Red Cauldron 1 Active"},
// {index=0x4E, type="Prog", level=6, name="Red Cauldron 2 Active"},
// -- 0x4F - Unused Cauldron Pair?
// -- 0x50 - Unused Cauldron Pair?
// {index=0x51, type="Prog", level=6, name="Yellow Cauldron 1 Active"},
// {index=0x52, type="Prog", level=6, name="Yellow Cauldron 2 Active"},
FILEPROG_53_CCW_PUZZLE_PODIUM_SWITCH_PRESSED = 0x53,
FILEPROG_49_PINK_CAULDRON_1_ACTIVE,
FILEPROG_4A_PINK_CAULDRON_2_ACTIVE,
FILEPROG_4B_GREEN_CAULDRON_1_ACTIVE,
FILEPROG_4C_GREEN_CAULDRON_2_ACTIVE,
FILEPROG_4D_RED_CAULDRON_1_ACTIVE,
FILEPROG_4E_RED_CAULDRON_2_ACTIVE,
FILEPROG_4F_UNUSED_CAULDRON_1_ACTIVE,
FILEPROG_50_UNUSED_CAULDRON_2_ACTIVE,
FILEPROG_51_YELLOW_CAULDRON_1_ACTIVE,
FILEPROG_52_YELLOW_CAULDRON_2_ACTIVE,
FILEPROG_53_CCW_PUZZLE_PODIUM_SWITCH_PRESSED,
FILEPROG_54_CCW_PUZZLE_PODIUM_ACTIVE,
FILEPROG_55_FF_BK_SQUARE_INSTRUCTIONS,
FILEPROG_56_FF_PICTURE_SQUARE_INSTRUCTIONS,
@ -110,7 +110,6 @@ enum file_progress_e{
FILEPROG_76_CCW_PUZZLE_PIECES_PLACED = 0x76, //4 bit
FILEPROG_7A_DOG_PUZZLE_PIECES_PLACED = 0x7A, //5 bit
FILEPROG_7F_DOUBLE_HEALTH_PUZZLE_PIECES_PLACED = 0x7F, //3 bit
// {index=0x82, unknown}
FILEPROG_82_MET_TWINKLIES = 0x82,
FILEPROG_83_MAGIC_GET_WEAK_TEXT,
FILEPROG_84_MAGIC_ALL_GONE_TEXT,
@ -130,8 +129,8 @@ enum file_progress_e{
FILEPROG_92_PAID_WALRUS_COST,
FILEPROG_93_PAID_CROC_COST,
FILEPROG_94_PAID_BEE_COST,
FILEPROG_96_MET_BRENTILDA = 0x96,
FILEPROG_95_UNKNOWN,
FILEPROG_96_MET_BRENTILDA,
FILEPROG_97_ENTERED_LAIR_TEXT,
FILEPROG_98_EXITED_LEVEL_TEXT,
FILEPROG_99_PAST_50_NOTE_DOOR_TEXT,
@ -201,8 +200,8 @@ enum file_progress_e{
FILEPROG_DE_USED_ALL_YOUR_PUZZLE_PIECES,
FILEPROG_DF_CAN_REMOVE_ALL_PUZZLE_PIECES,
FILEPROG_E0_CAN_PLACE_ALL_PUZZLE_PIECES,
FILEPROG_E2_DOOR_OF_GRUNTY_OPEN = 0xE2,
FILEPROG_E1_UNKNOWN, // is set in cutscene_skipGameOverCutsceneCheck
FILEPROG_E2_DOOR_OF_GRUNTY_OPEN,
FILEPROG_E3_CCW_FLOWER_SPRING,
FILEPROG_E4_CCW_FLOWER_SUMMER,
FILEPROG_E5_CCW_FLOWER_AUTUMN,
@ -225,10 +224,49 @@ enum file_progress_e{
FILEPROG_F6_SEEN_DOOR_OF_GRUNTY_PUZZLE_PODIUM,
FILEPROG_F7_HAS_TRANSFORMED_IN_CRYPT,
FILEPROG_F8_KING_SANDYBUTT_PYRAMID_STATE = 0xF8, //2bit
// FILEPROG_F8_KING_SANDYBUTT_PYRAMID_STATE = 0xF9, //2bit
FILEPROG_FA_UNKNOWN = 0xFA, // Something that's set in FF
FILEPROG_FC_DEFEAT_GRUNTY = 0xFC,
FILEPROG_FD_BANNED_CHEATCODES_ENTERED //2 bit
FILEPROG_FD_BANNED_CHEATCODES_ENTERED, //2 bit
FILEPROG_FF_SANDCASTLE_OPEN_DOOR_TWO = 0xFF,
FILEPROG_100_SANDCASTLE_OPEN_DOOR_THREE,
FILEPROG_101_SANDCASTLE_OPEN_DOOR_FOUR,
FILEPROG_102_SANDCASTLE_OPEN_DOOR_FIVE,
FILEPROG_103_SANDCASTLE_OPEN_DOOR_SIX,
FILEPROG_104_SANDCASTLE_OPEN_DOOR_SEVEN,
FILEPROG_105_SANDCASTLE_PUZZLE_COMPLETE_CC,
FILEPROG_106_SANDCASTLE_PUZZLE_COMPLETE_BGS,
FILEPROG_107_SANDCASTLE_PUZZLE_COMPLETE_FP,
FILEPROG_108_SANDCASTLE_PUZZLE_COMPLETE_GV,
FILEPROG_109_SANDCASTLE_PUZZLE_COMPLETE_MMM,
FILEPROG_10A_SANDCASTLE_PUZZLE_COMPLETE_RBB,
FILEPROG_10B_SANDCASTLE_PUZZLE_COMPLETE_CCC,
FILEPROG_10C_SANDCASTLE_RAISE_PIPES_TO_CC,
FILEPROG_10D_SANDCASTLE_RAISE_PIPE_TO_BRENTILDA,
FILEPROG_10E_SANDCASTLE_OPEN_CC,
FILEPROG_10F_SANDCASTLE_REMOVE_GRILL_NEAR_BGS_JIGGY,
FILEPROG_110_SANDCASTLE_CCC_JIGGY_PODIUM,
FILEPROG_111_SANDCASTLE_REMOVE_GRILL_AND_HAT_FROM_STATUE,
FILEPROG_112_SANDCASTLE_REMOVE_ICE,
FILEPROG_113_SANDCASTLE_OPEN_BGS,
FILEPROG_114_SANDCASTLE_REMOVE_BREAKABLE_WALLS,
FILEPROG_115_SANDCASTLE_SHOCKSPRING_JUMP_UNLOCKED,
FILEPROG_116_SANDCASTLE_OPEN_GV,
FILEPROG_117_SANDCASTLE_REMOVE_WEBS,
FILEPROG_118_SANDCASTLE_REMOVE_GLASS_EYE,
FILEPROG_119_SANDCASTLE_FLIGHT_UNLOCKED,
FILEPROG_11A_SANDCASTLE_OPEN_FP,
FILEPROG_11B_SANDCASTLE_OPEN_MMM,
FILEPROG_11C_SANDCASTLE_REMOVE_CRYPT_GATE,
FILEPROG_11D_SANDCASTLE_REMOVE_CRYPT_COFFIN_LID,
FILEPROG_11E_SANDCASTLE_REMOVE_GRATE_NEAR_WATER_SWITCH,
FILEPROG_11F_SANDCASTLE_OPEN_RBB,
FILEPROG_120_SANDCASTLE_REMOVE_GRILL_NEAR_RBB_JIGGY,
FILEPROG_121_SANDCASTLE_REMOVE_TUNNEL_GRILL_NEAR_RBB_JIGGY,
FILEPROG_122_SANDCASTLE_OPEN_CCW,
FILEPROG_123_CHEAT_ENTERED
};
enum volatile_flags_e {
@ -2865,14 +2903,21 @@ enum asset_e
ASSET_1E0_ANIM_BEE_OW = 0x1e0,
ASSET_1E1_ANIM_BEE_DIE,
ASSET_1E2_ANIM_BEE_JUMP,
ASSET_1E3_ANIM_UNKNOWN,
ASSET_1ED_ANIM_GRAVESTONE_OW = 0x1ED,
ASSET_1EE_ANIM_GRAVESTONE_DIE,
ASSET_1F4_ANIM_SHRAPNEL_IDLE = 0x1F4,
ASSET_1F0_ANIM_UNKNOWN = 0x1F0,
ASSET_1F1_ANIM_UNKNOWN,
ASSET_1F2_ANIM_UNKNOWN,
ASSET_1F3_ANIM_UNKNOWN,
ASSET_1F4_ANIM_SHRAPNEL_IDLE,
ASSET_1F5_ANIM_TRANSITION_FALLING_JIGGIES,
ASSET_217_ANIM_UNKNOWN = 0x217,
ASSET_220_ANIM_SIR_SLUSH_DIE = 0x220,
ASSET_221_ANIM_WOZZA_IN_CAVE,
@ -4177,8 +4222,8 @@ enum asset_e
ASSET_ADA_TEXT_UNKNOWN = 0xada,
ASSET_ADB_TEXT_UNKNOWN,
ASSET_ADD_TEXT_UNKNOWN = 0xadd,
ASSET_ADC_DIALOG_UNKNOWN,
ASSET_ADD_TEXT_UNKNOWN,
ASSET_ADE_TEXT_LOGGO_AS_BEAR,
ASSET_ADF_TEXT_ENTER_LOGGO,
ASSET_AE0_TEXT_EXIT_LOGGO,
@ -4397,6 +4442,8 @@ enum asset_e
ASSET_F64_DIALOG_NOTEDOORS_LEARN = 0xf64,
ASSET_F65_DIALOG_NOTEDOORS_REFRESHER,
ASSET_F66_DIALOG_UNKNOWN,
ASSET_F67_DIALOG_UNKNOWN,
ASSET_F79_TEXT_UNKNOWN = 0xf79,
ASSET_F7A_TEXT_UNKNOWN,

View File

@ -391,7 +391,7 @@ void func_8030EBC8(enum sfx_e uid, f32 arg1, f32 arg2, s32 arg3, s32 arg4);
void func_8030EC20(enum sfx_e uid, f32 arg1, f32 arg2, u32 arg3, u32 arg4);
u8 func_8030ED2C(enum sfx_e uid, s32 arg1);
void fileProgressFlag_setN(s32, s32, s32);
void fileProgressFlag_setN(enum file_progress_e, s32, s32);
Actor *marker_getActorAndRotation(ActorMarker *marker, f32 rotation[3]);
Actor *func_80325934(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
Actor *actor_drawFullDepth(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
@ -535,11 +535,11 @@ extern void marker_setActorUpdateFunc(ActorMarker *marker, ActorUpdateFunc metho
extern void marker_setActorUpdate2Func(ActorMarker *marker, ActorUpdateFunc method);
extern void marker_callCollisionFunc(ActorMarker *, ActorMarker *, enum marker_collision_func_type_e);
extern enum marker_collision_func_type_e func_8033D574(struct5Cs *arg0);
extern s32 volatileFlag_get(s32);
extern s32 volatileFlag_getN(s32 index, s32 numBits);
extern s32 volatileFlag_getAndSet(s32 index, s32 arg1);
extern void volatileFlag_set(s32 index, s32 set);
extern void volatileFlag_setN(s32 startIndex, s32 set, s32 length);
extern s32 volatileFlag_get(enum volatile_flags_e);
extern s32 volatileFlag_getN(enum volatile_flags_e index, s32 numBits);
extern s32 volatileFlag_getAndSet(enum volatile_flags_e index, s32 arg1);
extern void volatileFlag_set(enum volatile_flags_e index, s32 set);
extern void volatileFlag_setN(enum volatile_flags_e startIndex, s32 set, s32 length);
extern void itemscore_noteScores_clear(void);
extern s32 itemscore_noteScores_get(enum level_e lvl_id);

View File

@ -165,7 +165,7 @@ typedef struct actor_s{
u32 is_bundle:1;
AnimCtrl *animctrl;
ActorAnimationInfo *unk18;
TUPLE(f32, unk1C); // actor position?
TUPLE(f32, unk1C); // actor position? // used as "home" for chbat
f32 actor_specific_1_f; //used in cheggs
TUPLE(f32, velocity);
u32 unk38_31:10; // hit count for jinjo base in fight
@ -230,7 +230,9 @@ typedef struct actor_s{
u32 unkF4_22:1;
u32 initialized:1; //unkF4_21;
u32 unkF4_20:12;
u32 unkF4_8:9; // jinjo id in final fight
u32 unkF4_8:9; /* jinjo id in final fight.
* Is used to determine file progress related stuff, can also be a file_progress_e
*/
f32 stored_animctrl_subrangeMin; //animCtrl_SubRangeStart
f32 stored_animctrl_subrangeMax; //animCtrl_SubRangeEnd
ActorMarker *unk100; // child actor marker ?

View File

@ -255,7 +255,7 @@ void func_80388FC0(Actor *this){
ActorLocal_Tiptup *local;
local = (ActorLocal_Tiptup *)&this->local;
fileProgressFlag_setN(0, local->unkA, 2);
fileProgressFlag_setN(FILEPROG_0_TIPTUP_MINIGAME_PROGRESS, local->unkA, 2);
vector_free(local->unk4);
}
@ -291,7 +291,7 @@ void chTiptup_update(Actor *this){
unqPtr->unk4 = vector_new(sizeof(Struct_BGS_2270_0s), 8);
unqPtr->unk8 = 0;
unqPtr->unk9 = 0;
unqPtr->unkA = fileProgressFlag_getN(0,2);
unqPtr->unkA = fileProgressFlag_getN(FILEPROG_0_TIPTUP_MINIGAME_PROGRESS, 2);
unqPtr->unkB = 0;
unqPtr->unkC = 0.0f;
if(volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME)){

View File

@ -8,7 +8,7 @@ typedef struct{
u8 unk3;
s16 unk4;
s16 unk6;
s16 unk8;
s16 unk8; // enum file_progress_e
s16 unkA;
}Struct_CCW_1B20_0;

View File

@ -11,8 +11,8 @@ typedef struct {
typedef struct {
s16 map_id;
s16 unk2;
s16 unk4;
s16 unk2; // enum file_progress_e
s16 unk4; // enum file_progress_e
s16 unk6;
Struct_CCW_3310_1 *unk8;
s16 unkC;

View File

@ -18,7 +18,7 @@ ActorInfo chXmasTree = {
Actor *chXmasTree_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
Actor *this = marker_getActor(marker);
func_8033A45C(5, this->unk38_31);
func_8033A45C(6, fileProgressFlag_get(0x13) && !func_8033A0F0(5));
func_8033A45C(6, fileProgressFlag_get(FILEPROG_13_COMPLETED_TWINKLIES_MINIGAME) && !func_8033A0F0(5));
return actor_draw(marker, gfx, mtx, vtx);
}
@ -100,7 +100,7 @@ void chXmasTree_update(Actor *this){
}
__spawnQueue_add_0(__chXmasTree_spawnSwitch);
__spawnQueue_add_1((GenFunction_1)__chXmasTree_spawnStar, reinterpret_cast(s32, this->marker));
if(fileProgressFlag_get(0x13)){
if(fileProgressFlag_get(FILEPROG_13_COMPLETED_TWINKLIES_MINIGAME)){
__chXmasTree_80386F84(this);
mapSpecificFlags_set(2, FALSE);
}
@ -116,7 +116,7 @@ void chXmasTree_update(Actor *this){
switch(this->state){
case 1: // L80387268
__chXmasTree_80386EF4(this, 0);
if(fileProgressFlag_get(0x13)){
if(fileProgressFlag_get(FILEPROG_13_COMPLETED_TWINKLIES_MINIGAME)){
__chXmasTree_80386F84(this);
}
break;

View File

@ -319,7 +319,7 @@ void func_8038AC48(LetterFloorTile *arg0) {
D_8038D720.unk8 = 2U;
D_8038D720.unkC = 0.0f;
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_1_UNKNOWN, TRUE);
fileProgressFlag_set(0xFA, TRUE);
fileProgressFlag_set(FILEPROG_FA_UNKNOWN, TRUE);
func_8030E2C4(D_8038D720.sfxsourceIdx);
func_8038A258(2);
} else if (var_v0 & 0xE) {
@ -613,11 +613,11 @@ u32 func_8038B600(void) {
return var_a3;
}
void TTC_func_8038B6D4(s32 arg0, s32 secretCodeIndex, s32 arg2, enum file_progress_e prog_id, s32 prog_val, s32 prog_bit_size, enum file_progress_e arg6){
void TTC_func_8038B6D4(s32 arg0, s32 secretCodeIndex, s32 arg2, enum file_progress_e progress_flag, s32 prog_val, s32 prog_bit_size, enum file_progress_e arg6){
if( ((arg2 + 20 == secretCodesTable[secretCodeIndex].id) && volatileFlag_get(arg2))
|| arg0 == 3
){
fileProgressFlag_setN(prog_id, prog_val, prog_bit_size);
fileProgressFlag_setN(progress_flag, prog_val, prog_bit_size);
if(arg6){
fileProgressFlag_set(arg6, TRUE);
}

View File

@ -195,7 +195,7 @@ void __baMarker_8028BAB0(enum jiggy_e jiggy_id, s32 arg1, s32 arg2, s32 arg3){
}
// 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){
void __baMarker_8028BB1C(s32 arg0, enum file_progress_e progress_flag, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6){
u32 sp24;
if(arg0 != 1)
return;
@ -203,9 +203,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; // weird truncing
// if bit 0x400000 of fileProgressFlag is set, it's a volatile flag, else it's a file progress flag (for witch switches)
if(progress_flag & 0x400000){
sp24 = progress_flag + 0xFFC00000; // weird truncing
if(!volatileFlag_get(sp24)){
volatileFlag_set(sp24, 1);
func_8030E6D4(SFX_90_SWITCH_PRESS);
@ -214,8 +214,8 @@ void __baMarker_8028BB1C(s32 arg0, u32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 a
}
}
else{//L8028BBB8
if(!fileProgressFlag_get(arg1)){
fileProgressFlag_set(arg1, 1);
if(!fileProgressFlag_get(progress_flag)){
fileProgressFlag_set(progress_flag, 1);
func_8030E6D4(SFX_90_SWITCH_PRESS);
volatileFlag_set(VOLATILE_FLAG_BF, 1);
func_802D6264(1.0f, arg2, arg3, arg4, arg5, arg6);
@ -391,6 +391,20 @@ void __baMarker_resolveCollision(Prop *other_prop){
if(collisionTri_isHitFromAbove_actor(spAC, actor, 0x87) == 0)
return;
volatileFlag_set(VOLATILE_FLAG_1E, 1);
/**
* This should use the following fileprog flags:
*
* FILEPROG_49_PINK_CAULDRON_1_ACTIVE
* FILEPROG_4A_PINK_CAULDRON_2_ACTIVE
* FILEPROG_4B_GREEN_CAULDRON_1_ACTIVE
* FILEPROG_4C_GREEN_CAULDRON_2_ACTIVE
* FILEPROG_4D_RED_CAULDRON_1_ACTIVE
* FILEPROG_4E_RED_CAULDRON_2_ACTIVE
* FILEPROG_4F_UNUSED_CAULDRON_1_ACTIVE
* FILEPROG_50_UNUSED_CAULDRON_2_ACTIVE
* FILEPROG_51_YELLOW_CAULDRON_1_ACTIVE
* FILEPROG_52_YELLOW_CAULDRON_2_ACTIVE
*/
if(fileProgressFlag_get(((actor->unkF4_8 - 1) ^ 1) + 0x49)){
actor->unk10_12 = 2;
}

View File

@ -36,7 +36,8 @@ void func_802A0340(void){
}
}
// bsBee_inSet
// bsBee_inSet
// move_idx is probably a bs_e
int bsbee_inSet(s32 move_idx){
return (move_idx == 0x85)
|| (move_idx == 0x86)

View File

@ -178,8 +178,8 @@ void *func_802C44EC(f32 arg0[3], f32 arg1[3], f32 arg2) {
void func_802C4768(s32 gamenum){
u8 * sp20[2];
static u8 D_8037DD48[0x20];
static u8 D_8037DD68[0x20];
static u8 upperTextLine[0x20];
static u8 lowerTextLine[0x20];
func_8031FBF8();
D_80365E00 = gamenum;
@ -188,59 +188,59 @@ void func_802C4768(s32 gamenum){
gameFile_load(gamenum);
D_8037DCCE[gamenum] = (itemscore_timeScores_get(LEVEL_6_LAIR)) ? 1 : 0;
strcpy(D_8037DD48, "");
strcat(D_8037DD48, "GAME ");
strcpy(upperTextLine, "");
strcat(upperTextLine, "GAME ");
switch(gamenum){
case 0: //L802C4820
strIToA(D_8037DD48, 1);
strIToA(upperTextLine, 1);
break;
case 1: //L802C4838
strIToA(D_8037DD48, 3);
strIToA(upperTextLine, 3);
break;
case 2: //L802C484C
strIToA(D_8037DD48, 2);
strIToA(upperTextLine, 2);
break;
}//L802C4858
strcat(D_8037DD48, ": TIME ");
strcat(D_8037DD48, gcpausemenu_TimeToA(itemscore_timeScores_getTotal()));
strcat(D_8037DD48, ",");
strcat(D_8037DD48, "");
strcat(upperTextLine, ": TIME ");
strcat(upperTextLine, gcpausemenu_TimeToA(itemscore_timeScores_getTotal()));
strcat(upperTextLine, ",");
strcat(upperTextLine, "");
strcpy(D_8037DD68, "");
strIToA(D_8037DD68, jiggyscore_total());
strcat(D_8037DD68, " JIGSAW");
strcpy(lowerTextLine, "");
strIToA(lowerTextLine, jiggyscore_total());
strcat(lowerTextLine, " JIGSAW");
if(jiggyscore_total() != 1){
strcat(D_8037DD68, "S");
strcat(lowerTextLine, "S");
}
strcat(D_8037DD68, ", ");
strIToA(D_8037DD68, itemscore_noteScores_getTotal());
strcat(D_8037DD68, " NOTE");
strcat(lowerTextLine, ", ");
strIToA(lowerTextLine, itemscore_noteScores_getTotal());
strcat(lowerTextLine, " NOTE");
if(itemscore_noteScores_getTotal() != 1){
strcat(D_8037DD68, "S");
strcat(lowerTextLine, "S");
}
strcat(D_8037DD68, ".");
strcat(D_8037DD68, "");
strcat(lowerTextLine, ".");
strcat(lowerTextLine, "");
}//L802C49AC
else{
D_8037DCCE[gamenum] = 0;
strcpy(D_8037DD48, "");
strcat(D_8037DD48, "GAME ");
strcpy(upperTextLine, "");
strcat(upperTextLine, "GAME ");
switch (gamenum){
case 0:
strIToA(D_8037DD48, 1);
strIToA(upperTextLine, 1);
break;
case 1:
strIToA(D_8037DD48, 3);
strIToA(upperTextLine, 3);
break;
case 2:
strIToA(D_8037DD48, 2);
strIToA(upperTextLine, 2);
break;
}//L802C4A40
strcat(D_8037DD48, ": EMPTY");
strcpy(D_8037DD68, "");
strcat(upperTextLine, ": EMPTY");
strcpy(lowerTextLine, "");
}//L802C4A68
sp20[0] = D_8037DD48;\
sp20[1] = D_8037DD68;
sp20[0] = upperTextLine;\
sp20[1] = lowerTextLine;
func_8031877C(chGameSelectBottomZoombox);
gczoombox_setStrings(chGameSelectBottomZoombox, 2, sp20);
gczoombox_maximize(chGameSelectBottomZoombox);

View File

@ -257,7 +257,7 @@ void chSnowman_update(Actor *this){
else if(
map_get() != MAP_27_FP_FREEZEEZY_PEAK
|| func_8038DD34(local->unk0) == 0
|| fileProgressFlag_get(0x13)
|| fileProgressFlag_get(FILEPROG_13_COMPLETED_TWINKLIES_MINIGAME)
){//L802E2318
if(0.0 < local->unk4){
if( (globalTimer_getTime() & 1)

View File

@ -6,7 +6,7 @@
extern void func_8030DBFC(u32, f32, f32, f32);
extern bool func_80309DBC(f32[3], f32[3], f32, f32 sp54[3], s32, s32);
extern void fileProgressFlag_set(s32, bool);
extern void fileProgressFlag_set(enum file_progress_e, bool);
extern void sfxsource_set_fade_distances(u8, f32, f32);
extern void sfxsource_set_position(u8, f32[3]);
extern void func_8030E2C4(u8);

View File

@ -428,7 +428,7 @@ void chMumbo_update(Actor *this) {
case 7: //L802D2704
chMumbo_func_802D186C(this);
if (volatileFlag_get(FILEPROG_11_HAS_MET_MUMBO) == 0) {
if (volatileFlag_get(VOLATILE_FLAG_11) == 0) {
if (map_get() == MAP_7A_GL_CRYPT) {
sp48 = chMumbo_withinHorzDistToPlayer(0x453, 0, 0xBC);
} else {
@ -436,7 +436,7 @@ void chMumbo_update(Actor *this) {
}
if (sp48 != 0) {
gcdialog_showText(ASSET_DA7_DIALOG_MUMBO_CCW_SUMMER, 7, NULL, NULL, NULL, NULL);
volatileFlag_set(FILEPROG_11_HAS_MET_MUMBO, TRUE);
volatileFlag_set(VOLATILE_FLAG_11, TRUE);
}
}
actor_loopAnimation(this);
@ -444,7 +444,7 @@ void chMumbo_update(Actor *this) {
case 8: //L802D2790
chMumbo_func_802D186C(this);
if (volatileFlag_get(FILEPROG_12_HAS_TRANSFORMED_BEFORE) == 0) {
if (volatileFlag_get(VOLATILE_FLAG_12) == 0) {
if (map_get() == MAP_7A_GL_CRYPT) {
sp48 = chMumbo_withinHorzDistToPlayer(0x453, 0, 0xBC);
} else {
@ -452,7 +452,7 @@ void chMumbo_update(Actor *this) {
}
if (sp48 != 0) {
gcdialog_showText(ASSET_DA8_DIALOG_MUMBO_CCW_AUTUMN, 7, NULL, NULL, NULL, NULL);
volatileFlag_set(FILEPROG_12_HAS_TRANSFORMED_BEFORE, TRUE);
volatileFlag_set(VOLATILE_FLAG_12, TRUE);
}
}
actor_loopAnimation(this);

View File

@ -13,7 +13,7 @@ extern void func_802EE6CC(f32[3], f32[3], s32[4], s32, f32, f32, s32, s32, s32);
extern void ml_vec3f_assign(f32[3], f32, f32, f32);
extern void func_802EE2E8(Actor *arg0, s32 arg1, s32 cnt, s32 arg3, f32 arg4, f32 arg5, f32 arg6);
extern void func_80319EA4(void);
extern void fileProgressFlag_set(s32, bool);
extern void fileProgressFlag_set(enum file_progress_e, bool);
void func_802D3D54(Actor *this);
void func_802D3DA4(Actor *this);
@ -50,7 +50,7 @@ s32 D_8036768C = 0;
s32 D_80367690 = 0;
s32 D_80367694 = 0; //enum map_e
s32 D_80367698 = 0;
s32 D_8036769C = 0; //enum file_progress_e
enum file_progress_e D_8036769C = 0;
s32 D_803676A0 = 0; //enum actor_e
f32 D_803676A4 = 0.0f;
s32 D_803676A8 = 0;
@ -59,26 +59,26 @@ u8 D_803676AC = 0;
ActorAnimationInfo D_803676B0[] = {
{0x000, 0.0f},
{0x000, 0.0f},
{0x0D4, 0.15f},
{0x0D5, 0.5f},
{ASSET_D4_ANIM_SWITCH_DOWN, 0.15f},
{ASSET_D5_ANIM_SWITCH_UP, 0.5f},
{0x000, 0.0f},
{0x000, 0.0f},
{0x0D4, 0.15f},
{0x0D5, 0.5f},
{0x0D5, 1e+8f},
{0x1E3, 0.73f},
{0x1E3, 1e+8f},
{0x1F0, 1.0f},
{0x1F1, 0.7f},
{0x1F1, 1e+8f},
{0x1F2, 1.0f},
{0x1F3, 0.4f},
{0x1F3, 1e+8f},
{ASSET_D4_ANIM_SWITCH_DOWN, 0.15f},
{ASSET_D5_ANIM_SWITCH_UP, 0.5f},
{ASSET_D5_ANIM_SWITCH_UP, 1e+8f},
{ASSET_1E3_ANIM_UNKNOWN, 0.73f},
{ASSET_1E3_ANIM_UNKNOWN, 1e+8f},
{ASSET_1F0_ANIM_UNKNOWN, 1.0f},
{ASSET_1F1_ANIM_UNKNOWN, 0.7f},
{ASSET_1F1_ANIM_UNKNOWN, 1e+8f},
{ASSET_1F2_ANIM_UNKNOWN, 1.0f},
{ASSET_1F3_ANIM_UNKNOWN, 0.4f},
{ASSET_1F3_ANIM_UNKNOWN, 1e+8f},
{0x000, 0.0f},
{0x217, 1e+8f},
{0x217, 0.3f},
{0x217, 1e+8f},
{0x217, 0.3f}
{ASSET_217_ANIM_UNKNOWN, 1e+8f},
{ASSET_217_ANIM_UNKNOWN, 0.3f},
{ASSET_217_ANIM_UNKNOWN, 1e+8f},
{ASSET_217_ANIM_UNKNOWN, 0.3f}
};
ActorInfo D_80367760 = { 0x26E, 0x2D9, 0x3B4, 0x1, NULL, func_802D3D54, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
@ -99,7 +99,20 @@ ActorInfo D_80367958 = { MARKER_162_BGS_WITCH_SWITCH, ACTOR_257_BGS_WITCH_SWITCH
ActorInfo D_8036797C = { MARKER_161_GV_WITCH_SWITCH, ACTOR_256_GV_WITCH_SWITCH, ASSET_4DC_MODEL_WITCH_SWITCH, 0x1, D_803676B0, func_802D4C0C, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
s32 D_803679A0[4] = {0x87, 0x87, 0x87, 0xA0};
s16 D_803679B0[] = {0x5, 0x90, 0xA, 0x93, 0xF,0x92, 0x14, 0x91, 0x19, 0x94, -1};
s16 D_803679B0[] = {
FILEPROG_5_BLUE_EGG_TEXT,
FILEPROG_90_PAID_TERMITE_COST,
FILEPROG_A_HONEYCOMB_TEXT,
FILEPROG_93_PAID_CROC_COST,
FILEPROG_F_HAS_TOUCHED_PIRAHANA_WATER,
FILEPROG_92_PAID_WALRUS_COST,
FILEPROG_14_HAS_TOUCHED_FP_ICY_WATER,
FILEPROG_91_PAID_PUMPKIN_COST,
FILEPROG_19_MMM_WITCH_SWITCH_JIGGY_PRESSED,
FILEPROG_94_PAID_BEE_COST,
-1
};
Struct_core2_4C020_0 D_803679C8[] = {
{0, 600, 1200, 1900},
{-580, 0, 1550, 2200},
@ -648,7 +661,7 @@ void func_802D4A9C(Actor *this, s32 arg1){
func_802D4928(this, arg1, 2, 3);
}
void func_802D4AC0(Actor *this, s32 arg1, s32 arg2) {
void func_802D4AC0(Actor *this, s32 arg1, enum file_progress_e arg2) {
if (fileProgressFlag_get(arg2)) {
if (arg1 & 0x800000) {
fileProgressFlag_set(arg1 + 0xFF800000, 1);

View File

@ -15,8 +15,8 @@ ActorInfo D_80367E70= {
/* .code */
void func_802DA9A0(ActorMarker *caller, enum asset_e text_id, s32 arg2){
s32 flag;
s32 tmp;
enum file_progress_e flag;
enum file_progress_e tmp;
if(level_get() == LEVEL_A_MAD_MONSTER_MANSION){
flag = FILEPROG_15_ENTER_MMM_TEXT;
}
@ -32,9 +32,9 @@ void func_802DA9A0(ActorMarker *caller, enum asset_e text_id, s32 arg2){
}
void func_802DAA14(Actor *this){
s32 flag;
s32 tmp;
s32 text_id;
enum file_progress_e flag;
s32 tmp; // file_progress_e OR asset_e
enum asset_e text_id;
if(volatileFlag_get(VOLATILE_FLAG_1) || volatileFlag_get(VOLATILE_FLAG_1F_IN_CHARACTER_PARADE)){
marker_despawn(this->marker);
@ -69,13 +69,13 @@ void func_802DAA14(Actor *this){
if(!this->has_met_before){
if(level_get() == LEVEL_A_MAD_MONSTER_MANSION){
text_id = 0xadc;
text_id = ASSET_ADC_DIALOG_UNKNOWN;
}
else{
if(map_get() == MAP_69_GL_MM_LOBBY)
tmp = 0xf66;
tmp = ASSET_F66_DIALOG_UNKNOWN;
else
tmp = 0xf67;
tmp = ASSET_F67_DIALOG_UNKNOWN;
text_id = tmp;
}
gcdialog_showText(text_id, 4, NULL, this->marker, func_802DA9A0, NULL);

View File

@ -8,7 +8,7 @@ extern void func_8031CE70(f32 *arg0, enum map_e arg1, s32 arg2);
extern s32 fileProgressFlag_get(s32);
extern s32 fileProgressFlag_getN(s32 offset, s32 numBits);
extern void func_8031FFAC(void);
extern void fileProgressFlag_set(s32 index, s32 set);
extern void fileProgressFlag_set(enum file_progress_e index, s32 set);
extern void ml_vec3h_to_vec3f(f32 *, s32);
extern NodeProp *func_80304ED0(void*, f32 *);
extern void func_8031CD44(enum map_e, s32, f32, f32, s32);
@ -56,9 +56,9 @@ bool cutscene_skipGameOverCutsceneCheck(void) {
sp24 = func_8024E698(0);
if (mapSpecificFlags_get(0) != 0) {
fileProgressFlag_set(0xE1, 1);
fileProgressFlag_set(FILEPROG_E1_UNKNOWN, 1);
}
if ((sp24 == 1) && fileProgressFlag_get(0xE1) && !gctransition_8030BDC0()) {
if ((sp24 == 1) && fileProgressFlag_get(FILEPROG_E1_UNKNOWN) && !gctransition_8030BDC0()) {
if (!mapSpecificFlags_get(0xC)) {
mapSpecificFlags_set(0xC, TRUE);
func_802DC528(0, 0);
@ -302,7 +302,7 @@ void warp_gvEnterWaterPyramidUpper(s32 arg0, s32 arg1) {
}
void warp_gvEnterMazePyramid(s32 arg0, s32 arg1) {
if (fileProgressFlag_getN(0xF8, 2) == 3) {
if (fileProgressFlag_getN(FILEPROG_F8_KING_SANDYBUTT_PYRAMID_STATE, 2) == 3) {
func_8031CC8C(arg0, 0x1401);
}
}

View File

@ -1,16 +1,17 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "enums.h"
void func_8031FFAC(void);
void fileProgressFlag_set(s32 index, s32 set);
void fileProgressFlag_set(enum file_progress_e index, s32 set);
s32 bitfield_get_bit(u8 *array, s32 index);
s32 bitfield_get_n_bits(u8 *array, s32 offset, s32 numBits);
void bitfield_set_bit(u8 *array, s32 index, s32 set);
void bitfield_set_n_bits(u8 *array, s32 startIndex, s32 set, s32 length);
void volatileFlag_clear(void);
void volatileFlag_set(s32 arg0, s32 arg1);
s32 fileProgressFlag_getN(s32 offset, s32 numBits);
void volatileFlag_set(enum volatile_flags_e index, s32 set);
s32 fileProgressFlag_getN(enum file_progress_e offset, s32 numBits);
void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2);
void ml_vec3h_to_vec3f(f32 *, s32);
void func_8028F3D8(f32 *, f32, void(*)(ActorMarker *), ActorMarker *);
@ -109,11 +110,11 @@ bool fileProgressFlag_get(enum file_progress_e index) {
return bitfield_get_bit(gFileProgressFlags.unk8, index);
}
s32 fileProgressFlag_getN(s32 offset, s32 numBits) {
s32 fileProgressFlag_getN(enum file_progress_e offset, s32 numBits) {
return bitfield_get_n_bits(gFileProgressFlags.unk8, offset, numBits);
}
s32 fileProgressFlag_getAndSet(s32 index, s32 set) {
s32 fileProgressFlag_getAndSet(enum file_progress_e index, s32 set) {
s32 ret;
ret = fileProgressFlag_get(index);
@ -131,13 +132,13 @@ void func_8031FFAC(void) {
func_8031FEC0();
}
void fileProgressFlag_set(s32 index, s32 set) {
void fileProgressFlag_set(enum file_progress_e index, s32 set) {
bitfield_set_bit(gFileProgressFlags.unk8, index, set);
func_8031FC40();
func_8031FEC0();
}
void fileProgressFlag_setN(s32 startIndex, s32 set, s32 length) {
void fileProgressFlag_setN(enum file_progress_e startIndex, s32 set, s32 length) {
bitfield_set_n_bits(gFileProgressFlags.unk8, startIndex, set, length);
func_8031FC40();
func_8031FEC0();
@ -243,15 +244,15 @@ void func_803203A0(void) {
*obscured_addr = func_80320320();
}
s32 volatileFlag_get(s32 index) {
s32 volatileFlag_get(enum volatile_flags_e index) {
return bitfield_get_bit(gVolatileFlags.unk8, index);
}
s32 volatileFlag_getN(s32 index, s32 numBits) {
s32 volatileFlag_getN(enum volatile_flags_e index, s32 numBits) {
return bitfield_get_n_bits(gVolatileFlags.unk8, index, numBits);
}
s32 volatileFlag_getAndSet(s32 index, s32 arg1) {
s32 volatileFlag_getAndSet(enum volatile_flags_e index, s32 arg1) {
s32 temp_v0;
temp_v0 = volatileFlag_get(index);
@ -268,13 +269,13 @@ void volatileFlag_clear(void) {
func_803203A0();
}
void volatileFlag_set(s32 index, s32 set) {
void volatileFlag_set(enum volatile_flags_e index, s32 set) {
bitfield_set_bit(gVolatileFlags.unk8, index, set);
func_803202D0();
func_803203A0();
}
void volatileFlag_setN(s32 startIndex, s32 set, s32 length) {
void volatileFlag_setN(enum volatile_flags_e startIndex, s32 set, s32 length) {
bitfield_set_n_bits(gVolatileFlags.unk8, startIndex, set, length);
func_803202D0();
func_803203A0();

View File

@ -6,8 +6,8 @@
typedef struct {
s16 unk0;
s16 unk2;
s16 unk0; // enum volatile_flags_e
s16 unk2; // enum file_progress_e
}Struct_B5040;
void savedata_clear(u8 *savedata);
@ -15,43 +15,43 @@ s32 savedata_verify(s32 arg0, SaveData *savedata);
/* .data */
Struct_B5040 D_80370A20[] = {
{0x66, 0xFF},
{0x67, 0x100},
{0x68, 0x101},
{0x69, 0x102},
{0x6A, 0x103},
{0x6B, 0x104},
{0x6C, 0x105},
{0x6D, 0x106},
{0x6E, 0x107},
{0x6F, 0x108},
{0x70, 0x109},
{0x71, 0x10A},
{0x72, 0x10B},
{0x7D, 0x10C},
{0x7E, 0x10D},
{0x7F, 0x10E},
{0x80, 0x10F},
{0x81, 0x110},
{0x82, 0x111},
{0x83, 0x112},
{0x84, 0x113},
{0x85, 0x114},
{0x86, 0x115},
{0x87, 0x116},
{0x88, 0x117},
{0x89, 0x118},
{0x8A, 0x119},
{0x8B, 0x11A},
{0x8C, 0x11B},
{0x8D, 0x11C},
{0x8E, 0x11D},
{0x8F, 0x11E},
{0x90, 0x11F},
{0x91, 0x120},
{0x92, 0x121},
{0x93, 0x122},
{0x65, 0x123},
{VOLATILE_FLAG_66_SANDCASTLE_OPEN_DOOR_TWO, FILEPROG_FF_SANDCASTLE_OPEN_DOOR_TWO},
{VOLATILE_FLAG_67_SANDCASTLE_OPEN_DOOR_THREE, FILEPROG_100_SANDCASTLE_OPEN_DOOR_THREE},
{VOLATILE_FLAG_68_SANDCASTLE_OPEN_DOOR_FOUR, FILEPROG_101_SANDCASTLE_OPEN_DOOR_FOUR},
{VOLATILE_FLAG_69_SANDCASTLE_OPEN_DOOR_FIVE, FILEPROG_102_SANDCASTLE_OPEN_DOOR_FIVE},
{VOLATILE_FLAG_6A_SANDCASTLE_OPEN_DOOR_SIX, FILEPROG_103_SANDCASTLE_OPEN_DOOR_SIX},
{VOLATILE_FLAG_6B_SANDCASTLE_OPEN_DOOR_SEVEN, FILEPROG_104_SANDCASTLE_OPEN_DOOR_SEVEN},
{VOLATILE_FLAG_6C_SANDCASTLE_PUZZLE_COMPLETE_CC, FILEPROG_105_SANDCASTLE_PUZZLE_COMPLETE_CC},
{VOLATILE_FLAG_6D_SANDCASTLE_PUZZLE_COMPLETE_BGS, FILEPROG_106_SANDCASTLE_PUZZLE_COMPLETE_BGS},
{VOLATILE_FLAG_6E_SANDCASTLE_PUZZLE_COMPLETE_FP, FILEPROG_107_SANDCASTLE_PUZZLE_COMPLETE_FP},
{VOLATILE_FLAG_6F_SANDCASTLE_PUZZLE_COMPLETE_GV, FILEPROG_108_SANDCASTLE_PUZZLE_COMPLETE_GV},
{VOLATILE_FLAG_70_SANDCASTLE_PUZZLE_COMPLETE_MMM, FILEPROG_109_SANDCASTLE_PUZZLE_COMPLETE_MMM},
{VOLATILE_FLAG_71_SANDCASTLE_PUZZLE_COMPLETE_RBB, FILEPROG_10A_SANDCASTLE_PUZZLE_COMPLETE_RBB},
{VOLATILE_FLAG_72_SANDCASTLE_PUZZLE_COMPLETE_CCC, FILEPROG_10B_SANDCASTLE_PUZZLE_COMPLETE_CCC},
{VOLATILE_FLAG_7D_SANDCASTLE_RAISE_PIPES_TO_CC, FILEPROG_10C_SANDCASTLE_RAISE_PIPES_TO_CC},
{VOLATILE_FLAG_7E_SANDCASTLE_RAISE_PIPE_TO_BRENTILDA, FILEPROG_10D_SANDCASTLE_RAISE_PIPE_TO_BRENTILDA},
{VOLATILE_FLAG_7F_SANDCASTLE_OPEN_CC, FILEPROG_10E_SANDCASTLE_OPEN_CC},
{VOLATILE_FLAG_80_SANDCASTLE_REMOVE_GRILL_NEAR_BGS_JIGGY, FILEPROG_10F_SANDCASTLE_REMOVE_GRILL_NEAR_BGS_JIGGY},
{VOLATILE_FLAG_81_SANDCASTLE_CCC_JIGGY_PODIUM, FILEPROG_110_SANDCASTLE_CCC_JIGGY_PODIUM},
{VOLATILE_FLAG_82_SANDCASTLE_REMOVE_GRILL_AND_HAT_FROM_STATUE, FILEPROG_111_SANDCASTLE_REMOVE_GRILL_AND_HAT_FROM_STATUE},
{VOLATILE_FLAG_83_SANDCASTLE_REMOVE_ICE, FILEPROG_112_SANDCASTLE_REMOVE_ICE},
{VOLATILE_FLAG_84_SANDCASTLE_OPEN_BGS, FILEPROG_113_SANDCASTLE_OPEN_BGS},
{VOLATILE_FLAG_85_SANDCASTLE_REMOVE_BREAKABLE_WALLS, FILEPROG_114_SANDCASTLE_REMOVE_BREAKABLE_WALLS},
{VOLATILE_FLAG_86_SANDCASTLE_SHOCKSPRING_JUMP_UNLOCKED, FILEPROG_115_SANDCASTLE_SHOCKSPRING_JUMP_UNLOCKED},
{VOLATILE_FLAG_87_SANDCASTLE_OPEN_GV, FILEPROG_116_SANDCASTLE_OPEN_GV},
{VOLATILE_FLAG_88_SANDCASTLE_REMOVE_WEBS, FILEPROG_117_SANDCASTLE_REMOVE_WEBS},
{VOLATILE_FLAG_89_SANDCASTLE_REMOVE_GLASS_EYE, FILEPROG_118_SANDCASTLE_REMOVE_GLASS_EYE},
{VOLATILE_FLAG_8A_SANDCASTLE_FLIGHT_UNLOCKED, FILEPROG_119_SANDCASTLE_FLIGHT_UNLOCKED},
{VOLATILE_FLAG_8B_SANDCASTLE_OPEN_FP, FILEPROG_11A_SANDCASTLE_OPEN_FP},
{VOLATILE_FLAG_8C_SANDCASTLE_OPEN_MMM, FILEPROG_11B_SANDCASTLE_OPEN_MMM},
{VOLATILE_FLAG_8D_SANDCASTLE_REMOVE_CRYPT_GATE, FILEPROG_11C_SANDCASTLE_REMOVE_CRYPT_GATE},
{VOLATILE_FLAG_8E_SANDCASTLE_REMOVE_CRYPT_COFFIN_LID, FILEPROG_11D_SANDCASTLE_REMOVE_CRYPT_COFFIN_LID},
{VOLATILE_FLAG_8F_SANDCASTLE_REMOVE_GRATE_NEAR_WATER_SWITCH, FILEPROG_11E_SANDCASTLE_REMOVE_GRATE_NEAR_WATER_SWITCH},
{VOLATILE_FLAG_90_SANDCASTLE_OPEN_RBB, FILEPROG_11F_SANDCASTLE_OPEN_RBB},
{VOLATILE_FLAG_91_SANDCASTLE_REMOVE_GRILL_NEAR_RBB_JIGGY, FILEPROG_120_SANDCASTLE_REMOVE_GRILL_NEAR_RBB_JIGGY},
{VOLATILE_FLAG_92_SANDCASTLE_REMOVE_TUNNEL_GRILL_NEAR_RBB_JIGGY, FILEPROG_121_SANDCASTLE_REMOVE_TUNNEL_GRILL_NEAR_RBB_JIGGY},
{VOLATILE_FLAG_93_SANDCASTLE_OPEN_CCW, FILEPROG_122_SANDCASTLE_OPEN_CCW},
{VOLATILE_FLAG_65_CHEAT_ENTERED, FILEPROG_123_CHEAT_ENTERED},
{-1, 0x000}
};

View File

@ -54,7 +54,18 @@ extern s32 D_80371F90 = 0x7; //bottles bonus demo count
extern s32 D_80371F94 = 1;
extern s32 D_80371F98 = 3;
extern s32 D_80371F9C = 1;
extern u16 D_80371FA0[] = { 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC };
extern u16 D_80371FA0[] = {
FILEPROG_3_MUSIC_NOTE_TEXT,
FILEPROG_4_MUMBO_TOKEN_TEXT,
FILEPROG_5_BLUE_EGG_TEXT,
FILEPROG_6_RED_FEATHER_TEXT,
FILEPROG_7_GOLD_FEATHER_TEXT,
FILEPROG_8_ORANGE_TEXT,
FILEPROG_9_GOLD_BULLION_TEXT,
FILEPROG_A_HONEYCOMB_TEXT,
FILEPROG_B_EMPTY_HONEYCOMB_TEXT,
FILEPROG_C_EXTRA_LIFE_TEXT
};
//EB030:
/* .bss */

View File

@ -29,7 +29,7 @@ MapProgressFlagToDialogID fileProgressDialogMap[] = {
{ FILEPROG_BE_CHEATO_BLUEEGGS, 0xFA8},
{ FILEPROG_BF_CHEATO_REDFEATHERS, 0xFA9},
{ FILEPROG_C0_CHEATO_GOLDFEATHERS, 0xFAA},
{0x95, 0xB50},
{ FILEPROG_95_UNKNOWN, 0xB50},
{ FILEPROG_A7_NEAR_PUZZLE_PODIUM_TEXT, 0xF7B},
{ -1, -1}
};
@ -119,16 +119,16 @@ s32 volatileFlag_setAndTriggerDialog(enum volatile_flags_e id, s32 arg1) {
}
// 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) {
void volatileFlag_setAndTriggerDialog_0(enum volatile_flags_e arg0) {
volatileFlag_setAndTriggerDialog(arg0, 0);
}
// called for FFQ dialogs
void volatileFlag_setAndTriggerDialog_4(s32 arg0) {
void volatileFlag_setAndTriggerDialog_4(enum volatile_flags_e arg0) {
volatileFlag_setAndTriggerDialog(arg0, 4);
}
// called for WISHYWASHYBANJO dialog
void volatileFlag_setAndTriggerDialog_E(s32 arg0) {
void volatileFlag_setAndTriggerDialog_E(enum volatile_flags_e arg0) {
volatileFlag_setAndTriggerDialog(arg0, 0xE);
}

View File

@ -26,7 +26,7 @@ typedef struct struct_1A_s {
extern void func_802C5994(void);
extern void func_802E412C(s32, s32);
void volatileFlag_set(s32, s32);
void volatileFlag_set(enum volatile_flags_e, s32);
f32 func_8024DE1C(f32, f32, f32 *, f32 *);
void func_80310D2C(void);

View File

@ -178,12 +178,12 @@ s16 D_80393454[] = {
FILEPROG_37_MMM_OPEN,
FILEPROG_38_RBB_OPEN,
FILEPROG_39_CCW_OPEN,
0
NULL
};
s16 D_80393468[] = {
0,
0,
NULL,
NULL,
VOLATILE_FLAG_7F_SANDCASTLE_OPEN_CC,
VOLATILE_FLAG_84_SANDCASTLE_OPEN_BGS,
VOLATILE_FLAG_8B_SANDCASTLE_OPEN_FP,
@ -191,7 +191,7 @@ s16 D_80393468[] = {
VOLATILE_FLAG_8C_SANDCASTLE_OPEN_MMM,
VOLATILE_FLAG_90_SANDCASTLE_OPEN_RBB,
VOLATILE_FLAG_93_SANDCASTLE_OPEN_CCW,
0
NULL
};
s16 D_8039347C[] = {50, 180, 260, 350, 450, 640, 765, 810, 828, 846, 864, 882}; //notedoor_notes_required_to_open
@ -662,7 +662,7 @@ void func_80387730(Actor *this) {
this->alpha_124_19 = 0xFF;
this->unk1C[1] = 0.0f;
this->unk1C[2] = 3.5f;
if (fileProgressFlag_get(this->unkF4_8 + 0x39)) {
if (fileProgressFlag_get(this->unkF4_8 + FILEPROG_39_CCW_OPEN)) {
marker_despawn(this->marker);
return;
}
@ -681,7 +681,7 @@ void func_80387730(Actor *this) {
this->unk1C[1] = 0.0f;
this->unk1C[2] = 3.5f;
}
if (!fileProgressFlag_get(this->unkF4_8 + 0x39) && ability_isUnlocked(ABILITY_13_1ST_NOTEDOOR)) {
if (!fileProgressFlag_get(this->unkF4_8 + FILEPROG_39_CCW_OPEN) && ability_isUnlocked(ABILITY_13_1ST_NOTEDOOR)) {
player_getPosition(spAC);
if ((ml_distance_vec3f(spAC, this->position) < 500.0f) && (func_803114C4() != 0xF64)) {
func_802FACA4(0xC);
@ -711,7 +711,7 @@ void func_80387730(Actor *this) {
this->alpha_124_19 -= 7;
}
if (this->alpha_124_19 == 0) {
fileProgressFlag_set(this->unkF4_8 + 0x39, TRUE);
fileProgressFlag_set(this->unkF4_8 + FILEPROG_39_CCW_OPEN, TRUE);
marker_despawn(this->marker);
func_8028F918(0);
func_8028F66C(BS_INTR_35);
@ -825,14 +825,14 @@ void func_80387F1C(void)
}
}
void func_80387F78(Actor *this, u32 flag)
void func_80387F78(Actor *this, enum file_progress_e progress_flag)
{
if (this->unk1C[0] != 2.f)
{
if (this->unk1C[0] != 0 && fileProgressFlag_get(FILEPROG_9B_LAIR_CC_WITCH_SWITCH_EYES_ACTIVE))
{
u32 flagState = fileProgressFlag_get(flag);
fileProgressFlag_set(flag, TRUE);
u32 flagState = fileProgressFlag_get(progress_flag);
fileProgressFlag_set(progress_flag, TRUE);
if (flagState == FALSE
&& !jiggyscore_isSpawned(JIGGY_35_LAIR_CC_WITCH_SWITCH)
@ -844,7 +844,7 @@ void func_80387F78(Actor *this, u32 flag)
}
}
if (fileProgressFlag_get(flag))
if (fileProgressFlag_get(progress_flag))
{
this->position_y -= 4.5; // f64
@ -966,12 +966,12 @@ void func_803882B0(Actor *this)
}
}
void func_80388404(enum file_progress_e flag, enum sfx_e sfx, f32 a2, s32 a3)
void func_80388404(enum file_progress_e progress_flag, enum sfx_e sfx, f32 a2, s32 a3)
{
if (fileProgressFlag_get(flag) == FALSE)
if (fileProgressFlag_get(progress_flag) == FALSE)
func_8030E6A4(sfx, a2, a3);
fileProgressFlag_set(flag, TRUE);
fileProgressFlag_set(progress_flag, TRUE);
}
void func_80388450(Actor *actor1, Actor *actor2)
@ -1730,7 +1730,7 @@ void func_80389D08(Actor *this)
this->volatile_initialized = TRUE;
this->lifetime_value = 0;
if (fileProgressFlag_get(0xA5))
if (fileProgressFlag_get(FILEPROG_A5_LAIR_CRYPT_GATE_OPEN))
{
marker_despawn(this->marker);
return;

View File

@ -18,7 +18,7 @@ typedef struct {
typedef struct {
u8 cost;
u8 size_bits;
u16 progress_flag;
u16 progress_flag; // enum file_progress_e
}Struct_lair_86F0_0;
void func_8038F350(Actor *this, s32 next_state);

View File

@ -28,7 +28,7 @@ s32 func_80390084(void) {
s32 phi_s1;
for(phi_s0 = 0, phi_s1 = 0; phi_s0 < 3; phi_s0++){
if (fileProgressFlag_get(phi_s0 + 0xAD)) {
if (fileProgressFlag_get(phi_s0 + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED)) {
phi_s1++;
}
}
@ -44,8 +44,8 @@ void func_803900EC(ActorMarker *marker, enum asset_e text_id, s32 arg2){
sp1C = marker->id - 0x16D;
func_8028F918(0);
if (!fileProgressFlag_get(sp1C + 0xAD)) {
fileProgressFlag_set(sp1C + 0xAD, 1);
if (!fileProgressFlag_get(sp1C + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED)) {
fileProgressFlag_set(sp1C + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED, 1);
func_8025A6EC(COMUSIC_2B_DING_B, 28000);
}
}
@ -63,7 +63,8 @@ void func_80390174(ActorMarker *marker, s32 arg1) {
this = marker_getActor(marker);
sp28 = this->marker->id - 0x16D;
func_8028F94C(2, this->position);
if (fileProgressFlag_get(sp28 + 0xAD)) {
if (fileProgressFlag_get(sp28 + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED)) {
// cheato hint texts
gcdialog_showText(sp28 + 0xF83, 0xE, this->position, this->marker, func_803900EC, lair_func_803900DC);
return;
}
@ -106,7 +107,7 @@ void func_803902B8(Actor *this) {
}
this->unk38_0 = sp58;
sp58 = ml_vec3f_within_distance(this->position, sp5C, 400.0f);
if (fileProgressFlag_get(sp54 + 0xAD)) {
if (fileProgressFlag_get(sp54 + FILEPROG_AD_CHEATO_BLUEEGGS_UNLOCKED)) {
func_8024E55C(0, sp3C);
sp58 &= (sp3C[FACE_BUTTON(BUTTON_B)] == 1) || func_8028EC04();
}