Merge branch 'master' of https://gitlab.com/banjo.decomp/banjo-kazooie into document/sandcastle

This commit is contained in:
Bl00D4NGEL
2024-10-10 22:18:47 +02:00
287 changed files with 4204 additions and 3793 deletions

View File

@@ -2241,7 +2241,7 @@ segments:
# # follows_vram: core2
# # exclusive_ram_id: overlay
# # subsegments:
# # - [0x10A6FD0, c, code_0] #DONE
# # - [0x10A6FD0, c, fight] #DONE
# # - [0x10A7150, c, chfinalboss]
# # - [0x10ACEA0, c, chbossjinjo] #DONE
# # - [0x10ADE60, c, chbossjinjobase] #DONE
@@ -2272,7 +2272,7 @@ segments:
# # - [0x10B31F0, .rodata, code_9850]
# # - [0x10B3200, .rodata, chjinjonator]
# # - [0x10B3310, .rodata, chbossshadow]
# # - [0x10B3320, .bss, code_0]
# # - [0x10B3320, .bss, fight]
# # - [0x10B3320, .bss, chfinalboss]
# # - [0x10B3320, .bss, chspellfireball]
# # - [0x10B3320, .bss, chjinjonator]

View File

@@ -2239,7 +2239,7 @@ segments:
follows_vram: core2
exclusive_ram_id: overlay
subsegments:
- [0x10A6FD0, c, code_0] #DONE
- [0x10A6FD0, c, fight] #DONE
- [0x10A7150, c, chfinalboss]
- [0x10ACEA0, c, chbossjinjo] #DONE
- [0x10ADE60, c, chbossjinjobase] #DONE
@@ -2270,7 +2270,7 @@ segments:
- [0x10B31F0, .rodata, chgreenblast]
- [0x10B3200, .rodata, chjinjonator]
- [0x10B3310, .rodata, chbossshadow]
- [0x10B3320, .bss, code_0]
- [0x10B3320, .bss, fight]
- [0x10B3320, .bss, chfinalboss]
- [0x10B3320, .bss, chspellfireball]
- [0x10B3320, .bss, chjinjonator]

View File

@@ -8,7 +8,7 @@
void func_80351A04(Struct68s *arg0, s32 arg1);
void func_80351A14(Struct68s *arg0, Struct68DrawMethod arg1);
void func_8035179C(Struct68s* arg0, f32 arg1[3]);
void func_8035179C_copyPosition(Struct68s* arg0, f32 arg1[3]);
void func_80351814(Struct68s *arg0, f32 arg1[3]);
f32 func_80351830(Struct68s *arg0);

View File

@@ -15,7 +15,7 @@ void particleEmitter_setParticleCallback(ParticleEmitter *this, void (*arg1)(Par
void func_802EFA20(ParticleEmitter *this, f32, f32);
void func_802EFA34(ParticleEmitter *this, f32);
void func_802EFA40(ParticleEmitter *this, f32 (*)[3]);
void func_802EFA78(ParticleEmitter *this, s32 arg1);
void particleEmitter_func_802EFA78(ParticleEmitter *this, s32 arg1);
void func_802EFF5C(ParticleEmitter *this, f32, f32, f32);
void func_802EFF7C(ParticleEmitter *this, f32, f32, f32);
void func_802EFF9C(ParticleEmitter *this, f32);

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 {
@@ -376,7 +414,62 @@ enum volatile_flags_e {
enum level_flags_e
{
LEVEL_FLAG_0_CC_TOKEN_TOOTH_OPEN = 0,
LEVEL_FLAG_1_CC_JIGGY_TOOTH_OPEN = 1
LEVEL_FLAG_1_CC_JIGGY_TOOTH_OPEN,
LEVEL_FLAG_2_TTC_UNKNOWN,
LEVEL_FLAG_3_RBB_UNKNOWN,
LEVEL_FLAG_4_RBB_UNKNOWN,
LEVEL_FLAG_5_TTC_UNKNOWN,
LEVEL_FLAG_6_GV_UNKNOWN,
LEVEL_FLAG_B_MM_UNKNOWN = 0xB,
LEVEL_FLAG_C_MM_UNKNOWN,
LEVEL_FLAG_D_MM_UNKNOWN,
LEVEL_FLAG_E_CC_UNKNOWN,
LEVEL_FLAG_10_CCW_UNKNOWN = 0x10,
LEVEL_FLAG_11_FP_UNKNOWN,
LEVEL_FLAG_12_FP_UNKNOWN,
LEVEL_FLAG_13_FP_UNKNOWN,
LEVEL_FLAG_14_TTC_UNKNOWN,
LEVEL_FLAG_15_GV_UNKNOWN,
LEVEL_FLAG_16_GV_UNKNOWN,
LEVEL_FLAG_17_GV_UNKNOWN,
LEVEL_FLAG_19_FP_UNKNOWN = 0x19,
LEVEL_FLAG_1A_UNKNOWN,
LEVEL_FLAG_1B_MMM_UNKNOWN,
LEVEL_FLAG_1C_MM_UNKNOWN,
LEVEL_FLAG_1D_TTC_UNKNOWN,
LEVEL_FLAG_1E_CC_UNKNOWN,
LEVEL_FLAG_1F_BGS_UNKNOWN,
LEVEL_FLAG_20_FP_UNKNOWN,
LEVEL_FLAG_21_GV_UNKNOWN,
LEVEL_FLAG_22_MMM_UNKNOWN,
LEVEL_FLAG_23_RBB_UNKNOWN,
LEVEL_FLAG_24_CCW_UNKNOWN,
LEVEL_FLAG_25_CCW_UNKNOWN,
LEVEL_FLAG_26_FP_UNKNOWN,
LEVEL_FLAG_27_RBB_UNKNOWN,
LEVEL_FLAG_28_RBB_UNKNOWN,
LEVEL_FLAG_29_FP_UNKNOWN,
LEVEL_FLAG_2A_FP_UNKNOWN,
LEVEL_FLAG_2B_FP_UNKNOWN,
LEVEL_FLAG_2C_FP_UNKNOWN,
LEVEL_FLAG_2D_RBB_UNKNOWN,
LEVEL_FLAG_2E_MMM_UNKNOWN,
LEVEL_FLAG_2F_MMM_UNKNOWN,
LEVEL_FLAG_30_RBB_UNKNOWN,
LEVEL_FLAG_31_FP_UNKNOWN,
LEVEL_FLAG_32_FP_UNKNOWN,
LEVEL_FLAG_33_MMM_UNKNOWN,
LEVEL_FLAG_34_UNKNOWN,
LEVEL_FLAG_38_CCW_UNKNOWN = 0x38,
LEVEL_FLAG_3C_LAIR_UNKNOWN = 0x3C,
LEVEL_FLAG_3D_LAIR_UNKNOWN,
LEVEL_FLAG_3E_UNKNOWN,
LEVEL_FLAG_3F_LAIR_UNKNOWN
};
enum transformation_e
@@ -1191,7 +1284,7 @@ enum sfx_e
SFX_12C_FF_QUESTION_START,
SFX_12D_CAMERA_ZOOM_CLOSEST,
SFX_12E_CAMERA_ZOOM_MEDIUM,
SFX_12F_FUUUCK_YOUUU,
SFX_12F_THAAANK_YOOOUUU,
// from her final fall
SFX_130_GRUNTY_ECHOING_CRY = 0x0130,
SFX_131_GRUNTY_WEEEGH,
@@ -2103,7 +2196,8 @@ enum actor_e
ACTOR_3A1_STONE_JINJO,
ACTOR_3A2_JINJO_STATUE_BASE,
ACTOR_3A5_BOSS_JINJO_ORANGE = 0x3A5,
ACTOR_3A4_BOSS_JINJO_BASE_IDX = 0x3A4,
ACTOR_3A5_BOSS_JINJO_ORANGE,
ACTOR_3A6_BOSS_JINJO_GREEN,
ACTOR_3A7_BOSS_JINJO_PINK,
ACTOR_3A8_BOSS_JINJO_YELLOW,
@@ -2112,6 +2206,7 @@ enum actor_e
ACTOR_3AA_GRUNTY_SPELL_GREEN_ATTACK = 0x3AA,
ACTOR_3AB_GRUNTY_SPELL_BARRIER,
ACTOR_3AC_JINJONATOR,
ACTOR_3AD_JINJONATOR_STATUE_BASE_ACTIVATOR,
ACTOR_3AF_GRUNTY_SHADOW = 0x3AF,
@@ -2130,6 +2225,48 @@ enum actor_e
ACTOR_3CA_ROCK_TRAPPING_GRUNTY = 0x3CA
};
enum bundle_e {
BUNDLE_0_MM_HUT_MUSIC_NOTE,
BUNDLE_1_MM_HUT_BLUE_EGG,
BUNDLE_2_MM_HUT_GRUBLIN,
BUNDLE_3_MM_HUT_JINJO_GREEN,
BUNDLE_4_MM_HUT_JIGGY,
BUNDLE_5__HONEYCOMB,
BUNDLE_6_MM_HUT_EXTRA_LIFE,
BUNDLE_7__JIGGY,
BUNDLE_8__JIGGY,
BUNDLE_9__JIGGY,
BUNDLE_A_BGS_HUT_SHOCKSPRING_PAD,
BUNDLE_B_BGS_HUT_MUSIC_NOTE,
BUNDLE_C_BGS_HUT_JIGGY,
BUNDLE_D__EMPTY_HONEYCOMB,
BUNDLE_E_YUMYUM_BLUE_EGG,
BUNDLE_F_YUMYUM_RED_FEATHER,
BUNDLE_10__JIGGY,
BUNDLE_11__UNKNOWN,
BUNDLE_12__JIGGY,
BUNDLE_13__MUSIC_NOTE,
BUNDLE_14__HONEYCOMB,
BUNDLE_15__JIGGY,
BUNDLE_16__HONEYCOMB,
BUNDLE_17__HONEYCOMB,
BUNDLE_18__HONEYCOMB,
BUNDLE_19__HONEYCOMB,
BUNDLE_1A__HONEYCOMB,
BUNDLE_1B__HONEYCOMB,
BUNDLE_1C__HONEYCOMB,
BUNDLE_1D__HONEYCOMB,
BUNDLE_1E__JIGGY,
BUNDLE_1F_SM_EMPTY_HONEYCOMB,
BUNDLE_20__UNKOWN,
BUNDLE_21__ICECUBE_B,
BUNDLE_22__HONEYCOMB,
BUNDLE_23__HONEYCOMB,
BUNDLE_24__HONEYCOMB,
BUNDLE_25__HONEYCOMB,
BUNDLE_26__HONEYCOMB
};
enum bs_e
{
BS_0_NONE = 0,
@@ -2328,6 +2465,17 @@ enum ttc_specific_flags {
TTC_SPECIFIC_FLAG_7_NIPPER_FIRST_MEET_TEXT_SHOWN = 0x7
};
enum mmm_specific_flags {
MMM_SPECIFIC_FLAG_0_UNKNOWN,
MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN,
MMM_SPECIFIC_FLAG_2_UNKNOWN,
MMM_SPECIFIC_FLAG_3_UNKNOWN,
MMM_SPECIFIC_FLAG_4_UNKNOWN,
MMM_SPECIFIC_FLAG_5_UNKNOWN,
MMM_SPECIFIC_FLAG_6_UNKNOWN,
MMM_SPECIFIC_FLAG_7_UNKNOWN
};
enum item_e
{
ITEM_0_HOURGLASS_TIMER = 0x0,
@@ -2755,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,
@@ -3451,10 +3606,10 @@ enum asset_e
ASSET_553_MODEL_BROOMSTICK_PIECE_SHORT,
ASSET_554_MODEL_BROOMSTICK_PIECE_LONG,
ASSET_555_MODEL_BROOMSTICK_PIECE_EYE,
// 556 Blast When Yellow Jinjo Hits Gruntilda
// 557 Blast When Orange Jinjo Hits Gruntilda
// 558 Blast When Green Jinjo Hits Gruntilda
// 559 Blast When Pink Jinjo Hits Gruntilda
ASSET_556_MODEL_YELLOW_JINJO_BLAST,
ASSET_557_MODEL_ORANGE_JINJO_BLAST,
ASSET_558_MODEL_GREEN_JINJO_BLAST,
ASSET_559_MODEL_PINK_JINJO_BLAST,
// 55a BK World Entry/Exit Pad
// 55b FP Boggy's Igloo
ASSET_55C_MODEL_PRESS_START_OVERLAY = 0x55C,
@@ -3898,6 +4053,8 @@ enum asset_e
ASSET_7E6_SPRITE_VILE,
ASSET_7E7_SPRITE_CROC_BANJO,
ASSET_7EA_SPRITE_RED_HEALTH = 0x7ea,
ASSET_7EE_JOKER_CARD = 0x7ee,
ASSET_7EF_SPRITE_BANJO,
ASSET_7F0_SPRITE_BOTTLES,
@@ -4058,7 +4215,16 @@ enum asset_e
ASSET_A84_DIALOG_TURBOTRAINERS_LEARN,
ASSET_A85_DIALOG_TURBOTRAINERS_REFRESHER,
ASSET_ADE_TEXT_LOGGO_AS_BEAR = 0xade,
ASSET_AD3_TEXT_UNKNOWN = 0xad3,
ASSET_AD4_TEXT_UNKNOWN,
ASSET_AD5_TEXT_UNKNOWN,
ASSET_AD6_TEXT_UNKNOWN,
ASSET_ADA_TEXT_UNKNOWN = 0xada,
ASSET_ADB_TEXT_UNKNOWN,
ASSET_ADC_DIALOG_UNKNOWN,
ASSET_ADD_TEXT_UNKNOWN,
ASSET_ADE_TEXT_LOGGO_AS_BEAR,
ASSET_ADF_TEXT_ENTER_LOGGO,
ASSET_AE0_TEXT_EXIT_LOGGO,
@@ -4276,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,
@@ -4290,6 +4458,48 @@ enum asset_e
ASSET_10E7_TEXT_UNKNOWN = 0x10E7,
ASSET_10ED_TEXT_FINALBOSS_PHASE_1_HIT_PLAYER_OPTION_1 = 0x10ED,
ASSET_10EE_TEXT_FINALBOSS_PHASE_1_HIT_PLAYER_OPTION_2,
ASSET_10EF_TEXT_FINALBOSS_PHASE_1_HIT_PLAYER_OPTION_3,
ASSET_10F0_TEXT_FINALBOSS_PHASE_1_HIT_PLAYER_OPTION_4,
ASSET_10F1_TEXT_FINALBOSS_PHASE_1_HIT_PLAYER_OPTION_5,
ASSET_10F2_TEXT_FINALBOSS_PHASE_1_OPTION_1 = 0x10F2,
ASSET_10F3_TEXT_FINALBOSS_PHASE_1_OPTION_2,
ASSET_10F4_TEXT_FINALBOSS_PHASE_1_OPTION_3,
ASSET_10F5_TEXT_FINALBOSS_PHASE_1_OPTION_4,
ASSET_10F6_TEXT_FINALBOSS_PHASE_1_OPTION_5,
ASSET_110B_TEXT_FINALBOSS_PHASE_2_OPTION_1 = 0x110B,
ASSET_110C_TEXT_FINALBOSS_PHASE_2_OPTION_2,
ASSET_110D_TEXT_FINALBOSS_PHASE_2_OPTION_3,
ASSET_110E_TEXT_FINALBOSS_PHASE_2_OPTION_4,
ASSET_110F_TEXT_FINALBOSS_PHASE_2_OPTION_5,
ASSET_111D_TEXT_FINALBOSS_PHASE_2_HIT_PLAYER_OPTION_1 = 0x111D,
ASSET_111E_TEXT_FINALBOSS_PHASE_2_HIT_PLAYER_OPTION_2,
ASSET_111F_TEXT_FINALBOSS_PHASE_2_HIT_PLAYER_OPTION_3,
ASSET_1120_TEXT_FINALBOSS_PHASE_2_HIT_PLAYER_OPTION_4,
ASSET_1121_TEXT_FINALBOSS_PHASE_2_HIT_PLAYER_OPTION_5,
ASSET_1122_TEXT_FINALBOSS_PHASE_3_OPTION_1 = 0x1122,
ASSET_1123_TEXT_FINALBOSS_PHASE_3_OPTION_2,
ASSET_1124_TEXT_FINALBOSS_PHASE_3_OPTION_3,
ASSET_1125_TEXT_FINALBOSS_PHASE_3_OPTION_4,
ASSET_1126_TEXT_FINALBOSS_PHASE_3_OPTION_5,
ASSET_113B_TEXT_FINALBOSS_PHASE_4_OPTION_1 = 0x113B,
ASSET_113C_TEXT_FINALBOSS_PHASE_4_OPTION_2,
ASSET_113D_TEXT_FINALBOSS_PHASE_4_OPTION_3,
ASSET_113E_TEXT_FINALBOSS_PHASE_4_OPTION_4,
ASSET_113F_TEXT_FINALBOSS_PHASE_4_OPTION_5,
ASSET_1154_TEXT_FINALBOSS_PHASE_5_OPTION_1 = 0x1154,
ASSET_1155_TEXT_FINALBOSS_PHASE_5_OPTION_2,
ASSET_1156_TEXT_FINALBOSS_PHASE_5_OPTION_3,
ASSET_1157_TEXT_FINALBOSS_PHASE_5_OPTION_4,
ASSET_1158_TEXT_FINALBOSS_PHASE_5_OPTION_5,
ASSET_146B_MODEL_TTC_TREASURE_TROVE_COVE_OPA = 0x146B,
ASSET_146C_MODEL_TTC_TREASURE_TROVE_COVE_XLU,
ASSET_146D_MODEL_TTC_NIPPERS_SHELL_OPA,
@@ -4568,8 +4778,8 @@ enum marker_e{
MARKER_AB_RUBEES_EGG_POT,
MARKER_AD_SLAPPA = 0xAD,
MARKER_AF_MAGIC_CARPET_SHADOW = 0xAF,
MARKER_AE_UNKNOWN,
MARKER_AF_MAGIC_CARPET_SHADOW,
MARKER_B0_MAGIC_CARPET_2,
MARKER_B1_SIR_SLUSH,
MARKER_B2_SNOWBALL,
@@ -4581,8 +4791,8 @@ enum marker_e{
MARKER_B9_FP_SNOWMAN_BUTTON = 0xB9,
MARKER_BA_XMAS_TREE,
MARKER_BC_GOBI_1 = 0xBC,
MARKER_BB_UNKNOWN,
MARKER_BC_GOBI_1,
MARKER_BD_GOBI_ROPE,
MARKER_BE_GOBI_ROCK,
MARKER_BF_GOBI_2,

View File

@@ -203,19 +203,19 @@ void func_8030DA44(u8);
void particleEmitter_emitInVolume(ParticleEmitter *, f32[3], f32[3], s32);
ParticleEmitter *particleEmitter_new(u32 capacity);
void particleEmitter_setParticleAccelerationRange(ParticleEmitter *, f32, f32, f32, f32, f32, f32);
void func_802EF9F8(ParticleEmitter *, f32);
void func_802EFA18(ParticleEmitter *, s32);
void particleEmitter_setAccelerationRange(ParticleEmitter *, f32, f32, f32, f32, f32, f32);
void particleEmitter_func_802EF9F8(ParticleEmitter *, f32);
void particleEmitter_func_802EFA18(ParticleEmitter *, s32);
void particleEmitter_setFade(ParticleEmitter *, f32, f32);
void particleEmitter_setDrawMode(ParticleEmitter *, s32);
void particleEmitter_setStartingFrameRange(ParticleEmitter *this, s32 arg1, s32 arg2);
void particleEmitter_setParticleFramerateRange(ParticleEmitter *, f32, f32);
void particleEmitter_setParticleSpawnPositionRange(ParticleEmitter *, f32, f32, f32, f32, f32, f32);
void particleEmitter_setSpawnPositionRange(ParticleEmitter *, f32, f32, f32, f32, f32, f32);
void particleEmitter_setStartingScaleRange(ParticleEmitter *, f32, f32);
void particleEmitter_setFinalScaleRange(ParticleEmitter *, f32, f32);
void particleEmitter_setScaleAndLifetimeRanges(ParticleEmitter *, ParticleScaleAndLifetimeRanges *);
void particleEmitter_setVelocityAndAccelerationRanges(ParticleEmitter *, struct41s *);
void particleEmitter_setPositionAndVelocityRanges(ParticleEmitter *this, struct42s *arg1);
void particleEmitter_setVelocityAndAccelerationRanges(ParticleEmitter *, ParticleSettingsVelocityAcceleration *);
void particleEmitter_setPositionAndVelocityRanges(ParticleEmitter *this, ParticleSettingsVelocityPosition *arg1);
void particleEmitter_setAngularVelocityRange(ParticleEmitter *, f32, f32, f32, f32, f32, f32);
void particleEmitter_setSpawnIntervalRange(ParticleEmitter *, f32, f32);
void particleEmitter_setParticleLifeTimeRange(ParticleEmitter *, f32, f32);
@@ -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);
@@ -406,7 +406,7 @@ int func_80328A2C(Actor *, f32, s32, f32);
void subaddie_set_state(Actor *, u32);
ActorMarker *func_8032B16C(enum jiggy_e jiggy_id);
int subaddie_maybe_set_state(Actor *, s32, f32);
void subaddie_set_state_with_direction(Actor * this, s32 myAnimId, f32 arg2, s32 direction);
void subaddie_set_state_with_direction(Actor * this, s32 myAnimId, f32 anim_start_position, s32 direction);
bool subaddie_maybe_set_state_position_direction(Actor *, s32, f32, s32, f32 );
void func_80328CEC(Actor *, s32, s32, s32);
void func_80328FB0(Actor *, f32);
@@ -499,7 +499,7 @@ void actor_playAnimationOnce(Actor *);
void actor_loopAnimation(Actor *);
/* used in fight */
void func_80326224(Actor *this);
void actor_update_func_80326224(Actor *this);
void func_802F9FD0(s32, f32, f32, f32);
void func_80324D54(f32, enum sfx_e, f32, s32, f32 [3], f32, f32);
@@ -526,7 +526,7 @@ extern void subaddie_set_state_forward(Actor *, s32);
extern BKModelBin *marker_loadModelBin(ActorMarker *this);
extern Struct70s *func_8034C2C4(ActorMarker *marker, s32 arg1);
extern void func_80326310(Actor *this);
extern void func_80326310(Actor *this); // actor_setBlendStateFadeOut ??
extern ActorMarker *marker_init(s32 *pos, MarkerDrawFunc draw_func, int arg2, int marker_id, int arg4);
extern s32 asset_getFlag(enum asset_e arg0);
extern void spawnableActorList_add(ActorInfo *arg0, Actor *(*arg1)(s32[3], s32, ActorInfo *, u32), u32 arg2);
@@ -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,10 +165,10 @@ 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;
u32 unk38_31:10; // hit count for jinjo base in fight
u32 unk38_21:9;
u32 unk38_13:9;
u32 stored_animctrl_playbackType_:3; //animctrlPlaybackType
@@ -230,10 +230,12 @@ typedef struct actor_s{
u32 unkF4_22:1;
u32 initialized:1; //unkF4_21;
u32 unkF4_20:12;
u32 unkF4_8:9;
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;
ActorMarker *unk100; // child actor marker ?
ActorMarker *unk104;
Struct62s *unk108;
// void ( *unk108)(struct actorMarker_s *, s32); //saved from marker->collisionFunc

View File

@@ -384,41 +384,41 @@ typedef struct particle_scale_and_lifetime_ranges_s{
} ParticleScaleAndLifetimeRanges;
typedef struct struct_32_s{
f32 unk0[3];
f32 unkC[3];
} struct32s;
f32 min[3];
f32 max[3];
} ParticleSettingsVelocity;
typedef struct struct_33_s{
f32 unk0[3];
f32 unkC[3];
} struct33s;
f32 min[3];
f32 max[3];
} ParticleSettingsAcceleration;
typedef struct struct_34_s{
f32 unk0[3];
f32 unkC[3];
} struct34s;
f32 min[3];
f32 max[3];
} ParticleSettingsSpawnPosition;
typedef struct struct_40_s{
ParticleScaleAndLifetimeRanges unk0;
f32 unk28;
f32 unk2C;
} struct40s;
ParticleScaleAndLifetimeRanges scale_and_lifetime;
f32 drawmode;
f32 count;
} ParticleSettingsScaleAndLifetimeDrawModeEmitCount;
typedef struct struct_41_s{
struct32s unk0;
struct33s unk18;
} struct41s;
ParticleSettingsVelocity velocity;
ParticleSettingsAcceleration acceleration;
} ParticleSettingsVelocityAcceleration;
typedef struct struct_42_s{
struct32s unk0;
struct34s unk18;
} struct42s;
ParticleSettingsVelocity velocity;
ParticleSettingsSpawnPosition spawn_position;
} ParticleSettingsVelocityPosition;
typedef struct struct_43_s{
struct32s unk0;
struct33s unk18;
struct34s unk30;
} struct43s;
ParticleSettingsVelocity velocity;
ParticleSettingsAcceleration acceleration;
ParticleSettingsSpawnPosition spawn_position;
} ParticleSettingsVelocityAccelerationPosition;
typedef struct {
u32 unk0_31:11;
@@ -593,7 +593,7 @@ typedef struct struct_68_s{
Struct68DrawMethod unk8;
BKModelBin *unkC;
u8 pad10[0x4];
f32 unk14[3]; //position
f32 position[3];
f32 unk20[3]; //rotation
f32 unk2C; //scale
u8 unk30;

View File

@@ -17,7 +17,7 @@ lair_func_8038CD48 = 0x8038CD48;
lair_func_8038CF18 = 0x8038CF18;
lair_func_8038E0B0 = 0x8038E0B0;
lair_func_8038E768 = 0x8038E768;
fight_func_803863F0 = 0x803863F0;
fight_addSpawnableActors = 0x803863F0;
cutscene_func_8038C4E0 = 0x8038C4E0;
chmole_learnedAllSpiralMountainAbilities = 0x802DA498;

View File

@@ -10,7 +10,7 @@ void func_8038FCB0(Actor *);
/* .data */
ActorInfo D_80390D70 = {MARKER_DC_BIG_ALLIGATOR, ACTOR_F6_BIG_ALLIGATOR, ASSET_397_MODEL_BIG_ALLIGATOR, 0x01, NULL,
func_8038FCB0, func_80326224, actor_draw,
func_8038FCB0, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

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

@@ -18,8 +18,8 @@ ActorAnimationInfo D_80390B90[] = {
{ASSET_D5_ANIM_SWITCH_UP, 0.5f},
{ASSET_D5_ANIM_SWITCH_UP, 1e+8f}
};
ActorInfo D_80390BD8 = {MARKER_F5_BGS_ELEVATED_WALKWAY_SWITCH, ACTOR_14E_BGS_ELEVATED_WALKWAY_SWITCH, ASSET_3F5_BGS_JIGGY_SWITCH, 1, D_80390B90, func_8038EEA4, func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_80390BFC = {MARKER_FD_BGS_MAZE_SWITCH, ACTOR_1FB_BGS_MAZE_SWITCH, ASSET_3F5_BGS_JIGGY_SWITCH, 1, D_80390B90, func_8038F06C, func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_80390BD8 = {MARKER_F5_BGS_ELEVATED_WALKWAY_SWITCH, ACTOR_14E_BGS_ELEVATED_WALKWAY_SWITCH, ASSET_3F5_BGS_JIGGY_SWITCH, 1, D_80390B90, func_8038EEA4, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_80390BFC = {MARKER_FD_BGS_MAZE_SWITCH, ACTOR_1FB_BGS_MAZE_SWITCH, ASSET_3F5_BGS_JIGGY_SWITCH, 1, D_80390B90, func_8038F06C, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
void func_8038EE50(void){
f32 sp24[3];

View File

@@ -31,7 +31,7 @@ ActorAnimationInfo D_803907CC[] = {
};
ActorInfo D_80390804 ={MARKER_FC_CROCTUS, ACTOR_1FA_CROCTUS, ASSET_425_MODEL_CROCTUS,
1, D_803907CC,
func_80387FD4, func_80326224, func_8038860C,
func_80387FD4, actor_update_func_80326224, func_8038860C,
0, 0, 0.0f, 0
};

View File

@@ -88,7 +88,7 @@ void func_8038FD9C(Actor *this){
switch(this->state){
case 1:
if(this->marker->unk2C_2)
func_80326224(this);
actor_update_func_80326224(this);
this->marker->propPtr->unk8_3 = 1;
this->unk1C[0] = 1.0f;
this->alpha_124_19 = 0xff;
@@ -99,7 +99,7 @@ void func_8038FD9C(Actor *this){
case 2:
if(this->marker->unk2C_2)
func_80326224(this);
actor_update_func_80326224(this);
this->marker->propPtr->unk8_3 = 1;
this->unk1C[0] = 1.0f;
@@ -118,7 +118,7 @@ void func_8038FD9C(Actor *this){
break;
case 3:
if (this->marker->unk2C_2) {
func_80326224(this);
actor_update_func_80326224(this);
}
this->marker->propPtr->unk8_3 = FALSE;
this->unk1C[0] = 0.0f;

View File

@@ -8,7 +8,7 @@ extern void player_stateTimer_set(enum state_timer_e, f32);
extern f32 player_stateTimer_get(enum state_timer_e);
void spawnQueue_bundle_f32(u32,f32,f32,f32);
Actor *spawnQueue_bundle_f32(u32,f32,f32,f32);
void subaddie_set_state(Actor *, u32);
/* local declarations */
@@ -24,10 +24,17 @@ ActorAnimationInfo D_80390B30[4] = {
{ASSET_4E_ANIM_MUDHUT_SMASH, 1000000.0f}
};
u32 D_80390B50[6] = {0xA, 0xA, 0xB, 0xA, 0xA, 0xC};
enum bundle_e D_80390B50[6] = {
BUNDLE_A_BGS_HUT_SHOCKSPRING_PAD,
BUNDLE_A_BGS_HUT_SHOCKSPRING_PAD,
BUNDLE_B_BGS_HUT_MUSIC_NOTE,
BUNDLE_A_BGS_HUT_SHOCKSPRING_PAD,
BUNDLE_A_BGS_HUT_SHOCKSPRING_PAD,
BUNDLE_C_BGS_HUT_JIGGY
};
ActorInfo D_80390B68 = {MARKER_D5_BGS_MUD_HUT, ACTOR_C_MUD_HUT, ASSET_7D8_MODEL_MM_HUT_TOP, 0x01, D_80390B30,
chmudhut_update, func_80326224, chmudhut_draw,
chmudhut_update, actor_update_func_80326224, chmudhut_draw,
0, 0, 0.0f, 0
};
@@ -104,13 +111,11 @@ void chmudhut_update(Actor *this){
func_8025A6EC(COMUSIC_2D_PUZZLE_SOLVED_FANFARE, 28000);
}
__spawnQueue_add_1((GenFunction_1)func_8038EB4C, reinterpret_cast(s32, this->marker));
if(tmp < 5){
__spawnQueue_add_4((GenFunction_4)spawnQueue_bundle_f32, D_80390B50[tmp],
reinterpret_cast(s32, diffPos[0]),
reinterpret_cast(s32, diffPos[1]),
reinterpret_cast(s32, diffPos[2])
);
} else {
if (tmp < 5) {
__spawnQueue_add_4((GenFunction_4) spawnQueue_bundle_f32, D_80390B50[tmp], reinterpret_cast(s32, diffPos[0]), reinterpret_cast(s32, diffPos[1]), reinterpret_cast(s32, diffPos[2]));
}
else {
jiggy_spawn(JIGGY_23_BGS_HUTS, diffPos);
}
}

View File

@@ -28,27 +28,27 @@ ActorAnimationInfo D_803906D8[4] = {
};
ActorInfo D_803906F8 = {MARKER_6E_PINK_EGG_LARGEST, ACTOR_5B_PINK_EGG_LARGEST, ASSET_380_MODEL_PINK_EGG_LARGEST, 0x01, D_803906D8,
chpinkegg_update, func_80326224, chpinkegg_draw,
chpinkegg_update, actor_update_func_80326224, chpinkegg_draw,
0, 0x2CC, 6.0f, 0
};
ActorInfo D_8039071C = {MARKER_D6_PINK_EGG_LARGE, ACTOR_ED_PINK_EGG_LARGE, ASSET_381_MODEL_PINK_EGG_LARGE, 0x01, D_803906D8,
chpinkegg_update, func_80326224, chpinkegg_draw,
chpinkegg_update, actor_update_func_80326224, chpinkegg_draw,
0, 0x2CC, 5.0f, 0
};
ActorInfo D_80390740 = {MARKER_D7_PINK_EGG_MEDIUM, ACTOR_EE_PINK_EGG_MEDIUM, ASSET_382_MODEL_PINK_EGG_MEDIUM, 0x01, D_803906D8,
chpinkegg_update, func_80326224, chpinkegg_draw,
chpinkegg_update, actor_update_func_80326224, chpinkegg_draw,
0, 0x2CC, 4.0f, 0
};
ActorInfo D_80390764 = {MARKER_D8_PINK_EGG_SMALL, ACTOR_EF_PINK_EGG_SMALL, ASSET_383_MODEL_PINK_EGG_SMALL, 0x01, D_803906D8,
chpinkegg_update, func_80326224, chpinkegg_draw,
chpinkegg_update, actor_update_func_80326224, chpinkegg_draw,
0, 0x2CC, 3.0f, 0
};
ActorInfo D_80390788 = {MARKER_D9_PINK_EGG_SMALLEST, ACTOR_F0_PINK_EGG_SMALLEST, ASSET_384_MODEL_PINK_EGG_SMALLEST, 0x01, D_803906D8,
chpinkegg_update, func_80326224, chpinkegg_draw,
chpinkegg_update, actor_update_func_80326224, chpinkegg_draw,
0, 0x2CC, 2.0f, 0
};

View File

@@ -29,7 +29,7 @@ ActorAnimationInfo BGS_D_80390C20[] = {
};
ActorInfo D_80390C40 = {MARKER_6C_TANKTUP, ACTOR_E8_TANKTUP, ASSET_3EE_TANKTUP, 0x01, BGS_D_80390C20,
func_8038F6A4, func_80326224, actor_draw,
func_8038F6A4, actor_update_func_80326224, actor_draw,
0, 0x80, 0.0f, 0
};

View File

@@ -301,7 +301,7 @@ void func_80389F08(ActorMarker *marker) {
if (var_s2 < 3) {
bundle_setYaw(vile->yaw + (f32) (i * 30));
bundle_setRandomVelocity(2.0f);
bundle_spawn_f32(6, vile->position);
bundle_spawn_f32(BUNDLE_6_MM_HUT_EXTRA_LIFE, vile->position);
var_s2 += 1;
} else {
item_inc(ITEM_16_LIFE);

View File

@@ -17,7 +17,7 @@ ActorAnimationInfo D_80390C70[3] = {
};
ActorInfo D_80390C88 = {MARKER_6D_TANKTUP_LEG, ACTOR_E9_TANKTUP_LEG_FL, ASSET_3EF_MODEL_TANKTUP_LEG_FL, 0x01, D_80390C70,
func_8038FBF8, func_80326224, actor_draw,
func_8038FBF8, actor_update_func_80326224, actor_draw,
0, 0x166, 0.0f, 0
};
u8 pad_80390CCC[4] = {0};
@@ -29,7 +29,7 @@ ActorAnimationInfo BGS_D_80390CB0[3] = {
};
ActorInfo D_80390CC8 = {MARKER_6D_TANKTUP_LEG, ACTOR_EA_TANKTUP_LEG_BL, ASSET_3F0_MODEL_TANKTUP_LEG_BL, 0x01, BGS_D_80390CB0,
func_8038FBF8, func_80326224, actor_draw,
func_8038FBF8, actor_update_func_80326224, actor_draw,
0, 0x166, 0.0f, 0
};
u8 pad_80390CEC[4] = {0};
@@ -41,7 +41,7 @@ ActorAnimationInfo BGS_D_80390CF0[3] = {
};
ActorInfo D_80390D08 = {MARKER_6D_TANKTUP_LEG, ACTOR_EB_TANKTUP_LEG_FR, ASSET_3F1_MODEL_TANKTUP_LEG_FR, 0x01, BGS_D_80390CF0,
func_8038FBF8, func_80326224, actor_draw,
func_8038FBF8, actor_update_func_80326224, actor_draw,
0, 0x166, 0.0f, 0
};
u8 pad_80390C2C[4] = {0};
@@ -53,7 +53,7 @@ ActorAnimationInfo D_80390C30[3] = {
};
ActorInfo D_80390D48 = {MARKER_6D_TANKTUP_LEG, ACTOR_EC_TANKTUP_LEG_BR, ASSET_3F2_MODEL_TANKTUP_LEG_BR, 0x01, D_80390C30,
func_8038FBF8, func_80326224, actor_draw,
func_8038FBF8, actor_update_func_80326224, actor_draw,
0, 0x166, 0.0f, 0
};

View File

@@ -29,14 +29,14 @@ Struct_CC_1120_0 D_80389B50[] = {
ActorInfo D_80389B90 = {
0x4E, ACTOR_101_CLANKER_TOKEN_TOOTH, ASSET_891_MODEL_CLANKER_TOKEN_TOOTH_OPEN,
0, NULL,
chTooth_update, func_80326224, actor_draw,
chTooth_update, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
ActorInfo D_80389BB4 = {
0x4F, ACTOR_102_CLANKER_JIGGY_TOOTH, ASSET_893_MODEL_CLANKER_JIGGY_TOOTH_OPEN,
0, NULL,
chTooth_update, func_80326224, actor_draw,
chTooth_update, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -15,7 +15,7 @@ void func_803864D4(Actor *this);
/* .data */
ActorInfo D_80389AA0 = {
MARKER_4B_CC_SCREW, ACTOR_43_CLACKER_SCREW, ASSET_890_MODEL_SCREW, 0, NULL,
func_803864D4, func_80326224 , actor_draw,
func_803864D4, actor_update_func_80326224 , actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -121,7 +121,7 @@ void CC_func_80387A40(Struct_CC_13C0_1* arg0, Struct68s* arg1, f32 arg2) {
}
}
if ((arg0->unk4 == 0) || (arg0->unk4 == 1)) {
func_8035179C(arg1, sp38);
func_8035179C_copyPosition(arg1, sp38);
func_80351814(arg1, sp2C);
sp44[0] = 0.0f;
sp44[1] = 0.0f;

View File

@@ -23,7 +23,7 @@ void func_80386B28(Actor* this);
/* .data */
ActorInfo D_80389AD0 = {
MARKER_4A_CC_KEY, ACTOR_3C_CC_KEY, ASSET_429_MODEL_CC_KEY, 0, NULL,
func_80386B28, func_80326224, actor_draw,
func_80386B28, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -14,14 +14,14 @@ void func_803870F8(Actor *this);
extern ActorInfo D_80389B00 = {
MARKER_4C_CLANKER_TOKEN_TOOTH_EXT, ACTOR_44_CLANKER_TOKEN_TOOTH_EXTERIOR, ASSET_309_MODEL_CLANKER_TOKEN_TOOTH_EXTERIOR,
0, NULL,
func_803870F8, func_80326224, actor_draw,
func_803870F8, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
extern ActorInfo D_80389B24 = {
MARKER_4D_CLANKER_JIGGY_TOOTH_EXT, ACTOR_45_CLANKER_JIGGY_TOOTH_EXTERIOR, ASSET_30A_MODEL_CLANKER_JIGGY_TOOTH_EXTERIOR,
0, NULL,
func_803870F8, func_80326224, actor_draw,
func_803870F8, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
@@ -39,7 +39,7 @@ void CC_func_80386FE0(Actor *this, s32 next_state){
}
else if(this->state == 3){
if(prev_state == 2){
levelSpecificFlags_set((local->unk0 == 1) ? 0 : 1, TRUE);
levelSpecificFlags_set((local->unk0 == 1) ? LEVEL_FLAG_0_CC_TOKEN_TOOTH_OPEN : LEVEL_FLAG_1_CC_JIGGY_TOOTH_OPEN, TRUE);
}
if(local->unk0 == 1){
this->yaw = -30.0f;

View File

@@ -57,13 +57,13 @@ ActorAnimationInfo chGrublinHood_animations[] = {
ActorInfo chGrublinHood = {
MARKER_1E2_GRUBLIN_HOOD, ACTOR_375_GRUBLIN_HOOD, ASSET_52C_MODEL_GRUBLIN_HOOD,
0x1, chGrublinHood_animations,
chgrublinhood_update, func_80326224, chgrublinhood_draw,
chgrublinhood_update, actor_update_func_80326224, chgrublinhood_draw,
2500, 0, 1.0f, 0
};
/* .code */
void __chgrublinhood_emitHat(ParticleEmitter *pCtrl, Actor *actor, enum asset_e model_id){
static struct43s D_8038F9AC = {
static ParticleSettingsVelocityAccelerationPosition D_8038F9AC = {
{{-200.0f, 200.0f, -200.0f}, {200.0f, 400.0f, 200.0f}},
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}},
{{ -50.0f, 200.0f, -50.0f}, { 50.0f, 400.0f, 50.0f}}
@@ -74,7 +74,7 @@ void __chgrublinhood_emitHat(ParticleEmitter *pCtrl, Actor *actor, enum asset_e
-600.0f, -600.0f, -600.0f,
600.0f, 600.0f, 600.0f
);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_8038F9AC);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_8038F9AC);
particleEmitter_emitN(pCtrl, 1);
}

View File

@@ -11,7 +11,7 @@ void chVacationTextTrigger_update(Actor* this);
ActorInfo gChVacationTextTrigger = {
MARKER_1E3_VACATION_TEXT_TRIGGER, ACTOR_374_VACATION_TEXT_TRIGGER, 0x0,
0x0, NULL,
chVacationTextTrigger_update, func_80326224, func_80325340,
chVacationTextTrigger_update, actor_update_func_80326224, func_80325340,
0, 0, 0.0f, 0
};

View File

@@ -11,7 +11,7 @@ ActorInfo D_8038EB74 = { 0x1AC, 0x29A, 0x445, 0x0, NULL, func_803864B8, NULL, ac
void CCW_func_803863F0(Actor *this, s32 next_state){
if(next_state == 2){
FUNC_8030E8B4(SFX_2F_ORANGE_SPLAT, 1.0f, 32000, this->position, 500, 3000);
levelSpecificFlags_set(0x10, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_10_CCW_UNKNOWN, TRUE);
marker_despawn(this->marker);
}
this->state = next_state;
@@ -30,7 +30,8 @@ void func_803864B8(Actor *this){
this->marker->propPtr->unk8_3 = TRUE;
marker_setCollisionScripts(this->marker, NULL, NULL, func_80386468);
CCW_func_803863F0(this, 1);
if(levelSpecificFlags_get(0x10)){
if (levelSpecificFlags_get(LEVEL_FLAG_10_CCW_UNKNOWN)) {
marker_despawn(this->marker);
}
}

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

@@ -140,7 +140,7 @@ void chGobiCCW_update(Actor *this) {
this->has_met_before = FALSE;
local->unk4 = skeletalAnim_new();
local->spit_model = assetcache_get(ASSET_3F3_MODEL_GOBI_SPIT);
marker_setCollisionScripts(this->marker, 0, func_8038894C, 0);
marker_setCollisionScripts(this->marker, NULL, func_8038894C, NULL);
if(!jiggyscore_isSpawned(JIGGY_4D_CCW_FLOWER)) {
fileProgressFlag_set(FILEPROG_E5_CCW_FLOWER_AUTUMN, FALSE);
}
@@ -208,7 +208,7 @@ void chGobiCCW_update(Actor *this) {
}
if (this->state == 6) {
func_80326224(this);
actor_update_func_80326224(this);
if (0.99 < (f64) this->unk48) {
CCW_func_8038868C(this, 7);
}

View File

@@ -29,14 +29,14 @@ ActorAnimationInfo D_8038ED20[] = {
{ASSET_D4_ANIM_SWITCH_DOWN, 100000000.0f}
};
ActorInfo D_8038ED50 = { 0x133, 0x1E3, 0x52E, 0x1, NULL, func_80389268, func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038ED74 = { 0x132, 0x1E2, 0x4F5, 0x5, D_8038ED20, func_80388FD4, func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038ED98 = { 0x131, 0x16D, 0x52E, 0x1, NULL, func_80389268, func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038EDBC = { 0x130, 0x16C, 0x4F6, 0x5, D_8038ED20, func_80388FD4, func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038EDE0 = { 0x12F, 0x16B, 0x52E, 0x1, NULL, func_80389268, func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038EE04 = { 0x12E, 0x16A, 0x4F7, 0x5, D_8038ED20, func_80388FD4, func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038EE28 = { 0x12D, 0x169, 0x52E, 0x1, NULL, func_80389268, func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038EE4C = { 0x12C, 0x168, 0x4F8, 0x5, D_8038ED20, func_80388FD4, func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038ED50 = { 0x133, 0x1E3, 0x52E, 0x1, NULL, func_80389268, actor_update_func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038ED74 = { 0x132, 0x1E2, 0x4F5, 0x5, D_8038ED20, func_80388FD4, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038ED98 = { 0x131, 0x16D, 0x52E, 0x1, NULL, func_80389268, actor_update_func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038EDBC = { 0x130, 0x16C, 0x4F6, 0x5, D_8038ED20, func_80388FD4, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038EDE0 = { 0x12F, 0x16B, 0x52E, 0x1, NULL, func_80389268, actor_update_func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038EE04 = { 0x12E, 0x16A, 0x4F7, 0x5, D_8038ED20, func_80388FD4, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
ActorInfo D_8038EE28 = { 0x12D, 0x169, 0x52E, 0x1, NULL, func_80389268, actor_update_func_80326224, actor_drawFullDepth, 0, 0x4000, 0.0f, 0};
ActorInfo D_8038EE4C = { 0x12C, 0x168, 0x4F8, 0x5, D_8038ED20, func_80388FD4, actor_update_func_80326224, actor_draw, 0, 0, 0.0f, 0};
/* .code */
s32 func_80388EF0(Actor *this){
@@ -90,7 +90,7 @@ void func_80388FD4(Actor *this) {
subaddie_set_state_with_direction(this, 4, 0.999f, 1);
actor_collisionOff(this);
} else {
marker_setCollisionScripts(this->marker, 0, &func_80388F50, 0);
marker_setCollisionScripts(this->marker, NULL, &func_80388F50, NULL);
}
this->unk38_0 = FALSE;
this->volatile_initialized = TRUE;

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

@@ -76,7 +76,7 @@ void func_8038AEBC(Actor *this) {
}
}
if (this->state == 2) {
func_80326224(this);
actor_update_func_80326224(this);
skeletalAnim_getProgressRange(this->unk148, &sp38, &sp34);
for(iPtr = &D_8038F254[0]; iPtr->unk0 > 0.0f; iPtr++){
if ((sp38 < iPtr->unk0) && (iPtr->unk0 <= sp34)) {
@@ -92,7 +92,7 @@ void func_8038AEBC(Actor *this) {
}
}
if (this->state == 3) {
func_80326224(this);
actor_update_func_80326224(this);
skeletalAnim_getProgressRange(this->unk148, &sp30, &sp2C);
if ((sp30 <= 0.5) && (sp2C >= 0.5)) {
jiggy_spawn(JIGGY_49_CCW_EYRIE, this->position);

View File

@@ -161,7 +161,7 @@ void chnabnut_update(Actor *this) {
chnabnut_setState(this, NABNUT_STATE_5_EXIT);
}
if (this->state == NABNUT_STATE_5_EXIT) {
func_80326224(this);
actor_update_func_80326224(this);
func_8028FC8C(this->position);
if (0.99 < this->unk48) {
chnabnut_setState(this, NABNUT_STATE_6_DESPAWN);

View File

@@ -47,7 +47,7 @@ void func_8038CA10(ActorMarker *marker) {
pCtrl = func_802EDD8C(local->unk4, 0.0f, this->position[1] + 500.0f);
particleEmitter_setStartingScaleRange(pCtrl, 0.04f, 0.05f);
particleEmitter_setFinalScaleRange(pCtrl, 0.18f, 0.2f);
particleEmitter_setParticleSpawnPositionRange(pCtrl, -10.0f, 0.0f, -10.0f, 10.0f, 20.0f, 10.0f);
particleEmitter_setSpawnPositionRange(pCtrl, -10.0f, 0.0f, -10.0f, 10.0f, 20.0f, 10.0f);
particleEmitter_setParticleVelocityRange(pCtrl, 0.0f, 31.0f, 0.0f, 0.0f, 37.0f, 0.0f);
particleEmitter_emitN(pCtrl, 1);
}
@@ -97,12 +97,15 @@ void func_8038CC4C(Actor *this) {
local->unk0++;
}
func_8038CB40(this, 1);
if (jiggyscore_isCollected(JIGGY_4B_CCW_GNAWTY)) {
levelSpecificFlags_set(0x25, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_25_CCW_UNKNOWN, TRUE);
}
if ((local->unk0->unk2 != 0) && levelSpecificFlags_get(0x25)) {
if ((local->unk0->unk2 != 0) && levelSpecificFlags_get(LEVEL_FLAG_25_CCW_UNKNOWN)) {
marker_despawn(this->marker);
}
return;
}

View File

@@ -85,9 +85,9 @@ void func_8038CFB4(Actor *this) {
this->has_met_before = FALSE;
func_8038CEB0(this, 1);
if (jiggyscore_isCollected(JIGGY_4B_CCW_GNAWTY) != 0) {
levelSpecificFlags_set(0x25, 1);
levelSpecificFlags_set(LEVEL_FLAG_25_CCW_UNKNOWN, TRUE);
}
if (levelSpecificFlags_get(0x25) != 0) {
if (levelSpecificFlags_get(LEVEL_FLAG_25_CCW_UNKNOWN) != FALSE) {
marker_despawn(this->marker);
}
return;
@@ -121,7 +121,8 @@ void func_8038CFB4(Actor *this) {
this->has_met_before = TRUE;
}
}
if (levelSpecificFlags_get(0x25) != 0) {
if (levelSpecificFlags_get(LEVEL_FLAG_25_CCW_UNKNOWN) != FALSE) {
func_8038CEB0(this, 2);
}
}
@@ -133,7 +134,7 @@ void func_8038CFB4(Actor *this) {
}
if (this->state == 3) {
func_80326224(this);
actor_update_func_80326224(this);
if (0.99 < (f64) this->unk48) {
func_8038CEB0(this, 4);
}

View File

@@ -39,9 +39,10 @@ void func_8038D2B0(Actor *this, s32 next_state) {
}
Actor *func_8038D30C(ActorMarker* marker, Gfx** gfx, Mtx** mtx, Vtx** vtx) {
if (levelSpecificFlags_get(0x25) == 0) {
if (levelSpecificFlags_get(LEVEL_FLAG_25_CCW_UNKNOWN) == FALSE) {
return func_80325340(marker, gfx, mtx, vtx);
}
return actor_draw(marker, gfx, mtx, vtx);
}
@@ -61,7 +62,7 @@ void func_8038D368(Actor *this) {
func_8038D2B0(this, 1);
if (jiggyscore_isCollected(JIGGY_4B_CCW_GNAWTY)) {
levelSpecificFlags_set(0x25, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_25_CCW_UNKNOWN, TRUE);
}
return;
}

View File

@@ -19,7 +19,7 @@ ActorInfo D_8038F640 = {
/* .code */
void CCW_func_8038D510(Actor *this) {
static s32 D_8038F664[3] = {0xDE, 0xA7, 0x71};
static struct42s D_8038F670 = {
static ParticleSettingsVelocityPosition D_8038F670 = {
{{ 0.0f, 50.0f, 0.0f}, { 70.0f, 100.0f, 70.0f}},
{{100.0f, 100.0f, 100.0f}, {150.0f, 400.0f, 200.0f}}
};
@@ -39,7 +39,7 @@ void CCW_func_8038D510(Actor *this) {
}
void func_8038D5DC(Actor *this) {
static struct43s D_8038F6A0 ={
static ParticleSettingsVelocityAccelerationPosition D_8038F6A0 ={
{{-100.0f, -50.0f, -100.0f}, {100.0f, 50.0f, 100.0f}},
{{ 0.0f, -800.0f, 0.0f}, { 0.0f, -800.0f, 0.0f}},
{{-100.0f, 0.0f, -200.0f}, {100.0f, 400.0f, 200.0f}}
@@ -48,8 +48,8 @@ void func_8038D5DC(Actor *this) {
ParticleEmitter *pCtrl;
pCtrl = partEmitMgr_newEmitter(30);
func_802EF9F8(pCtrl, 0.6f);
func_802EFA18(pCtrl, 3);
particleEmitter_func_802EF9F8(pCtrl, 0.6f);
particleEmitter_func_802EFA18(pCtrl, 3);
particleEmitter_setModel(pCtrl, 0x896);
particleEmitter_setPosition(pCtrl, this->position);
particleEmitter_setStartingScaleRange(pCtrl, 0.05f, 0.3f);
@@ -59,7 +59,7 @@ void func_8038D5DC(Actor *this) {
);
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
particleEmitter_setParticleLifeTimeRange(pCtrl, 10.0f, 10.0f);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_8038F6A0);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_8038F6A0);
particleEmitter_emitN(pCtrl, 30);
}
@@ -78,7 +78,7 @@ void func_8038D6D8(Actor *this, s32 next_state) {
FUNC_8030E624(SFX_9B_BOULDER_BREAKING_1, 0.9f, 15000);
func_80324E38(0.0f, 3);
timed_setStaticCameraToNode(0.5f, 3);
timedFunc_set_2(0.5f, levelSpecificFlags_set, 0x25, TRUE);
timedFunc_set_2(0.5f, levelSpecificFlags_set, LEVEL_FLAG_25_CCW_UNKNOWN, TRUE);
timed_exitStaticCamera(4.0f);
func_80324E38(4.0f, 0);
local->unk0 = 0.5f;
@@ -105,12 +105,14 @@ void func_8038D85C(Actor *this) {
if (!this->volatile_initialized) {
this->marker->propPtr->unk8_3 = TRUE;
this->volatile_initialized = TRUE;
marker_setCollisionScripts(this->marker, 0, &func_8038D81C, 0);
marker_setCollisionScripts(this->marker, NULL, &func_8038D81C, NULL);
func_8038D6D8(this, 1);
if (jiggyscore_isCollected(JIGGY_4B_CCW_GNAWTY) != 0) {
levelSpecificFlags_set(0x25, 1);
if (jiggyscore_isCollected(JIGGY_4B_CCW_GNAWTY) != FALSE) {
levelSpecificFlags_set(LEVEL_FLAG_25_CCW_UNKNOWN, TRUE);
}
if ((levelSpecificFlags_get(0x25) != 0) && (map_get() != MAP_43_CCW_SPRING)) {
if ((levelSpecificFlags_get(LEVEL_FLAG_25_CCW_UNKNOWN) != FALSE) && (map_get() != MAP_43_CCW_SPRING)) {
marker_despawn(this->marker);
}
return;

View File

@@ -65,16 +65,16 @@ void CCW_func_8038DB0C(Actor *this);
void func_8038DAB0(Actor *this);
/* .data */
ActorInfo D_8038F720 = { 0x239, 0x25F, 0x4FC, 0x1, NULL, func_802D3D54, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F744 = { 0x236, 0x260, 0x4F9, 0x1, NULL, func_802D3D54, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F768 = { 0x237, 0x261, 0x4FA, 0x1, NULL, func_802D3D54, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F78C = { 0x238, 0x262, 0x4FB, 0x1, NULL, func_802D3D54, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F7B0 = { 0x243, 0x2E6, 0x533, 0x1, NULL, func_802D3D54, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F7D4 = { 0x263, 0x2E7, 0x518, 0x1, NULL, func_8038DAB0, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F7F8 = { 0x21E, 0x233, 0x3B3, 0x1, NULL, func_802D3D74, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F81C = { 0x26B, 0x2DE, 0x531, 0x1, NULL, CCW_func_8038DB0C, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F840 = { 0x26C, 0x2DD, 0x53E, 0x1, NULL, CCW_func_8038DB0C, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F864 = { 0x26D, 0x2DC, 0x53F, 0x1, NULL, CCW_func_8038DB0C, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F720 = { 0x239, 0x25F, 0x4FC, 0x1, NULL, func_802D3D54, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F744 = { 0x236, 0x260, 0x4F9, 0x1, NULL, func_802D3D54, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F768 = { 0x237, 0x261, 0x4FA, 0x1, NULL, func_802D3D54, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F78C = { 0x238, 0x262, 0x4FB, 0x1, NULL, func_802D3D54, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F7B0 = { 0x243, 0x2E6, 0x533, 0x1, NULL, func_802D3D54, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F7D4 = { 0x263, 0x2E7, 0x518, 0x1, NULL, func_8038DAB0, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F7F8 = { 0x21E, 0x233, 0x3B3, 0x1, NULL, func_802D3D74, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F81C = { 0x26B, 0x2DE, 0x531, 0x1, NULL, CCW_func_8038DB0C, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F840 = { 0x26C, 0x2DD, 0x53E, 0x1, NULL, CCW_func_8038DB0C, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F864 = { 0x26D, 0x2DC, 0x53F, 0x1, NULL, CCW_func_8038DB0C, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_8038F888 = { 0x1CC, 0x318, 0x0, 0x0, NULL, func_80325F84, NULL, func_80325340, 0, 0, 0.0f, 0};
@@ -83,7 +83,8 @@ void func_8038DAB0(Actor *this){
if(!this->initialized){
func_802D3CE8(this);
this->initialized = TRUE;
if(levelSpecificFlags_get(0x38)){
if (levelSpecificFlags_get(LEVEL_FLAG_38_CCW_UNKNOWN)) {
marker_despawn(this->marker);
}
}

View File

@@ -12,7 +12,7 @@ ActorAnimationInfo D_8038F8B0[] = {
ActorInfo D_8038F8C0 = { 0x251, 0x37E, 0x506,
0x1, D_8038F8B0,
func_8038DFB0, func_80326224, actor_draw,
func_8038DFB0, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -15,7 +15,7 @@ ActorAnimationInfo D_8038F8F0[] = {
ActorInfo D_8038F908 = {
MARKER_1F9_SNARE_BEAR, ACTOR_1E9_SNARE_BEAR, ASSET_440_MODEL_SNAREBEAR,
0x1, D_8038F8F0,
func_8038E0C8, func_80326224, actor_draw,
func_8038E0C8, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -23,27 +23,27 @@ ActorAnimationInfo D_80391DF0[] = {
ActorInfo D_80391E08 = { MARKER_1FA_POLAR_BEAR_CUB_BLUE, ACTOR_1EA_POLAR_BEAR_CUB_BLUE, ASSET_44C_MODEL_POLAR_BEAR_CUB_BLUE,
0x1, D_80391DF0,
func_8038A384, func_80326224, actor_draw,
func_8038A384, actor_update_func_80326224, actor_draw,
2500, 0, 1.2f, 0
};
ActorInfo FP_D_80391E2C = { MARKER_1FB_POLAR_BEAR_CUB_GREEN, ACTOR_1EB_POLAR_BEAR_CUB_GREEN, ASSET_44D_MODEL_POLAR_BEAR_CUB_GREEN,
0x1, D_80391DF0,
func_8038A384, func_80326224, actor_draw,
func_8038A384, actor_update_func_80326224, actor_draw,
2500, 0, 1.2f, 0
};
ActorInfo D_80391E50 = { MARKER_1FC_POLAR_BEAR_CUB_RED, ACTOR_1EC_POLAR_BEAR_CUB_RED, ASSET_44E_MODEL_POLAR_BEAR_CUB_RED,
0x1, D_80391DF0,
func_8038A384, func_80326224, actor_draw,
func_8038A384, actor_update_func_80326224, actor_draw,
2500, 0, 1.2f, 0
};
f32 FP_D_80391E74[3] = {-5.0f, 180.0f, 1.0f};
Struct_FP_3E00 D_80391E80[] ={
{0x11, MARKER_1FD_BLUE_PRESENT_COLLECTIBLE, ACTOR_1ED_BLUE_PRESENT_COLLECTIBLE, 0x1EE},
{0x12, MARKER_1FE_GREEN_PRESENT_COLLECTIBLE, ACTOR_1EF_GREEN_PRESENT_COLLECTIBLE, 0x1F0},
{0x13, MARKER_1FF_RED_PRESENT_COLLECTIBLE, ACTOR_1F1_RED_PRESENT_COLLECTIBLE, 0x1F2}
{LEVEL_FLAG_11_FP_UNKNOWN, MARKER_1FD_BLUE_PRESENT_COLLECTIBLE, ACTOR_1ED_BLUE_PRESENT_COLLECTIBLE, 0x1EE},
{LEVEL_FLAG_12_FP_UNKNOWN, MARKER_1FE_GREEN_PRESENT_COLLECTIBLE, ACTOR_1EF_GREEN_PRESENT_COLLECTIBLE, 0x1F0},
{LEVEL_FLAG_13_FP_UNKNOWN, MARKER_1FF_RED_PRESENT_COLLECTIBLE, ACTOR_1F1_RED_PRESENT_COLLECTIBLE, 0x1F2}
};
/* .code */
@@ -123,7 +123,7 @@ void func_8038A384(Actor *this){
}
}//L8038A4E4
sp34 = levelSpecificFlags_get(0x11) + levelSpecificFlags_get(0x12) + levelSpecificFlags_get(0x13);
sp34 = levelSpecificFlags_get(LEVEL_FLAG_11_FP_UNKNOWN) + levelSpecificFlags_get(LEVEL_FLAG_12_FP_UNKNOWN) + levelSpecificFlags_get(LEVEL_FLAG_13_FP_UNKNOWN);
sp38 = (sp34 == 1) ? ASSET_C17_TEXT_UNKNOWN
: (sp34 == 2) ? ASSET_C18_TEXT_UNKNOWN
: ASSET_C19_TEXT_UNKNOWN;
@@ -134,14 +134,14 @@ void func_8038A384(Actor *this){
switch(this->state){
case 1://L8038A5B0
if(!levelSpecificFlags_get(0x19) && func_80329530(this, 0xfa)){
if(!levelSpecificFlags_get(LEVEL_FLAG_19_FP_UNKNOWN) && func_80329530(this, 0xfa)){
if(func_8028ECAC() == 0 || func_8028ECAC() == BSGROUP_8_TROT){
if(sp34 == 0
&& !jiggyscore_isCollected(JIGGY_2C_FP_BOGGY_3)
&& !jiggyscore_isSpawned(JIGGY_2C_FP_BOGGY_3)
){
if (gcdialog_showText(ASSET_C1A_TEXT_UNKNOWN, 0x2a, NULL, NULL, NULL, NULL)) {
levelSpecificFlags_set(0x19, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_19_FP_UNKNOWN, TRUE);
}
}
}

View File

@@ -237,7 +237,7 @@ void func_80388EE8(ParticleEmitter *pCtrl){
{0.3f, 0.45f},
0.0f, 0.01f
};
static struct42s D_80391D58 = {
static ParticleSettingsVelocityPosition D_80391D58 = {
{{-10.0f, 10.0f, -10.0f}, {10.0f, 240.0f, 10.0f}}, /*position*/
{{0.0f, 0.0f, 0.0f}, {0.0f, 20.0f, 0.0f}} /*velocity*/
};

View File

@@ -13,7 +13,7 @@ ActorAnimationInfo D_80392680[] = {
ActorInfo D_80392690 = { 0x20D, 0x33D, 0x38A,
0x1, D_80392680,
func_80390388, func_80326224, func_80390290,
func_80390388, actor_update_func_80326224, func_80390290,
2500, 0, 1.0f, 0
};
@@ -35,10 +35,11 @@ Actor *func_80390290(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
}
int func_80390334(void){
if( levelSpecificFlags_get(0x11) && levelSpecificFlags_get(0x12) && levelSpecificFlags_get(0x13)){
return TRUE;
}
int func_80390334(void) {
if (levelSpecificFlags_get(LEVEL_FLAG_11_FP_UNKNOWN) && levelSpecificFlags_get(LEVEL_FLAG_12_FP_UNKNOWN) && levelSpecificFlags_get(LEVEL_FLAG_13_FP_UNKNOWN)) {
return TRUE;
}
return FALSE;
}
@@ -47,9 +48,9 @@ void func_80390388(Actor *this){
if(!this->volatile_initialized){
this->volatile_initialized = TRUE;
if(jiggyscore_isSpawned(JIGGY_2E_FP_PRESENTS) || jiggyscore_isCollected(JIGGY_2E_FP_PRESENTS)){
levelSpecificFlags_set(0x11, TRUE);
levelSpecificFlags_set(0x12, TRUE);
levelSpecificFlags_set(0x13, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_11_FP_UNKNOWN, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_12_FP_UNKNOWN, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_13_FP_UNKNOWN, TRUE);
}
if(jiggyscore_isCollected(JIGGY_2C_FP_BOGGY_3) || jiggyscore_isSpawned(JIGGY_2C_FP_BOGGY_3)){
this->unk38_31 = FALSE;

View File

@@ -14,7 +14,7 @@ extern ActorAnimationInfo D_803926F0[]= {
extern ActorInfo D_80392700 = { MARKER_20F_WOZZA_IN_CAVE, ACTOR_33F_WOZZA_IN_CAVE, ASSET_494_MODEL_WOZZA,
0x1, D_803926F0,
func_80390630, func_80326224, actor_draw,
func_80390630, actor_update_func_80326224, actor_draw,
2500, 0, 1.6f, 0
};
@@ -34,7 +34,7 @@ void func_80390630(Actor *this){
this->volatile_initialized = TRUE;
this->marker->propPtr->unk8_3 = FALSE;
actor_collisionOn(this);
this->unk38_31 = jiggyscore_isCollected(JIGGY_32_FP_WOZZA) || levelSpecificFlags_get(0x26) ? 0 : 1;
this->unk38_31 = jiggyscore_isCollected(JIGGY_32_FP_WOZZA) || levelSpecificFlags_get(LEVEL_FLAG_26_FP_UNKNOWN) ? 0 : 1;
}//L80390714
if(this->unk38_31){
@@ -66,18 +66,18 @@ void func_80390630(Actor *this){
}
}
if(func_80329530(this, 350)){
if(player_getTransformation() == TRANSFORM_4_WALRUS){
if(!levelSpecificFlags_get(0x31)){
if(gcdialog_showText(ASSET_C27_TEXT_UNKNOWN, 0x23, NULL, NULL, NULL, NULL)){
levelSpecificFlags_set(0x31, TRUE);
if (func_80329530(this, 350)) {
if (player_getTransformation() == TRANSFORM_4_WALRUS) {
if (!levelSpecificFlags_get(LEVEL_FLAG_31_FP_UNKNOWN)) {
if (gcdialog_showText(ASSET_C27_TEXT_UNKNOWN, 0x23, NULL, NULL, NULL, NULL)) {
levelSpecificFlags_set(LEVEL_FLAG_31_FP_UNKNOWN, TRUE);
}
}
}
else{
if(!levelSpecificFlags_get(0x32)){
if(gcdialog_showText(ASSET_C26_TEXT_UNKNOWN, 0x23, NULL, NULL, NULL, NULL)){
levelSpecificFlags_set(0x32, TRUE);
else {
if (!levelSpecificFlags_get(LEVEL_FLAG_32_FP_UNKNOWN)) {
if (gcdialog_showText(ASSET_C26_TEXT_UNKNOWN, 0x23, NULL, NULL, NULL, NULL)) {
levelSpecificFlags_set(LEVEL_FLAG_32_FP_UNKNOWN, TRUE);
}
}
}

View File

@@ -12,19 +12,19 @@ ActorAnimationInfo D_803924A0[] = {
ActorInfo D_803924B0 = { MARKER_208_BLUE_PRESENT, ACTOR_33A_BLUE_PRESENT, ASSET_47F_MODEL_XMAS_GIFT_BLUE,
0x1, D_803924A0,
func_8038F144, func_80326224, func_8038F0F0,
func_8038F144, actor_update_func_80326224, func_8038F0F0,
2500, 0, 1.2f, 0
};
ActorInfo D_803924D4 = { MARKER_209_GREEN_PRESENT, ACTOR_33B_GREEN_PRESENT, ASSET_480_MODEL_XMAS_GIFT_GREEN,
0x1, D_803924A0,
func_8038F144, func_80326224, func_8038F0F0,
func_8038F144, actor_update_func_80326224, func_8038F0F0,
2500, 0, 1.2f, 0
};
ActorInfo D_803924F8 = { MARKER_20A_RED_PRESENT, ACTOR_33C_RED_PRESENT, ASSET_481_MODEL_XMAS_GIFT_RED,
0x1, D_803924A0,
func_8038F144, func_80326224, func_8038F0F0,
func_8038F144, actor_update_func_80326224, func_8038F0F0,
2500, 0, 1.2f, 0
};

View File

@@ -16,7 +16,7 @@ ActorAnimationInfo FP_D_80391A90[] ={
ActorInfo FP_D_80391AB0 = {
MARKER_B9_FP_SNOWMAN_BUTTON, ACTOR_116_FP_SNOWMAN_BUTTON, ASSET_421_MODEL_FP_SNOWMAN_BUTTON,
0x1, FP_D_80391A90,
FP_func_80386CF8, func_80326224, func_80386B80,
FP_func_80386CF8, actor_update_func_80326224, func_80386B80,
0, 0x800, 0.0f, 0
};
@@ -28,7 +28,7 @@ ParticleScaleAndLifetimeRanges D_80391AD4 = {
0.0f, 0.01f,
};
struct43s D_80391AFC = {
ParticleSettingsVelocityAccelerationPosition D_80391AFC = {
{{-300.0f, 350.0f, -300.0f}, {300.0f, 800.0f, 300.0f}},
{{0.0f, -800.0f, 0.0f}, {0.0f, -800.0f, 0.0f}},
{{-50.0f, -50.0f, -50.0f}, {50.0f, 50.0f, 50.0f}}
@@ -58,7 +58,7 @@ void FP_func_80386BEC(Actor *this){
particleEmitter_setRGB(pCtrl, D_80391B44);
particleEmitter_setSprite(pCtrl, ASSET_700_SPRITE_DUST);
particleEmitter_setPosition(pCtrl, plyr_pos);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_80391AFC);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_80391AFC);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_80391AD4);
particleEmitter_emitN(pCtrl, 12);
}

View File

@@ -21,30 +21,30 @@ ActorAnimationInfo D_80391F50[] = {
ActorInfo D_80391F88 = { MARKER_200_TWINKLY_BLUE, ACTOR_332_TWINKLY_BLUE, ASSET_448_MODEL_TWINKLY_BLUE,
0x1, D_80391F50,
func_8038C9A0, func_80326224, func_8038C1F8,
func_8038C9A0, actor_update_func_80326224, func_8038C1F8,
0, 0, 1.0f, 0
};
ActorInfo D_80391FAC = { MARKER_201_TWINKLY_GREEN, ACTOR_333_TWINKLY_GREEN, ASSET_449_MODEL_TWINKLY_GREEN,
0x1, D_80391F50,
func_8038C9A0, func_80326224, func_8038C1F8,
func_8038C9A0, actor_update_func_80326224, func_8038C1F8,
0, 0, 1.0f, 0
};
ActorInfo D_80391FD0 = { MARKER_202_TWINKLY_ORANGE, ACTOR_334_TWINKLY_ORANGE, ASSET_44A_MODEL_TWINKLY_ORANGE,
0x1, D_80391F50,
func_8038C9A0, func_80326224, func_8038C1F8,
func_8038C9A0, actor_update_func_80326224, func_8038C1F8,
0, 0, 1.0f, 0
};
ActorInfo D_80391FF4 = { MARKER_203_TWINKLY_RED, ACTOR_335_TWINKLY_RED, ASSET_44B_MODEL_TWINKLY_RED,
0x1, D_80391F50,
func_8038C9A0, func_80326224, func_8038C1F8,
func_8038C9A0, actor_update_func_80326224, func_8038C1F8,
0, 0, 1.0f, 0
};
Struct6Cs FP_D_80392018 = {NULL, NULL, NULL, (void*)func_8038C0B0};
struct43s D_80392028 = {
ParticleSettingsVelocityAccelerationPosition D_80392028 = {
{{-200.0f, 200.0f, -200.0f}, {200.0f, 400.0f, 200.0f}},
{{ 0.0f, -800.0f, 0.0f}, { 0.0f, -800.0f, 0.0f}},
{{ -15.0f, -15.0f, -15.0f}, { 15.0f, 15.0f, 15.0f}}
@@ -95,7 +95,7 @@ void func_8038C260(f32 position[3], s32 count, enum asset_e model_id){
pCtrl = partEmitMgr_newEmitter(count);
particleEmitter_setModel(pCtrl, model_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_80392028);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_80392028);
particleEmitter_setAngularVelocityRange(pCtrl,
400.0f, 400.0f, 400.0f,
800.0f, 800.0f, 800.0f
@@ -104,8 +104,8 @@ void func_8038C260(f32 position[3], s32 count, enum asset_e model_id){
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.02f);
particleEmitter_setParticleLifeTimeRange(pCtrl, 1.5f, 1.5f);
particleEmitter_setFade(pCtrl, 0.0f, 0.3f);
func_802EF9F8(pCtrl, 0.6f);
func_802EFA18(pCtrl, 0);
particleEmitter_func_802EF9F8(pCtrl, 0.6f);
particleEmitter_func_802EFA18(pCtrl, 0);
func_802EFA20(pCtrl, 1.0f, 1.3f);
particleEmitter_setSfx(pCtrl, SFX_7B_ICE_BREAKING_1, 8000);
particleEmitter_emitN(pCtrl, count);

View File

@@ -19,7 +19,7 @@ ActorAnimationInfo D_803920C0[] ={
ActorInfo D_803920E8 = { 0x204, 0x336, 0x442,
0x1, D_803920C0,
func_8038D6C8, func_80326224, FP_func_8038CED0,
func_8038D6C8, actor_update_func_80326224, FP_func_8038CED0,
0, 0, 0.0f, 0
};
@@ -42,7 +42,7 @@ void func_8038CF54(f32 position[3], s32 count, enum asset_e model_id){
0.0f,
0.7f
};
static struct43s D_80392134 = {
static ParticleSettingsVelocityAccelerationPosition D_80392134 = {
{{-200.0f, 200.0f, -200.0f}, {200.0f, 400.0f, 200.0f}},
{{ 0.0f, -800.0f, 0.0f}, { 0.0f, -800.0f, 0.0f}},
{{-100.0f, 0.0f, -100.0f}, {100.0f, 100.0f, 100.0f}}
@@ -52,14 +52,14 @@ void func_8038CF54(f32 position[3], s32 count, enum asset_e model_id){
pCtrl = partEmitMgr_newEmitter(count);
particleEmitter_setModel(pCtrl, model_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_80392134);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_80392134);
particleEmitter_setAngularVelocityRange(pCtrl,
100.0f, 100.0f, 100.0f,
200.0f, 200.0f, 200.0f
);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_8039210C);
func_802EF9F8(pCtrl, 0.6f);
func_802EFA18(pCtrl, 3);
particleEmitter_func_802EF9F8(pCtrl, 0.6f);
particleEmitter_func_802EFA18(pCtrl, 3);
particleEmitter_emitN(pCtrl, count);
}
@@ -73,7 +73,7 @@ void func_8038D01C(f32 position[3], s32 count, enum asset_e sprite_id){
0.01f
};
static s32 D_803921A4[3] = { 0xDC, 0xDC, 0xE6};
static struct43s D_803921B0 = {
static ParticleSettingsVelocityAccelerationPosition D_803921B0 = {
{{-200.0f, 0.0f, -200.0f}, {200.0f, 200.0f, 200.0f}},
{{ 0.0f, -10.0f, 0.0f}, { 0.0f, -10.0f, 0.0f}},
{{-50.0f, 0.0f, -50.0f}, {50.0f, 200.0f, 50.0f}}
@@ -85,7 +85,7 @@ void func_8038D01C(f32 position[3], s32 count, enum asset_e sprite_id){
particleEmitter_setRGB(pCtrl, D_803921A4);
particleEmitter_setSprite(pCtrl, sprite_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_803921B0);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_803921B0);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_8039217C);
particleEmitter_emitN(pCtrl, count);
}
@@ -99,7 +99,7 @@ void func_8038D0A8(f32 position[3], s32 count, enum asset_e model_id){
0.0f, 0.3f
};
static struct43s D_80392220 = {
static ParticleSettingsVelocityAccelerationPosition D_80392220 = {
{{-300.0f, 400.0f, -300.0f}, {300.0f, 800.0f, 300.0f}},
{{ 0.0f, -800.0f, 0.0f}, { 0.0f, -800.0f, 0.0f}},
{{-80.0f, 80.0f, -80.0f}, {80.0f, 80.0f, 80.0f}}
@@ -109,14 +109,14 @@ void func_8038D0A8(f32 position[3], s32 count, enum asset_e model_id){
pCtrl = partEmitMgr_newEmitter(count);
particleEmitter_setModel(pCtrl, model_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_80392220);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_80392220);
particleEmitter_setAngularVelocityRange(pCtrl,
200.0f, 200.0f, 200.0f,
300.0f, 300.0f, 300.0f
);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_803921F8);
func_802EF9F8(pCtrl, 0.2f);
func_802EFA18(pCtrl, 2);
particleEmitter_func_802EF9F8(pCtrl, 0.2f);
particleEmitter_func_802EFA18(pCtrl, 2);
particleEmitter_emitN(pCtrl, count);
}
@@ -129,7 +129,7 @@ void func_8038D170(f32 position[3], s32 count, enum asset_e sprite_id){
0.0f,
0.3f
};
static struct43s D_80392290 = {
static ParticleSettingsVelocityAccelerationPosition D_80392290 = {
{{-300.0f, 400.0f, -300.0f}, {300.0f, 800.0f, 300.0f}},
{{ 0.0f, -800.0f, 0.0f}, { 0.0f, -800.0f, 0.0f}},
{{-80.0f, 80.0f, -80.0f}, {80.0f, 80.0f, 80.0f}}
@@ -139,10 +139,10 @@ void func_8038D170(f32 position[3], s32 count, enum asset_e sprite_id){
pCtrl = partEmitMgr_newEmitter(count);
particleEmitter_setSprite(pCtrl, sprite_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_80392290);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_80392290);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_80392268);
func_802EF9F8(pCtrl, 0.2f);
func_802EFA18(pCtrl, 2);
particleEmitter_func_802EF9F8(pCtrl, 0.2f);
particleEmitter_func_802EFA18(pCtrl, 2);
particleEmitter_emitN(pCtrl, count);
}
@@ -155,7 +155,7 @@ void func_8038D208(f32 position[3], s32 count, enum asset_e sprite_id){
0.0f, 0.01f
};
static s32 D_80392300[3] = { 0xDC, 0xDC, 0xE6};
static struct43s D_8039230C = {
static ParticleSettingsVelocityAccelerationPosition D_8039230C = {
{{-100.0f, 0.0f, -100.0f}, {100.0f, 100.0f, 100.0f}},
{{0.0f, -10.0f, 0.0f}, {0.0f, -10.0f, 0.0f}},
{{-80.0f, 0.0f, -80.0f}, {50.0f, 200.0f, 80.0f}}
@@ -166,7 +166,7 @@ void func_8038D208(f32 position[3], s32 count, enum asset_e sprite_id){
particleEmitter_setRGB(pCtrl, D_80392300);
particleEmitter_setSprite(pCtrl, sprite_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_8039230C);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_8039230C);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_803922D8);
particleEmitter_emitN(pCtrl, count);
}

View File

@@ -21,7 +21,7 @@ extern ActorAnimationInfo D_80392390[] ={
extern ActorInfo D_803923D0 = { MARKER_205_TWINKLY_MUNCHER, ACTOR_337_TWINKLY_MUNCHER, ASSET_496_MODEL_TWINKLY_MUNCHER,
0x1, D_80392390,
func_8038E094, func_80326224, func_8038DD70,
func_8038E094, actor_update_func_80326224, func_8038DD70,
2500, 0, 1.0f, 0
};

View File

@@ -32,7 +32,7 @@ ActorAnimationInfo D_80392520[] ={
ActorInfo D_80392588 = { MARKER_20B_WOZZA, ACTOR_1F3_WOZZA, ASSET_494_MODEL_WOZZA,
0x1, D_80392520,
FP_func_8038F7AC, func_80326224, func_8038F210,
FP_func_8038F7AC, actor_update_func_80326224, func_8038F210,
0, 0, 1.6f, 0
};
@@ -192,7 +192,7 @@ void FP_func_8038F7AC(Actor *this){
return;
}
if(levelSpecificFlags_get(0x26)){
if (levelSpecificFlags_get(LEVEL_FLAG_26_FP_UNKNOWN)) {
this->unk38_31 = TRUE;
func_8038F274();
}

View File

@@ -24,7 +24,7 @@ ActorAnimationInfo D_803925C0[] = {
ActorInfo D_80392628 = { MARKER_20C_WOZZAS_JIGGY, ACTOR_1F4_WOZZAS_JIGGY, ASSET_495_MODEL_WOZZAS_JIGGY,
0x1, D_803925C0,
func_8038FF54, func_80326224, func_8038FF00,
func_8038FF54, actor_update_func_80326224, func_8038FF00,
0, 0, 0.0f, 0
};
@@ -76,7 +76,7 @@ void func_8038FF54(Actor *this){
sp40[2] = (f32)(s32)sp40[2];
bundle_setYaw(this->yaw + 90.0f);
jiggy_spawn(JIGGY_32_FP_WOZZA, sp40);
levelSpecificFlags_set(0x26, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_26_FP_UNKNOWN, TRUE);
marker_despawn(this->marker);
}
else if(this->marker->unk14_21){//L8039016C
@@ -85,7 +85,7 @@ void func_8038FF54(Actor *this){
particleEmitter_setSprite(sp3C, ASSET_713_SPRITE_SPARKLE_YELLOW);
particleEmitter_setStartingFrameRange(sp3C, 1, 6);
particleEmitter_setPosition(sp3C, sp40);
particleEmitter_setParticleSpawnPositionRange(sp3C,
particleEmitter_setSpawnPositionRange(sp3C,
0.0f, 20.0f, 0.0f,
0.0f, 20.0f, 0.0f
);
@@ -93,7 +93,7 @@ void func_8038FF54(Actor *this){
-180.0f, 0.0f, -180.0f,
180.0f, 280.0f, 180.0f
);
particleEmitter_setParticleAccelerationRange(sp3C,
particleEmitter_setAccelerationRange(sp3C,
0.0f, -60.0f, 0.0f,
0.0f, -90.0f, 0.0f
);

View File

@@ -9,7 +9,7 @@ void chXmasTree_update(Actor *this);
ActorInfo chXmasTree = {
MARKER_BA_XMAS_TREE, ACTOR_15F_XMAS_TREE, ASSET_488_MODEL_XMAS_TREE,
0x1, NULL,
chXmasTree_update, func_80326224, chXmasTree_draw,
chXmasTree_update, actor_update_func_80326224, chXmasTree_draw,
0, 0, 0.0f, 0
};
@@ -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);
}
@@ -40,7 +40,7 @@ void __chXmasTree_80386EF4(Actor *this, int arg1){
}
void __chXmasTree_80386F3C(void){
levelSpecificFlags_set(0x29, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_29_FP_UNKNOWN, TRUE);
func_803228D8();
volatileFlag_set(VOLATILE_FLAG_E, 1);
func_802E4078(MAP_53_FP_CHRISTMAS_TREE, 1, 0);
@@ -100,14 +100,15 @@ 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);
}
}
this->depth_mode = 1;
if(jiggyscore_isCollected(JIGGY_2F_FP_XMAS_TREE) || levelSpecificFlags_get(0x29)){
if (jiggyscore_isCollected(JIGGY_2F_FP_XMAS_TREE) || levelSpecificFlags_get(LEVEL_FLAG_29_FP_UNKNOWN)) {
__chXmasTree_80386EF4(this, 1);
return;
}
@@ -115,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

@@ -8,13 +8,13 @@ void func_80390EB0(Actor *this);
/* .data */
ActorInfo FP_D_80392840 = { MARKER_245_XMAS_TREE_EGG_TOLL, ACTOR_353_XMAS_TREE_EGG_TOLL, ASSET_402_MODEL_EGG_TOLL,
0x0, NULL,
func_80390EB0, func_80326224, func_80325340,
func_80390EB0, actor_update_func_80326224, func_80325340,
2000, 0, 0.0f, 0
};
/* .code */
void func_80390C70(f32 position[3]){
static struct40s FP_D_80392864 = {{{1.7f, 2.0f}, {2.4f, 2.7f}, {0.0f, 0.01f}, {4.0f, 7.0f}, 0.3f, 0.7f}, 4.0f, 1.0f};
static ParticleSettingsScaleAndLifetimeDrawModeEmitCount FP_D_80392864 = {{{1.7f, 2.0f}, {2.4f, 2.7f}, {0.0f, 0.01f}, {4.0f, 7.0f}, 0.3f, 0.7f}, 4.0f, 1.0f};
static s32 D_80392894[3] = {0xFF, 0XFF, 0xFF};
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(1);
@@ -23,7 +23,7 @@ void func_80390C70(f32 position[3]){
particleEmitter_setRGB(pCtrl, D_80392894);
particleEmitter_setAlpha(pCtrl, 0x41);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-40.0f, 110.0f, -40.0f,
40.0f, 110.0f, 40.0f
);
@@ -35,7 +35,7 @@ void func_80390C70(f32 position[3]){
}
void func_80390D58(f32 position[3]){
static struct40s D_803928A0 = {{{0.05f, 0.1f}, {0.1f, 0.2f}, {0.0f, 0.01f}, {0.9f, 1.3f}, 0.3f, 0.7f}, 4.0f, 1.0f};
static ParticleSettingsScaleAndLifetimeDrawModeEmitCount D_803928A0 = {{{0.05f, 0.1f}, {0.1f, 0.2f}, {0.0f, 0.01f}, {0.9f, 1.3f}, 0.3f, 0.7f}, 4.0f, 1.0f};
static s32 D_803928D0[3] = {0xFF, 0xFF, 0xFF};
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(1);
@@ -44,7 +44,7 @@ void func_80390D58(f32 position[3]){
particleEmitter_setRGB(pCtrl, D_803928D0);
particleEmitter_setAlpha(pCtrl, 0xFF);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-40.0f, 50.0,-40.0f,
40.0f, 70.0, 40.0f
);
@@ -52,7 +52,7 @@ void func_80390D58(f32 position[3]){
-40.0f, 120.0,-40.0f,
40.0f, 180.0, 40.0f
);
particleEmitter_setParticleAccelerationRange(pCtrl,
particleEmitter_setAccelerationRange(pCtrl,
0.0f, -60.0f, 0.0f,
0.0f, -100.0f, 0.0f
);

View File

@@ -8,7 +8,7 @@ void func_80390BDC(Actor *this);
/* .data */
ActorInfo D_80392730 = { 0x210, 0x340, 0x4D2,
0x0, NULL,
func_80390BDC, func_80326224, func_803908F0,
func_80390BDC, actor_update_func_80326224, func_803908F0,
0, 0, 1.0f, 0
};
@@ -22,7 +22,7 @@ Actor *func_803908F0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
void func_80390944(f32 position[3], s32 cnt, enum asset_e model_id){
static ParticleScaleAndLifetimeRanges D_80392754 = {{0.2f, 0.4f}, {-1.0f, -1.0f}, {0.0f, 0.02f}, {2.2f, 2.2f}, 0.0f, 0.3f};
static struct43s D_8039277C = {
static ParticleSettingsVelocityAccelerationPosition D_8039277C = {
{{-300.0f, 350.0f, -300.0f}, {300.0f, 600.0f, 300.0f}}, /*position*/
{{ 0.0f, -1000.0f, 0.0f}, { 0.0f, -1000.0f, 0.0f}}, /*velocitcy*/
{{-100.0f, 0.0f, -100.0f}, {100.0f, 200.0f, 100.0f}} /*acceleration*/
@@ -30,14 +30,14 @@ void func_80390944(f32 position[3], s32 cnt, enum asset_e model_id){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
particleEmitter_setModel(pCtrl, model_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_8039277C);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_8039277C);
particleEmitter_setAngularVelocityRange(pCtrl,
100.0f, 100.0f, 100.0f,
250.0f, 250.0f, 250.0f
);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_80392754);
func_802EF9F8(pCtrl, 0.6f);
func_802EFA18(pCtrl, 0);
particleEmitter_func_802EF9F8(pCtrl, 0.6f);
particleEmitter_func_802EFA18(pCtrl, 0);
func_802EFA20(pCtrl, 1.0f, 1.3f);
particleEmitter_setSfx(pCtrl, SFX_7B_ICE_BREAKING_1, 8000);
particleEmitter_emitN(pCtrl, cnt);
@@ -45,7 +45,7 @@ void func_80390944(f32 position[3], s32 cnt, enum asset_e model_id){
void func_80390A30(f32 position[3], s32 cnt, enum asset_e sprite_id){
static ParticleScaleAndLifetimeRanges D_803927C4 = {{0.6f, 0.8f}, {1.0f, 1.4f}, {0.0f, 0.01f}, {1.2f, 1.8f}, 0.0f, 0.01f};
static struct43s D_803927EC = {
static ParticleSettingsVelocityAccelerationPosition D_803927EC = {
{{-200.0f, 0.0f, -200.0f}, {200.0f, 200.0f, 200.0f}}, /*position*/
{{ 0.0f, -10.0f, 0.0f}, { 0.0f, -10.0f, 0.0f}}, /*velocitcy*/
{{ -50.0f, 0.0f, -50.0f}, { 50.0f, 200.0f, 50.0f}} /*acceleration*/
@@ -55,7 +55,7 @@ void func_80390A30(f32 position[3], s32 cnt, enum asset_e sprite_id){
particleEmitter_setRGB(pCtrl, D_80392834);
particleEmitter_setSprite(pCtrl, sprite_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_803927EC);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_803927EC);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_803927C4);
particleEmitter_emitN(pCtrl, cnt);
}
@@ -83,18 +83,18 @@ void func_80390B70(Actor *this){
timedFunc_set_1(2.5f, (GenFunction_1)func_80390B2C, reinterpret_cast(s32, this->marker));
}
void func_80390BDC(Actor *this){
void func_80390BDC(Actor *this) {
this->marker->propPtr->unk8_3 = TRUE;
actor_collisionOff(this);
if(!this->volatile_initialized){
if (!this->volatile_initialized) {
this->volatile_initialized = TRUE;
if(jiggyscore_isCollected(JIGGY_2F_FP_XMAS_TREE)){
if (jiggyscore_isCollected(JIGGY_2F_FP_XMAS_TREE)) {
marker_despawn(this->marker);
}
else{
if(levelSpecificFlags_get(0x29)){
func_80390B70(this);
}
else if (levelSpecificFlags_get(LEVEL_FLAG_29_FP_UNKNOWN)) {
func_80390B70(this);
}
}
}

View File

@@ -17,7 +17,7 @@ void func_8038ECD8(Actor *this);
/* .data */
ActorInfo D_80392470 = { 0x207, 0x339, 0x426,
0x1, NULL,
func_8038ECD8, func_80326224, func_8038EBD0,
func_8038ECD8, actor_update_func_80326224, func_8038EBD0,
0, 0, 0.0f, 0
};

View File

@@ -15,7 +15,7 @@ ActorAnimationInfo D_80392400[] = {
ActorInfo D_80392420 = { 0x206, 0x338, 0x486,
0x1, D_80392400,
func_8038E940, func_80326224, func_8038E720,
func_8038E940, actor_update_func_80326224, func_8038E720,
4500, 0, 0.0f, 0
};
@@ -50,11 +50,11 @@ void func_8038E840(f32 position[3], s32 cnt, enum asset_e sprite_id){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
particleEmitter_setSprite(pCtrl, sprite_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-100.0f, -80.0f, -70.0f,
100.0f, 100.0f, 70.0f
);
particleEmitter_setParticleAccelerationRange(pCtrl,
particleEmitter_setAccelerationRange(pCtrl,
0.0f, -200.0f, 0.0f,
0.0f, -200.0f, 0.0f
);
@@ -67,7 +67,7 @@ void func_8038E840(f32 position[3], s32 cnt, enum asset_e sprite_id){
}
void func_8038E940(Actor *this){
if(jiggyscore_isCollected(JIGGY_2F_FP_XMAS_TREE) || levelSpecificFlags_get(0x29)){
if (jiggyscore_isCollected(JIGGY_2F_FP_XMAS_TREE) || levelSpecificFlags_get(LEVEL_FLAG_29_FP_UNKNOWN)) {
this->marker->propPtr->unk8_3 = TRUE;
this->marker->collidable = FALSE;
subaddie_set_state_with_direction(this, 3, 0.95f, 0);

View File

@@ -23,7 +23,7 @@ ActorAnimationInfo D_80391C00[] = {
ActorInfo D_80391C18 = {
0x125, 0x161, 0x38b,
0x1, D_80391C00,
func_803881AC, func_80326224, func_80387DD0,
func_803881AC, actor_update_func_80326224, func_80387DD0,
0, 0, 0.35f, 0
};

View File

@@ -18,7 +18,7 @@ ActorAnimationInfo D_80391C40[] = {
ActorInfo D_80391C58 = {
0x126, 0x162, 0x38B,
0x1, D_80391C40,
func_80388584, func_80326224, func_803883E0,
func_80388584, actor_update_func_80326224, func_803883E0,
0, 0, 0.35f, 0
};

View File

@@ -7,7 +7,7 @@ void func_803905B0(Actor *this);
/* .data */
ActorInfo D_803926C0 = { 0x20E, 0x33E, 0x49C,
0x1, NULL,
func_803905B0, func_80326224, func_80325340,
func_803905B0, actor_update_func_80326224, func_80325340,
0, 0, 0.0f, 0
};

View File

@@ -45,24 +45,24 @@ void func_8039180C(Actor *this);
void func_80391894(Actor *this);
/* .data */
ActorInfo FP_D_803928E0 = { 0x247, 0x355, 0x4E5, 0x0, NULL, func_80391040, func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_80392904 = { 0x248, 0x356, 0x4E6, 0x0, NULL, func_80391040, func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_80392928 = { 0x249, 0x357, 0x4E7, 0x0, NULL, func_80391040, func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_8039294C = { 0x24A, 0x358, 0x4E8, 0x0, NULL, func_80391040, func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_80392970 = { 0x21F, 0x22B, 0x4C4, 0x1, NULL, func_80391180, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392994 = { 0x220, 0x22C, 0x4C5, 0x1, NULL, func_80391180, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_803929B8 = { 0x221, 0x22D, 0x4C6, 0x1, NULL, FP_func_80391254, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_803929DC = { 0x222, 0x22E, 0x4C6, 0x1, NULL, FP_func_80391254, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A00 = { 0x223, 0x22F, 0x4C6, 0x1, NULL, FP_func_80391254, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A24 = { 0x24B, 0x35D, 0x4E9, 0x1, NULL, func_803912EC, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A48 = { 0x24C, 0x35E, 0x4EC, 0x1, NULL, func_803912EC, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A6C = { 0x24D, 0x35F, 0x4EA, 0x1, NULL, func_803912EC, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A90 = { 0x24E, 0x360, 0x4EB, 0x1, NULL, func_803912EC, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392AB4 = { 0x23D, 0x253, 0x512, 0x1, NULL, func_8039180C, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392AD8 = { 0x23E, 0x254, 0x513, 0x1, NULL, func_80391894, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392AFC = { 0x286, 0x3AE, 0x55B, 0x1, NULL, func_80391180, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392B20 = { 0x21D, 0x229, 0x4C3, 0x1, NULL, func_80391180, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392B44 = { 0x289, 0x3B0, 0x56A, 0x1, NULL, func_80391180, func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo FP_D_803928E0 = { 0x247, 0x355, 0x4E5, 0x0, NULL, func_80391040, actor_update_func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_80392904 = { 0x248, 0x356, 0x4E6, 0x0, NULL, func_80391040, actor_update_func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_80392928 = { 0x249, 0x357, 0x4E7, 0x0, NULL, func_80391040, actor_update_func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_8039294C = { 0x24A, 0x358, 0x4E8, 0x0, NULL, func_80391040, actor_update_func_80326224, actor_draw, 3000, 0, 0.0f, 0};
ActorInfo D_80392970 = { 0x21F, 0x22B, 0x4C4, 0x1, NULL, func_80391180, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392994 = { 0x220, 0x22C, 0x4C5, 0x1, NULL, func_80391180, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_803929B8 = { 0x221, 0x22D, 0x4C6, 0x1, NULL, FP_func_80391254, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_803929DC = { 0x222, 0x22E, 0x4C6, 0x1, NULL, FP_func_80391254, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A00 = { 0x223, 0x22F, 0x4C6, 0x1, NULL, FP_func_80391254, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A24 = { 0x24B, 0x35D, 0x4E9, 0x1, NULL, func_803912EC, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A48 = { 0x24C, 0x35E, 0x4EC, 0x1, NULL, func_803912EC, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A6C = { 0x24D, 0x35F, 0x4EA, 0x1, NULL, func_803912EC, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392A90 = { 0x24E, 0x360, 0x4EB, 0x1, NULL, func_803912EC, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392AB4 = { 0x23D, 0x253, 0x512, 0x1, NULL, func_8039180C, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392AD8 = { 0x23E, 0x254, 0x513, 0x1, NULL, func_80391894, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392AFC = { 0x286, 0x3AE, 0x55B, 0x1, NULL, func_80391180, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392B20 = { 0x21D, 0x229, 0x4C3, 0x1, NULL, func_80391180, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
ActorInfo D_80392B44 = { 0x289, 0x3B0, 0x56A, 0x1, NULL, func_80391180, actor_update_func_80326224, actor_drawFullDepth, 0, 0, 0.0f, 0};
/* .code */
int func_80390FC0(void){

View File

@@ -28,7 +28,7 @@ ActorAnimationInfo chAncientOneAnimations[] = {
ActorInfo chAncientOne = { MARKER_F4_ANCIENT_ONE, ACTOR_147_ANCIENT_ONE, ASSET_3E8_MODEL_ANCIENT_ONE,
0x1, chAncientOneAnimations,
chAncientOne_update, func_80326224, chAncientOne_draw,
chAncientOne_update, actor_update_func_80326224, chAncientOne_draw,
0, 0x100, 0.0f, 0
};

View File

@@ -202,7 +202,7 @@ void chGobi1_update(Actor *this){
}//L80387830
if(this->state == 4){
func_80326224(this);
actor_update_func_80326224(this);
tmp_s1 = func_8033A12C(marker_loadModelBin(this->marker));
if(tmp_s1){
player_getPosition(sp54);

View File

@@ -224,7 +224,7 @@ void chGobi2_update(Actor *this){
}
if(this->state == 6){
func_80326224(this);
actor_update_func_80326224(this);
}
if(this->state == 8){

View File

@@ -24,7 +24,7 @@ void __chGobi3_spawnHoneyComb(Actor *this){
TUPLE_ASSIGN(sp18, -6885.0f, 2383.0f, 1335.0f);
bundle_setYaw(this->yaw);
func_802CA1CC(HONEYCOMB_C_GV_GOBI_3);
bundle_spawn_f32(0xd, sp18);
bundle_spawn_f32(BUNDLE_D__EMPTY_HONEYCOMB, sp18);
}
void __chGobi3_runaway(ActorMarker *caller, enum asset_e text_id, s32 arg2){
@@ -143,7 +143,7 @@ void chGobi3_update(Actor *this){
}
if(this->state == 4){
func_80326224(this);
actor_update_func_80326224(this);
if(timedFuncQueue_is_empty())
chGobi3_setState(this, 6);
}

View File

@@ -17,7 +17,7 @@ Actor *chGobiRock_draw(ActorMarker *this_marker, Gfx **gfx, Mtx **mtx, Vtx **vtx
/* .data */
ActorInfo chGobiRock = { MARKER_BE_GOBI_ROCK, ACTOR_130_GOBI_ROCK, ASSET_3E4_MODEL_GOBI_ROCK,
0, NULL,
chGobiRock_update, func_80326224, chGobiRock_draw,
chGobiRock_update, actor_update_func_80326224, chGobiRock_draw,
0, 0x533, 0.0f, 0
};

View File

@@ -8,7 +8,7 @@ void chGobiRope_update(Actor *this);
/* .data */
ActorInfo chGobiRope = { MARKER_BD_GOBI_ROPE, ACTOR_12F_GOBI_ROPE, ASSET_3E3_MODEL_GOBI_ROPE,
0, NULL,
chGobiRope_update, func_80326224, actor_draw,
chGobiRope_update, actor_update_func_80326224, actor_draw,
0, 0x533, 0.0f, 0
};

View File

@@ -21,7 +21,7 @@ ActorAnimationInfo D_803912E0[] = {
};
ActorInfo D_80391318 = { MARKER_AA_HISTUP, ACTOR_11C_HISTUP, ASSET_3DE_MODEL_HISTUP,
0x1, D_803912E0,
func_8038DBDC, func_80326224, func_8038DA18,
func_8038DBDC, actor_update_func_80326224, func_8038DA18,
2500, 0, 1.7f, 0
};

View File

@@ -83,9 +83,10 @@ void __chMazeCtrl_setState(Actor *this, s32 next_state){
else{//L8038F754
timed_playSfx(1.0f, SFX_7F_HEAVYDOOR_SLAM, 1.0f, 32000);
}
if(!levelSpecificFlags_get(0x16)){
if (!levelSpecificFlags_get(LEVEL_FLAG_16_GV_UNKNOWN)) {
gcdialog_showText(ASSET_A82_TEXT_SANDYBUTT_START_MAZE, 4, NULL, NULL, NULL, NULL);
levelSpecificFlags_set(0x16, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_16_GV_UNKNOWN, TRUE);
}
}//L8038F794
@@ -133,9 +134,9 @@ void __chMazeCtrl_setState(Actor *this, s32 next_state){
if(++local->unk4 == 1)
func_8025A6EC(COMUSIC_2D_PUZZLE_SOLVED_FANFARE, 0x7fff);
if(!levelSpecificFlags_get(0x17)){
if(!levelSpecificFlags_get(LEVEL_FLAG_17_GV_UNKNOWN)){
gcdialog_showText(ASSET_A83_TEXT_SANDYBUTT_DONE, 4, NULL, NULL, NULL, NULL);
levelSpecificFlags_set(0x17, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_17_GV_UNKNOWN, TRUE);
}
}
@@ -165,7 +166,7 @@ void chMazeCtrl_update(Actor *this){
local->unk8 = 1.0f;
}//L8038FA8C
if(jiggyscore_isCollected(JIGGY_41_GV_MAZE))
levelSpecificFlags_set(0x17, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_17_GV_UNKNOWN, TRUE);
}//L8038FAA4
player_getPosition(sp3C);
@@ -174,11 +175,12 @@ void chMazeCtrl_update(Actor *this){
if(sp38 != NULL && func_8034DC80(sp38, sp3C)){
__chMazeCtrl_setState(this, 2);
}
if( !levelSpecificFlags_get(0x15)
if (!levelSpecificFlags_get(LEVEL_FLAG_15_GV_UNKNOWN)
&& ml_timer_update(&local->unk8, sp34)
&& gcdialog_showText(ASSET_A81_TEXT_SANDYBUTT_ENTER, 0, NULL, NULL, NULL, NULL)
){
levelSpecificFlags_set(0x15, TRUE);
) {
levelSpecificFlags_set(LEVEL_FLAG_15_GV_UNKNOWN, TRUE);
}
}//L8038FB34

View File

@@ -20,13 +20,13 @@ ActorAnimationInfo chSarcophagusAnimations[] = {
ActorInfo chSarcophagus = { MARKER_A8_GV_MAZE_SARCOPHAGUS, ACTOR_11A_GV_MAZE_SARCOPHAGUS, ASSET_33D_MODEL_SARCOPHAGUS,
0x1, chSarcophagusAnimations,
chSarcophagus_update, func_80326224, actor_draw,
chSarcophagus_update, actor_update_func_80326224, actor_draw,
2500, 0, 0.0f, 0
};
ActorInfo chSNSSarcophagus = { MARKER_23B_GV_SNS_SARCOPHAGUS, ACTOR_244_GV_SNS_SARCOPHAGUS, ASSET_33D_MODEL_SARCOPHAGUS,
0x1, chSarcophagusAnimations,
chSarcophagus_updateSNS, func_80326224, actor_draw,
chSarcophagus_updateSNS, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -14,7 +14,7 @@ ActorAnimationInfo chTootsAnimations[] = {
ActorInfo chToots = { MARKER_1F4_TOOTS, ACTOR_1E4_TOOTS, ASSET_434_MODEL_TOOTS,
0x1, chTootsAnimations,
chtoots_update, func_80326224, actor_draw,
chtoots_update, actor_update_func_80326224, actor_draw,
2000, 0, 0.5f, 0
};

View File

@@ -13,7 +13,7 @@ extern ActorAnimationInfo D_80390DC0[]={
extern ActorInfo GV_D_80390DD0 = { MARKER_AF_MAGIC_CARPET_SHADOW, ACTOR_122_MAGIC_CARPET_SHADOW, ASSET_3E7_MODEL_MAGIC_CARPET_SHADOW,
0x1, D_80390DC0,
func_8038938C, func_80326224, func_803892D0,
func_8038938C, actor_update_func_80326224, func_803892D0,
2500, 0, 0.0f, 0
};

View File

@@ -16,7 +16,7 @@ ActorAnimationInfo D_80390EA0[] = {
ActorInfo D_80390ED0 = { MARKER_A9_RUBEE, ACTOR_11B_RUBEE, ASSET_3DD_MODEL_RUBEE,
0x2, D_80390EA0,
func_80389B1C, func_80326224, actor_draw,
func_80389B1C, actor_update_func_80326224, actor_draw,
2500, 0, 1.6f, 0
};

View File

@@ -8,11 +8,11 @@ void GV_func_8038A084(Actor *this);
/* .data */
ActorInfo D_80390F40 = { 0x24F, 0x37C, 0x0,
0, NULL,
GV_func_8038A084, func_80326224, func_80325340,
GV_func_8038A084, actor_update_func_80326224, func_80325340,
2000, 0, 0.0f, 0
};
struct40s D_80390F64 = {
ParticleSettingsScaleAndLifetimeDrawModeEmitCount D_80390F64 = {
{ {2.5f, 2.8f},
{4.0f, 5.0f},
{0.0f, 0.01f},
@@ -33,7 +33,7 @@ void func_80389FA0(f32 position[3]){
particleEmitter_setRGB(pCtrl, D_80390F94);
particleEmitter_setAlpha(pCtrl, 100);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setParticleSpawnPositionRange( pCtrl,
particleEmitter_setSpawnPositionRange( pCtrl,
-700.0f, 0.0f, -700.0f,
700.0f, 0.0f, 700.0f
);

View File

@@ -22,12 +22,12 @@ ActorAnimationInfo D_80391040[] ={
ActorInfo D_80391098 = { MARKER_AD_SLAPPA, ACTOR_120_SLAPPA, ASSET_376_MODEL_SLAPPA,
0x1, D_80391040,
func_8038B124, func_80326224, actor_draw,
func_8038B124, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
s32 D_803910BC[3] = {175, 100, 0};
s32 D_803910C8[3] = {175, 140, 0};
struct43s D_803910D4 = {
ParticleSettingsVelocityAccelerationPosition D_803910D4 = {
{{-120.0f, 550.0f, -120.0f}, {120.0f, 950.0f, 120.0f}},
{{0.0f, -1400.0f, 0.0f}, {0.0f, -1400.0f, 0.0f}},
{{-100.0f, 0.0f, -100.0f}, {100.0f, 30.0f, 100.0f}}
@@ -53,7 +53,7 @@ void func_8038AB30(ParticleEmitter *pCtrl, f32 position[3], s32 cnt){
void func_8038ABD8(f32 position[3], s32 cnt){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
func_8038AB30(pCtrl, position, cnt);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-40.0f, -5.0f, -40.0f,
60.0f, 20.0f, 60.0f
);
@@ -71,7 +71,7 @@ void func_8038ABD8(f32 position[3], s32 cnt){
void func_8038ACEC(f32 pos[3], s32 cnt){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
func_8038AB30(pCtrl, pos, cnt);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-80.0f, 20.0f, -80.0f,
120.0f, 120.0f, 120.0f
);
@@ -90,10 +90,10 @@ void func_8038ADFC(f32 pos[3], s32 cnt){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
particleEmitter_setModel(pCtrl, 0x389);
particleEmitter_setPosition(pCtrl, pos);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_803910D4);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_803910D4);
particleEmitter_setAngularVelocityRange(pCtrl, -500.0f, -500.0f, -500.0f, 500.0f, 500.0f, 500.0f);
func_802EF9F8(pCtrl, 0.6f);
func_802EFA18(pCtrl, 2);
particleEmitter_func_802EF9F8(pCtrl, 0.6f);
particleEmitter_func_802EFA18(pCtrl, 2);
particleEmitter_setStartingScaleRange(pCtrl, 1.0f, 1.0f);
particleEmitter_setDrawMode(pCtrl, 2);
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);

View File

@@ -26,7 +26,7 @@ ActorAnimationInfo D_80391120[] ={
ActorInfo D_80391158 = { MARKER_A6_GRABBA, ACTOR_118_GRABBA, ASSET_371_MODEL_GRABBA,
0x1, D_80391120,
GV_func_8038BEA0, func_80326224, actor_draw,
GV_func_8038BEA0, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
@@ -122,7 +122,7 @@ void func_8038BBFC(ParticleEmitter *pCtrl, f32 position[3], s32 cnt){
void func_8038BC7C(f32 position[3], s32 cnt){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
func_8038BBFC(pCtrl, position, cnt);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-60.0f, 0.0f, -60.0f,
60.0f, 30.0f, 60.0f
);
@@ -140,7 +140,7 @@ void func_8038BC7C(f32 position[3], s32 cnt){
void func_8038BD8C(f32 position[3], s32 cnt){
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(cnt);
func_8038BBFC(pCtrl, position, cnt);
particleEmitter_setParticleSpawnPositionRange(pCtrl,
particleEmitter_setSpawnPositionRange(pCtrl,
-40.0f, 0.0f, -40.0f,
40.0f, 30.0f, 40.0f
);

View File

@@ -17,7 +17,7 @@ ActorAnimationInfo D_80391190[] = {
ActorInfo D_803911C0 = { 0xAC, 0x11E, 0x3E5,
0, D_80391190,
GV_func_8038C658, func_80326224, GV_func_8038C5D0,
GV_func_8038C658, actor_update_func_80326224, GV_func_8038C5D0,
0, 0, 0.0f, 0
};

View File

@@ -24,19 +24,19 @@ Actor *func_8038CC40(ActorMarker *this_marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
u8 D_803911F0[3] = {0, 1, 2};
ActorInfo D_803911F4 = { 0xBB, 0x285, 0x3E6,
0, NULL,
func_8038CC98, func_80326224, func_8038CC40,
func_8038CC98, actor_update_func_80326224, func_8038CC40,
0, 0, 0.0f, 0
};
ActorInfo D_80391218 = { 0xBB, 0x286, 0x3E6,
0, NULL,
func_8038CC98, func_80326224, func_8038CC40,
func_8038CC98, actor_update_func_80326224, func_8038CC40,
0, 0, 0.0f, 0
};
ActorInfo D_8039123C = { 0xBB, 0x287, 0x3E6,
0, NULL,
func_8038CC98, func_80326224, func_8038CC40,
func_8038CC98, actor_update_func_80326224, func_8038CC40,
0, 0, 0.0f, 0
};

View File

@@ -16,7 +16,7 @@ ActorAnimationInfo D_80391290[] = {
};
ActorInfo D_803912B8 = { MARKER_F9_JINXY, ACTOR_1F7_JINXY, ASSET_422_MODEL_JINXY,
0x1, D_80391290,
func_8038D47C, func_80326224, actor_draw,
func_8038D47C, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};

View File

@@ -11,13 +11,13 @@ ActorAnimationInfo GV_D_80391380[] = {
};
ActorInfo GV_D_80391390 = { 0xFA, 0x1F8, 0x423,
0x1, GV_D_80391380,
func_8038E3B0, func_80326224, actor_draw,
func_8038E3B0, actor_update_func_80326224, actor_draw,
0, 0x100, 0.0f, 0
};
ActorInfo D_803913B4 = { 0xFB, 0x1F9, 0x424,
0x1, GV_D_80391380,
func_8038E3B0, func_80326224, actor_draw,
func_8038E3B0, actor_update_func_80326224, actor_draw,
0, 0x100, 0.0f, 0
};

View File

@@ -82,25 +82,25 @@ ActorAnimationInfo D_803913E0[] = {
ActorInfo D_80391428 = { MARKER_EC_GV_SUN_SWITCH, ACTOR_13F_GV_SUN_SWITCH, ASSET_400_MODEL_SUN_SWITCH,
0x1, D_803913E0,
chSunSwitch_update, func_80326224, actor_draw,
chSunSwitch_update, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8039144C = { MARKER_F1_GV_STAR_SWITCH, ACTOR_144_GV_STAR_SWITCH, ASSET_3D7_MODEL_STAR_SWITCH,
0x1, D_803913E0,
chStarSwitch_update, func_80326224, actor_draw,
chStarSwitch_update, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
ActorInfo D_80391470 = { MARKER_F2_HONEYCOMB_SWITCH, ACTOR_145_HONEYCOMB_SWITCH, ASSET_438_MODEL_HONEYCOMB_SWITCH,
0x1, D_803913E0,
chHoneycombSwitch_update, func_80326224, actor_draw,
chHoneycombSwitch_update, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
ActorInfo D_80391494 = { MARKER_23C_GV_SNS_SWITCH, ACTOR_245_GV_SNS_SWITCH, ASSET_515_MODEL_GV_SNS_SWITCH,
0x1, D_803913E0,
func_8038EF14, func_80326224, actor_draw,
func_8038EF14, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
@@ -118,31 +118,31 @@ ActorInfo D_803914DC = { MARKER_ED_GV_SUN_DOOR, ACTOR_140_GV_SUN_DOOR, ASSET_3FF
ActorInfo GV_D_80391500 = { MARKER_F0_GV_KAZOOIE_DOOR, ACTOR_143_GV_KAZOOIE_DOOR, ASSET_3D9_MODEL_GV_KAZOOIE_DOOR,
0x1, 0x0,
chKazooieDoor_update, func_80326224, func_80325F2C,
chKazooieDoor_update, actor_update_func_80326224, func_80325F2C,
0, 0, 0.0f, 0
};
ActorInfo GV_D_80391524 = { MARKER_EF_GV_STAR_HATCH, ACTOR_142_GV_STAR_HATCH, ASSET_3DB_MODEL_GV_STAR_HATCH,
0x1, 0x0,
func_8038E648, func_80326224, func_80325F2C,
func_8038E648, actor_update_func_80326224, func_80325F2C,
0, 0, 0.0f, 0
};
ActorInfo D_80391548 = { MARKER_F3_GV_KAZOOIE_TARGET, ACTOR_146_GV_KAZOOIE_TARGET, ASSET_3E2_MODEL_GV_KAZOOIE_TARGET,
0x1, 0x0,
chKazooieTarget_update, func_80326224, actor_drawFullDepth,
chKazooieTarget_update, actor_update_func_80326224, actor_drawFullDepth,
0, 0x400, 0.0f, 0
};
ActorInfo D_8039156C = { MARKER_F8_GV_KAZOOIE_DOOR, ACTOR_1F5_GV_KAZOOIE_DOOR, ASSET_3D9_MODEL_GV_KAZOOIE_DOOR,
0x1, 0x0,
func_8038E97C, func_80326224, func_80325F2C,
func_8038E97C, actor_update_func_80326224, func_80325F2C,
0, 0, 0.0f, 0
};
ActorInfo D_80391590 = { MARKER_23A_GV_SNS_CHAMBER_DOOR, ACTOR_243_GV_SNS_CHAMBER_DOOR, ASSET_514_MODEL_GV_SNS_CHAMBER_DOOR,
0x1, 0x0,
func_8038E914, func_80326224, func_80325F2C,
func_8038E914, actor_update_func_80326224, func_80325F2C,
0, 0, 0.0f, 0
};

View File

@@ -30,7 +30,7 @@ void func_80390000(s32 arg0){
}//L803900AC
if(GV_D_80391AD0 == 2){
levelSpecificFlags_set(6, FALSE);
levelSpecificFlags_set(LEVEL_FLAG_6_GV_UNKNOWN, FALSE);
func_803228D8();
func_802E4078(MAP_15_GV_WATER_PYRAMID, 1, 0);
}
@@ -40,7 +40,8 @@ void func_803900F8(void){}
void func_80390100(void){
GV_D_80391AD0 = 0;
if(levelSpecificFlags_get(6)){
if (levelSpecificFlags_get(LEVEL_FLAG_6_GV_UNKNOWN)) {
func_80390000(1);
}
}

View File

@@ -37,7 +37,7 @@ void __waterCtrl_setState(s32 arg0){
}
if(GV_D_80391B00.state == 3){
levelSpecificFlags_set(6, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_6_GV_UNKNOWN, TRUE);
func_803228D8();
volatileFlag_set(VOLATILE_FLAG_E, 1);
func_802E4078(MAP_12_GV_GOBIS_VALLEY, 0, 0);

View File

@@ -23,7 +23,7 @@ enum chchimpystump_state_e {
ActorInfo chchimpystump = {
MARKER_95_CHIMPY_STUMP, ACTOR_C5_CHIMPY_STUMP, ASSET_3C8_MODEL_CHIMPY_STUMP,
1, NULL,
chchimpystump_update, func_80326224, actor_drawFullDepth,
chchimpystump_update, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};

View File

@@ -46,7 +46,7 @@ ActorAnimationInfo chCongaAnimations[9] = {
ActorInfo chcongaInfo = { MARKER_7_CONGA, ACTOR_8_CONGA, ASSET_35C_MODEL_CONGA,
1, chCongaAnimations,
func_803876D0, func_80326224, actor_draw,
func_803876D0, actor_update_func_80326224, actor_draw,
0, 0x333, 0.0f, 0
};

View File

@@ -42,7 +42,7 @@ ActorAnimationInfo chGrublinAnimations[11] = {
ActorInfo chgrublinInfo = { MARKER_5_GRUBLIN, ACTOR_6_GRUBLIN, ASSET_3C5_MODEL_GRUBLIN,
1, chGrublinAnimations,
func_80388A80, func_80326224, actor_draw,
func_80388A80, actor_update_func_80326224, actor_draw,
2500, 0, 1.0f, 0
};

View File

@@ -8,7 +8,7 @@
/* extern function declarations */
void bundle_setYaw(f32);
void spawnQueue_bundle_f32(s32, s32, s32, s32);
Actor *spawnQueue_bundle_f32(s32, s32, s32, s32);
/* public function declarations */
Actor *chhut_draw(ActorMarker *, Gfx **, Mtx **, Vtx **);
@@ -50,7 +50,15 @@ void __chhut_spawnExplosion(ActorMarker *this) {
}
void chhut_update(Actor *this) {
static s32 D_803898D8[6] = {0, 1, 2, 3, 6, 4};
static enum bundle_e D_803898D8[6] = {
BUNDLE_0_MM_HUT_MUSIC_NOTE,
BUNDLE_1_MM_HUT_BLUE_EGG,
BUNDLE_2_MM_HUT_GRUBLIN,
BUNDLE_3_MM_HUT_JINJO_GREEN,
BUNDLE_6_MM_HUT_EXTRA_LIFE,
BUNDLE_4_MM_HUT_JIGGY
};
f32 diff_pos[3];
f32 plyr_pos[3];
@@ -87,7 +95,7 @@ void chhut_update(Actor *this) {
bundle_setYaw(this->yaw);
if (mm_hut_smash_count < 5) {
__spawnQueue_add_4((GenFunction_4)spawnQueue_bundle_f32, D_803898D8[mm_hut_smash_count], *(s32*)(&diff_pos[0]),*(s32*)(&diff_pos[1]),*(s32*)(&diff_pos[2]));
__spawnQueue_add_4((GenFunction_4) spawnQueue_bundle_f32, D_803898D8[mm_hut_smash_count], *(s32 * )(&diff_pos[0]), *(s32 * )(&diff_pos[1]), *(s32 * )(&diff_pos[2]));
}
else {
jiggy_spawn(JIGGY_5_MM_HUTS, diff_pos);
@@ -117,6 +125,6 @@ void mm_resetHuts(void) {
ActorInfo chhutInfo = {
MARKER_51_MM_HUT, ACTOR_9_MM_HUT, ASSET_7D7_MODEL_MM_HUT,
0, chhutAnimations,
chhut_update, func_80326224, chhut_draw,
chhut_update, actor_update_func_80326224, chhut_draw,
0, 0x100, 0.0f, 0
};

View File

@@ -34,7 +34,7 @@ enum chjuju_animation_state_e {
ActorInfo chjujuInfo = {
MARKER_67_JUJU, ACTOR_59_JUJU, ASSET_2E6_MODEL_JUJU,
0, NULL,
chjuju_update, func_80326224, chjuju_draw,
chjuju_update, actor_update_func_80326224, chjuju_draw,
0, 0, 0.0f, 0
};

View File

@@ -24,7 +24,7 @@ void chjujuhitbox_setJuju(Actor *this, s32 slave_id, Actor *slavePtr);
ActorInfo chjujuhitboxInfo = {
MARKER_67_JUJU, ACTOR_11_JUJU_CTRL, 0,
3, NULL,
chjujuhitbox_update, func_80326224, chjujuhitbox_draw,
chjujuhitbox_update, actor_update_func_80326224, chjujuhitbox_draw,
0, 0, 0.0f, 0
};

View File

@@ -19,7 +19,7 @@ enum chorange_state_e {
ActorInfo chorangeInfo = {
MARKER_C_ORANGE_PROJECTILE, ACTOR_14_ORANGE_PROJECTILE, ASSET_2D2_MODEL_ORANGE,
1, NULL,
chorange_update, func_80326224, chorange_draw,
chorange_update, actor_update_func_80326224, chorange_draw,
0, 0, 0.6f, 0
};

View File

@@ -3,7 +3,7 @@
#include "variables.h"
/* extern functions */
void func_80326224(Actor *);
void actor_update_func_80326224(Actor *);
void func_80329904(ActorMarker *, s32, void *);
extern void func_802EFA20(ParticleEmitter *, f32, f32);
@@ -14,7 +14,7 @@ void chorangepad_update(Actor *);
ActorInfo chorangepadInfo = {
MARKER_66_ORANGE_PAD, ACTOR_57_ORANGE_PAD, ASSET_2EB_MODEL_ORANGE_PAD,
0, NULL,
chorangepad_update, func_80326224, actor_draw,
chorangepad_update, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
@@ -66,12 +66,12 @@ void func_80386444(ActorMarker *marker) {
particleEmitter_setStartingScaleRange(p_ctrl, 0.09f, 0.19f);
particleEmitter_setFinalScaleRange(p_ctrl, 0.0f, 0.0f);
particleEmitter_setParticleVelocityRange(p_ctrl, -200.0f, 500.0f, -200.0f, 200.0f, 700.0f, 200.0f);
particleEmitter_setParticleAccelerationRange(p_ctrl, 0.0f, -1200.0f, 0.0f, 0.0f, -1200.0f, 0.0f);
particleEmitter_setAccelerationRange(p_ctrl, 0.0f, -1200.0f, 0.0f, 0.0f, -1200.0f, 0.0f);
particleEmitter_setAngularVelocityRange(p_ctrl, -600.0f, -600.0f, -600.0f, 600.0f, 600.0f, 600.0f);
particleEmitter_setSpawnIntervalRange(p_ctrl, 0.0f, 0.01f);
particleEmitter_setParticleLifeTimeRange(p_ctrl, 4.0f, 4.0f);
func_802EF9F8(p_ctrl, 0.01f);
func_802EFA18(p_ctrl, 3);
particleEmitter_func_802EF9F8(p_ctrl, 0.01f);
particleEmitter_func_802EFA18(p_ctrl, 3);
func_802EFA20(p_ctrl, 1.0f, 1.3f);
particleEmitter_emitN(p_ctrl, 30);
}

View File

@@ -2,11 +2,18 @@
#include "functions.h"
#include "variables.h"
/* extern functions */
extern void ml_vec3f_assign(f32[3], f32, f32, f32);
/* public functions */
void chLoggo_update(Actor *this);
/* .data */
enum chLoggo_state_e {
LOGGO_STATE_1_IDLE = 1,
LOGGO_STATE_2_FLUSHING
};
ActorAnimationInfo chLoggoAnimations[] = {
{0, 0.0f},
{ASSET_238_ANIM_LOGGO_IDLE, 0.8f},
@@ -14,108 +21,113 @@ ActorAnimationInfo chLoggoAnimations[] = {
};
ActorInfo chLoggo = {
MARKER_252_LOGGO, ACTOR_37F_LOGGO, ASSET_519_MODEL_LOGGO,
0x1, chLoggoAnimations,
chLoggo_update, func_80326224, actor_draw,
MARKER_252_LOGGO, ACTOR_37F_LOGGO, ASSET_519_MODEL_LOGGO,
0x1, chLoggoAnimations,
chLoggo_update, actor_update_func_80326224, actor_draw,
1000, 0, 0.0f, 0
};
/* .code */
void __chLoggo_flush(ActorMarker* marker) {
Actor* actor = marker_getActor(marker);
void __chLoggo_flush(ActorMarker *marker) {
Actor *actor = marker_getActor(marker);
func_8028F918(2);
subaddie_set_state_with_direction(actor, 2, 0.01, 1);
subaddie_set_state_with_direction(actor, LOGGO_STATE_2_FLUSHING, 0.01, 1);
actor_playAnimationOnce(actor);
actor->lifetime_value = 3.2f;
}
void __chLoggo_textCallback(ActorMarker* caller, enum asset_e text_id, s32 arg3) {
void __chLoggo_textCallback(ActorMarker *caller, enum asset_e text_id, s32 arg3) {
__chLoggo_flush(caller);
}
void __chLoggo_collide(ActorMarker* this_marker, ActorMarker *other_marker) {
void __chLoggo_collide(ActorMarker *this_marker, ActorMarker *other_marker) {
Actor *this = marker_getActor(this_marker);
if ((player_getTransformation() == TRANSFORM_3_PUMPKIN) && !fileProgressFlag_get(FILEPROG_89_ENTERED_LOGGO_AS_PUMPKIN)) {
if (gcdialog_showText(ASSET_ADF_TEXT_ENTER_LOGGO, 0x2B, this->position, this->marker, &__chLoggo_textCallback, 0) != 0) {
actor_collisionOff(this);
fileProgressFlag_set(FILEPROG_89_ENTERED_LOGGO_AS_PUMPKIN, TRUE);
}
return;
}
if ((player_getTransformation() == TRANSFORM_3_PUMPKIN) && fileProgressFlag_get(FILEPROG_89_ENTERED_LOGGO_AS_PUMPKIN)) {
actor_collisionOff(this);
__chLoggo_flush(this_marker);
return;
}
if ((player_getTransformation() == TRANSFORM_1_BANJO) && !fileProgressFlag_get(FILEPROG_88_TRIED_LOGGO_AS_BEAR)){
if(gcdialog_showText(ASSET_ADE_TEXT_LOGGO_AS_BEAR, 0x2A, this->position, NULL, NULL, NULL)) {
if ((player_getTransformation() == TRANSFORM_1_BANJO) && !fileProgressFlag_get(FILEPROG_88_TRIED_LOGGO_AS_BEAR)) {
if (gcdialog_showText(ASSET_ADE_TEXT_LOGGO_AS_BEAR, 0x2A, this->position, NULL, NULL, NULL)) {
fileProgressFlag_set(FILEPROG_88_TRIED_LOGGO_AS_BEAR, TRUE);
}
}
}
void chLoggo_update(Actor *this){
f32 sp44;
f32 sp38[3];
void chLoggo_update(Actor *this) {
f32 tick;
f32 position[3];
s32 sp34;
sp44 = time_getDelta();
if(!this->volatile_initialized){
tick = time_getDelta();
if (!this->volatile_initialized) {
this->volatile_initialized = TRUE;
this->marker->propPtr->unk8_3 = TRUE;
actor_collisionOn(this);
marker_setCollisionScripts(this->marker, __chLoggo_collide, NULL, NULL);
subaddie_set_state_with_direction(this, 1, 0.01f, 1);
subaddie_set_state_with_direction(this, LOGGO_STATE_1_IDLE, 0.01f, 1);
actor_loopAnimation(this);
this->lifetime_value = 0.0f;
if(!fileProgressFlag_get(FILEPROG_8A_EXITED_LOGGO) && levelSpecificFlags_get(0x33)){
if(gcdialog_showText(ASSET_AE0_TEXT_EXIT_LOGGO, 4, NULL, NULL, NULL, NULL)){
if (!fileProgressFlag_get(FILEPROG_8A_EXITED_LOGGO) && levelSpecificFlags_get(LEVEL_FLAG_33_MMM_UNKNOWN)) {
if (gcdialog_showText(ASSET_AE0_TEXT_EXIT_LOGGO, 4, NULL, NULL, NULL, NULL)) {
fileProgressFlag_set(FILEPROG_8A_EXITED_LOGGO, TRUE);
}
}
}
switch(this->state){
case 1:
switch (this->state) {
case LOGGO_STATE_1_IDLE:
sp34 = func_803114B0() ? 12000 : 0;
if(actor_animationIsAt(this, 0.09f)){
if (actor_animationIsAt(this, 0.09f)) {
func_8030E878(SFX_109_LOGGO_LID_CLAP, randf2(0.975f, 1.025f), MAX(0, 22000 - sp34), this->position, 400.0f, 1000.0f);
break;
}
if(actor_animationIsAt(this, 0.37f)){
if (actor_animationIsAt(this, 0.37f)) {
func_8030E878(SFX_20_METAL_CLANK_1, randf2(1.675f, 1.725f), MAX(0, 12000 - sp34), this->position, 400.0f, 1000.0f);
break;
}
if(actor_animationIsAt(this, 0.6f)){
if (actor_animationIsAt(this, 0.6f)) {
func_8030E878(SFX_3F_CAULDRON_SQEAK_1, randf2(0.975f, 1.025f), MAX(0, 7000 - sp34), this->position, 400.0f, 1000.0f);
break;
}
if(actor_animationIsAt(this, 0.16f)){
if (actor_animationIsAt(this, 0.16f)) {
func_8030E878(SFX_40_CAULDRON_SQEAK_2, randf2(0.975f, 1.025f), MAX(0, 7000 - sp34), this->position, 400.0f, 1000.0f);
break;
}
break;
case 2:
if(actor_animationIsAt(this, 0.46f)){
case LOGGO_STATE_2_FLUSHING:
if (actor_animationIsAt(this, 0.46f)) {
this->marker->propPtr->unk8_3 = FALSE;
FUNC_8030E8B4(SFX_92_TOILET_FLUSH, 1.0f, 32000, this->position, 600, 1500);
levelSpecificFlags_set(0x33, TRUE);
ml_vec3f_assign(sp38, this->position_x - 50.0f, this->position_y + 50.0f, this->position_z);
func_8028F6E4(BS_INTR_2F_LOGGO, sp38);
levelSpecificFlags_set(LEVEL_FLAG_33_MMM_UNKNOWN, TRUE);
ml_vec3f_assign(position, this->position_x - 50.0f, this->position_y + 50.0f, this->position_z);
func_8028F6E4(BS_INTR_2F_LOGGO, position);
}
if(0.0 < this->lifetime_value){
this->lifetime_value -= sp44;
if (0.0 < this->lifetime_value) {
this->lifetime_value -= tick;
}
else{
else {
warp_mmmEnterLoggo(0, 0);
}
break;

View File

@@ -2,22 +2,32 @@
#include "functions.h"
#include "variables.h"
typedef struct{
typedef struct {
f32 alpha; //motzhand_alpha
u8 *pattern_ptr;
u8 unk8; //pattern_id
u8 unk9; //end_current seq?
f32 unkC[3];
}ActorLocal_Motzhand;
} ActorLocal_Motzhand;
void chmotzhand_update(Actor *this);
/* public functions */
void chMotzhand_update(Actor *this);
Actor *chMotzhand_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
/* .data */
enum chMotzhand_state_e {
MOTZHAND_STATE_0_INIT,
MOTZHAND_STATE_1_UNKNOWN,
MOTZHAND_STATE_2_UNKNOWN,
MOTZHAND_STATE_3_UNKNOWN,
MOTZHAND_STATE_4_UNKNOWN,
MOTZHAND_STATE_5_UNKNOWN
};
ActorInfo chMotzhand = {
MARKER_49_MOTZHAND, ACTOR_3A_MOTZHAND, ASSET_88C_MODEL_MOTZHAND,
0x0, NULL,
chmotzhand_update, func_80326224, chMotzhand_draw,
chMotzhand_update, actor_update_func_80326224, chMotzhand_draw,
0, 0, 0.0f, 0
};
@@ -25,53 +35,54 @@ u8 sMotzhandPattern1[] = {7, 14, 13, 9, 17, 0xFF};
u8 sMotzhandPattern2[] = {10, 18, 15, 9, 14, 13, 9, 17, 11, 15, 0xFF};
/* .code */
void func_80387410(f32 dst[3]){
void func_80387410(f32 dst[3]) {
dst[0] = 0.0f;
dst[1] = 1500.0f;
dst[2] = -2400.0f;
}
void chMotzhand_setState(Actor *this, s32 next_state){
ActorLocal_Motzhand * local = (ActorLocal_Motzhand *) &this->local;
void chMotzhand_setState(Actor *this, s32 next_state) {
ActorLocal_Motzhand *local = (ActorLocal_Motzhand *) &this->local;
if(next_state == 1 && this->state == 0){
if (next_state == MOTZHAND_STATE_1_UNKNOWN && this->state == MOTZHAND_STATE_0_INIT) {
skeletalAnim_set(this->unk148, ASSET_A7_ANIM_MOTZHAND_IDLE, 0.0f, 1.8f);
func_80387410(this->position);
}
if(next_state == 2){
if (next_state == MOTZHAND_STATE_2_UNKNOWN) {
skeletalAnim_set(this->unk148, ASSET_A7_ANIM_MOTZHAND_IDLE, 0.9f, 1.8f);
}
if(next_state == 3){
if (next_state == MOTZHAND_STATE_3_UNKNOWN) {
skeletalAnim_set(this->unk148, ASSET_A8_ANIM_MOTZHAND_PLAY, 0.9f, 1.8f);
}
if(next_state == 4){
if (next_state == MOTZHAND_STATE_4_UNKNOWN) {
local->alpha = 1.0f;
}
if(next_state == 5){
if (next_state == MOTZHAND_STATE_5_UNKNOWN) {
marker_despawn(this->marker);
}
this->state = next_state;
}
Actor *chMotzhand_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
Actor *chMotzhand_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
Actor *this = marker_getActor(marker);
ActorLocal_Motzhand * local = (ActorLocal_Motzhand *) &this->local;
ActorLocal_Motzhand *local = (ActorLocal_Motzhand *) &this->local;
f32 sp3C[3];
if(this->state == 0 || this->state == 5)
if (this->state == MOTZHAND_STATE_0_INIT || this->state == MOTZHAND_STATE_5_UNKNOWN) {
return this;
modelRender_setBoneTransformList(skeletalAnim_getBoneTransformList(this->unk148));
if(this->state == 4){
modelRender_setAlpha((s32) (local->alpha * 255.0f));
}
else{
modelRender_setBoneTransformList(skeletalAnim_getBoneTransformList(this->unk148));
if (this->state == MOTZHAND_STATE_4_UNKNOWN) {
modelRender_setAlpha((s32)(local->alpha * 255.0f));
}
else {
modelRender_setAlpha((s32) 255);
}
@@ -84,119 +95,124 @@ Actor *chMotzhand_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
}
void func_80387654(ActorMarker* marker) {
Actor* actor = marker_getActor(marker);
void func_80387654(ActorMarker *marker) {
Actor *actor = marker_getActor(marker);
if ((actor->state != 4) && (actor->state != 5)) {
chMotzhand_setState(actor, 4);
if ((actor->state != MOTZHAND_STATE_4_UNKNOWN) && (actor->state != MOTZHAND_STATE_5_UNKNOWN)) {
chMotzhand_setState(actor, MOTZHAND_STATE_4_UNKNOWN);
}
}
bool func_8038769C(ActorMarker *marker) {
return marker_getActor(marker)->state == 1;
return marker_getActor(marker)->state == MOTZHAND_STATE_1_UNKNOWN;
}
// chMotzhand_startPattern
void func_803876C8(ActorMarker *marker, s32 arg1){
void func_803876C8(ActorMarker *marker, s32 arg1) {
Actor *this = marker_getActor(marker);
ActorLocal_Motzhand * local = (ActorLocal_Motzhand *) &this->local;
ActorLocal_Motzhand *local = (ActorLocal_Motzhand *) &this->local;
local->unk8 = arg1;
if(arg1 == TRUE){
if (arg1 == TRUE) {
local->pattern_ptr = sMotzhandPattern1;
}
else{
else {
local->pattern_ptr = sMotzhandPattern2;
}
chMotzhand_setState(this, 2);
chMotzhand_setState(this, MOTZHAND_STATE_2_UNKNOWN);
}
void func_80387720(ActorMarker *marker) {
Actor * this = marker_getActor(marker);
ActorLocal_Motzhand * local = (ActorLocal_Motzhand *) &this->local;
Actor *this = marker_getActor(marker);
ActorLocal_Motzhand *local = (ActorLocal_Motzhand *) &this->local;
local->unk9 = TRUE;
}
void chmotzhand_update(Actor *this){
ActorLocal_Motzhand * local = (ActorLocal_Motzhand *) &this->local;
f32 sp48;
f32 sp3C[3];
void chMotzhand_update(Actor *this) {
ActorLocal_Motzhand *local = (ActorLocal_Motzhand *) &this->local;
f32 tick;
f32 diff[3];
f32 sp30[3];
sp48 = time_getDelta();
tick = time_getDelta();
if(!this->volatile_initialized){
if (!this->volatile_initialized) {
this->volatile_initialized = TRUE;
if(jiggyscore_isSpawned(JIGGY_60_MMM_MOTZHAND)){
if (jiggyscore_isSpawned(JIGGY_60_MMM_MOTZHAND)) {
marker_despawn(this->marker);
return;
}
local->unk8 = FALSE;
local->unk9 = FALSE;
local->unkC[0] = this->position_x;
local->unkC[1] = this->position_y;
local->unkC[2] = this->position_z;
chMotzhand_setState(this, 1);
chMotzhand_setState(this, MOTZHAND_STATE_1_UNKNOWN);
}//L803877CC
if(this->state == 2){
if(local->unk9){
while(*local->pattern_ptr != 0xff){
if (this->state == MOTZHAND_STATE_2_UNKNOWN) {
if (local->unk9) {
while (*local->pattern_ptr != 0xff) {
*local->pattern_ptr++; //find_seq end
}
local->unk9 = FALSE;
}//L80387820
if(0xff == *local->pattern_ptr){
if (0xff == *local->pattern_ptr) {
func_80387410(sp30);
}
else{
else {
organMinigame_getKeyPosition(*local->pattern_ptr, sp30);
sp30[0] += local->unkC[0];
sp30[1] += local->unkC[1];
sp30[2] += local->unkC[2];
TUPLE_ADD(sp30, local->unkC)
}//L80387880
sp3C[0] = sp30[0] - this->position_x;
sp3C[1] = sp30[1] - this->position_y;
sp3C[2] = sp30[2] - this->position_z;
if(LENGTH_VEC3F(sp3C) < 5.0f){
if(*local->pattern_ptr == 0xff){
chMotzhand_setState(this, 1);
diff[0] = sp30[0] - this->position_x;
diff[1] = sp30[1] - this->position_y;
diff[2] = sp30[2] - this->position_z;
if (LENGTH_VEC3F(diff) < 5.0f) {
if (*local->pattern_ptr == 0xff) {
chMotzhand_setState(this, MOTZHAND_STATE_1_UNKNOWN);
}
else{
chMotzhand_setState(this, 3);
else {
chMotzhand_setState(this, MOTZHAND_STATE_3_UNKNOWN);
}
}
else{//L80387930
ml_vec3f_set_length(sp3C, ((local->unk8 == TRUE) ? 150.0f : 225.0f)*sp48);
this->position_x = sp3C[0] + this->position_x;
this->position_y = sp3C[1] + this->position_y;
this->position_z = sp3C[2] + this->position_z;
else {//L80387930
ml_vec3f_set_length(diff, ((local->unk8 == TRUE) ? 150.0f : 225.0f) * tick);
this->position_x = diff[0] + this->position_x;
this->position_y = diff[1] + this->position_y;
this->position_z = diff[2] + this->position_z;
}
}//L803879A4
if(this->state == 3){
if(skeletalAnim_getLoopCount(this->unk148) > 0){
if (this->state == MOTZHAND_STATE_3_UNKNOWN) {
if (skeletalAnim_getLoopCount(this->unk148) > 0) {
func_80389D9C(*local->pattern_ptr);
if(local->unk9){
while(*local->pattern_ptr != 0xff){
if (local->unk9) {
while (*local->pattern_ptr != 0xff) {
*local->pattern_ptr++; //find_seq end
}
local->unk9 = FALSE;
}
else{//L80387A18
else {//L80387A18
*local->pattern_ptr++;
}
chMotzhand_setState(this, 2);
chMotzhand_setState(this, MOTZHAND_STATE_2_UNKNOWN);
}
}//L80387A2C
if(this->state == 4){
local->alpha -= 0.25*sp48;
if(local->alpha <= 0.0f){
chMotzhand_setState(this, 5);
if (this->state == MOTZHAND_STATE_4_UNKNOWN) {
local->alpha -= 0.25 * tick;
if (local->alpha <= 0.0f) {
chMotzhand_setState(this, MOTZHAND_STATE_5_UNKNOWN);
}
}
}

View File

@@ -218,7 +218,7 @@ void chnapper_update(Actor *this){
}//L80387154
if(this->state == 4){
func_80326224(this);
actor_update_func_80326224(this);
if(0.99 <= this->unk48)
marker_despawn(this->marker);
}

View File

@@ -2,91 +2,109 @@
#include "functions.h"
#include "variables.h"
extern void func_80389484(ActorMarker *, f32);
/* extern functions */
extern void chPortrait_break(ActorMarker *, f32);
typedef struct {
f32 unk0;
}ActorLocal_PortraitChompa;
f32 timer;
} ActorLocal_PortraitChompa;
void func_80388028(Actor *this);
Actor *func_80387AA0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
/* public functions */
void chChompa_update(Actor *this);
Actor *chChompa_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
/* .data */
ActorInfo D_8038BAD0 = {
MARKER_254_PORTRAIT_CHOMPA_A, ACTOR_381_PORTRAIT_CHOMPA, ASSET_521_MODEL_PORTRAIT_CHOMPA,
enum chChompa_state_e {
CHOMPA_STATE_0_INIT,
CHOMPA_STATE_1_IDLE,
CHOMPA_STATE_2_GROWLING,
CHOMPA_STATE_3_WAITING_TO_BITE,
CHOMPA_STATE_4_BITING,
CHOMPA_STATE_5_DYING,
CHOMPA_STATE_6_DEAD
};
ActorInfo D_8038BAD0 = {
MARKER_254_PORTRAIT_CHOMPA_A, ACTOR_381_PORTRAIT_CHOMPA, ASSET_521_MODEL_PORTRAIT_CHOMPA,
0x0, NULL,
func_80388028, NULL, func_80387AA0,
chChompa_update, NULL, chChompa_draw,
0, 0, 0.0f, 0
};
/* .code */
Actor *func_80387AA0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
Actor* actor = marker_getActor(marker);
if ((actor->state == 0) || (actor->state == 1) || (actor->state == 6) || (actor->state == 2)) {
Actor *chChompa_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
Actor *actor = marker_getActor(marker);
if (actor->state == CHOMPA_STATE_0_INIT || actor->state == CHOMPA_STATE_1_IDLE || actor->state == CHOMPA_STATE_6_DEAD || actor->state == CHOMPA_STATE_2_GROWLING) {
return actor;
}
return actor_draw(marker, gfx, mtx, vtx);
}
void func_80387B14(Actor *this, s32 next_state){
void chChompa_setState(Actor *this, s32 next_state) {
ActorLocal_PortraitChompa *local = (ActorLocal_PortraitChompa *) &this->local;
f32 tmp = 2.5f;
this->marker->id = 0x1d1;
if(next_state == 1 || next_state == 2){
if (next_state == CHOMPA_STATE_1_IDLE || next_state == CHOMPA_STATE_2_GROWLING) {
skeletalAnim_set(this->unk148, 0x23e, 0.0f, 2.5f);
skeletalAnim_setProgress(this->unk148, 0.99f);
skeletalAnim_setBehavior(this->unk148, SKELETAL_ANIM_4_STOPPED);
if(this->state == 4){
local->unk0 = randf2(0.5f, 1.0f);
if (this->state == CHOMPA_STATE_4_BITING) {
local->timer = randf2(0.5f, 1.0f);
}
else{
local->unk0 = 0.0f;
else {
local->timer = 0.0f;
}
}//L80387BD0
if(this->state == 1 && next_state == 2){
if (this->state == CHOMPA_STATE_1_IDLE && next_state == CHOMPA_STATE_2_GROWLING) {
FUNC_8030E624(SFX_3EF, 0.9f, 32675);
}
if(next_state == 3){
local->unk0 = 0.2f;
if (next_state == CHOMPA_STATE_3_WAITING_TO_BITE) {
local->timer = 0.2f;
}
if(next_state == 4){
if (next_state == CHOMPA_STATE_4_BITING) {
this->marker->id = MARKER_254_PORTRAIT_CHOMPA_A;
skeletalAnim_set(this->unk148, 0x23e, 0.0f, 2.5f);
skeletalAnim_setBehavior(this->unk148, SKELETAL_ANIM_2_ONCE);
if(this->unk100){
func_80389484(this->unk100, tmp + 0.55);
if (this->unk100) {
chPortrait_break(this->unk100, tmp + 0.55);
}
FUNC_8030E624(SFX_3EF, 1.1f, 25000);
FUNC_8030E624(SFX_3EF, 1.1f, 25000);
}//L80387CAC
if(next_state == 5){
if (next_state == CHOMPA_STATE_5_DYING) {
func_8030E6D4(SFX_1E_HITTING_AN_ENEMY_2);
actor_collisionOff(this);
}
this->state = next_state;
}
void MMM_func_80387CF4(ActorMarker *this_marker, ActorMarker *other_marker) {
func_8030E6D4(0x1E);
void __chChompa_hit(ActorMarker *this_marker, ActorMarker *other_marker) {
func_8030E6D4(SFX_1E_HITTING_AN_ENEMY_2);
}
void func_80387D1C(ActorMarker* this_marker, ActorMarker *other_marker) {
void __chChompa_die(ActorMarker *this_marker, ActorMarker *other_marker) {
Actor *this = marker_getActor(this_marker);
func_80387B14(this, 5);
chChompa_setState(this, CHOMPA_STATE_5_DYING);
}
void func_80387D48(ActorMarker *marker){
void __chChompa_spwanPortrait(ActorMarker *marker) {
Actor *this = marker_getActor(reinterpret_cast(ActorMarker *, marker));
enum asset_e portrait_id;
Actor *portrait;
switch(this->unkF4_8){
switch (this->unkF4_8) {
case 0x32:
portrait_id = ACTOR_382_PORTRAIT_OF_GRUNTY;
break;
@@ -109,47 +127,46 @@ void func_80387D48(ActorMarker *marker){
portrait_id = ACTOR_382_PORTRAIT_OF_GRUNTY;
break;
}
portrait = spawn_child_actor(portrait_id, &this);
portrait->yaw = this->yaw;
this->unk100 = portrait->marker;
portrait->unk10_1 = FALSE;
}
void func_80387DF8(f32 position[3], s32 count, enum asset_e sprite_id) {
void __chChompa_emitDust(f32 position[3], s32 count, enum asset_e sprite_id) {
static s32 D_8038BAF4[3] = {0xB4, 0xFF, 0x8C};
static ParticleScaleAndLifetimeRanges D_8038BB00 = {{0.2f, 0.4f}, {1.8f, 2.8f}, {0.0f, 0.15f}, {0.7f, 1.2f}, 0.0f, 0.01f};
static struct43s D_8038BB28 = {
static ParticleSettingsVelocityAccelerationPosition D_8038BB28 = {
{{-150.0f, 250.0f, -150.0f}, {150.0f, 300.0f, 150.0f}},
{{ 0.0f, -600.0f, 0.0f}, { 0.0f, -600.0f, 0.0f}},
{{ -50.0f, -50.0f, -50.0f}, { 50.0f, 50.0f, 50.0f}}
};
ParticleEmitter *pCtrl;
pCtrl = partEmitMgr_newEmitter(count);
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(count);
particleEmitter_setRGB(pCtrl, D_8038BAF4);
particleEmitter_setSprite(pCtrl, sprite_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_8038BB28);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_8038BB28);
particleEmitter_setScaleAndLifetimeRanges(pCtrl, &D_8038BB00);
particleEmitter_emitN(pCtrl, count);
}
void func_80387E84(f32 position[3], s32 count, enum asset_e model_id) {
void __chChompa_emitBones(f32 position[3], s32 count, enum asset_e model_id) {
static ParticleScaleAndLifetimeRanges D_8038BB70 = {{1.0f, 1.0f}, {1.0f, 1.0f}, {0.0f, 0.0f}, {3.2f, 3.2f}, 0.0f, 0.45f};
static struct43s D_8038BB98 = {
static ParticleSettingsVelocityAccelerationPosition D_8038BB98 = {
{{-90.0f, 300.0f, -90.0f}, {90.0f, 660.0f, 90.0f}},
{{ 0.0f, -1200.0f, 0.0f}, { 0.0f, -1200.0f, 0.0f}},
{{-50.0f, 0.0f, -50.0f}, {50.0f, 50.0f, 50.0f}}
};
ParticleEmitter *pCtrl;
pCtrl = partEmitMgr_newEmitter(count);
ParticleEmitter *pCtrl = partEmitMgr_newEmitter(count);
particleEmitter_setModel(pCtrl, model_id);
particleEmitter_setPosition(pCtrl, position);
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_8038BB98);
particleEmitter_setVelocityAccelerationAndPositionRanges(pCtrl, &D_8038BB98);
particleEmitter_setAngularVelocityRange(pCtrl, -600.0f, -600.0f, -600.0f, 600.0f, 600.0f, 600.0f);
func_802EF9F8(pCtrl, 0.4f);
func_802EFA18(pCtrl, 3);
particleEmitter_func_802EF9F8(pCtrl, 0.4f);
particleEmitter_func_802EFA18(pCtrl, 3);
func_802EFA20(pCtrl, 1.0f, 1.3f);
particleEmitter_setSfx(pCtrl, SFX_2F_ORANGE_SPLAT, 16000);
particleEmitter_setDrawMode(pCtrl, 2);
@@ -157,97 +174,103 @@ void func_80387E84(f32 position[3], s32 count, enum asset_e model_id) {
particleEmitter_emitN(pCtrl, count);
}
void func_80387F7C(Actor *this){
void __chChompa_emitDeathEffects(Actor *this) {
f32 sp2C[3];
f32 sp20[3];
if(!this->marker->unk14_21) return;
if (!this->marker->unk14_21) {
return;
}
func_8034A174(this->marker->unk44, 5, sp2C);
func_8034A174(this->marker->unk44, 6, sp20);
func_80387E84(sp2C, 1, ASSET_523_MODEL_PORTRAIT_CHOMPA_TEETH);
func_80387E84(sp2C, 1, ASSET_524_MODEL_PORTRAIT_CHOMPA_HEAD);
func_80387E84(sp20, 6, ASSET_525_MODEL_PORTRAIT_CHOMPA_PART);
func_80387DF8(sp2C, 2, ASSET_700_SPRITE_DUST);
func_80387DF8(sp20, 2, ASSET_700_SPRITE_DUST);
__chChompa_emitBones(sp2C, 1, ASSET_523_MODEL_PORTRAIT_CHOMPA_TEETH);
__chChompa_emitBones(sp2C, 1, ASSET_524_MODEL_PORTRAIT_CHOMPA_HEAD);
__chChompa_emitBones(sp20, 6, ASSET_525_MODEL_PORTRAIT_CHOMPA_PART);
__chChompa_emitDust(sp2C, 2, ASSET_700_SPRITE_DUST);
__chChompa_emitDust(sp20, 2, ASSET_700_SPRITE_DUST);
}
void func_80388028(Actor *this){
void chChompa_update(Actor *this) {
ActorLocal_PortraitChompa *local = (ActorLocal_PortraitChompa *) &this->local;
f32 sp58 = time_getDelta();
f32 tick = time_getDelta();
f32 plyr_position[3];
f32 plyr_dist;
f32 sp44;
f32 sp40;
f32 anim_prev_progress;
f32 anim_progress;
if(!this->volatile_initialized){
if (!this->volatile_initialized) {
this->volatile_initialized = TRUE;
this->unk16C_0 = TRUE;
marker_setCollisionScripts(this->marker, NULL, MMM_func_80387CF4, func_80387D1C);
__spawnQueue_add_1((GenFunction_1)func_80387D48, reinterpret_cast(s32, this->marker));
func_80387B14(this, (this->state < 5) ? 1 : 6);
marker_setCollisionScripts(this->marker, NULL, __chChompa_hit, __chChompa_die);
__spawnQueue_add_1((GenFunction_1) __chChompa_spwanPortrait, reinterpret_cast(s32, this->marker));
chChompa_setState(this, this->state < CHOMPA_STATE_5_DYING ? CHOMPA_STATE_1_IDLE : CHOMPA_STATE_6_DEAD);
}//L803880B4
player_getPosition(plyr_position);
plyr_dist = ml_distance_vec3f(this->position, plyr_position);
if(this->state == 4)
if (this->state == CHOMPA_STATE_4_BITING) {
actor_collisionOn(this);
else
}
else {
actor_collisionOff(this);
if(this->state == 1 && plyr_dist < this->scale*400.0f){
func_80387B14(this, 2);
}
if(this->state == 2){
if(0.0f < local->unk0){
local->unk0 -= sp58;
if (this->state == CHOMPA_STATE_1_IDLE && plyr_dist < this->scale * 400.0f) {
chChompa_setState(this, CHOMPA_STATE_2_GROWLING);
}
if (this->state == CHOMPA_STATE_2_GROWLING) {
if (0.0f < local->timer) {
local->timer -= tick;
}
else if(plyr_dist < this->scale*300.0f){
func_80387B14(this, 3);
else if (plyr_dist < this->scale * 300.0f) {
chChompa_setState(this, CHOMPA_STATE_3_WAITING_TO_BITE);
}
else if(this->scale*500.0f < plyr_dist){
func_80387B14(this, 1);
else if (this->scale * 500.0f < plyr_dist) {
chChompa_setState(this, CHOMPA_STATE_1_IDLE);
}
}//L80388204
if(this->state == 3){
if(ml_timer_update(&local->unk0, sp58)){
func_80387B14(this, 4);
if (this->state == CHOMPA_STATE_3_WAITING_TO_BITE) {
if (ml_timer_update(&local->timer, tick)) {
chChompa_setState(this, CHOMPA_STATE_4_BITING);
}
}
if(this->state == 4){
skeletalAnim_getProgressRange(this->unk148, &sp44, &sp40);
if(sp44 < 0.56 && 0.56 <= sp40){
if (this->state == CHOMPA_STATE_4_BITING) {
skeletalAnim_getProgressRange(this->unk148, &anim_prev_progress, &anim_progress);
if (anim_prev_progress < 0.56 && 0.56 <= anim_progress) {
this->marker->id = 0x1d1;
}
if(sp44 < 0.5 && 0.5 <= sp40){
if (anim_prev_progress < 0.5 && 0.5 <= anim_progress) {
FUNC_8030E624(SFX_2_CLAW_SWIPE, 0.9f, 32000);
}
if( (sp44 < 0.11 && 0.11 <= sp40)
|| (sp44 < 0.32 && 0.32 <= sp40)
|| (sp44 < 0.53 && 0.53 <= sp40)
){
if ((anim_prev_progress < 0.11 && 0.11 <= anim_progress) ||
(anim_prev_progress < 0.32 && 0.32 <= anim_progress) ||
(anim_prev_progress < 0.53 && 0.53 <= anim_progress)
) {
func_8030E6A4(SFX_6D_CROC_BITE, randf2(0.95f, 1.05f), 32000);
}
if(sp44 < 0.9 && 0.9 <= sp40){
if (anim_prev_progress < 0.9 && 0.9 <= anim_progress) {
func_8030E6D4(SFX_2_CLAW_SWIPE);
}
if(skeletalAnim_getLoopCount(this->unk148) > 0){
func_80387B14(this, 2);
if (skeletalAnim_getLoopCount(this->unk148) > 0) {
chChompa_setState(this, CHOMPA_STATE_2_GROWLING);
}
}
if(this->state == 5){
if (this->state == CHOMPA_STATE_5_DYING) {
func_8030E6D4(SFX_D7_GRABBA_DEATH);
func_80387F7C(this);
func_80387B14(this, 6);
__chChompa_emitDeathEffects(this);
chChompa_setState(this, CHOMPA_STATE_6_DEAD);
}
}

View File

@@ -63,98 +63,98 @@ ActorAnimationInfo D_8038BBE0[] = {
ActorInfo D_8038BC28 = {
0x9C, 0x109, 0x3CD,
0x1, NULL,
func_802D3D54, func_80326224, actor_drawFullDepth,
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BC4C = {
0x9E, 0x10B, 0x3CF,
0x1, NULL,
func_802D3D54, func_80326224, actor_drawFullDepth,
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BC70 = {
0x9A, 0xCB, 0x3CC,
0x1, NULL,
func_802D3D54, func_80326224, actor_drawFullDepth,
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BC94 = {
0xA2, 0x114, 0x3D3,
0x1, NULL,
func_80388BDC, func_80326224, actor_drawFullDepth,
func_80388BDC, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BCB8 = {
0xE7, 0x265, 0x4DA,
0x1, NULL,
func_80389004, func_80326224, actor_drawFullDepth,
func_80389004, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BCDC = {
0x9D, 0x10A, 0x3CE,
0x1, NULL,
func_80389004, func_80326224, actor_drawFullDepth,
func_80389004, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BD00 = {
0xD3, 0x191, 0x50B,
0x1, NULL,
func_80389060, func_80326224, actor_drawFullDepth,
func_80389060, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BD24 = {
0x123, 0x2E8, 0x4C0,
0x1, NULL,
func_803890B8, func_80326224, actor_drawFullDepth,
func_803890B8, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BD48 = {
0x1F2, 0x2E9, 0x4C1,
0x1, NULL,
func_803890B8, func_80326224, actor_drawFullDepth,
func_803890B8, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BD6C = {
0x1F3, 0x2EA, 0x4C2,
0x1, NULL,
func_803890B8, func_80326224, actor_drawFullDepth,
func_803890B8, actor_update_func_80326224, actor_drawFullDepth,
0, 0, 0.0f, 0
};
ActorInfo D_8038BD90 = {
0xFE, 0x1FD, 0x43D,
0x1, D_8038BBE0,
func_80388FE4, func_80326224, actor_draw,
func_80388FE4, actor_update_func_80326224, actor_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8038BDB4 = {
0x9F, 0x10C, 0x3D0,
0x1, NULL,
func_803888B8, func_80326224, func_80388994,
func_803888B8, actor_update_func_80326224, func_80388994,
0, 0, 0.0f, 0
};
ActorInfo D_8038BDD8 = {
0xA0, 0x10D, 0x3D1,
0x1, NULL,
func_803888B8, func_80326224, func_80388994,
func_803888B8, actor_update_func_80326224, func_80388994,
0, 0, 0.0f, 0
};
ActorInfo D_8038BDFC = {
0xFF, 0x1FE, 0x43E,
0x1, NULL,
func_803888B8, func_80326224, func_80388994,
func_803888B8, actor_update_func_80326224, func_80388994,
0, 0, 0.0f, 0
};
@@ -287,7 +287,7 @@ void func_80388BDC(Actor *this) {
f64 phi_f0;
func_802D3D74(this);
mapSpecificFlags_set(1, BOOL((this->yaw > 260.0f) && (this->yaw < 330.0f)));
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN, BOOL((this->yaw > 260.0f) && (this->yaw < 330.0f)));
if (!this->volatile_initialized) {
if (this->yaw != 0.0f) {
this->lifetime_value = 0.5f;
@@ -304,11 +304,11 @@ void func_80388BDC(Actor *this) {
switch (this->state) {
case 1:
this->yaw = 0.0f;
if(mapSpecificFlags_get(0)) {
if(mapSpecificFlags_get(MMM_SPECIFIC_FLAG_0_UNKNOWN)) {
func_802BAFE4(0x21);
subaddie_set_state(this, 6);
func_80244BB0(0, 0x6A, 0x7FF8, 0.3f);
mapSpecificFlags_set(2, 0);
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_2_UNKNOWN, FALSE);
func_8025A6EC(COMUSIC_4_MMM_CLOCK_VERSION, -1);
func_8025AE0C(2000, 3.0f);
}
@@ -350,7 +350,7 @@ void func_80388BDC(Actor *this) {
subaddie_set_state(this, 1U);
this->yaw = 0.0f;
func_8030E540(SFX_7F_HEAVYDOOR_SLAM);
mapSpecificFlags_set(0, 0);
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_0_UNKNOWN, FALSE);
func_80244C78(0);
if (!this->unk38_31) {
func_8025A6EC(COMUSIC_3C_MINIGAME_LOSS, 0x7FF8);
@@ -370,10 +370,13 @@ void func_80388FE4(Actor *this) {
void func_80389004(Actor *this){
func_802D3CE8(this);
if(!this->volatile_initialized){
if (!this->volatile_initialized) {
this->volatile_initialized = TRUE;
if(levelSpecificFlags_get(0x2e))
if (levelSpecificFlags_get(LEVEL_FLAG_2E_MMM_UNKNOWN)) {
marker_despawn(this->marker);
}
}
}

View File

@@ -2,11 +2,17 @@
#include "functions.h"
#include "variables.h"
Actor *func_80389350(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
void func_803893A4(Actor *this);
/* public functions */
Actor *chPortrait_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
void chPortrait_update(Actor *this);
/* .data */
ActorAnimationInfo D_8038BE30[] ={
enum chPortrait_state_e {
PORTRAIT_STATE_1_IDLE = 1,
PORTRAIT_STATE_2_BROKEN
};
ActorAnimationInfo D_8038BE30[] = {
{0x000, 0.0f},
{0x23F, 10000000.0f},
{0x23F, 2.0f},
@@ -14,68 +20,69 @@ ActorAnimationInfo D_8038BE30[] ={
ActorInfo D_8038BE48 = {
MARKER_255_PORTRAIT_OF_GRUNTY, ACTOR_382_PORTRAIT_OF_GRUNTY, ASSET_522_MODEL_PORTRAIT_OF_GRUNTY,
0x1, D_8038BE30,
func_803893A4, func_80326224, func_80389350,
0x1, D_8038BE30,
chPortrait_update, actor_update_func_80326224, chPortrait_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8038BE6C = {
MARKER_257_PORTRAIT_OF_BLACKEYE, ACTOR_384_PORTRAIT_OF_BLACKEYE, ASSET_527_MODEL_PORTRAIT_OF_BLACKEYE,
0x1, D_8038BE30,
func_803893A4, func_80326224, func_80389350,
0x1, D_8038BE30,
chPortrait_update, actor_update_func_80326224, chPortrait_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8038BE90 = {
MARKER_258_PORTRAIT_OF_TOWER, ACTOR_385_PORTRAIT_OF_TOWER, ASSET_528_MODEL_PORTRAIT_OF_TOWER,
0x1, D_8038BE30,
func_803893A4, func_80326224, func_80389350,
0x1, D_8038BE30,
chPortrait_update, actor_update_func_80326224, chPortrait_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8038BEB4 = {
MARKER_259_PORTRAIT_OF_TREE_AND_MOON, ACTOR_386_PORTRAIT_OF_TREE_AND_MOON, ASSET_529_MODEL_PORTRAIT_OF_TREE_AND_MOON,
0x1, D_8038BE30,
func_803893A4, func_80326224, func_80389350,
0x1, D_8038BE30,
chPortrait_update, actor_update_func_80326224, chPortrait_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8038BED8 = {
MARKER_25A_PORTRAIT_OF_TEEHEE, ACTOR_387_PORTRAIT_OF_TEEHEE, ASSET_52A_MODEL_PORTRAIT_OF_TEEHEE,
0x1, D_8038BE30,
func_803893A4, func_80326224, func_80389350,
0x1, D_8038BE30,
chPortrait_update, actor_update_func_80326224, chPortrait_draw,
0, 0, 0.0f, 0
};
ActorInfo D_8038BEFC = {
MARKER_25B_PORTRAIT_OF_MINION, ACTOR_388_PORTRAIT_OF_MINION, ASSET_52B_MODEL_PORTRAIT_OF_MINION,
0x1, D_8038BE30,
func_803893A4, func_80326224, func_80389350,
0x1, D_8038BE30,
chPortrait_update, actor_update_func_80326224, chPortrait_draw,
0, 0, 0.0f, 0
};
/* .code */
Actor *func_80389350(ActorMarker* marker, Gfx** graphics, Mtx** matrix, Vtx** vertex) {
Actor *chPortrait_draw(ActorMarker *marker, Gfx **graphics, Mtx **matrix, Vtx **vertex) {
func_8033A45C(3, marker_getActor(marker)->unk38_31);
return actor_draw(marker, graphics, matrix, vertex);
}
void func_803893A4(Actor *this){
if(!this->volatile_initialized){
void chPortrait_update(Actor *this) {
if (!this->volatile_initialized) {
this->volatile_initialized = TRUE;
this->marker->propPtr->unk8_3 = TRUE;
actor_collisionOff(this);
this->unk38_31 = 2;
}
switch(this->state){
case 1:
switch (this->state) {
case PORTRAIT_STATE_1_IDLE:
animctrl_setAnimTimer(this->animctrl, 0.0f);
break;
case 2:
if(actor_animationIsAt(this, 0.999f)){
subaddie_set_state_with_direction(this, 1, 0.001f, 0);
case PORTRAIT_STATE_2_BROKEN:
if (actor_animationIsAt(this, 0.999f)) {
subaddie_set_state_with_direction(this, PORTRAIT_STATE_1_IDLE, 0.001f, 0);
actor_playAnimationOnce(this);
this->unk38_31 = 2;
}
@@ -83,10 +90,10 @@ void func_803893A4(Actor *this){
}
}
void func_80389484(ActorMarker * marker, f32 anim_duration){
void chPortrait_break(ActorMarker *marker, f32 anim_duration) {
Actor *this = marker_getActor(marker);
subaddie_set_state_with_direction(this, 2, 0.001f, 1);
subaddie_set_state_with_direction(this, PORTRAIT_STATE_2_BROKEN, 0.001f, 1);
actor_playAnimationOnce(this);
animctrl_setDuration(this->animctrl, anim_duration);
this->unk38_31 = 1;

View File

@@ -104,11 +104,12 @@ void func_8038966C(void){
if((s32)(tmp_v0->flags << 4) < 0){
FUNC_8030E624(SFX_6B_LOCKUP_OPENING, 1.4f, 32750);
MMM_D_8038C4E0.unk1 = 2;
if(!levelSpecificFlags_get(0x1b)){
if (!levelSpecificFlags_get(LEVEL_FLAG_1B_MMM_UNKNOWN)) {
func_80324E38(0.0f, 3);
timed_setStaticCameraToNode(0.0f, 0);
func_80324DBC(0.0f, 0xad7, 6, NULL, NULL, func_803895D8, NULL);
levelSpecificFlags_set(0x1b, TRUE);
levelSpecificFlags_set(LEVEL_FLAG_1B_MMM_UNKNOWN, TRUE);
}
}
}

View File

@@ -2,6 +2,7 @@
#include "functions.h"
#include "variables.h"
/* extern functions */
extern void MMM_func_8038B6D4(f32* arg0, s32 arg1);
/* internal definitions */
@@ -15,6 +16,7 @@ typedef struct {
u8 unk1;
} Struct_MMM_3420_1;
/* public functions */
void organMinigame_setState(s32 arg0);
/* .data */
@@ -175,7 +177,7 @@ void func_803898EC() {
}
void func_80389910() {
gcdialog_showText(0xAD5, 0xE, NULL, NULL, MMM_func_80389810, NULL);
gcdialog_showText(ASSET_AD5_TEXT_UNKNOWN, 0xE, NULL, NULL, MMM_func_80389810, NULL);
timedFunc_set_2(0.0f, func_8025A6EC, COMUSIC_2D_PUZZLE_SOLVED_FANFARE, 0x7FFF);
timed_setStaticCameraToNode(2.0f, 0);
timedFunc_set_0(2.1f, MMM_func_803898A0);
@@ -192,13 +194,14 @@ void func_803899BC(void){
void organMinigame_setState(s32 next_state){
func_8028F8F8(1, FALSE);
if(next_state == 2){
if(D_8038C4F0.pattern == 0){
if (next_state == 2) {
if (D_8038C4F0.pattern == 0) {
D_8038C4F0.pattern = 1;
gcdialog_showText(0xad3, 4, NULL, NULL, MMM_func_80389810, NULL);
gcdialog_showText(ASSET_AD3_TEXT_UNKNOWN, 4, NULL, NULL, MMM_func_80389810, NULL);
}
else{//L80389A84
gcdialog_showText(0xad6, 4, NULL, NULL, MMM_func_80389810, NULL);
else {//L80389A84
gcdialog_showText(ASSET_AD6_TEXT_UNKNOWN, 4, NULL, NULL, MMM_func_80389810, NULL);
}
}//L80389A9C
@@ -215,13 +218,13 @@ void organMinigame_setState(s32 next_state){
}//L80389AF4
if(next_state == 4){
gcdialog_showText(0xadd, 4, NULL, NULL, MMM_func_80389810, NULL);
gcdialog_showText(ASSET_ADD_TEXT_UNKNOWN, 4, NULL, NULL, MMM_func_80389810, NULL);
func_80387720(D_8038C4F0.motzhand_marker);
}
if(next_state == 5){
D_8038C4F0.pattern++;
gcdialog_showText(0xad4, 4, NULL, NULL, MMM_func_80389810, NULL);
gcdialog_showText(ASSET_AD4_TEXT_UNKNOWN, 4, NULL, NULL, MMM_func_80389810, NULL);
func_80387720(D_8038C4F0.motzhand_marker);
}
@@ -246,17 +249,22 @@ void organMinigame_getKeyPosition(s32 key_indx, f32 position[3]) {
position[0] = -145.0f;
position[1] = 0.0f;
position[2] = 0.0f;
for (iPtr = &D_8038C198[0]; iPtr <= &D_8038C198[key_indx]; iPtr++) {
is_black_key = (iPtr->unk0 == 2 || iPtr->unk0 == 4);
if (is_black_key != 0) {
position[0] += 67.0f;
position[1] += 12.5;
position[2] += -230.0f;
} else {
}
else {
position[0] += 170.0f;
}
if (iPtr == &D_8038C198[key_indx])
if (iPtr == &D_8038C198[key_indx]) {
break;
}
if (is_black_key != 0) {
position[0] -= 67.0f;
@@ -309,30 +317,39 @@ void code3420_handleOrganGame(s32 arg0, s32 arg1) {
D_8038C4F0.unk8 = &D_8038BF20;
func_80250170(0, 0x6A, 0);
D_8038C4F0.state = 0;
if ((map_get() == MAP_1C_MMM_CHURCH) && (arg1 == 2)) {
D_8038C4F0.motzhand_marker = NULL;
D_8038C4F0.pattern = 0;
key_position[0] = -1345.0f;
key_position[1] = 1150.0f;
key_position[2] = -2300.0f;
for(iPtr = &D_8038C198[0]; iPtr->unk0; iPtr++){
is_black_key = (iPtr->unk0 == 2 || iPtr->unk0 == 4);
if (is_black_key) {
key_position[0] += 122.0f;
key_position[1] += 12.5;
} else {
key_position[0] += 170.0f;
}
iPtr->unk1 = func_80351838(key_position, iPtr->unk0, iPtr - &D_8038C198[0]);
if (is_black_key) {
key_position[0] -= 122.0f;
key_position[1] -= 12.5;
}
for (iPtr = &D_8038C198[0]; iPtr->unk0; iPtr++) {
is_black_key = iPtr->unk0 == 2 || iPtr->unk0 == 4;
if (is_black_key) {
key_position[0] += 122.0f;
key_position[1] += 12.5;
}
else {
key_position[0] += 170.0f;
}
iPtr->unk1 = func_80351838(key_position, iPtr->unk0, iPtr - &D_8038C198[0]);
if (is_black_key) {
key_position[0] -= 122.0f;
key_position[1] -= 12.5;
}
}
if (jiggyscore_isSpawned(JIGGY_60_MMM_MOTZHAND)) {
organMinigame_setState(7);
return;
}
organMinigame_setState(1);
}
}
@@ -346,8 +363,9 @@ void organMinigame_update(void){
f32 plyr_pos[3];
Actor *motzhand_2;
if(D_8038C4F0.state == 0) return;
if (D_8038C4F0.state == 0) {
return;
}
if(func_802501A0(0, 0x6A, &sp4C)){
func_80250170(0, 0x6A, 0);

View File

@@ -72,21 +72,21 @@ void func_8038A140(UNK_TYPE(s32) arg0) {
if (arg0 == 2) {
func_80324E38(0.3f, 3);
timed_setStaticCameraToNode(0.3f, 1);
timedFunc_set_2(0.3f, mapSpecificFlags_set, 3, 1);
timedFunc_set_2(0.3f, mapSpecificFlags_set, MMM_SPECIFIC_FLAG_3_UNKNOWN, TRUE);
func_80324E38(3.0f, 0);
timed_exitStaticCamera(3.0f);
timedFunc_set_1(3.0f, func_8038A140, 3);
}
if (arg0 == 3) {
if (MMM_D_8038C510.unk8 == 1) {
mapSpecificFlags_set(3, 1);
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_3_UNKNOWN, 1);
}
item_set(ITEM_0_HOURGLASS_TIMER, 75*60 - 1);
item_set(6, 1);
}
if (MMM_D_8038C510.unk8 == 3) {
item_set(6, 0);
mapSpecificFlags_set(4, 1);
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_4_UNKNOWN, 1);
}
if (arg0 == 4) {
func_8028F66C(BS_INTR_F);
@@ -181,7 +181,7 @@ void func_8038A82C(Struct_MMM_3D50_0 * arg0){
if(arg0->unk2 == 'X'){
MMM_func_8038A54C(arg0, 1);
player_getPosition(sp44);
func_8038AD10(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp38);
chTumblar_copyPosition(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp38);
sp38[1] = sp44[1];
func_8028F620(sp38, 300.0f, -1500.0f);
return;
@@ -192,7 +192,7 @@ void func_8038A82C(Struct_MMM_3D50_0 * arg0){
MMM_func_8038A54C(arg0, 3);
if( iPtr->unk0[iPtr->unk4] == 0){
func_8038A140(5);
func_8038AF3C(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10);
chTumblar_congratulate(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10);
func_8025A6EC(COMUSIC_2D_PUZZLE_SOLVED_FANFARE, 32000);
}
else{
@@ -249,13 +249,13 @@ void func_8038AA44(void){
func_8038A750();
if( MMM_D_8038C510.unk8 == 1
&& MMM_D_8038C510.unkC != NULL
&& func_8038AD4C(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
&& chTumblar_isBanjoAbove(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
){
if(!levelSpecificFlags_get(0x2f)){
levelSpecificFlags_set(0x2f, TRUE);
if (!levelSpecificFlags_get(LEVEL_FLAG_2F_MMM_UNKNOWN)) {
levelSpecificFlags_set(LEVEL_FLAG_2F_MMM_UNKNOWN, TRUE);
func_8038A140(2);
}
else{
else {
func_8038A140(3);
}
}
@@ -265,9 +265,9 @@ void func_8038AA44(void){
func_8038A140(4);
}
else if( MMM_D_8038C510.unkC != NULL
&& func_8038AD4C(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
&& chTumblar_isBanjoAbove(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
){
func_8038AD10(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp28);
chTumblar_copyPosition(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp28);
tmp_v0 = func_8033F3C0(MMM_D_8038C510.unk0, sp28);
if(tmp_v0){
sp24 = func_8038A26C(tmp_v0);
@@ -286,7 +286,7 @@ void func_8038AA44(void){
}//L8038AB7C
if( MMM_D_8038C510.unk8 == 5
&& func_8038AD38(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
&& chTumblar_isDisappeared(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
){
func_8038A140(6);
}

View File

@@ -3,16 +3,25 @@
#include "variables.h"
#include <core1/viewport.h>
/* extern functions */
extern void sfxsource_setSampleRate(u8, s32);
extern f32 func_80258640(f32[3], f32[3]);
extern f32 ml_vec3f_horizontal_distance_zero_likely(f32[3], f32[3]);
/* data */
enum chTumblar_state_e {
TUMBLAR_STATE_0_IDLE,
TUMBLAR_STATE_1_CONGRATULATING,
TUMBLAR_STATE_2_BREAKING,
TUMBLAR_STATE_3_DISAPPEARED
};
typedef struct {
ActorMarker *unk0;
u8 unk4;
u8 pad5[3];
f32 unk8;
f32 unkC[3];
}Struct_MMM_47D0_0;
ActorMarker *jiggy_marker;
u8 state;
u8 unused[3];
f32 timer;
f32 velocity[3];
} Struct_MMM_47D0_0;
/* .code */
void MMM_func_8038ABC0(s32 arg0) {
@@ -21,172 +30,198 @@ void MMM_func_8038ABC0(s32 arg0) {
}
}
void func_8038AC04(void){
if((*(u32*)PHYS_TO_K1(0x1D0)) - 0x356BAAAE){
void func_8038AC04(void) {
if ((*(u32 *) PHYS_TO_K1(0x1D0)) - 0x356BAAAE) {
MMM_func_8038ABC0(0x820);
}
}
//BREAK???==========
void func_8038AC40(Struct_MMM_47D0_0 *arg0, struct struct_68_s *arg1, f32 position[3], f32 rotation[3], f32 scale, BKModelBin *model_bin, Gfx **gfx, Mtx **mtx, Vtx **vtx){
u8 temp_v0;
if (arg0->unk4 != 3) {
if ((arg0->unk4 == 0) || (arg0->unk4 == 1)) {
void chTumblar_draw(Struct_MMM_47D0_0 *arg0, struct struct_68_s *arg1, f32 position[3], f32 rotation[3], f32 scale, BKModelBin *model_bin, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
if (arg0->state != TUMBLAR_STATE_3_DISAPPEARED) {
if (arg0->state == TUMBLAR_STATE_0_IDLE || arg0->state == TUMBLAR_STATE_1_CONGRATULATING) {
modelRender_setAlpha(0xFF);
} else if (arg0->unk4 == 2) {
modelRender_setAlpha((s32)((1 - ((f64)arg0->unk8 * 1)) * 255.0));
}
else if (arg0->state == TUMBLAR_STATE_2_BREAKING) {
modelRender_setAlpha((s32)((1 - ((f64) arg0->timer * 1)) * 255.0));
}
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
modelRender_draw(gfx, mtx, position, rotation, scale, NULL, model_bin);
}
}
void func_8038AD10(s32 arg0, s32 arg1, f32 arg2[3]) {
func_8035179C(arg1, arg2);
void chTumblar_copyPosition(s32 arg0, s32 arg1, f32 arg2[3]) {
func_8035179C_copyPosition(arg1, arg2);
}
bool func_8038AD38(Struct_MMM_47D0_0 *arg0, s32 arg1){
return arg0->unk4 == 3;
bool chTumblar_isDisappeared(Struct_MMM_47D0_0 *arg0, s32 arg1) {
return arg0->state == TUMBLAR_STATE_3_DISAPPEARED;
}
bool func_8038AD4C(s32 arg0, s32 arg1) {
bool chTumblar_isBanjoAbove(s32 arg0, s32 arg1) {
f32 plyr_pos[3];
f32 sp18[3];
f32 position[3];
player_getPosition(plyr_pos);
func_8035179C(arg1, sp18);
return func_803518D4(arg1)
&& (func_80258640(sp18, plyr_pos) < 40.0f)
&& (player_getTransformation() == TRANSFORM_1_BANJO)
&& (func_8028ECAC() == 0);
func_8035179C_copyPosition(arg1, position);
return func_803518D4(arg1) &&
ml_vec3f_horizontal_distance_zero_likely(position, plyr_pos) < 40.0f &&
player_getTransformation() == TRANSFORM_1_BANJO &&
func_8028ECAC() == 0;
}
void MMM_func_8038ADF0(Struct_MMM_47D0_0 *arg0, Struct68s *arg1) {
u8 sp3F;
f32 sp38;
void chTumblar_init(Struct_MMM_47D0_0 *arg0, Struct68s *arg1) {
u8 sfxsource_index;
f32 distance_to_jiggy;
Actor *jiggy;
f32 sp28[3];
f32 position[3];
arg0->state = TUMBLAR_STATE_0_IDLE;
arg0->timer = 0.0f;
arg0->velocity[0] = 0.0f;
arg0->velocity[1] = 0.0f;
arg0->velocity[2] = 0.0f;
arg0->unk4 = 0;
arg0->unk8 = 0.0f;
arg0->unkC[0] = 0.0f;
arg0->unkC[1] = 0.0f;
arg0->unkC[2] = 0.0f;
func_8038AA30(arg0, arg1);
func_80351A14(arg1, (Struct68DrawMethod)func_8038AC40);
sp3F = func_80351758(arg1);
sfxsource_setSfxId(sp3F, SFX_3EC_CCW_DOOR_OPENING);
func_8030DD14(sp3F, 3);
sfxsource_playSfxAtVolume(sp3F, 0.6f);
sfxsource_setSampleRate(sp3F, 0);
func_8030E2C4(sp3F);
func_8035179C(arg1, sp28);
sp38 = 500.0f;
jiggy = actorArray_findClosestActorFromActorId(sp28, ACTOR_46_JIGGY, -1, &sp38);
func_80351A14(arg1, (Struct68DrawMethod) chTumblar_draw);
sfxsource_index = func_80351758_getSfxsourceIndex(arg1);
sfxsource_setSfxId(sfxsource_index, SFX_3EC_CCW_DOOR_OPENING);
func_8030DD14(sfxsource_index, 3);
sfxsource_playSfxAtVolume(sfxsource_index, 0.6f);
sfxsource_setSampleRate(sfxsource_index, 0);
func_8030E2C4(sfxsource_index);
func_8035179C_copyPosition(arg1, position);
distance_to_jiggy = 500.0f;
jiggy = actorArray_findClosestActorFromActorId(position, ACTOR_46_JIGGY, -1, &distance_to_jiggy);
if (jiggy != NULL) {
arg0->unk0 = jiggy->marker;
} else {
arg0->unk0 = NULL;
arg0->jiggy_marker = jiggy->marker;
}
else {
arg0->jiggy_marker = NULL;
}
if (arg0->unk0 != NULL) {
arg0->unk0->collidable = FALSE;
if (arg0->jiggy_marker != NULL) {
arg0->jiggy_marker->collidable = FALSE;
}
if (jiggyscore_isCollected(JIGGY_62_MMM_TUMBLAR)) {
func_80351A04(arg1, 1);
arg0->unk4 = 3;
arg0->state = TUMBLAR_STATE_3_DISAPPEARED;
}
}
void func_8038AF0C(ActorMarker *marker, enum asset_e text_id, s32 arg2) {
mapSpecificFlags_set(1, 1);
void __chTumblar_congratulationTextCallback(ActorMarker *marker, enum asset_e text_id, s32 arg2) {
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN, TRUE);
}
void func_8038AF3C(Struct_MMM_47D0_0 *arg0, s32 arg1) {
gcdialog_showText(0xADB, 4, NULL, arg0->unk0, func_8038AF0C, NULL);
arg0->unk4 = 1;
void chTumblar_congratulate(Struct_MMM_47D0_0 *arg0, s32 arg1) {
gcdialog_showText(ASSET_ADB_TEXT_UNKNOWN, 4, NULL, arg0->jiggy_marker, __chTumblar_congratulationTextCallback, NULL);
arg0->state = TUMBLAR_STATE_1_CONGRATULATING;
}
void func_8038AF90(Struct_MMM_47D0_0 *arg0, Struct68s *arg1, f32 arg2) {
f32 sp7C[3];
f32 sp70[3];
f32 sp64[3];
Actor *temp_v0_2;
f32 sp54[3];
f32 sp48[3];
f32 sp40[2];
s32 sp3C;
u8 sp38;
void chTumblar_update(Struct_MMM_47D0_0 *arg0, Struct68s *arg1, f32 tick) {
f32 viewport_position[3];
f32 viewport_rotation[3];
f32 direction[3];
Actor *jiggy;
f32 position[3];
f32 plyr_pos[3];
f32 joystick[2];
s32 is_banjo_above;
u8 sfxsource_index;
arg0->timer += tick;
arg0->unk8 += arg2;
if (arg0->unk4 == 0) {
func_8035179C(arg1, sp54);
func_8024E71C(0, sp40);
sp3C = func_8038AD4C(arg0, arg1);
if (sp3C) {
if (arg0->state == TUMBLAR_STATE_0_IDLE) {
func_8035179C_copyPosition(arg1, position);
controller_getJoystick(0, joystick);
is_banjo_above = chTumblar_isBanjoAbove(arg0, arg1);
if (is_banjo_above) {
func_8028F66C(BS_INTR_D_SURF);
}
if (sp3C && ((sp40[0] != 0.0f) || (sp40[1] != 0.0f))) {
viewport_getRotation_vec3f(sp70);
sp64[0] = sp40[0];
sp64[1] = 0.0f;
sp64[2] = -sp40[1];
ml_vec3f_yaw_rotate_copy(sp64, sp64, sp70[1]);
arg0->unkC[0] += sp64[0] * 2500.0f * arg2;
arg0->unkC[2] += sp64[2] * 2500.0f * arg2;
} else {
arg0->unkC[0] *= 0.7;
arg0->unkC[2] *= 0.7;
if (is_banjo_above && (joystick[0] != 0.0f || joystick[1] != 0.0f)) {
viewport_getRotation_vec3f(viewport_rotation);
direction[0] = joystick[0];
direction[1] = 0.0f;
direction[2] = -joystick[1];
ml_vec3f_yaw_rotate_copy(direction, direction, viewport_rotation[1]);
arg0->velocity[0] += direction[0] * 2500.0f * tick;
arg0->velocity[2] += direction[2] * 2500.0f * tick;
}
if (LENGTH_VEC3F(arg0->unkC) > 400.0f) {
ml_vec3f_set_length(arg0->unkC, 400.0f);
else {
arg0->velocity[0] *= 0.7;
arg0->velocity[2] *= 0.7;
}
sp54[0] += arg0->unkC[0] * arg2;
sp54[2] += arg0->unkC[2] * arg2;
func_80351B28(arg1, sp54);
func_8035179C(arg1, sp54);
if (arg0->unk0 != NULL) {
viewport_getPosition_vec3f(sp7C);
sp64[0] = sp54[0] - sp7C[0];
sp64[2] = sp54[2] - sp7C[2];
sp64[1] = 0.0f;
ml_vec3f_normalize(sp64);
temp_v0_2 = marker_getActor(arg0->unk0);
temp_v0_2->position[0] = sp54[0] + (sp64[0] * 20.0f);
temp_v0_2->position[2] = sp54[2] + (sp64[2] * 20.0f);
if (LENGTH_VEC3F(arg0->velocity) > 400.0f) {
ml_vec3f_set_length(arg0->velocity, 400.0f);
}
} else if (arg0->unk4 == 2) {
if (arg0->unk8 >= 1.0f) {
arg0->unk4 = 3U;
if (arg0->unk0 != NULL) {
arg0->unk0->collidable = TRUE;
position[0] += arg0->velocity[0] * tick;
position[2] += arg0->velocity[2] * tick;
func_80351B28(arg1, position);
func_8035179C_copyPosition(arg1, position);
if (arg0->jiggy_marker != NULL) {
viewport_getPosition_vec3f(viewport_position);
direction[0] = position[0] - viewport_position[0];
direction[2] = position[2] - viewport_position[2];
direction[1] = 0.0f;
ml_vec3f_normalize(direction);
jiggy = marker_getActor(arg0->jiggy_marker);
jiggy->position[0] = position[0] + (direction[0] * 20.0f);
jiggy->position[2] = position[2] + (direction[2] * 20.0f);
}
}
else if (arg0->state == TUMBLAR_STATE_2_BREAKING) {
if (arg0->timer >= 1.0f) {
arg0->state = TUMBLAR_STATE_3_DISAPPEARED;
if (arg0->jiggy_marker != NULL) {
arg0->jiggy_marker->collidable = TRUE;
}
func_80351A04(arg1, 1);
}
arg0->unkC[0] *= 0.7;
arg0->unkC[2] *= 0.7;
arg0->velocity[0] *= 0.7;
arg0->velocity[2] *= 0.7;
}
if (arg0->unk4 == 1) {
sp38 = func_80351758(arg1);
sfxsource_setSampleRate(sp38, 0);
} else {
sp38 = func_80351758(arg1);
sfxsource_setSampleRate(sp38, (s32) ((LENGTH_VEC3F(arg0->unkC) / 400.0) * 15000.0));
if (arg0->state == TUMBLAR_STATE_1_CONGRATULATING) {
sfxsource_index = func_80351758_getSfxsourceIndex(arg1);
sfxsource_setSampleRate(sfxsource_index, 0);
}
player_getPosition(sp48);
func_8035179C(arg1, sp54);
if (!mapSpecificFlags_get(0) && (arg0->unk4 == 0) && (func_80258640(sp54, sp48) < 250.0f)){
if(gcdialog_showText(0xADA, 0, NULL, NULL, NULL, NULL)) {
else {
sfxsource_index = func_80351758_getSfxsourceIndex(arg1);
sfxsource_setSampleRate(sfxsource_index, (s32)((LENGTH_VEC3F(arg0->velocity) / 400.0) * 15000.0));
}
player_getPosition(plyr_pos);
func_8035179C_copyPosition(arg1, position);
if (!mapSpecificFlags_get(MMM_SPECIFIC_FLAG_0_UNKNOWN) && arg0->state == TUMBLAR_STATE_0_IDLE && ml_vec3f_horizontal_distance_zero_likely(position, plyr_pos) < 250.0f) {
if (gcdialog_showText(ASSET_ADA_TEXT_UNKNOWN, 0, NULL, NULL, NULL, NULL)) {
mapSpecificFlags_set(0, TRUE);
}
}
if ((arg0->unk4 == 1) && mapSpecificFlags_get(1)) {
arg0->unk4 = 2U;
arg0->unk8 = 0.0f;
mapSpecificFlags_set(1, 0);
FUNC_8030E8B4(SFX_11B_TUMBLAR_DISAPPEARING_1, 1.0f, 30000, sp54, 500, 2500);
if (arg0->state == TUMBLAR_STATE_1_CONGRATULATING && mapSpecificFlags_get(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN)) {
arg0->state = TUMBLAR_STATE_2_BREAKING;
arg0->timer = 0.0f;
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN, FALSE);
FUNC_8030E8B4(SFX_11B_TUMBLAR_DISAPPEARING_1, 1.0f, 30000, position, 500, 2500);
}
}

Some files were not shown because too many files have changed in this diff Show More