Merge branch 'mr-origin-91'
This commit is contained in:
commit
6fb4f2b3f1
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ?
|
||||
|
|
|
@ -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)){
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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}
|
||||
};
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue