Documenting pause

This commit is contained in:
Nabnut
2024-09-19 12:30:28 +02:00
parent fbe20325c2
commit 6563b95ad8
3 changed files with 300 additions and 271 deletions

View File

@@ -52,8 +52,27 @@ extern void func_802FACA4(enum item_e);
extern void func_8033BD20(void *); extern void func_8033BD20(void *);
enum gcpausemenu_state_e { enum gcpausemenu_state_e {
PAUSE_STATE_0_CLOSED = 0, PAUSE_STATE_0_CLOSED,
PAUSE_STATE_1_OPENING = 1 PAUSE_STATE_1_OPENING,
PAUSE_STATE_2_MENU,
PAUSE_STATE_3_RETURNING_TO_GAME,
PAUSE_STATE_4_PROCESS_SELECTION,
PAUSE_STATE_5_CONFIRM_SELECTION,
PAUSE_STATE_6_UNKNOWN,
PAUSE_STATE_7_LEVEL_TOTALS_INIT,
PAUSE_STATE_8_LEVEL_TOTALS_OPENING,
PAUSE_STATE_9_LEVEL_TOTALS,
PAUSE_STATE_A_UNKNOWN,
PAUSE_STATE_B_UNKNOWN,
PAUSE_STATE_C_UNKNOWN,
PAUSE_STATE_D_UNKNOWN,
PAUSE_STATE_E_UNKNOWN,
PAUSE_STATE_F_UNKNOWN,
PAUSE_STATE_10_UNKNOWN,
PAUSE_STATE_11_UNKNOWN,
PAUSE_STATE_12_UNKNOWN,
PAUSE_STATE_13_UNKNOWN,
PAUSE_STATE_14_UNKNOWN
}; };
@@ -127,7 +146,7 @@ struct{
u8 state; u8 state;
u8 unk1; u8 unk1;
u8 selection; //menu page u8 selection; //menu page
u8 unk3_7:1; u8 exit_pause:1;
u8 unk3_6:1; //busy? u8 unk3_6:1; //busy?
u8 unk3_5:1; u8 unk3_5:1;
u8 unk3_4:1; u8 unk3_4:1;
@@ -135,7 +154,7 @@ struct{
u8 right_joystick_visible:1; u8 right_joystick_visible:1;
u8 b_button_visible:1; u8 b_button_visible:1;
u8 unk3_0:1; u8 unk3_0:1;
s8 unk4; s8 zoombox_processed_count;
s8 unk5; s8 unk5;
u8 unk6; u8 unk6;
u8 unk7; u8 unk7;
@@ -174,7 +193,7 @@ s32 D_80383084;
char D_80383088[0x18]; char D_80383088[0x18];
/* public */ /* public */
void gcpausemenu_803129DC(s32,s32); void gcpausemenu_zoombox_callback(s32, s32);
/* .code */ /* .code */
void gcpausemenu_defrag(void){ void gcpausemenu_defrag(void){
@@ -210,7 +229,7 @@ void gcpausemenu_free(void){
void gcpausemenu_zoomboxes_initMainMenu(void){ void gcpausemenu_zoomboxes_initMainMenu(void){
s32 i; s32 i;
for(i = 0; i<4; i++){ for(i = 0; i<4; i++){
D_80383010.zoombox[i] = gczoombox_new(D_8036C4E0[i].y,D_8036C4E0[i].portrait, 2, 0,gcpausemenu_803129DC); D_80383010.zoombox[i] = gczoombox_new(D_8036C4E0[i].y,D_8036C4E0[i].portrait, 2, 0, gcpausemenu_zoombox_callback);
func_803184C8(D_80383010.zoombox[i], 60.0f, 5, 2, 0.3f, 0, 0); func_803184C8(D_80383010.zoombox[i], 60.0f, 5, 2, 0.3f, 0, 0);
func_80318640(D_80383010.zoombox[i], 0x1C, 0.75f, 0.9f, 0); func_80318640(D_80383010.zoombox[i], 0x1C, 0.75f, 0.9f, 0);
func_80318760(D_80383010.zoombox[i], 8000); func_80318760(D_80383010.zoombox[i], 8000);
@@ -221,7 +240,7 @@ void gcpausemenu_zoomboxes_initTotalsMenu(void){
s32 i; s32 i;
for(i = 0; i<4; i++){ for(i = 0; i<4; i++){
D_80383010.zoombox[i] = gczoombox_new(D_8036C520[i].y,D_8036C520[i].portrait, (i == 3) ? 1 : 2 , 0,gcpausemenu_803129DC); D_80383010.zoombox[i] = gczoombox_new(D_8036C520[i].y,D_8036C520[i].portrait, (i == 3) ? 1 : 2 , 0, gcpausemenu_zoombox_callback);
func_803184C8(D_80383010.zoombox[i], 40.0f, 5, 2, 0.3f, 0, 0); func_803184C8(D_80383010.zoombox[i], 40.0f, 5, 2, 0.3f, 0, 0);
func_80318640(D_80383010.zoombox[i], 0x46, 0.9f, 0.7f, 1); func_80318640(D_80383010.zoombox[i], 0x46, 0.9f, 0.7f, 1);
func_80318760(D_80383010.zoombox[i], 8000); func_80318760(D_80383010.zoombox[i], 8000);
@@ -413,13 +432,13 @@ void gcpausemenu_8031209C(struct1As *arg0, s32 arg1){
void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
s32 i; s32 i;
switch(next_state){ switch(next_state){
case 0: case PAUSE_STATE_0_CLOSED:
gcpausemenu_80311A84(); gcpausemenu_80311A84();
D_80383010.unk1 = 0; D_80383010.unk1 = 0;
D_80383010.left_joystick_visible = D_80383010.right_joystick_visible = D_80383010.unk3_7 = D_80383010.selection = D_80383010.unk4 = 0; D_80383010.left_joystick_visible = D_80383010.right_joystick_visible = D_80383010.exit_pause = D_80383010.selection = D_80383010.zoombox_processed_count = 0;
break; break;
case 1: case PAUSE_STATE_1_OPENING:
D_80383010.unkC = D_80383010.unk3_6 = D_80383010.unk7 = 0; D_80383010.unkC = D_80383010.unk3_6 = D_80383010.unk7 = 0;
gcpausemenu_8031209C(D_8036C4E0, 4); gcpausemenu_8031209C(D_8036C4E0, 4);
@@ -431,18 +450,18 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
} }
break; break;
case 2: case PAUSE_STATE_2_MENU:
D_80383010.unk3_6 = 0; D_80383010.unk3_6 = 0;
break; break;
case 3: case PAUSE_STATE_3_RETURNING_TO_GAME:
gcpausemenu_80311B44(); gcpausemenu_80311B44();
D_80383010.unkC = D_80383010.unk3_6 = 0; D_80383010.unkC = D_80383010.unk3_6 = 0;
D_80383010.unk5 = 3; D_80383010.unk5 = 3;
gcpausemenu_8031209C(D_8036C4E0, 4); gcpausemenu_8031209C(D_8036C4E0, 4);
break; break;
case 5:/* 8B334 803122C4 3C128038 */ case PAUSE_STATE_5_CONFIRM_SELECTION:/* 8B334 803122C4 3C128038 */
D_80383010.unkC = 3; D_80383010.unkC = 3;
D_80383010.unk5 = D_80383010.unk3_6 = 0; D_80383010.unk5 = D_80383010.unk3_6 = 0;
gcpausemenu_8031209C(D_8036C4E0, 4); gcpausemenu_8031209C(D_8036C4E0, 4);
@@ -451,19 +470,19 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
} }
break; break;
case 6:/* 8B3A8 80312338 0C0C46D1 */ case PAUSE_STATE_6_UNKNOWN:/* 8B3A8 80312338 0C0C46D1 */
gcpausemenu_80311B44(); gcpausemenu_80311B44();
D_80383010.unkC = 0.0f; D_80383010.unkC = 0.0f;
D_80383010.unk4 = D_80383010.selection = 0; D_80383010.zoombox_processed_count = D_80383010.selection = 0;
// 0; // 0;
for(i = 0; i < 4; i++){ for(i = 0; i < 4; i++){
func_80318964(D_80383010.zoombox[i]); func_80318964(D_80383010.zoombox[i]);
} }
break; break;
case 7:/* 8B3F4 80312384 44803000 */ case PAUSE_STATE_7_LEVEL_TOTALS_INIT:/* 8B3F4 80312384 44803000 */
D_80383010.unk1 = 1; D_80383010.unk1 = 1;
D_80383010.b_button_visible = 1; D_80383010.b_button_visible = TRUE;
D_80383010.unk20 = D_80383010.unk28 = 0.0f; D_80383010.unk20 = D_80383010.unk28 = 0.0f;
gcpausemenu_zoomboxes_free(); gcpausemenu_zoomboxes_free();
gcpausemenu_zoomboxes_initTotalsMenu(); gcpausemenu_zoomboxes_initTotalsMenu();
@@ -476,7 +495,7 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
gcpausemenu_printTotals(); gcpausemenu_printTotals();
} }
for(i = 0; i<4; i++){//L80312420 for (i = 0; i < 4; i++) {//L80312420
if(D_8036C58C[D_80383010.selection].level_id == 6){ if(D_8036C58C[D_80383010.selection].level_id == 6){
gczoombox_highlight(D_80383010.zoombox[i], (!(i == 0) && !(i == 2))); gczoombox_highlight(D_80383010.zoombox[i], (!(i == 0) && !(i == 2)));
} }
@@ -489,8 +508,8 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
} }
break; break;
case 8: /* 8B54C 803124DC 44809000 */ case PAUSE_STATE_8_LEVEL_TOTALS_OPENING: /* 8B54C 803124DC 44809000 */
D_80383010.unk4 = 0; D_80383010.zoombox_processed_count = 0;
D_80383010.unkC = 0.0f; D_80383010.unkC = 0.0f;
gcpausemenu_8031209C(D_8036C520, 4); gcpausemenu_8031209C(D_8036C520, 4);
D_80383010.unk8 = -0x10; D_80383010.unk8 = -0x10;
@@ -498,17 +517,17 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
D_80383010.unk3_5 = 1; D_80383010.unk3_5 = 1;
break; break;
case 0xA: case PAUSE_STATE_A_UNKNOWN:
D_80383010.unk3_5 = 1; D_80383010.unk3_5 = 1;
D_80383010.unkC = 0.0f; D_80383010.unkC = 0.0f;
D_80383010.unk5 = 4; D_80383010.unk5 = 4;
if(D_80383010.unk9 != 0xC){ if(D_80383010.unk9 != 0xC){
D_80383010.b_button_visible = 0; D_80383010.b_button_visible = FALSE;
} }
gcpausemenu_8031209C(D_8036C520, 4); gcpausemenu_8031209C(D_8036C520, 4);
break; break;
case 0xB: case PAUSE_STATE_B_UNKNOWN:
if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){ if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){
func_802F5188(); func_802F5188();
} }
@@ -516,7 +535,7 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
gcpausemenu_zoomboxes_initMainMenu(); gcpausemenu_zoomboxes_initMainMenu();
break; break;
case 0xC: case PAUSE_STATE_C_UNKNOWN:
D_80383010.unk1 = 2; D_80383010.unk1 = 2;
D_80383010.unk6++; D_80383010.unk6++;
D_80383010.unk3_5 = 1; D_80383010.unk3_5 = 1;
@@ -526,7 +545,7 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
} }
break; break;
case 0xD:/* 8B694 80312624 3C128038 */ case PAUSE_STATE_D_UNKNOWN:/* 8B694 80312624 3C128038 */
D_80383010.unk6 = 0xFF; D_80383010.unk6 = 0xFF;
D_80383010.unk3_5 = 1; D_80383010.unk3_5 = 1;
if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){ if(D_80383010.selection && D_80383010.selection == gcpausemenu_levelToMenuPage(level_get())){
@@ -560,7 +579,7 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
} }
break; break;
case 0xE:/* 8B824 803127B4 3C128038 */ case PAUSE_STATE_E_UNKNOWN:/* 8B824 803127B4 3C128038 */
D_80383010.unk1 = 4; D_80383010.unk1 = 4;
D_80383010.selection = D_80383010.unk9; D_80383010.selection = D_80383010.unk9;
D_80383010.unk9 = -1; D_80383010.unk9 = -1;
@@ -572,85 +591,90 @@ void gcPauseMenu_setState(enum gcpausemenu_state_e next_state){
} }
break; break;
case 0xF: /* 8B8FC 8031288C 3C128038 */ case PAUSE_STATE_F_UNKNOWN: /* 8B8FC 8031288C 3C128038 */
D_80383010.unk8 = -0x10; D_80383010.unk8 = -0x10;
D_80383010.unk6 = 0xff; D_80383010.unk6 = 0xff;
D_80383010.unk3_5 = D_80383010.sns_visible = 1; D_80383010.unk3_5 = D_80383010.sns_visible = TRUE;
break; break;
case 0x10: case PAUSE_STATE_10_UNKNOWN:
break; break;
case 0x11: /* 8B944 803128D4 3C128038 */ case PAUSE_STATE_11_UNKNOWN: /* 8B944 803128D4 3C128038 */
D_80383010.unk3_5 = 1; D_80383010.unk3_5 = 1;
D_80383010.sns_visible = 0; D_80383010.sns_visible = 0;
if(D_80383010.unk9 == -1) if(D_80383010.unk9 == -1)
D_80383010.b_button_visible = 0; D_80383010.b_button_visible = FALSE;
break; break;
case 0x12: /* 8B978 80312908 3C128038 */ case PAUSE_STATE_12_UNKNOWN: /* 8B978 80312908 3C128038 */
D_80383010.selection = D_80383010.unk9; D_80383010.selection = D_80383010.unk9;
func_8033BD20(&D_80383010.sns_egg_model); //free func_8033BD20(&D_80383010.sns_egg_model); //free
func_8033BD20(&D_80383010.ice_key_model); //free func_8033BD20(&D_80383010.ice_key_model); //free
break; break;
case 0x13: /* 8B9A8 80312938 3C128038 */ case PAUSE_STATE_13_UNKNOWN: /* 8B9A8 80312938 3C128038 */
D_80383010.unk3_7 = 0; D_80383010.exit_pause = FALSE;
break; break;
case 0x14: /* 8B9C0 80312950 3C128038 */ case PAUSE_STATE_14_UNKNOWN: /* 8B9C0 80312950 3C128038 */
D_80383010.unk3_7 = D_80383010.unk3_6 = 0; D_80383010.exit_pause = D_80383010.unk3_6 = FALSE;
D_80383010.unkC = 0.0f; D_80383010.unkC = 0.0f;
func_8025A430(-1, 0x7D0, 3); func_8025A430(-1, 0x7D0, 3);
func_8025A2B0(); func_8025A2B0();
func_802DC528(0,0); func_802DC528(0,0);
break; break;
default: default:
break; break;
} }
D_80383010.state = next_state; D_80383010.state = next_state;
} }
void gcpausemenu_803129DC(s32 arg0, s32 arg1) { void gcpausemenu_zoombox_callback(s32 portrait_id, s32 zoombox_state) {
s8 var_t9; s8 var_t9;
u8 temp_t6; u8 temp_t6;
switch (D_80383010.state) { switch (D_80383010.state) {
case 3: case PAUSE_STATE_3_RETURNING_TO_GAME:
case 10: case PAUSE_STATE_A_UNKNOWN:
if (arg1 == 6) { if (zoombox_state == 6) {
D_80383010.unk4++; D_80383010.zoombox_processed_count++;
} else if (arg1 == 4) { } else if (zoombox_state == 4) {
D_80383010.unk5 = (s8) (D_80383010.unk5 - 1); D_80383010.unk5 = (s8)(D_80383010.unk5 - 1);
} }
break; break;
case 5:
if (arg1 == 4) { case PAUSE_STATE_5_CONFIRM_SELECTION:
D_80383010.unk5 = (s8) (D_80383010.unk5 - 1); if (zoombox_state == 4) {
} D_80383010.unk5 = (s8)(D_80383010.unk5 - 1);
break; }
case 1: break;
case 8:
if (arg1 == 1) { case PAUSE_STATE_1_OPENING:
D_80383010.unk4 = (s8) (D_80383010.unk4 + 1); case PAUSE_STATE_8_LEVEL_TOTALS_OPENING:
} if (zoombox_state == 1) {
break; D_80383010.zoombox_processed_count++;
case 12: }
if (arg1 == 4) { break;
D_80383010.unk5 = (s8) (D_80383010.unk5 - 1);
} case PAUSE_STATE_C_UNKNOWN:
break; if (zoombox_state == 4) {
case 6: D_80383010.unk5 = (s8)(D_80383010.unk5 - 1);
if (arg1 == 6) { }
D_80383010.unk4++; break;
}
break; case PAUSE_STATE_6_UNKNOWN:
if (zoombox_state == 6) {
D_80383010.zoombox_processed_count++;
}
break;
} }
if( (arg1 == 2)
&& (D_80383010.unk1 == 0) if ((zoombox_state == 2) &&
&& (arg0 - 4 != D_80383010.selection) (D_80383010.unk1 == 0) &&
) { (portrait_id - 4 != D_80383010.selection)) {
gczoombox_highlight(D_80383010.zoombox[arg0 - 4], 0); gczoombox_highlight(D_80383010.zoombox[portrait_id - 4], 0);
} }
} }
@@ -705,7 +729,7 @@ void gcpausemenu_init(void) {
gcpausemenu_zoomboxes_initMainMenu(); gcpausemenu_zoomboxes_initMainMenu();
D_80383010.joystick_sprite = assetcache_get(0x7EB); D_80383010.joystick_sprite = assetcache_get(0x7EB);
D_80383010.joystick_frame_count = spriteGetFrameCount(D_80383010.joystick_sprite); D_80383010.joystick_frame_count = spriteGetFrameCount(D_80383010.joystick_sprite);
D_80383010.left_joystick_alpha = temp_v1 = D_80383010.right_joystick_alpha = 0; D_80383010.left_joystick_alpha = temp_v1 = D_80383010.right_joystick_alpha = 0;
D_80383010.joystick_frame = D_80383010.unk3_4 = temp_v1; D_80383010.joystick_frame = D_80383010.unk3_4 = temp_v1;
D_80383010.b_button_sprite = assetcache_get(0x7ED); D_80383010.b_button_sprite = assetcache_get(0x7ED);
@@ -714,7 +738,7 @@ void gcpausemenu_init(void) {
D_80383010.page_cnt = gcpausemenu_initLargestPageIndex(); D_80383010.page_cnt = gcpausemenu_initLargestPageIndex();
D_80383010.sns_alpha = D_80383010.sns_visible = D_80383010.unk70_31 = D_80383010.unk70_30 = 0; D_80383010.sns_alpha = D_80383010.sns_visible = D_80383010.unk70_31 = D_80383010.unk70_30 = 0;
rumbleManager_80250FC0(); rumbleManager_80250FC0();
gcPauseMenu_setState(0); gcPauseMenu_setState(PAUSE_STATE_0_CLOSED);
} }
s32 gcpausemenu_80312D78(struct1As *arg0, s32 arg1) { s32 gcpausemenu_80312D78(struct1As *arg0, s32 arg1) {
@@ -801,7 +825,7 @@ void gcpausemenu_getNextPage(s32 arg0) {
break; break;
} }
while( (D_80383010.unk9 != 0) && itemscore_timeScores_get(D_8036C58C[D_80383010.unk9].level_id) == 0); while( (D_80383010.unk9 != 0) && itemscore_timeScores_get(D_8036C58C[D_80383010.unk9].level_id) == 0);
gcPauseMenu_setState((D_80383010.unk9 == 0xC) ? 0xA : 0xC); gcPauseMenu_setState((D_80383010.unk9 == 0xC) ? PAUSE_STATE_A_UNKNOWN : PAUSE_STATE_C_UNKNOWN);
D_80383010.unk7 = 6; D_80383010.unk7 = 6;
} }
@@ -890,17 +914,17 @@ s32 gcPauseMenu_update(void){
case PAUSE_STATE_1_OPENING: //opening case PAUSE_STATE_1_OPENING: //opening
if(gcpausemenu_80312D78(D_8036C4E0, 4) == 4){ if(gcpausemenu_80312D78(D_8036C4E0, 4) == 4){
if(((D_80383010.return_to_lair_disabled)? 3: 4 ) == D_80383010.unk4){ if(((D_80383010.return_to_lair_disabled)? 3: 4 ) == D_80383010.zoombox_processed_count){
D_80383010.unk4 = 0; D_80383010.zoombox_processed_count = 0;
gcPauseMenu_setState(2); gcPauseMenu_setState(PAUSE_STATE_2_MENU);
} }
} }
if(func_8024E67C(0) == 1){ if(func_8024E67C(0) == 1){
gcPauseMenu_setState(6); gcPauseMenu_setState(PAUSE_STATE_6_UNKNOWN);
} }
break; break;
case 2: //open case PAUSE_STATE_2_MENU: //open
if(D_80383010.unk70_31 && !func_802FC3C4()){ if(D_80383010.unk70_31 && !func_802FC3C4()){
func_802FACA4(ITEM_12_JINJOS); func_802FACA4(ITEM_12_JINJOS);
D_80383010.unk70_31 = 0; D_80383010.unk70_31 = 0;
@@ -910,19 +934,19 @@ s32 gcPauseMenu_update(void){
D_80383010.unk70_30 = 0; D_80383010.unk70_30 = 0;
} }
if(func_8024E67C(0) == 1){ if(func_8024E67C(0) == 1){
gcPauseMenu_setState(6); gcPauseMenu_setState(PAUSE_STATE_6_UNKNOWN);
}else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){ }else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){
switch(D_80383010.selection){ switch(D_80383010.selection){
case 1://L80313594 case 1://L80313594
if(level > 0 && level < 0xC) if (level > 0 && level < LEVEL_C_BOSS && D_8036C560[level - 1].map != -1) {
if(D_8036C560[level-1].map != -1) gcPauseMenu_setState(PAUSE_STATE_5_CONFIRM_SELECTION);
gcPauseMenu_setState(5); }
break; break;
case 3://L803135D0 case 3://L803135D0
gcPauseMenu_setState(5); gcPauseMenu_setState(PAUSE_STATE_5_CONFIRM_SELECTION);
break; break;
default://L803135E4 default://L803135E4
gcPauseMenu_setState(3); gcPauseMenu_setState(PAUSE_STATE_3_RETURNING_TO_GAME);
break; break;
} }
} }
@@ -930,7 +954,7 @@ s32 gcPauseMenu_update(void){
gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 0); gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 0);
D_80383010.selection = 0; D_80383010.selection = 0;
gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 1); gczoombox_highlight(D_80383010.zoombox[D_80383010.selection], 1);
gcPauseMenu_setState(3); gcPauseMenu_setState(PAUSE_STATE_3_RETURNING_TO_GAME);
} }
else if(D_80383010.unk7 > 0) {//L8031364C else if(D_80383010.unk7 > 0) {//L8031364C
D_80383010.unk7--; D_80383010.unk7--;
@@ -970,7 +994,7 @@ s32 gcPauseMenu_update(void){
} }
break; break;
case 3: //returning to game case PAUSE_STATE_3_RETURNING_TO_GAME: //returning to game
gcpausemenu_80312E80(D_8036C4E0,4); gcpausemenu_80312E80(D_8036C4E0,4);
if(D_80383010.unk5 <= 0){ if(D_80383010.unk5 <= 0){
for(i = 0; i<4; i++){ for(i = 0; i<4; i++){
@@ -978,15 +1002,15 @@ s32 gcPauseMenu_update(void){
} }
D_80383010.unk5 = 0x7F; D_80383010.unk5 = 0x7F;
} }
if(D_80383010.unk4 == 4){ if (D_80383010.zoombox_processed_count == 4) {
D_80383010.unk4 = 0; D_80383010.zoombox_processed_count = 0;
gcPauseMenu_setState(4); gcPauseMenu_setState(PAUSE_STATE_4_PROCESS_SELECTION);
} }
break; break;
case 4: case PAUSE_STATE_4_PROCESS_SELECTION:
switch(D_80383010.selection){ switch(D_80383010.selection){
case 0://L803138FC case 0://L803138FC
D_80383010.unk3_7 = 1; D_80383010.exit_pause = TRUE;
break; break;
case 1://L80313908 //return to lair case 1://L80313908 //return to lair
volatileFlag_set(VOLATILE_FLAG_16, 1); volatileFlag_set(VOLATILE_FLAG_16, 1);
@@ -996,200 +1020,204 @@ s32 gcPauseMenu_update(void){
}else{ }else{
func_802E4078(D_8036C560[level-1].map, D_8036C560[level-1].exit, 1); func_802E4078(D_8036C560[level-1].map, D_8036C560[level-1].exit, 1);
} }
gcPauseMenu_setState(0x13); gcPauseMenu_setState(PAUSE_STATE_13_UNKNOWN);
break; break;
case 2://L80313978 case 2://L80313978
D_80383010.selection = gcpausemenu_levelToMenuPage(level_get()); D_80383010.selection = gcpausemenu_levelToMenuPage(level_get());
gcPauseMenu_setState(7); gcPauseMenu_setState(PAUSE_STATE_7_LEVEL_TOTALS_INIT);
break; break;
case 3://L8031399C case 3://L8031399C
func_802C5994(); func_802C5994();
volatileFlag_set(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ,0); volatileFlag_set(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ,0);
if(!fileProgressFlag_get(FILEPROG_BD_ENTER_LAIR_CUTSCENE) || fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){ if(!fileProgressFlag_get(FILEPROG_BD_ENTER_LAIR_CUTSCENE) || fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){
gcPauseMenu_setState(0x14); gcPauseMenu_setState(PAUSE_STATE_14_UNKNOWN);
}else{ }else{
func_802E412C(1,0); func_802E412C(1,0);
func_802E4078(MAP_83_CS_GAME_OVER_MACHINE_ROOM, 0, 1); func_802E4078(MAP_83_CS_GAME_OVER_MACHINE_ROOM, 0, 1);
gcPauseMenu_setState(0x13); gcPauseMenu_setState(PAUSE_STATE_13_UNKNOWN);
} }
break; break;
} }
break; break;
case 5: case PAUSE_STATE_5_CONFIRM_SELECTION:
if(3.0 < D_80383010.unkC){ if(3.0 < D_80383010.unkC){
if( D_8036C4E0[D_80383010.selection].unkF){ if( D_8036C4E0[D_80383010.selection].unkF){
gczoombox_minimize(D_80383010.zoombox[D_80383010.selection]); gczoombox_minimize(D_80383010.zoombox[D_80383010.selection]);
}
D_80383010.unk3_6 ^= 1;
gczoombox_maximize(D_80383010.zoombox[D_80383010.selection]);
if(D_8036C4E0[D_80383010.selection].unkF = func_803183A4(D_80383010.zoombox[D_80383010.selection], (D_80383010.unk3_6)? "ARE YOU SURE?" : "A - YES, B - NO"))
D_80383010.unkC = 0.0;
}//L80313AF4
if(func_8024E67C(0) == 1){
gcPauseMenu_setState(6);
}else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
D_80383010.unk4 = (D_80383010.return_to_lair_disabled)? 3 : 4;
func_803188B4(D_80383010.zoombox[D_80383010.selection]);
gcPauseMenu_setState(1);
}else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){//L80313B68
gcPauseMenu_setState(3);
} }
break; D_80383010.unk3_6 ^= 1;
gczoombox_maximize(D_80383010.zoombox[D_80383010.selection]);
if(D_8036C4E0[D_80383010.selection].unkF = func_803183A4(D_80383010.zoombox[D_80383010.selection], (D_80383010.unk3_6)? "ARE YOU SURE?" : "A - YES, B - NO"))
D_80383010.unkC = 0.0;
}//L80313AF4
if(func_8024E67C(0) == 1){
gcPauseMenu_setState(PAUSE_STATE_6_UNKNOWN);
}else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
D_80383010.zoombox_processed_count = (D_80383010.return_to_lair_disabled)? 3 : 4;
func_803188B4(D_80383010.zoombox[D_80383010.selection]);
gcPauseMenu_setState(PAUSE_STATE_1_OPENING);
}else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){//L80313B68
gcPauseMenu_setState(PAUSE_STATE_3_RETURNING_TO_GAME);
}
break;
case 6://80313B80 case PAUSE_STATE_6_UNKNOWN://80313B80
if(D_80383010.unk4 == 4){ if(D_80383010.zoombox_processed_count == 4){
if(0.2 < D_80383010.unkC){ if(0.2 < D_80383010.unkC){
D_80383010.unk4 = 0; D_80383010.zoombox_processed_count = 0;
gcPauseMenu_setState(4); gcPauseMenu_setState(PAUSE_STATE_4_PROCESS_SELECTION);
}
} }
break; }
break;
case 7: case PAUSE_STATE_7_LEVEL_TOTALS_INIT:
gcPauseMenu_setState(8); gcPauseMenu_setState(PAUSE_STATE_8_LEVEL_TOTALS_OPENING);
break; break;
case 8:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_80312D78(D_8036C520,4);
gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk4 == 4){
D_80383010.unk4 = 0;
gcPauseMenu_setState(9);
}
break;
case 9:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(0) == 1){
D_80383010.unk1 = 3;
gcPauseMenu_setState(0xA);
}else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
gcPauseMenu_setState(0xA);
}else if(0.75 < joystick[JOYSTICK_X]){
if((s32)D_80383010.selection < gcpausemenu_getMaxPage())
gcpausemenu_getNextPage(1);
}else if(joystick[JOYSTICK_X] < -0.75){//L80313CCC
if((s32)D_80383010.selection > 0){
gcpausemenu_getNextPage(-1);
}
}
break;
case 0xA://80313D00 case PAUSE_STATE_8_LEVEL_TOTALS_OPENING:
gcpausemenu_printTotalsHeader(D_80383010.selection); gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(-1); gcpausemenu_80312FD0(1);
gcpausemenu_80312E80(D_8036C520, 4); gcpausemenu_80312D78(D_8036C520,4);
gcpausemenu_updateBButtonAndJoystickSprites(); gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk9 != 0xC){ if(D_80383010.zoombox_processed_count == 4){
D_80383010.left_joystick_visible = 0; D_80383010.zoombox_processed_count = 0;
D_80383010.right_joystick_visible = 0; gcPauseMenu_setState(PAUSE_STATE_9_LEVEL_TOTALS);
}//L80313D50 }
if(!D_80383010.unk5){ break;
for(i = 0; i < 4; i++){
gczoombox_close(D_80383010.zoombox[i]);
}
D_80383010.unk5 = 1;
}//L80313D8C
if( D_80383010.unk4 == 4){
D_80383010.unk4 = 0;
gcPauseMenu_setState(0xB);
}
break;
case 0xB: case PAUSE_STATE_9_LEVEL_TOTALS:
if(D_80383010.unk1 == 3){ gcpausemenu_printTotalsHeader(D_80383010.selection);
D_80383010.unk3_7 = 1; gcpausemenu_80312FD0(1);
} gcpausemenu_updateBButtonAndJoystickSprites();
else{
gcPauseMenu_setState((D_80383010.unk9 == 0xC)? 0xE : 0);
}
break;
case 0xC: //Flip to Sns Total page if (func_8024E67C(0) == 1) {
gcpausemenu_printTotalsHeader(D_80383010.selection); D_80383010.unk1 = 3;
gcpausemenu_80312FD0(-1); gcPauseMenu_setState(PAUSE_STATE_A_UNKNOWN);
gcpausemenu_updateBButtonAndJoystickSprites(); } else if (face_button[FACE_BUTTON(BUTTON_B)] == 1) {
if(D_80383010.unk5 == 0 && !D_80383010.unk3_5){ gcPauseMenu_setState(PAUSE_STATE_A_UNKNOWN);
gcPauseMenu_setState(0xd); } else if (0.75 < joystick[JOYSTICK_X]) {
if ((s32) D_80383010.selection < gcpausemenu_getMaxPage()) {
gcpausemenu_getNextPage(1);
} }
break; } else if (joystick[JOYSTICK_X] < -0.75) {//L80313CCC
if ((s32) D_80383010.selection > 0) {
case 0xD: //Open SnS Total Page
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk7 > 0)
D_80383010.unk7--;
else
gcPauseMenu_setState(9);
break;
case 0xE:
gcPauseMenu_setState(0xF);
break;
case 0xF:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(!D_80383010.unk3_5){
gcPauseMenu_setState(0x10);
}
break;
case 0x10:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(0) == 1){
D_80383010.unk1 = 3;
gcPauseMenu_setState(0x11);
}//L80313EFC
else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
gcPauseMenu_setState(0x11);
}
else if(joystick[JOYSTICK_X] < -0.75){
gcpausemenu_getNextPage(-1); gcpausemenu_getNextPage(-1);
gcPauseMenu_setState(0x11);
} }
break; }
break;
case 0x11: case PAUSE_STATE_A_UNKNOWN://80313D00
gcpausemenu_printTotalsHeader(D_80383010.selection); gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(-1); gcpausemenu_80312FD0(-1);
gcpausemenu_updateBButtonAndJoystickSprites(); gcpausemenu_80312E80(D_8036C520, 4);
if(D_80383010.unk9 == -1){ gcpausemenu_updateBButtonAndJoystickSprites();
D_80383010.left_joystick_visible = 0; if(D_80383010.unk9 != 0xC){
D_80383010.right_joystick_visible = 0; D_80383010.left_joystick_visible = FALSE;
D_80383010.right_joystick_visible = FALSE;
}//L80313D50
if(!D_80383010.unk5){
for(i = 0; i < 4; i++){
gczoombox_close(D_80383010.zoombox[i]);
} }
if(D_80383010.sns_alpha == 0){ D_80383010.unk5 = 1;
gcPauseMenu_setState(0x12); }//L80313D8C
} if (D_80383010.zoombox_processed_count == 4) {
break; D_80383010.zoombox_processed_count = 0;
gcPauseMenu_setState(PAUSE_STATE_B_UNKNOWN);
}
break;
case 0x12: case PAUSE_STATE_B_UNKNOWN:
if(D_80383010.unk1 == 3){ if (D_80383010.unk1 == 3) {
D_80383010.unk3_7 = 1; D_80383010.exit_pause = TRUE;
}else{ }
gcPauseMenu_setState((D_80383010.unk9 != -1)?7:0); else {
} gcPauseMenu_setState((D_80383010.unk9 == 0xC) ? PAUSE_STATE_E_UNKNOWN : PAUSE_STATE_0_CLOSED);
break; }
break;
case 0x14: case PAUSE_STATE_C_UNKNOWN: //Flip to Sns Total page
func_802DC5B8(); gcpausemenu_printTotalsHeader(D_80383010.selection);
if( 5.0 < D_80383010.unkC){ gcpausemenu_80312FD0(-1);
if(!D_80383010.unk3_6){ gcpausemenu_updateBButtonAndJoystickSprites();
func_802DC560(0,0); if(D_80383010.unk5 == 0 && !D_80383010.unk3_5){
func_802E412C(1,0); gcPauseMenu_setState(PAUSE_STATE_D_UNKNOWN);
func_802E4078(0x1f, 0, 1); }
D_80383010.unk3_6 = 1; break;
}
case PAUSE_STATE_D_UNKNOWN: //Open SnS Total Page
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk7 > 0)
D_80383010.unk7--;
else
gcPauseMenu_setState(PAUSE_STATE_9_LEVEL_TOTALS);
break;
case PAUSE_STATE_E_UNKNOWN:
gcPauseMenu_setState(PAUSE_STATE_F_UNKNOWN);
break;
case PAUSE_STATE_F_UNKNOWN:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(!D_80383010.unk3_5){
gcPauseMenu_setState(PAUSE_STATE_10_UNKNOWN);
}
break;
case PAUSE_STATE_10_UNKNOWN:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(0) == 1){
D_80383010.unk1 = 3;
gcPauseMenu_setState(PAUSE_STATE_11_UNKNOWN);
}//L80313EFC
else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
gcPauseMenu_setState(PAUSE_STATE_11_UNKNOWN);
}
else if(joystick[JOYSTICK_X] < -0.75){
gcpausemenu_getNextPage(-1);
gcPauseMenu_setState(PAUSE_STATE_11_UNKNOWN);
}
break;
case PAUSE_STATE_11_UNKNOWN:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(-1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(D_80383010.unk9 == -1){
D_80383010.left_joystick_visible = FALSE;
D_80383010.right_joystick_visible = FALSE;
}
if(D_80383010.sns_alpha == 0){
gcPauseMenu_setState(PAUSE_STATE_12_UNKNOWN);
}
break;
case PAUSE_STATE_12_UNKNOWN:
if(D_80383010.unk1 == 3){
D_80383010.exit_pause = TRUE;
}else{
gcPauseMenu_setState((D_80383010.unk9 != -1) ? PAUSE_STATE_7_LEVEL_TOTALS_INIT : PAUSE_STATE_0_CLOSED);
}
break;
case PAUSE_STATE_14_UNKNOWN:
func_802DC5B8();
if( 5.0 < D_80383010.unkC){
if(!D_80383010.unk3_6){
func_802DC560(0,0);
func_802E412C(1,0);
func_802E4078(MAP_1F_CS_START_RAREWARE, 0, 1);
D_80383010.unk3_6 = 1;
} }
break; }
break;
} }
return D_80383010.unk3_7; return D_80383010.exit_pause;
} }
void __gcpausemenu_drawSprite(Gfx** gdl, Mtx** mptr, Vtx** vptr, BKSprite* sprite, s32 frame, f32 x, f32 y, f32 w, f32 h, u8 a){ void __gcpausemenu_drawSprite(Gfx** gdl, Mtx** mptr, Vtx** vptr, BKSprite* sprite, s32 frame, f32 x, f32 y, f32 w, f32 h, u8 a){
@@ -1397,19 +1425,19 @@ void gcpausemenu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
} }
} }
if (D_80383010.sns_visible != 0) { if (D_80383010.sns_visible != FALSE) {
if (D_80383010.sns_alpha < 0xFF) { if (D_80383010.sns_alpha < 0xFF) {
D_80383010.sns_alpha = (D_80383010.sns_alpha + 0xC < 0xFF) ? D_80383010.sns_alpha + 0xC : 0xFF; D_80383010.sns_alpha = (D_80383010.sns_alpha + 0xC < 0xFF) ? D_80383010.sns_alpha + 0xC : 0xFF;
} }
} }
if (D_80383010.sns_visible == 0) { if (D_80383010.sns_visible == FALSE) {
if (D_80383010.sns_alpha > 0) { if (D_80383010.sns_alpha > 0) {
D_80383010.sns_alpha = (D_80383010.sns_alpha - 0xC > 0) ? D_80383010.sns_alpha - 0xC : 0; D_80383010.sns_alpha = (D_80383010.sns_alpha - 0xC > 0) ? D_80383010.sns_alpha - 0xC : 0;
} }
} }
if (D_80383010.state == 0x14) { if (D_80383010.state == PAUSE_STATE_14_UNKNOWN) {
func_802DC604(gfx, mtx, vtx); func_802DC604(gfx, mtx, vtx);
} }
} }
@@ -1431,8 +1459,9 @@ void gcpausemenu_80314B24(void){
void gcpausemenu_returnToLair(void){ void gcpausemenu_returnToLair(void){
s32 level = level_get(); s32 level = level_get();
if(0 < level && level < 0xC && D_8036C560[level-1].map != -1){
if (0 < level && level < LEVEL_C_BOSS && D_8036C560[level - 1].map != -1) {
volatileFlag_set(VOLATILE_FLAG_16, TRUE); volatileFlag_set(VOLATILE_FLAG_16, TRUE);
func_802E4078(D_8036C560[level-1].map, D_8036C560[level-1].exit, 1); func_802E4078(D_8036C560[level - 1].map, D_8036C560[level - 1].exit, 1);
} }
} }

View File

@@ -1043,12 +1043,12 @@ void func_80316E60(GcZoombox *this){
func_80318488(this); func_80318488(this);
} }
void func_80316E84(GcZoombox *this, s32 arg1){ void func_80316E84(GcZoombox *this, s32 state){
if(this->unk134 != arg1){ if(this->unk134 != state){
if(this->unk130 != NULL){ if (this->callback != NULL) {
this->unk130(this->portrait_id, arg1); this->callback(this->portrait_id, state);
} }
this->unk134 = arg1; this->unk134 = state;
} }
} }
@@ -1378,13 +1378,13 @@ void __gczoombox_load_sfx(GcZoombox *this, GcZoomboxSprite portrait_id){
} }
} }
GcZoombox *gczoombox_new(s32 arg0, GcZoomboxSprite portrait_id, s32 arg2, s32 arg3, void (*arg4)(s32, s32)){ GcZoombox *gczoombox_new(s32 y, GcZoomboxSprite portrait_id, s32 arg2, s32 arg3, void (*callback)(s32 portrait_id, s32 state)){
GcZoombox *this; GcZoombox *this;
s32 i; s32 i;
s32 temp_v1; s32 temp_v1;
this = (GcZoombox *)malloc(sizeof(GcZoombox)); this = (GcZoombox *)malloc(sizeof(GcZoombox));
this->unk130 = arg4; this->callback = callback;
this->state = 0xB; this->state = 0xB;
this->portrait_id = portrait_id; this->portrait_id = portrait_id;
this->unk134 = this->str_cnt = this->current_str_index = 0; this->unk134 = this->str_cnt = this->current_str_index = 0;
@@ -1399,7 +1399,7 @@ GcZoombox *gczoombox_new(s32 arg0, GcZoomboxSprite portrait_id, s32 arg2, s32 ar
this->unk15C = 0; this->unk15C = 0;
this->unk160 = 0; this->unk160 = 0;
this->unk166 = this->unk1A4_19; this->unk166 = this->unk1A4_19;
this->unk164 = arg0; this->unk164 = y;
this->unk168 = 0xFF; this->unk168 = 0xFF;
this->unk1A4_24 = arg3; this->unk1A4_24 = arg3;
if(this->unk1A4_24){ if(this->unk1A4_24){

View File

@@ -132,7 +132,7 @@ typedef struct {
f32 unk110[5]; //sfx_??? f32 unk110[5]; //sfx_???
s16 unk124[5]; //sfx_??? s16 unk124[5]; //sfx_???
s16 unk12E; s16 unk12E;
void (*unk130)(s32, s32); void (*callback)(s32 portrait_id, s32 state);
u8 unk134; u8 unk134;
u8 state; u8 state;
u8 portrait_id; //0x136 u8 portrait_id; //0x136