diff --git a/include/enums.h b/include/enums.h index 68739629..f41b3f4c 100644 --- a/include/enums.h +++ b/include/enums.h @@ -660,7 +660,7 @@ enum comusic_e COMUSIC_8B_DEACTIVATE_BRENTILDA, COMUSIC_8C_JINJONATOR_POWERUP, JINGLE_MENACING_GRUNTILDA_A, - MUSIC_CREDITS, + COMUSIC_8E_CREDITS, JINGLE_MENACING_GRUNTILDA_B, JINGLE_END_OF_INTRO = 0x90, MUSIC_GRUNTY_FALLING, diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index ac9c0206..4aa1a1d0 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -17,7 +17,7 @@ core2 - 81.1645% - 81.1645% + 81.2952% + 81.2952% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index ce4f906a..1e2f326d 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 84.1753% - 84.1753% + 84.2503% + 84.2503% \ No newline at end of file diff --git a/src/core2/code_93C10.c b/src/core2/code_93C10.c deleted file mode 100644 index 0bc4b909..00000000 --- a/src/core2/code_93C10.c +++ /dev/null @@ -1,230 +0,0 @@ -#include -#include "functions.h" -#include "variables.h" - -extern void func_8028A8D0(void); -extern void func_8028F918(s32); -extern void func_80311714(int); - -typedef struct struct_1C_s{ - u8 map; - s8 exit; - s16 x; //0x2 - char *str; //0x4 - s8 unk8; -}struct1Cs; - - - -/* .data */ -extern s8 D_8036DD9C[]; -extern struct85s D_8036DDAC[]; - -/* .bss */ -struct{ - u8 unk0; - u8 unk1; - u8 pad2[1]; - s8 unk3; - s8 unk4; - u8 unk5; - u8 unk6; - s8 unk7; //jiggy total - s32 unk8; - struct1Cs *unkC; -}D_803830F0; -NodeProp *D_80383100[20]; - -/* public */ -void func_8031B554(void); - -/* .code */ -void func_8031ABA0(void) { - func_8031FBF8(); - func_8031FBA0(); - if (D_803830F0.unk8 != -1) { - func_802C5A3C(D_803830F0.unk8); - func_8033D13C(D_803830F0.unk8); - func_80347AA8(); - } -} - -void func_8031ABF8(void) { - D_803830F0.unk8 = func_802C5A30(); - func_8030AFD8(1); - mapSavestate_free_all(); - levelSpecificFlags_clear(); - func_80347A7C(); - func_8031FBF8(); - func_8031FBA0(); - func_803204E4(0x1F, 1); - if (D_803830F0.unk6 == 1) { - func_803204E4(0xC1, 1); - } - func_803228D8(); - func_802E4A70(); -} - -void func_8031AC8C(void) { - - func_803228D8(); - if (map_getLevel(D_803830F0.unkC->map) != level_get()) { - func_802E4A70(); - } - - if (D_803830F0.unkC->exit < 0) { - func_8034BA7C(D_803830F0.unkC->map, 0x5A - D_803830F0.unkC->exit); - } else { - func_802E40D0(D_803830F0.unkC->map, 0x65); - func_802E412C(1, 8); - func_802E40C4(9); - } - D_803830F0.unk5 = 1; -} - -void func_8031AD2C(s32); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031AD2C.s") - -void func_8031B010(void){ - func_8031AD2C(6); -} - -void func_8031B030(ActorMarker *caller, enum asset_e text_id, s32 arg2); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031B030.s") - -void func_8031B070(s32 arg0){ - struct1Cs *v0 = D_803830F0.unkC; - print_bold_overlapping(v0->x, D_803830F0.unk3, -1.2f, v0->str); -} - -void func_8031B0B0(void) { - s32 sp34; - - if ((map_get() == MAP_96_CS_END_BEACH_1) && mapSpecificFlags_get(4)) { - mapSpecificFlags_set(4, FALSE); - func_8031B554(); - return; - } - if (func_803203FC(0x1F) != 0) { - func_8028A8D0(); - switch (D_803830F0.unk0) { - case 3: - if (D_803830F0.unk5 == 0) { - if (map_get() == D_803830F0.unkC->map) { - if (D_803830F0.unk6 == 0) { - sp34 = 0xA0; - if (D_803830F0.unkC->exit >= 0) - sp34 = 0xA8; - timedFunc_set_1(1.0f, (TFQM1)func_80311714, 0); - func_80324DBC(1.0f, D_803830F0.unk1 + 0x11AF, sp34, NULL, NULL, func_8031B030, NULL); - timedFunc_set_1(1.0f, (TFQM1)func_80311714, 1); - } else if (D_803830F0.unkC->exit >= 0) { - func_8028F918(2); - } - timedFunc_set_1(1.0f, (TFQM1)func_8031AD2C, 4); - D_803830F0.unk5 = 1U; - } - } - break; - case 4: - func_8031B070(D_803830F0.unk1); - D_803830F0.unk4 ++; - D_803830F0.unk3 += D_8036DD9C[D_803830F0.unk4]; - if (D_803830F0.unk4 == 0xC) { - func_8031AD2C(5); - } - break; - case 5: - func_8031B070(D_803830F0.unk1); - return; - case 6: - func_8031B070(D_803830F0.unk1); - D_803830F0.unk4--; - D_803830F0.unk3 -= D_8036DD9C[D_803830F0.unk4]; - if (D_803830F0.unk4 == 0) { - func_8031AD2C(7); - } - break; - } - } -} - -void func_8031B2F0(void){} - -void func_8031B2F8(void){ - func_803204E4(0x20, FALSE); - func_803204E4(0x1F, TRUE); - if(func_80320454(0xC0, 0)) - func_8031AD2C(2); - else - func_8031AD2C(1); - -} -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_93C10/func_8031B354.s") -#else -void func_8031B354(void) { - f32 sp40[3]; - u32 var_s0; - u32 temp_v0; - s32 var_s2; - - if (func_803203FC(0x20) != 0) { - func_8031B2F8(); - return; - } - if (func_803203FC(0x1F) != 0) { - func_80347A14(0); - if ((D_803830F0.unk0 == 3)){ - D_803830F0.unk5 = 0; - if(D_803830F0.unkC->exit >= 0) { - func_802BBC58(1); - set_camera_to_node(D_803830F0.unkC->exit); - if (D_803830F0.unkC->unk8 > 0) { - temp_v0 = func_80304FC4(&D_8036DDAC, &D_80383100, 0x14); - for(var_s2 = FALSE, var_s0 = 0; (var_s0 < temp_v0) && (var_s2 == FALSE); var_s0++){ - if (temp_v0 > 0) { - if (nodeprop_getRadius(D_80383100[var_s0]) == D_803830F0.unkC->unk8) { - var_s2 = TRUE; - nodeprop_getPosition(D_80383100[var_s0], sp40); - func_8028F85C(sp40); - } - } - } - } - if (var_s2 == FALSE) { - func_802BAEF4(sp40); - func_8028F85C(sp40); - } - } - } - } else { - func_8031AD2C(0); - } -} -#endif - -int func_8031B4CC(void){ - return ((D_803830F0.unkC != NULL) && (D_803830F0.unkC[0].exit < 0)); -} - -int func_8031B4F4(void){ - return (D_803830F0.unkC != NULL) ? D_803830F0.unkC->unk8 : 0; -} - -void func_8031B51C(void){ - if (func_803203FC(0x1F)) return; - - func_803204E4(0x20, TRUE); - func_8031B354(); -} - -void func_8031B554(void){ - - if (func_803203FC(0x1F)) return; - - func_803204E4(0x20, TRUE); - func_803204E4(0xC0, TRUE); - D_803830F0.unk7 = jiggyscore_total(); - func_8031B354(); -} diff --git a/src/core2/code_AD5B0.c b/src/core2/code_AD5B0.c index 355cb386..35881c21 100644 --- a/src/core2/code_AD5B0.c +++ b/src/core2/code_AD5B0.c @@ -253,7 +253,7 @@ void func_80334B20(enum map_e arg0, s32 arg1, s32 arg2) { func_802C8F40(); func_8034F774(); func_80350174(); - func_8031B354(); + gcparade_init(); func_80351998(); func_802BC2CC(D_803835D0.unk8); func_802D63D4(); @@ -345,7 +345,7 @@ s32 func_80334ECC(void) { func_80350CA4(); func_8031B65C(); func_80310D2C(); - func_8031B0B0(); + gcparade_update(); overlay_update(); func_80321924(); func_80334428(); diff --git a/src/core2/gc/parade.c b/src/core2/gc/parade.c new file mode 100644 index 00000000..e3585066 --- /dev/null +++ b/src/core2/gc/parade.c @@ -0,0 +1,405 @@ +#include +#include "functions.h" +#include "variables.h" + +extern void func_8028A8D0(void); +extern void func_8028F918(s32); +extern void func_80311714(int); +extern void func_803204E4(s32, s32); + +typedef struct struct_1C_s{ + u8 map; + s8 exit; + s16 x; //0x2 + char *str; //0x4 + s8 unk8; +}ParadeInfo; + +enum parade_e { + PARADE_0_POST_FURNACE_FUN, + PARADE_1_POST_GRUNTY_BATTLE +}; + +enum parade_state_e { + PARADE_STATE_0_NONE, + PARADE_STATE_1_INIT_FF_PARADE, + PARADE_STATE_2_INIT_FINAL_PARADE, + PARADE_STATE_3_WARP, + PARADE_STATE_4_NAME_APPEAR, + PARADE_STATE_5_WAIT_ON_NAME, + PARADE_STATE_6_NAME_DISAPPEAR, + PARADE_STATE_7_GOTO_NEXT, + PARADE_STATE_8_END, +}; + +/* .data */ +ParadeInfo D_8036D9A0[0x1B] = { + {MAP_8E_GL_FURNACE_FUN, 0x14, 90, "GRUNTILDA", 0}, + {MAP_8E_GL_FURNACE_FUN, 0x13, 110, "TOOTY", 0}, + {MAP_1_SM_SPIRAL_MOUNTAIN, 0x13, 100, "BOTTLES", 0}, + {MAP_2_MM_MUMBOS_MOUNTAIN, 0x2D, 130, "JINJO", 0}, + {MAP_E_MM_MUMBOS_SKULL, 0x02, 60, "MUMBO JUMBO", 0}, + {MAP_2_MM_MUMBOS_MOUNTAIN, 0x2F, 125, "JU-JU", 0}, + {MAP_2_MM_MUMBOS_MOUNTAIN, 0x2C, 115, "CONGA", 0}, + {MAP_2_MM_MUMBOS_MOUNTAIN, 0x2B, 110, "CHIMPY", 0}, + {MAP_74_GL_GV_PUZZLE, 0x08, 95, "BRENTILDA", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x22, 50, "CAPTAIN BLUBBER", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x23, 120, "NIPPER", 0}, + {MAP_B_CC_CLANKERS_CAVERN, 0x0B, 105, "CLANKER", 0}, + {MAP_D_BGS_BUBBLEGLOOP_SWAMP, 0x23, 95, "TANKTUP", 0}, + {MAP_10_BGS_MR_VILE, 0x03, 100, "MR. VILE", 0}, + {MAP_11_BGS_TIPTUP, 0x08, 115, "TIPTUP", 0}, + {MAP_27_FP_FREEZEEZY_PEAK, 0x3D, 115, "BOGGY", 0}, + {MAP_27_FP_FREEZEEZY_PEAK, 0x3E, 110, "WOZZA", 0}, + {MAP_12_GV_GOBIS_VALLEY, 0x39, 100, "TRUNKER", 0}, + {MAP_12_GV_GOBIS_VALLEY, 0x38, 125, "GOBI", 0}, + {MAP_16_GV_RUBEES_CHAMBER, 0x04, 35, "RUBEE AND TOOTS", 0}, + {MAP_26_MMM_NAPPERS_ROOM, 0x06, 110, "NAPPER", 0}, + {MAP_2C_MMM_BATHROOM, 0x03, 115, "LOGGO", 0}, + {MAP_31_RBB_RUSTY_BUCKET_BAY, 0x27, 105, "SNORKEL", 0}, + {MAP_44_CCW_SUMMER, 0x0F, 100, "GNAWTY", 0}, + {MAP_46_CCW_WINTER, 0x0C, 125, "EYRIE", 0}, + {MAP_5E_CCW_SPRING_NABNUTS_HOUSE, 0x01, 110, "NABNUT", 0}, + {MAP_1_SM_SPIRAL_MOUNTAIN, 0xFD, 20, "BANJO AND KAZOOIE", 0} +}; + +ParadeInfo D_8036DAE4[0x3A] ={ + {MAP_93_GL_DINGPOT, 0x11, 105, "DINGPOT", 0}, + {MAP_84_CS_UNUSED_MACHINE_ROOM, 0x00, 107, "KLUNGO", 0}, + {MAP_1_SM_SPIRAL_MOUNTAIN, 0x29, 110, "TOPPER", 6}, + {MAP_1_SM_SPIRAL_MOUNTAIN, 0x27, 118, "BAWL", 7}, + {MAP_1_SM_SPIRAL_MOUNTAIN, 0x28, 75, "COLLIWOBBLE", 8}, + {MAP_1_SM_SPIRAL_MOUNTAIN, 0x2A, 100, "QUARRIE", 0}, + {MAP_71_GL_STATUE_ROOM, 0x0D, 85, "GRUNTLING", 0}, + {MAP_C_MM_TICKERS_TOWER, 0x09, 113, "TICKER", 0}, + {MAP_2_MM_MUMBOS_MOUNTAIN, 0x30, 105, "BIGBUTT", 0}, + {MAP_2_MM_MUMBOS_MOUNTAIN, 0x2E, 105, "GRUBLIN", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x24, 120, "LEAKY", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x25, 105, "LOCKUP", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x26, 67, "LITTLE LOCKUP", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x27, 100, "YUM-YUM", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x28, 110, "SNIPPET", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x29, 95, "SHRAPNEL", 0}, + {MAP_7_TTC_TREASURE_TROVE_COVE, 0x2A, 105, "SNACKER", 14}, + {MAP_B_CC_CLANKERS_CAVERN, 0x1A, 110, "GLOOP", 0}, + {MAP_B_CC_CLANKERS_CAVERN, 0x1B, 60, "GRILLE CHOMPA", 1}, + {MAP_B_CC_CLANKERS_CAVERN, 0x1C, 70, "MUTIE-SNIPPET", 0}, + {MAP_22_CC_INSIDE_CLANKER, 0x0B, 93, "WHIPLASH", 0}, + {MAP_D_BGS_BUBBLEGLOOP_SWAMP, 0x24, 100, "CROCTUS", 0}, + {MAP_D_BGS_BUBBLEGLOOP_SWAMP, 0x25, 115, "FLIBBIT", 0}, + {MAP_D_BGS_BUBBLEGLOOP_SWAMP, 0x26, 90, "BUZZBOMB", 0}, + {MAP_11_BGS_TIPTUP, 0x09, 45, "THE TIPTUP CHOIR", 0}, + {MAP_41_FP_BOGGYS_IGLOO, 0x05, 105, "GROGGY", 0}, + {MAP_41_FP_BOGGYS_IGLOO, 0x06, 117, "SOGGY", 0}, + {MAP_41_FP_BOGGYS_IGLOO, 0x07, 110, "MOGGY", 0}, + {MAP_27_FP_FREEZEEZY_PEAK, 0x3F, 65, "THE TWINKLIES", -1}, + {MAP_27_FP_FREEZEEZY_PEAK, 0x40, 37, "TWINKLY MUNCHER", -2}, + {MAP_27_FP_FREEZEEZY_PEAK, 0x41, 100, "SIR SLUSH", 0}, + {MAP_27_FP_FREEZEEZY_PEAK, 0x42, 107, "CHINKER", 0}, + {MAP_12_GV_GOBIS_VALLEY, 0x3A, 120, "JINXY", -3}, + {MAP_12_GV_GOBIS_VALLEY, 0x3B, 40, "THE ANCIENT ONES", 0}, + {MAP_12_GV_GOBIS_VALLEY, 0x3C, 110, "GRABBA", 2}, + {MAP_12_GV_GOBIS_VALLEY, 0x3D, 110, "SCABBY", 0}, + {MAP_12_GV_GOBIS_VALLEY, 0x3E, 113, "SLAPPA", 3}, + {MAP_13_GV_MEMORY_GAME, 0x03, 90, "MUM-MUM", 0}, + {MAP_16_GV_RUBEES_CHAMBER, 0x05, 115, "HISTUP", 0}, + {MAP_1C_MMM_CHURCH, 0x05, 90, "MOTZAND", 0}, + {MAP_24_MMM_TUMBLARS_SHED, 0x02, 95, "TUMBLAR", 0}, + {MAP_28_MMM_EGG_ROOM, 0x01, 0x20, "PORTRAIT CHOMPA", 4}, + {MAP_1D_MMM_CELLAR, 0x0A, 110, "TEE-HEE", 11}, + {MAP_2C_MMM_BATHROOM, 0x04, 120, "LIMBO", 0}, + {MAP_1B_MMM_MAD_MONSTER_MANSION, 0x28, 118, "RIPPER", 12}, + {MAP_1B_MMM_MAD_MONSTER_MANSION, 0x29, 117, "NIBBLY", 0}, + {MAP_38_RBB_CONTAINER_3, 0x02, 83, "BOOM BOX", 13}, + {MAP_3A_RBB_BOSS_BOOM_BOX, 0x04, 50, "BOSS BOOM BOX", 0}, + {MAP_31_RBB_RUSTY_BUCKET_BAY, 0x28, 105, "GRIMLET", 9}, + {MAP_31_RBB_RUSTY_BUCKET_BAY, 0x29, 105, "FLOTSAM", 0}, + {MAP_3C_RBB_KITCHEN, 0x05, 50, "SEAMAN GRUBLIN", 0}, + {MAP_35_RBB_WAREHOUSE, 0x06, 110, "CHUMP", 0}, + {MAP_44_CCW_SUMMER, 0x10, 87, "SNAREBEAR", 10}, + {MAP_45_CCW_AUTUMN, 0x14, 85, "BIG CLUCKER", 5}, + {MAP_5B_CCW_SPRING_ZUBBA_HIVE, 0x04, 78, "THE ZUBBAS", 0}, + {MAP_46_CCW_WINTER, 0x0E, 63, "GRUBLIN HOOD", 0}, + {MAP_66_CCW_SUMMER_WHIPCRACK_ROOM, 0x06, 83, "WHIPCRACK", 0}, + {MAP_72_GL_BGS_LOBBY, 0x04, 110, "CHEATO", 0} +}; +s8 D_8036DD9C[] = {1, 1, 1, 1, 11, 8, 6, 4, 3, 2, -1, -1, 0}; +s32 D_8036DDAC[] = {0x379, -1}; + +/* .bss */ +struct{ + u8 state; + u8 indx; + u8 count; + s8 y_position; + s8 scroll_frame; + u8 unk5; + u8 parade_id; + u8 jiggyscore; //jiggy total + s32 unk8; + ParadeInfo *parade_element; +}D_803830F0; +NodeProp *D_80383100[20]; + +/* public */ +void func_8031B554(void); +void gcparade_setState(enum parade_state_e next_state); + +/* .code */ +void func_8031ABA0(void) { + func_8031FBF8(); + func_8031FBA0(); + if (D_803830F0.unk8 != -1) { + func_802C5A3C(D_803830F0.unk8); + func_8033D13C(D_803830F0.unk8); + func_80347AA8(); + } +} + +void func_8031ABF8(void) { + D_803830F0.unk8 = func_802C5A30(); + func_8030AFD8(1); + mapSavestate_free_all(); + levelSpecificFlags_clear(); + func_80347A7C(); + func_8031FBF8(); + func_8031FBA0(); + func_803204E4(0x1F, 1); + if (D_803830F0.parade_id == PARADE_1_POST_GRUNTY_BATTLE) { + func_803204E4(0xC1, 1); + } + func_803228D8(); + func_802E4A70(); +} + +void func_8031AC8C(void) { + + func_803228D8(); + if (map_getLevel(D_803830F0.parade_element->map) != level_get()) { + func_802E4A70(); + } + + if (D_803830F0.parade_element->exit < 0) { + func_8034BA7C(D_803830F0.parade_element->map, 0x5A - D_803830F0.parade_element->exit); + } else { + func_802E40D0(D_803830F0.parade_element->map, 0x65); + func_802E412C(1, 8); + func_802E40C4(9); + } + D_803830F0.unk5 = 1; +} + +void gcparade_setState(enum parade_state_e next_state) { + switch (next_state) { + case PARADE_STATE_1_INIT_FF_PARADE: //parade 0 init + D_803830F0.parade_element = D_8036D9A0; + D_803830F0.indx = 0; + D_803830F0.parade_id = PARADE_0_POST_FURNACE_FUN; + D_803830F0.count = 0x1B; + func_8025A70C(COMUSIC_8E_CREDITS); + next_state = PARADE_STATE_3_WARP; + func_8031AC8C(); + break; + case PARADE_STATE_2_INIT_FINAL_PARADE: //parade 1 init + func_803204E4(0xC1, 1); + D_803830F0.parade_element = D_8036DAE4; + D_803830F0.indx = 0; + D_803830F0.parade_id = PARADE_1_POST_GRUNTY_BATTLE; + D_803830F0.count = 0x3A; + func_8025A55C(0, 0x1388, 0xB); + func_8025AB00(); + func_8025A70C(COMUSIC_8E_CREDITS); + next_state = PARADE_STATE_3_WARP; + func_8031AC8C(); + break; + case PARADE_STATE_3_WARP: + func_803228D8(); + if (map_getLevel(D_803830F0.parade_element->map) != level_get()) { + func_802E4A70(); + } + if (D_803830F0.parade_element->exit < 0) { + func_8034BA7C(D_803830F0.parade_element->map, 0x5A - D_803830F0.parade_element->exit); + } else { + func_802E412C(1, 8); + func_802E40D0(D_803830F0.parade_element->map, 0x65); + func_802E40C4(1); + } + D_803830F0.unk5 = 1; + break; + case PARADE_STATE_4_NAME_APPEAR: + D_803830F0.scroll_frame = -1; + D_803830F0.y_position = -0x10; + break; + case PARADE_STATE_5_WAIT_ON_NAME: + if ((D_803830F0.parade_id == 1) && (D_803830F0.parade_element->exit >= 0)) { + timedFunc_set_1(2.0f, (TFQM1)gcparade_setState, PARADE_STATE_6_NAME_DISAPPEAR);// queue state transition + } + break; + case PARADE_STATE_7_GOTO_NEXT: + D_803830F0.indx++; + D_803830F0.parade_element++; + timedFunc_set_1(0.25f, (TFQM1)gcparade_setState, (D_803830F0.indx == D_803830F0.count) ? PARADE_STATE_8_END : PARADE_STATE_3_WARP); + break; + case PARADE_STATE_8_END: + func_803204E4(0x1F, 0); + func_803204E4(0xC1, 0); + func_802E412C(1, 8); + func_802E40C4(0xA); + if (D_803830F0.parade_id == 0) { + func_802E40D0(MAP_94_CS_INTRO_SPIRAL_7, 0); + } else if (D_803830F0.jiggyscore < 100) { + func_802E40D0(MAP_20_CS_END_NOT_100, 0); + } else { + func_802E40D0(MAP_95_CS_END_ALL_100, 0); + } + comusic_8025AB44(COMUSIC_8E_CREDITS, 0, 1000); + func_8025AABC(COMUSIC_8E_CREDITS); + break; + default: + break; + } + D_803830F0.state = next_state; +} + +void func_8031B010(void){ + gcparade_setState(PARADE_STATE_6_NAME_DISAPPEAR); +} + +void gcparade_textCallback(ActorMarker *caller, enum asset_e text_id, s32 arg2){ + if(D_803830F0.parade_element->exit >= 0){ + gcparade_setState(PARADE_STATE_6_NAME_DISAPPEAR); + } +} + +void gcparade_print(s32 index){ + ParadeInfo *v0 = D_803830F0.parade_element; + print_bold_overlapping(v0->x, D_803830F0.y_position, -1.2f, v0->str); +} + +void gcparade_update(void) { + s32 sp34; + + if ((map_get() == MAP_96_CS_END_BEACH_1) && mapSpecificFlags_get(4)) { + mapSpecificFlags_set(4, FALSE); + func_8031B554(); + return; + } + if (func_803203FC(0x1F) != 0) { + func_8028A8D0(); + switch (D_803830F0.state) { + case PARADE_STATE_3_WARP: + if (D_803830F0.unk5 == 0) { + if (map_get() == D_803830F0.parade_element->map) { + if (D_803830F0.parade_id == 0) { + sp34 = 0xA0; + if (D_803830F0.parade_element->exit >= 0) + sp34 = 0xA8; + timedFunc_set_1(1.0f, (TFQM1)func_80311714, 0); + func_80324DBC(1.0f, D_803830F0.indx + 0x11AF, sp34, NULL, NULL, gcparade_textCallback, NULL); + timedFunc_set_1(1.0f, (TFQM1)func_80311714, 1); + } else if (D_803830F0.parade_element->exit >= 0) { + func_8028F918(2); + } + timedFunc_set_1(1.0f, (TFQM1)gcparade_setState, PARADE_STATE_4_NAME_APPEAR); + D_803830F0.unk5 = 1; + } + } + break; + case PARADE_STATE_4_NAME_APPEAR: + gcparade_print(D_803830F0.indx); + D_803830F0.scroll_frame++; //name scroll down on screen + D_803830F0.y_position += D_8036DD9C[D_803830F0.scroll_frame]; + if (D_803830F0.scroll_frame == 0xC) { + gcparade_setState(PARADE_STATE_5_WAIT_ON_NAME); + } + break; + case PARADE_STATE_5_WAIT_ON_NAME: //name on screen (wait) + gcparade_print(D_803830F0.indx); + return; + case PARADE_STATE_6_NAME_DISAPPEAR:// name scroll up off screen + gcparade_print(D_803830F0.indx); + D_803830F0.scroll_frame--; + D_803830F0.y_position -= D_8036DD9C[D_803830F0.scroll_frame]; + if (D_803830F0.scroll_frame == 0) { + gcparade_setState(PARADE_STATE_7_GOTO_NEXT); + } + break; + } + } +} + +void func_8031B2F0(void){} + +void gcparade_start(void){ + func_803204E4(0x20, FALSE); + func_803204E4(0x1F, TRUE); + if(func_80320454(0xC0, 0)) + gcparade_setState(PARADE_STATE_2_INIT_FINAL_PARADE); + else + gcparade_setState(PARADE_STATE_1_INIT_FF_PARADE); + +} + +void gcparade_init(void) { + s32 var_s0; + f32 sp40[3]; + s32 temp_v0; + s32 var_s2; + + if (func_803203FC(0x20)) { + gcparade_start(); + return; + } + if (func_803203FC(0x1F)) { + func_80347A14(0); + if ((D_803830F0.state == 3)){ + var_s2 = FALSE; + D_803830F0.unk5 = 0; + if(D_803830F0.parade_element->exit >= 0) { + func_802BBC58(1); + set_camera_to_node(D_803830F0.parade_element->exit); + if (D_803830F0.parade_element->unk8 > 0) { + temp_v0 = func_80304FC4(&D_8036DDAC, &D_80383100, 0x14); + for(var_s0 = 0;(var_s0 < temp_v0) && !var_s2; var_s0++ ){ + if (nodeprop_getRadius(D_80383100[var_s0]) == D_803830F0.parade_element->unk8) { + nodeprop_getPosition(D_80383100[var_s0], sp40); + func_8028F85C(sp40); + var_s2 = TRUE; + } + } + } + if (!var_s2) { + func_802BAEF4(sp40); + func_8028F85C(sp40); + } + } + } + } else { + gcparade_setState(PARADE_STATE_0_NONE); + } +} + +int func_8031B4CC(void){ + return ((D_803830F0.parade_element != NULL) && (D_803830F0.parade_element->exit < 0)); +} + +int func_8031B4F4(void){ + return (D_803830F0.parade_element != NULL) ? D_803830F0.parade_element->unk8 : 0; +} + +void func_8031B51C(void){ + if (func_803203FC(0x1F)) return; + + func_803204E4(0x20, TRUE); + gcparade_init(); +} + +void func_8031B554(void){ + + if (func_803203FC(0x1F)) return; + + func_803204E4(0x20, TRUE); + func_803204E4(0xC0, TRUE); + D_803830F0.jiggyscore = jiggyscore_total(); + gcparade_init(); +} diff --git a/subyaml/core2.us.v10.yaml b/subyaml/core2.us.v10.yaml index a33bf0ae..ab8d9ceb 100644 --- a/subyaml/core2.us.v10.yaml +++ b/subyaml/core2.us.v10.yaml @@ -299,7 +299,7 @@ segments: - [0x8E270, c, gc/zoombox] #DONE - [0x91E10, c, code_91E10] - [0x935F0, c, code_935F0] #DONE #chminigmae - - [0x93C10, c, code_93C10] + - [0x93C10, c, gc/parade] #DONE - [0x94620, c, code_94620] #DONE - [0x94780, c, code_94780] #DONE - [0x94A20, c, code_94A20] @@ -548,6 +548,8 @@ segments: - [0xE56A0, bin, data_E56A0] - [0xE5730, .data, gc/zoombox] - [0xE69B0, bin, data_E69B0] + - [0xE6A10, .data, gc/parade] + - [0xE6E30, bin, data_E6E30] - [0xE7330, .data, code_9B990] - [0xE7490, .data, code_9D640] - [0xE75D0, bin, data_E75D0] @@ -773,7 +775,8 @@ segments: # - [0xF1960, bin, data_F1960] - [0xF19C0, .rodata, code_91E10] - [0xF1A00, .rodata, code_935F0] - - [0xF1A20, bin, data_F1A20] + - [0xF1A20, .rodata, gc/parade] + - [0xF1DA0, bin, data_F1DA0] - [0xF1DC0, .rodata, code_9A9D0] - [0xF1DF0, .rodata, code_9B180] - [0xF1E10, .rodata, code_9C170] @@ -1041,7 +1044,7 @@ segments: - [0xf2c00, .bss, code_8DC20] - [0xf2c00, .bss, gc/zoombox] - [0xf2c00, .bss, code_91E10] - - [0xf2c00, .bss, code_93C10] + - [0xf2c00, .bss, gc/parade] - [0xf2c00, .bss, code_94620] - [0xf2c00, .bss, code_94780] - [0xf2c00, .bss, code_94A20]