From 915902247ca9a198c9cfab42a2e1bfec98261e54 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 1 Jan 2020 14:16:39 +1000 Subject: [PATCH] Decompile menuhandlerSoloDifficulty --- src/game/game_015470.c | 2 +- src/game/game_0dcdb0.c | 2 +- src/game/game_0f09f0.c | 16 +-- src/game/game_102240.c | 213 +++++++++++++++++++-------------- src/game/game_107fb0.c | 30 ++--- src/game/game_10ccd0.c | 14 +-- src/game/game_176d70.c | 36 +++--- src/game/game_1a3340.c | 20 ++-- src/include/constants.h | 1 + src/include/game/game_0f09f0.h | 2 +- src/include/game/game_102240.h | 4 +- src/include/types.h | 5 +- 12 files changed, 187 insertions(+), 158 deletions(-) diff --git a/src/game/game_015470.c b/src/game/game_015470.c index 7272b36e2..f6db579fa 100644 --- a/src/game/game_015470.c +++ b/src/game/game_015470.c @@ -9021,7 +9021,7 @@ glabel func0f01bf28 .L0f01d26c: /* f01d26c: 24440001 */ addiu $a0,$v0,0x1 /* f01d270: 0005ce42 */ srl $t9,$a1,0x19 -/* f01d274: 0fc40e3b */ jal func0f1038ec +/* f01d274: 0fc40e3b */ jal isStageDifficultyUnlocked /* f01d278: 03202825 */ or $a1,$t9,$zero /* f01d27c: 50400006 */ beqzl $v0,.L0f01d298 /* f01d280: 8e6f046c */ lw $t7,0x46c($s3) diff --git a/src/game/game_0dcdb0.c b/src/game/game_0dcdb0.c index c42566a1d..934049450 100644 --- a/src/game/game_0dcdb0.c +++ b/src/game/game_0dcdb0.c @@ -20185,7 +20185,7 @@ glabel func0f0eb46c .L0f0eb4c0: /* f0eb4c0: 53200006 */ beqzl $t9,.L0f0eb4dc /* f0eb4c4: 8ce20010 */ lw $v0,0x10($a3) -/* f0eb4c8: 0fc3cbd3 */ jal func0f0f2f4c +/* f0eb4c8: 0fc3cbd3 */ jal menuPushDialog /* f0eb4cc: 8ce40010 */ lw $a0,0x10($a3) /* f0eb4d0: 10000009 */ beqz $zero,.L0f0eb4f8 /* f0eb4d4: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 6f6e1b824..f015b3e22 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -3212,7 +3212,7 @@ glabel func0f0f2cf4 ); GLOBAL_ASM( -glabel func0f0f2f4c +glabel menuPushDialog /* f0f2f4c: 27bdffc0 */ addiu $sp,$sp,-64 /* f0f2f50: afbf003c */ sw $ra,0x3c($sp) /* f0f2f54: afbe0038 */ sw $s8,0x38($sp) @@ -3762,7 +3762,7 @@ glabel func0f0f3704 /* f0f3708: afbf0014 */ sw $ra,0x14($sp) /* f0f370c: 0fc3ccef */ jal func0f0f33bc /* f0f3710: afa40018 */ sw $a0,0x18($sp) -/* f0f3714: 0fc3cbd3 */ jal func0f0f2f4c +/* f0f3714: 0fc3cbd3 */ jal menuPushDialog /* f0f3718: 8fa40018 */ lw $a0,0x18($sp) /* f0f371c: 8fbf0014 */ lw $ra,0x14($sp) /* f0f3720: 27bd0018 */ addiu $sp,$sp,0x18 @@ -9145,7 +9145,7 @@ glabel func0f0f8330 .L0f0f84f8: /* f0f84f8: 8fa40020 */ lw $a0,0x20($sp) .L0f0f84fc: -/* f0f84fc: 0fc3cbd3 */ jal func0f0f2f4c +/* f0f84fc: 0fc3cbd3 */ jal menuPushDialog /* f0f8500: afa60018 */ sw $a2,0x18($sp) /* f0f8504: 8fa60018 */ lw $a2,0x18($sp) /* f0f8508: 3c03800a */ lui $v1,%hi(var800a19c0) @@ -11181,12 +11181,12 @@ glabel func0f0f935c /* f0fa230: 15a10006 */ bne $t5,$at,.L0f0fa24c /* f0fa234: 00000000 */ sll $zero,$zero,0x0 /* f0fa238: 3c048007 */ lui $a0,%hi(menudialog_mpdropout) -/* f0fa23c: 0fc3cbd3 */ jal func0f0f2f4c +/* f0fa23c: 0fc3cbd3 */ jal menuPushDialog /* f0fa240: 248452fc */ addiu $a0,$a0,%lo(menudialog_mpdropout) /* f0fa244: 1000001f */ beqz $zero,.L0f0fa2c4 /* f0fa248: 8fd00008 */ lw $s0,0x8($s8) .L0f0fa24c: -/* f0fa24c: 0fc3cbd3 */ jal func0f0f2f4c +/* f0fa24c: 0fc3cbd3 */ jal menuPushDialog /* f0fa250: 24844b80 */ addiu $a0,$a0,%lo(menudialog_2aba0) /* f0fa254: 1000001b */ beqz $zero,.L0f0fa2c4 /* f0fa258: 8fd00008 */ lw $s0,0x8($s8) @@ -12455,7 +12455,7 @@ glabel func0f0fa704 /* f0fb388: 248457b8 */ addiu $a0,$a0,%lo(menudialog_mpready) /* f0fb38c: 10820005 */ beq $a0,$v0,.L0f0fb3a4 /* f0fb390: 00000000 */ sll $zero,$zero,0x0 -/* f0fb394: 0fc3cbd3 */ jal func0f0f2f4c +/* f0fb394: 0fc3cbd3 */ jal menuPushDialog /* f0fb398: 00000000 */ sll $zero,$zero,0x0 /* f0fb39c: 1000002f */ beqz $zero,.L0f0fb45c /* f0fb3a0: 8fbf003c */ lw $ra,0x3c($sp) @@ -14436,7 +14436,7 @@ glabel func0f0fce8c /* f0fcf90: 10000004 */ beqz $zero,.L0f0fcfa4 /* f0fcf94: 8fbf0014 */ lw $ra,0x14($sp) .L0f0fcf98: -/* f0fcf98: 0fc3cbd3 */ jal func0f0f2f4c +/* f0fcf98: 0fc3cbd3 */ jal menuPushDialog /* f0fcf9c: 00e02025 */ or $a0,$a3,$zero .L0f0fcfa0: /* f0fcfa0: 8fbf0014 */ lw $ra,0x14($sp) @@ -14542,7 +14542,7 @@ glabel menuhandlerWarnRepairPak /* f0fd0f0: 14810004 */ bne $a0,$at,.L0f0fd104 /* f0fd0f4: afa60020 */ sw $a2,0x20($sp) /* f0fd0f8: 3c048007 */ lui $a0,%hi(menudialog_pakattemptrepair) -/* f0fd0fc: 0fc3cbd3 */ jal func0f0f2f4c +/* f0fd0fc: 0fc3cbd3 */ jal menuPushDialog /* f0fd100: 248416a8 */ addiu $a0,$a0,%lo(menudialog_pakattemptrepair) .L0f0fd104: /* f0fd104: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 67087b731..94320ae53 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -1476,14 +1476,14 @@ s32 menuhandlerAcceptPdModeSettings(s32 operation, struct menu_item *item, bool setDifficulty(g_MissionConfig.difficulty); func0f0f36dc(); func0f0f36dc(); - func0f0f2f4c(&g_ObjectivesMenuDialog); + menuPushDialog(&g_ObjectivesMenuDialog); } return 0; } GLOBAL_ASM( -glabel func0f1038ec +glabel isStageDifficultyUnlocked /* f1038ec: 28810011 */ slti $at,$a0,0x11 /* f1038f0: 14200024 */ bnez $at,.L0f103984 /* f1038f4: 00a03025 */ or $a2,$a1,$zero @@ -1782,82 +1782,111 @@ glabel func0f1038ec /* f103cec: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel menuhandlerSoloDifficulty -/* f103cf0: 27bdffe8 */ addiu $sp,$sp,-24 -/* f103cf4: afa60020 */ sw $a2,0x20($sp) -/* f103cf8: 24010006 */ addiu $at,$zero,0x6 -/* f103cfc: 00a03025 */ or $a2,$a1,$zero -/* f103d00: afbf0014 */ sw $ra,0x14($sp) -/* f103d04: 1081001c */ beq $a0,$at,.L0f103d78 -/* f103d08: afa5001c */ sw $a1,0x1c($sp) -/* f103d0c: 2401000c */ addiu $at,$zero,0xc -/* f103d10: 1081002e */ beq $a0,$at,.L0f103dcc -/* f103d14: 3c02800a */ lui $v0,%hi(g_MissionConfig) -/* f103d18: 2401000f */ addiu $at,$zero,0xf -/* f103d1c: 14810033 */ bne $a0,$at,.L0f103dec -/* f103d20: 3c02800a */ lui $v0,%hi(g_MissionConfig) -/* f103d24: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) -/* f103d28: 90a50001 */ lbu $a1,0x1($a1) -/* f103d2c: afa6001c */ sw $a2,0x1c($sp) -/* f103d30: 0fc40e3b */ jal func0f1038ec -/* f103d34: 90440002 */ lbu $a0,0x2($v0) -/* f103d38: 1040002c */ beqz $v0,.L0f103dec -/* f103d3c: 8fa6001c */ lw $a2,0x1c($sp) -/* f103d40: 8cce000c */ lw $t6,0xc($a2) -/* f103d44: 3c0f800a */ lui $t7,0x800a -/* f103d48: 15c00003 */ bnez $t6,.L0f103d58 -/* f103d4c: 00000000 */ sll $zero,$zero,0x0 -/* f103d50: 10000027 */ beqz $zero,.L0f103df0 -/* f103d54: 24020001 */ addiu $v0,$zero,0x1 -.L0f103d58: -/* f103d58: 8def2208 */ lw $t7,0x2208($t7) -/* f103d5c: 90d90001 */ lbu $t9,0x1($a2) -/* f103d60: 31f80007 */ andi $t8,$t7,0x7 -/* f103d64: 0319082b */ sltu $at,$t8,$t9 -/* f103d68: 54200021 */ bnezl $at,.L0f103df0 -/* f103d6c: 00001025 */ or $v0,$zero,$zero -/* f103d70: 1000001f */ beqz $zero,.L0f103df0 -/* f103d74: 24020001 */ addiu $v0,$zero,0x1 -.L0f103d78: -/* f103d78: 3c02800a */ lui $v0,%hi(g_MissionConfig) -/* f103d7c: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) -/* f103d80: 90480000 */ lbu $t0,0x0($v0) -/* f103d84: 310efffe */ andi $t6,$t0,0xfffe -/* f103d88: a04e0000 */ sb $t6,0x0($v0) -/* f103d8c: 90cb0001 */ lbu $t3,0x1($a2) -/* f103d90: 31cf0001 */ andi $t7,$t6,0x1 -/* f103d94: 000b6840 */ sll $t5,$t3,0x1 -/* f103d98: 01afc025 */ or $t8,$t5,$t7 -/* f103d9c: a0580000 */ sb $t8,0x0($v0) -/* f103da0: 8c440000 */ lw $a0,0x0($v0) -/* f103da4: 0004ce42 */ srl $t9,$a0,0x19 -/* f103da8: 0fc5b36a */ jal setDifficulty -/* f103dac: 03202025 */ or $a0,$t9,$zero -/* f103db0: 0fc3cdb7 */ jal func0f0f36dc -/* f103db4: 00000000 */ sll $zero,$zero,0x0 -/* f103db8: 3c048007 */ lui $a0,%hi(g_ObjectivesMenuDialog) -/* f103dbc: 0fc3cbd3 */ jal func0f0f2f4c -/* f103dc0: 24841a90 */ addiu $a0,$a0,%lo(g_ObjectivesMenuDialog) -/* f103dc4: 1000000a */ beqz $zero,.L0f103df0 -/* f103dc8: 00001025 */ or $v0,$zero,$zero -.L0f103dcc: -/* f103dcc: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) -/* f103dd0: 90440002 */ lbu $a0,0x2($v0) -/* f103dd4: 0fc40e3b */ jal func0f1038ec -/* f103dd8: 90c50001 */ lbu $a1,0x1($a2) -/* f103ddc: 54400004 */ bnezl $v0,.L0f103df0 -/* f103de0: 00001025 */ or $v0,$zero,$zero -/* f103de4: 10000002 */ beqz $zero,.L0f103df0 -/* f103de8: 24020001 */ addiu $v0,$zero,0x1 -.L0f103dec: -/* f103dec: 00001025 */ or $v0,$zero,$zero -.L0f103df0: -/* f103df0: 8fbf0014 */ lw $ra,0x14($sp) -/* f103df4: 27bd0018 */ addiu $sp,$sp,0x18 -/* f103df8: 03e00008 */ jr $ra -/* f103dfc: 00000000 */ sll $zero,$zero,0x0 -); +//GLOBAL_ASM( +//glabel menuhandlerSoloDifficulty +///* f103cf0: 27bdffe8 */ addiu $sp,$sp,-24 +///* f103cf4: afa60020 */ sw $a2,0x20($sp) +///* f103cf8: 24010006 */ addiu $at,$zero,0x6 +///* f103cfc: 00a03025 */ or $a2,$a1,$zero +///* f103d00: afbf0014 */ sw $ra,0x14($sp) +///* f103d04: 1081001c */ beq $a0,$at,.L0f103d78 +///* f103d08: afa5001c */ sw $a1,0x1c($sp) +///* f103d0c: 2401000c */ addiu $at,$zero,0xc +///* f103d10: 1081002e */ beq $a0,$at,.L0f103dcc +///* f103d14: 3c02800a */ lui $v0,%hi(g_MissionConfig) +///* f103d18: 2401000f */ addiu $at,$zero,0xf +///* f103d1c: 14810033 */ bne $a0,$at,.L0f103dec +///* f103d20: 3c02800a */ lui $v0,%hi(g_MissionConfig) +///* f103d24: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) +///* f103d28: 90a50001 */ lbu $a1,0x1($a1) +///* f103d2c: afa6001c */ sw $a2,0x1c($sp) +///* f103d30: 0fc40e3b */ jal isStageDifficultyUnlocked +///* f103d34: 90440002 */ lbu $a0,0x2($v0) +///* f103d38: 1040002c */ beqz $v0,.L0f103dec +///* f103d3c: 8fa6001c */ lw $a2,0x1c($sp) +///* f103d40: 8cce000c */ lw $t6,0xc($a2) +///* f103d44: 3c0f800a */ lui $t7,0x800a +///* f103d48: 15c00003 */ bnez $t6,.L0f103d58 +///* f103d4c: 00000000 */ sll $zero,$zero,0x0 +///* f103d50: 10000027 */ beqz $zero,.L0f103df0 +///* f103d54: 24020001 */ addiu $v0,$zero,0x1 +//.L0f103d58: +///* f103d58: 8def2208 */ lw $t7,0x2208($t7) +///* f103d5c: 90d90001 */ lbu $t9,0x1($a2) +///* f103d60: 31f80007 */ andi $t8,$t7,0x7 +///* f103d64: 0319082b */ sltu $at,$t8,$t9 +///* f103d68: 54200021 */ bnezl $at,.L0f103df0 +///* f103d6c: 00001025 */ or $v0,$zero,$zero +///* f103d70: 1000001f */ beqz $zero,.L0f103df0 +///* f103d74: 24020001 */ addiu $v0,$zero,0x1 +//.L0f103d78: +///* f103d78: 3c02800a */ lui $v0,%hi(g_MissionConfig) +///* f103d7c: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) +///* f103d80: 90480000 */ lbu $t0,0x0($v0) # t0 = config.difficulty (byte) +///* f103d84: 310efffe */ andi $t6,$t0,0xfffe # t6 = config.difficulty & 0xfe +///* f103d88: a04e0000 */ sb $t6,0x0($v0) # config.difficulty = t6 +///* f103d8c: 90cb0001 */ lbu $t3,0x1($a2) +///* f103d90: 31cf0001 */ andi $t7,$t6,0x1 +///* f103d94: 000b6840 */ sll $t5,$t3,0x1 +///* f103d98: 01afc025 */ or $t8,$t5,$t7 +///* f103d9c: a0580000 */ sb $t8,0x0($v0) +///* f103da0: 8c440000 */ lw $a0,0x0($v0) +///* f103da4: 0004ce42 */ srl $t9,$a0,0x19 +///* f103da8: 0fc5b36a */ jal setDifficulty +///* f103dac: 03202025 */ or $a0,$t9,$zero +///* f103db0: 0fc3cdb7 */ jal func0f0f36dc +///* f103db4: 00000000 */ sll $zero,$zero,0x0 +///* f103db8: 3c048007 */ lui $a0,%hi(g_ObjectivesMenuDialog) +///* f103dbc: 0fc3cbd3 */ jal menuPushDialog +///* f103dc0: 24841a90 */ addiu $a0,$a0,%lo(g_ObjectivesMenuDialog) +///* f103dc4: 1000000a */ beqz $zero,.L0f103df0 +///* f103dc8: 00001025 */ or $v0,$zero,$zero +//.L0f103dcc: +///* f103dcc: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) +///* f103dd0: 90440002 */ lbu $a0,0x2($v0) +///* f103dd4: 0fc40e3b */ jal isStageDifficultyUnlocked +///* f103dd8: 90c50001 */ lbu $a1,0x1($a2) +///* f103ddc: 54400004 */ bnezl $v0,.L0f103df0 +///* f103de0: 00001025 */ or $v0,$zero,$zero +///* f103de4: 10000002 */ beqz $zero,.L0f103df0 +///* f103de8: 24020001 */ addiu $v0,$zero,0x1 +//.L0f103dec: +///* f103dec: 00001025 */ or $v0,$zero,$zero +//.L0f103df0: +///* f103df0: 8fbf0014 */ lw $ra,0x14($sp) +///* f103df4: 27bd0018 */ addiu $sp,$sp,0x18 +///* f103df8: 03e00008 */ jr $ra +///* f103dfc: 00000000 */ sll $zero,$zero,0x0 +//); + +s32 menuhandlerSoloDifficulty(u32 operation, struct menu_item *item, s32 *value) +{ + switch (operation) { + case MENUOP_15: + if (isStageDifficultyUnlocked(g_MissionConfig.unk02, item->param)) { + if (item->right == 0) { + return true; + } + if ((g_SoloSaveFile.unk08 & 7) >= item->param) { + return true; + } + } + break; + case MENUOP_SET: + g_MissionConfig.bits0_07 = 0; + g_MissionConfig.difficulty = item->param; + setDifficulty(g_MissionConfig.difficulty); + func0f0f36dc(); + menuPushDialog(&g_ObjectivesMenuDialog); + break; + case MENUOP_CHECKDISABLED: + if (!isStageDifficultyUnlocked(g_MissionConfig.unk02, item->param)) { + return true; + } + } + + return 0; +} GLOBAL_ASM( glabel menuhandlerPdMode @@ -1874,7 +1903,7 @@ glabel menuhandlerPdMode /* f103e28: 00001025 */ or $v0,$zero,$zero .L0f103e2c: /* f103e2c: 3c048007 */ lui $a0,%hi(menudialog_perfectdarkmodesettings) -/* f103e30: 0fc3cbd3 */ jal func0f0f2f4c +/* f103e30: 0fc3cbd3 */ jal menuPushDialog /* f103e34: 24841b48 */ addiu $a0,$a0,%lo(menudialog_perfectdarkmodesettings) /* f103e38: 10000007 */ beqz $zero,.L0f103e58 /* f103e3c: 00001025 */ or $v0,$zero,$zero @@ -2041,7 +2070,7 @@ glabel menuhandler00104038 /* f104054: 0fc3cdb7 */ jal func0f0f36dc /* f104058: 00000000 */ sll $zero,$zero,0x0 /* f10405c: 3c048007 */ lui $a0,%hi(g_ObjectivesMenuDialog) -/* f104060: 0fc3cbd3 */ jal func0f0f2f4c +/* f104060: 0fc3cbd3 */ jal menuPushDialog /* f104064: 24841a90 */ addiu $a0,$a0,%lo(g_ObjectivesMenuDialog) .L0f104068: /* f104068: 8faf0018 */ lw $t7,0x18($sp) @@ -2453,14 +2482,14 @@ glabel menuhandler00104538 /* f1045a0: 0fc3cdb7 */ jal func0f0f36dc /* f1045a4: 00000000 */ sll $zero,$zero,0x0 /* f1045a8: 3c048007 */ lui $a0,%hi(menudialog_cooperativeoptions) -/* f1045ac: 0fc3cbd3 */ jal func0f0f2f4c +/* f1045ac: 0fc3cbd3 */ jal menuPushDialog /* f1045b0: 24841ca4 */ addiu $a0,$a0,%lo(menudialog_cooperativeoptions) /* f1045b4: 1000000a */ beqz $zero,.L0f1045e0 /* f1045b8: 00001025 */ or $v0,$zero,$zero .L0f1045bc: /* f1045bc: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f1045c0: 90440002 */ lbu $a0,0x2($v0) -/* f1045c4: 0fc40e3b */ jal func0f1038ec +/* f1045c4: 0fc40e3b */ jal isStageDifficultyUnlocked /* f1045c8: 90c50001 */ lbu $a1,0x1($a2) /* f1045cc: 54400004 */ bnezl $v0,.L0f1045e0 /* f1045d0: 00001025 */ or $v0,$zero,$zero @@ -2498,7 +2527,7 @@ glabel menuhandler001045f0 /* f10463c: 0fc3cdb7 */ jal func0f0f36dc /* f104640: 00000000 */ sll $zero,$zero,0x0 /* f104644: 3c048007 */ lui $a0,%hi(menudialog_counteroperativeoptions) -/* f104648: 0fc3cbd3 */ jal func0f0f2f4c +/* f104648: 0fc3cbd3 */ jal menuPushDialog /* f10464c: 24841d34 */ addiu $a0,$a0,%lo(menudialog_counteroperativeoptions) .L0f104650: /* f104650: 8fbf0014 */ lw $ra,0x14($sp) @@ -2756,7 +2785,7 @@ glabel menuhandler0010476c /* f1049c0: 05e10006 */ bgez $t7,.L0f1049dc /* f1049c4: a1180001 */ sb $t8,0x1($t0) /* f1049c8: 3c048007 */ lui $a0,%hi(menudialog_selectdifficulty2) -/* f1049cc: 0fc3cbd3 */ jal func0f0f2f4c +/* f1049cc: 0fc3cbd3 */ jal menuPushDialog /* f1049d0: 24841dc4 */ addiu $a0,$a0,%lo(menudialog_selectdifficulty2) /* f1049d4: 100002ec */ beqz $zero,.L0f105588 /* f1049d8: 00001025 */ or $v0,$zero,$zero @@ -2767,12 +2796,12 @@ glabel menuhandler0010476c /* f1049e8: 07210006 */ bgez $t9,.L0f104a04 /* f1049ec: 00000000 */ sll $zero,$zero,0x0 /* f1049f0: 3c048007 */ lui $a0,%hi(menudialog_selectdifficulty3) -/* f1049f4: 0fc3cbd3 */ jal func0f0f2f4c +/* f1049f4: 0fc3cbd3 */ jal menuPushDialog /* f1049f8: 24841e54 */ addiu $a0,$a0,%lo(menudialog_selectdifficulty3) /* f1049fc: 100002e2 */ beqz $zero,.L0f105588 /* f104a00: 00001025 */ or $v0,$zero,$zero .L0f104a04: -/* f104a04: 0fc3cbd3 */ jal func0f0f2f4c +/* f104a04: 0fc3cbd3 */ jal menuPushDialog /* f104a08: 24841c00 */ addiu $a0,$a0,%lo(menudialog_selectdifficulty) /* f104a0c: 100002de */ beqz $zero,.L0f105588 /* f104a10: 00001025 */ or $v0,$zero,$zero @@ -3659,9 +3688,9 @@ s32 menuhandlerControlStyle(s32 operation, struct menu_item *item, u32 *value) (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0) + (g_Vars.players[3] ? 1 : 0) >= 2) { - func0f0f2f4c(&menudialog_control); + menuPushDialog(&menudialog_control); } else { - func0f0f2f4c(&menudialog_control2); + menuPushDialog(&menudialog_control2); } } @@ -4841,14 +4870,14 @@ glabel menuhandlerMainMenuSoloMissions /* f106834: a0580003 */ sb $t8,0x3($v0) /* f106838: 331900bf */ andi $t9,$t8,0xbf /* f10683c: a0590003 */ sb $t9,0x3($v0) -/* f106840: 0fc3cbd3 */ jal func0f0f2f4c +/* f106840: 0fc3cbd3 */ jal menuPushDialog /* f106844: afa50018 */ sw $a1,0x18($sp) /* f106848: 8fa50018 */ lw $a1,0x18($sp) .L0f10684c: /* f10684c: 2401000f */ addiu $at,$zero,0xf /* f106850: 14a10007 */ bne $a1,$at,.L0f106870 /* f106854: 24040001 */ addiu $a0,$zero,0x1 -/* f106858: 0fc40e3b */ jal func0f1038ec +/* f106858: 0fc40e3b */ jal isStageDifficultyUnlocked /* f10685c: 00002825 */ or $a1,$zero,$zero /* f106860: 50400004 */ beqzl $v0,.L0f106874 /* f106864: 00001025 */ or $v0,$zero,$zero @@ -4912,7 +4941,7 @@ glabel menuhandlerMainMenuCooperative /* f106920: 35f90080 */ ori $t9,$t7,0x80 /* f106924: a0590003 */ sb $t9,0x3($v0) /* f106928: 332800bf */ andi $t0,$t9,0xbf -/* f10692c: 0fc3cbd3 */ jal func0f0f2f4c +/* f10692c: 0fc3cbd3 */ jal menuPushDialog /* f106930: a0480003 */ sb $t0,0x3($v0) .L0f106934: /* f106934: 8fbf0014 */ lw $ra,0x14($sp) @@ -4948,7 +4977,7 @@ glabel menuhandlerMainMenuCounterOperative /* f106998: 31e8ff7f */ andi $t0,$t7,0xff7f /* f10699c: a0480003 */ sb $t0,0x3($v0) /* f1069a0: 35090040 */ ori $t1,$t0,0x40 -/* f1069a4: 0fc3cbd3 */ jal func0f0f2f4c +/* f1069a4: 0fc3cbd3 */ jal menuPushDialog /* f1069a8: a0490003 */ sb $t1,0x3($v0) .L0f1069ac: /* f1069ac: 00001025 */ or $v0,$zero,$zero diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index 373b83182..3d53d52fa 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -829,7 +829,7 @@ glabel func0f10865c /* f108694: 002f0821 */ addu $at,$at,$t7 /* f108698: 3c048007 */ lui $a0,%hi(menudialog_1a410) /* f10869c: a425ee34 */ sh $a1,-0x11cc($at) -/* f1086a0: 0fc3cbd3 */ jal func0f0f2f4c +/* f1086a0: 0fc3cbd3 */ jal menuPushDialog /* f1086a4: 248443f0 */ addiu $a0,$a0,%lo(menudialog_1a410) /* f1086a8: 8fbf0014 */ lw $ra,0x14($sp) /* f1086ac: 27bd0018 */ addiu $sp,$sp,0x18 @@ -1384,7 +1384,7 @@ glabel func0f108d8c /* f108e34: 5445fffb */ bnel $v0,$a1,.L0f108e24 /* f108e38: 8c430000 */ lw $v1,0x0($v0) /* f108e3c: 3c048007 */ lui $a0,%hi(menudialog_savelost) -/* f108e40: 0fc3cbd3 */ jal func0f0f2f4c +/* f108e40: 0fc3cbd3 */ jal menuPushDialog /* f108e44: 24844564 */ addiu $a0,$a0,%lo(menudialog_savelost) /* f108e48: 8fbf0014 */ lw $ra,0x14($sp) /* f108e4c: 27bd0018 */ addiu $sp,$sp,0x18 @@ -1837,7 +1837,7 @@ glabel func0f1091e0 /* f109498: 14c0000b */ bnez $a2,.L0f1094c8 /* f10949c: 3c048007 */ lui $a0,%hi(menudialog_filesaved) /* f1094a0: 2484446c */ addiu $a0,$a0,%lo(menudialog_filesaved) -/* f1094a4: 0fc3cbd3 */ jal func0f0f2f4c +/* f1094a4: 0fc3cbd3 */ jal menuPushDialog /* f1094a8: afa60044 */ sw $a2,0x44($sp) /* f1094ac: 10000006 */ beqz $zero,.L0f1094c8 /* f1094b0: 8fa60044 */ lw $a2,0x44($sp) @@ -1918,7 +1918,7 @@ glabel func0f1094e4 /* f1095c0: 3c048007 */ lui $a0,%hi(menudialog_1a654) /* f1095c4: 24844634 */ addiu $a0,$a0,%lo(menudialog_1a654) /* f1095c8: 35f80001 */ ori $t8,$t7,0x1 -/* f1095cc: 0fc3cbd3 */ jal func0f0f2f4c +/* f1095cc: 0fc3cbd3 */ jal menuPushDialog /* f1095d0: a4580e50 */ sh $t8,0xe50($v0) /* f1095d4: 1000002e */ beqz $zero,.L0f109690 /* f1095d8: 00001025 */ or $v0,$zero,$zero @@ -1959,7 +1959,7 @@ glabel func0f1094e4 /* f109660: 29c10064 */ slti $at,$t6,0x64 /* f109664: 10200005 */ beqz $at,.L0f10967c /* f109668: 00000000 */ sll $zero,$zero,0x0 -/* f10966c: 0fc3cbd3 */ jal func0f0f2f4c +/* f10966c: 0fc3cbd3 */ jal menuPushDialog /* f109670: 248444fc */ addiu $a0,$a0,%lo(menudialog_saveerror) /* f109674: 10000006 */ beqz $zero,.L0f109690 /* f109678: 00001025 */ or $v0,$zero,$zero @@ -2594,7 +2594,7 @@ glabel func0f109ec4 /* f109f2c: 00402025 */ or $a0,$v0,$zero /* f109f30: 14400005 */ bnez $v0,.L0f109f48 /* f109f34: 3c048007 */ lui $a0,%hi(menudialog_duplicatefilename) -/* f109f38: 0fc3cbd3 */ jal func0f0f2f4c +/* f109f38: 0fc3cbd3 */ jal menuPushDialog /* f109f3c: 24844758 */ addiu $a0,$a0,%lo(menudialog_duplicatefilename) /* f109f40: 10000058 */ beqz $zero,.L0f10a0a4 /* f109f44: 8fbf0014 */ lw $ra,0x14($sp) @@ -2744,7 +2744,7 @@ glabel menuhandler0010a120 /* f10a138: 0fc3cdb7 */ jal func0f0f36dc /* f10a13c: 00000000 */ sll $zero,$zero,0x0 /* f10a140: 3c048007 */ lui $a0,%hi(menudialog_changefilename) -/* f10a144: 0fc3cbd3 */ jal func0f0f2f4c +/* f10a144: 0fc3cbd3 */ jal menuPushDialog /* f10a148: 248446a0 */ addiu $a0,$a0,%lo(menudialog_changefilename) .L0f10a14c: /* f10a14c: 8fbf0014 */ lw $ra,0x14($sp) @@ -3072,7 +3072,7 @@ glabel func0f10a51c /* f10a588: 0fc4436a */ jal func0f110da8 /* f10a58c: a022ee3f */ sb $v0,-0x11c1($at) /* f10a590: 3c048007 */ lui $a0,%hi(menudialog_selectlocation) -/* f10a594: 0fc3cbd3 */ jal func0f0f2f4c +/* f10a594: 0fc3cbd3 */ jal menuPushDialog /* f10a598: 24844858 */ addiu $a0,$a0,%lo(menudialog_selectlocation) /* f10a59c: 8fbf0014 */ lw $ra,0x14($sp) /* f10a5a0: 27bd0018 */ addiu $sp,$sp,0x18 @@ -3690,7 +3690,7 @@ glabel menucustomFileToDelete /* f10ae74: 0fc420f4 */ jal func0f1083d0 /* f10ae78: 91c5030b */ lbu $a1,0x30b($t6) /* f10ae7c: 3c048007 */ lui $a0,%hi(menudialog_1a984) -/* f10ae80: 0fc3cbd3 */ jal func0f0f2f4c +/* f10ae80: 0fc3cbd3 */ jal menuPushDialog /* f10ae84: 24844964 */ addiu $a0,$a0,%lo(menudialog_1a984) /* f10ae88: 10000018 */ beqz $zero,.L0f10aeec /* f10ae8c: 8fa40020 */ lw $a0,0x20($sp) @@ -3715,7 +3715,7 @@ glabel menucustomFileToDelete /* f10aed4: 248448e8 */ addiu $a0,$a0,%lo(menudialog_confirmdelete) /* f10aed8: ac4e0000 */ sw $t6,0x0($v0) /* f10aedc: 94cf0004 */ lhu $t7,0x4($a2) -/* f10aee0: 0fc3cbd3 */ jal func0f0f2f4c +/* f10aee0: 0fc3cbd3 */ jal menuPushDialog /* f10aee4: a44f0004 */ sh $t7,0x4($v0) .L0f10aee8: /* f10aee8: 8fa40020 */ lw $a0,0x20($sp) @@ -3885,7 +3885,7 @@ glabel func0f10b0c4 /* f10b12c: 254b0001 */ addiu $t3,$t2,0x1 /* f10b130: ac4b0e1c */ sw $t3,0xe1c($v0) .L0f10b134: -/* f10b134: 0fc3cbd3 */ jal func0f0f2f4c +/* f10b134: 0fc3cbd3 */ jal menuPushDialog /* f10b138: 248449cc */ addiu $a0,$a0,%lo(menudialog_deletefile) /* f10b13c: 8fbf0014 */ lw $ra,0x14($sp) /* f10b140: 27bd0018 */ addiu $sp,$sp,0x18 @@ -4225,7 +4225,7 @@ glabel menucustomDeleteGameNote /* f10b648: 01cd7023 */ subu $t6,$t6,$t5 /* f10b64c: 000e7100 */ sll $t6,$t6,0x4 /* f10b650: 002e0821 */ addu $at,$at,$t6 -/* f10b654: 0fc3cbd3 */ jal func0f0f2f4c +/* f10b654: 0fc3cbd3 */ jal menuPushDialog /* f10b658: ac22ee28 */ sw $v0,-0x11d8($at) .L0f10b65c: /* f10b65c: 00001025 */ or $v0,$zero,$zero @@ -4500,7 +4500,7 @@ glabel menuhandler0010b974 /* f10b9e8: 00280821 */ addu $at,$at,$t0 /* f10b9ec: 3c048007 */ lui $a0,%hi(menudialog_gamenotes) /* f10b9f0: 24844b58 */ addiu $a0,$a0,%lo(menudialog_gamenotes) -/* f10b9f4: 0fc3cbd3 */ jal func0f0f2f4c +/* f10b9f4: 0fc3cbd3 */ jal menuPushDialog /* f10b9f8: ac38ee20 */ sw $t8,-0x11e0($at) .L0f10b9fc: /* f10b9fc: 00001025 */ or $v0,$zero,$zero @@ -4637,7 +4637,7 @@ glabel menuhandlerOpenCopyFile /* f10bbc4: 3c048007 */ lui $a0,%hi(menudialog_copyfile) /* f10bbc8: a0400e3f */ sb $zero,0xe3f($v0) /* f10bbcc: ac400e28 */ sw $zero,0xe28($v0) -/* f10bbd0: 0fc3cbd3 */ jal func0f0f2f4c +/* f10bbd0: 0fc3cbd3 */ jal menuPushDialog /* f10bbd4: 24844a34 */ addiu $a0,$a0,%lo(menudialog_copyfile) .L0f10bbd8: /* f10bbd8: 8fbf0014 */ lw $ra,0x14($sp) @@ -5402,7 +5402,7 @@ glabel menucustomChooseAgent /* f10c714: 0fc43da6 */ jal func0f10f698 /* f10c718: 24842200 */ addiu $a0,$a0,0x2200 /* f10c71c: 3c048007 */ lui $a0,%hi(menudialog_enteragentname) -/* f10c720: 0fc3cbd3 */ jal func0f0f2f4c +/* f10c720: 0fc3cbd3 */ jal menuPushDialog /* f10c724: 24844d80 */ addiu $a0,$a0,%lo(menudialog_enteragentname) /* f10c728: 10000031 */ beqz $zero,.L0f10c7f0 /* f10c72c: 00001025 */ or $v0,$zero,$zero diff --git a/src/game/game_10ccd0.c b/src/game/game_10ccd0.c index ac5f46e09..935c3beca 100644 --- a/src/game/game_10ccd0.c +++ b/src/game/game_10ccd0.c @@ -1077,7 +1077,7 @@ glabel func0f10d910 /* f10da44: 90440002 */ lbu $a0,0x2($v0) /* f10da48: 0005c642 */ srl $t8,$a1,0x19 /* f10da4c: 03002825 */ or $a1,$t8,$zero -/* f10da50: 0fc40e3b */ jal func0f1038ec +/* f10da50: 0fc40e3b */ jal isStageDifficultyUnlocked /* f10da54: 24840001 */ addiu $a0,$a0,0x1 /* f10da58: 14400007 */ bnez $v0,.L0f10da78 /* f10da5c: 00000000 */ sll $zero,$zero,0x0 @@ -1182,7 +1182,7 @@ glabel func0f10d910 /* f10dbd0: 10000052 */ beqz $zero,.L0f10dd1c /* f10dbd4: 8fbf0014 */ lw $ra,0x14($sp) .L0f10dbd8: -/* f10dbd8: 0fc3cbd3 */ jal func0f0f2f4c +/* f10dbd8: 0fc3cbd3 */ jal menuPushDialog /* f10dbdc: 24845784 */ addiu $a0,$a0,%lo(menudialog_1b7a4) /* f10dbe0: 1000004e */ beqz $zero,.L0f10dd1c /* f10dbe4: 8fbf0014 */ lw $ra,0x14($sp) @@ -1201,7 +1201,7 @@ glabel func0f10d910 /* f10dc10: 00054e42 */ srl $t1,$a1,0x19 /* f10dc14: 01202825 */ or $a1,$t1,$zero /* f10dc18: afa70018 */ sw $a3,0x18($sp) -/* f10dc1c: 0fc40e3b */ jal func0f1038ec +/* f10dc1c: 0fc40e3b */ jal isStageDifficultyUnlocked /* f10dc20: 24840001 */ addiu $a0,$a0,0x1 /* f10dc24: 1440000e */ bnez $v0,.L0f10dc60 /* f10dc28: 8fa70018 */ lw $a3,0x18($sp) @@ -1215,7 +1215,7 @@ glabel func0f10d910 /* f10dc48: 10000034 */ beqz $zero,.L0f10dd1c /* f10dc4c: 8fbf0014 */ lw $ra,0x14($sp) .L0f10dc50: -/* f10dc50: 0fc3cbd3 */ jal func0f0f2f4c +/* f10dc50: 0fc3cbd3 */ jal menuPushDialog /* f10dc54: 24845784 */ addiu $a0,$a0,%lo(menudialog_1b7a4) /* f10dc58: 10000030 */ beqz $zero,.L0f10dd1c /* f10dc5c: 8fbf0014 */ lw $ra,0x14($sp) @@ -1248,7 +1248,7 @@ glabel func0f10d910 /* f10dcbc: 10000017 */ beqz $zero,.L0f10dd1c /* f10dcc0: 8fbf0014 */ lw $ra,0x14($sp) .L0f10dcc4: -/* f10dcc4: 0fc3cbd3 */ jal func0f0f2f4c +/* f10dcc4: 0fc3cbd3 */ jal menuPushDialog /* f10dcc8: 24845784 */ addiu $a0,$a0,%lo(menudialog_1b7a4) /* f10dccc: 10000013 */ beqz $zero,.L0f10dd1c /* f10dcd0: 8fbf0014 */ lw $ra,0x14($sp) @@ -1269,7 +1269,7 @@ glabel func0f10d910 .L0f10dd08: /* f10dd08: 0fc435cc */ jal func0f10d730 /* f10dd0c: 00000000 */ sll $zero,$zero,0x0 -/* f10dd10: 0fc3cbd3 */ jal func0f0f2f4c +/* f10dd10: 0fc3cbd3 */ jal menuPushDialog /* f10dd14: 00402025 */ or $a0,$v0,$zero .L0f10dd18: /* f10dd18: 8fbf0014 */ lw $ra,0x14($sp) @@ -1502,7 +1502,7 @@ glabel menudialog0010de58 /* f10e02c: 0fc435dc */ jal func0f10d770 /* f10e030: afa6001c */ sw $a2,0x1c($sp) /* f10e034: 3c048007 */ lui $a0,%hi(menudialog_1b5c0) -/* f10e038: 0fc3cbd3 */ jal func0f0f2f4c +/* f10e038: 0fc3cbd3 */ jal menuPushDialog /* f10e03c: 248455a0 */ addiu $a0,$a0,%lo(menudialog_1b5c0) /* f10e040: 8fa6001c */ lw $a2,0x1c($sp) .L0f10e044: diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index 425caec21..323abcd30 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -3000,7 +3000,7 @@ glabel func0f178ef0 /* f179030: 34684000 */ ori $t0,$v1,0x4000 /* f179034: 17200003 */ bnez $t9,.L0f179044 /* f179038: 24844b14 */ addiu $a0,$a0,%lo(menudialog_2ab34) -/* f17903c: 0fc3cbd3 */ jal func0f0f2f4c +/* f17903c: 0fc3cbd3 */ jal menuPushDialog /* f179040: a4480048 */ sh $t0,0x48($v0) .L0f179044: /* f179044: 8fbf0014 */ lw $ra,0x14($sp) @@ -3863,7 +3863,7 @@ glabel menuhandler00179b18 /* f179b30: 0fc3cdb7 */ jal func0f0f36dc /* f179b34: 00000000 */ sll $zero,$zero,0x0 /* f179b38: 3c048008 */ lui $a0,%hi(menudialog_mpsavesetupname) -/* f179b3c: 0fc3cbd3 */ jal func0f0f2f4c +/* f179b3c: 0fc3cbd3 */ jal menuPushDialog /* f179b40: 24844cdc */ addiu $a0,$a0,%lo(menudialog_mpsavesetupname) .L0f179b44: /* f179b44: 8fbf0014 */ lw $ra,0x14($sp) @@ -7729,7 +7729,7 @@ glabel menuhandlerMpChangeSimulantType /* f17d128: 000c6100 */ sll $t4,$t4,0x4 /* f17d12c: 002c0821 */ addu $at,$at,$t4 /* f17d130: ac31ee20 */ sw $s1,-0x11e0($at) -/* f17d134: 0fc3cbd3 */ jal func0f0f2f4c +/* f17d134: 0fc3cbd3 */ jal menuPushDialog /* f17d138: 24845834 */ addiu $a0,$a0,%lo(menudialog_mpchangesimulant) .L0f17d13c: /* f17d13c: 8fbf0024 */ lw $ra,0x24($sp) @@ -7797,7 +7797,7 @@ glabel menuhandlerMpAddSimulant /* f17d208: 00380821 */ addu $at,$at,$t8 /* f17d20c: 3c048008 */ lui $a0,%hi(menudialog_mpaddsimulant) /* f17d210: ac2eee1c */ sw $t6,-0x11e4($at) -/* f17d214: 0fc3cbd3 */ jal func0f0f2f4c +/* f17d214: 0fc3cbd3 */ jal menuPushDialog /* f17d218: 2484581c */ addiu $a0,$a0,%lo(menudialog_mpaddsimulant) /* f17d21c: 10000008 */ beqz $zero,.L0f17d240 /* f17d220: 00001025 */ or $v0,$zero,$zero @@ -7854,7 +7854,7 @@ glabel menuhandlerMpSimulantSlot /* f17d2d0: 15800006 */ bnez $t4,.L0f17d2ec /* f17d2d4: 3c0d8009 */ lui $t5,0x8009 /* f17d2d8: 3c048008 */ lui $a0,%hi(menudialog_mpaddsimulant) -/* f17d2dc: 0fc3cbd3 */ jal func0f0f2f4c +/* f17d2dc: 0fc3cbd3 */ jal menuPushDialog /* f17d2e0: 2484581c */ addiu $a0,$a0,%lo(menudialog_mpaddsimulant) /* f17d2e4: 10000020 */ beqz $zero,.L0f17d368 /* f17d2e8: 00001025 */ or $v0,$zero,$zero @@ -7865,12 +7865,12 @@ glabel menuhandlerMpSimulantSlot /* f17d2f8: 15a10006 */ bne $t5,$at,.L0f17d314 /* f17d2fc: 00000000 */ sll $zero,$zero,0x0 /* f17d300: 3c048007 */ lui $a0,%hi(menudialog_1b414) -/* f17d304: 0fc3cbd3 */ jal func0f0f2f4c +/* f17d304: 0fc3cbd3 */ jal menuPushDialog /* f17d308: 248453f4 */ addiu $a0,$a0,%lo(menudialog_1b414) /* f17d30c: 10000016 */ beqz $zero,.L0f17d368 /* f17d310: 00001025 */ or $v0,$zero,$zero .L0f17d314: -/* f17d314: 0fc3cbd3 */ jal func0f0f2f4c +/* f17d314: 0fc3cbd3 */ jal menuPushDialog /* f17d318: 2484592c */ addiu $a0,$a0,%lo(menudialog_mpeditsimulant) /* f17d31c: 10000012 */ beqz $zero,.L0f17d368 /* f17d320: 00001025 */ or $v0,$zero,$zero @@ -9069,7 +9069,7 @@ glabel menuhandlerMpTeamNameSlot /* f17e2f0: 3c048008 */ lui $a0,%hi(menudialog_mpchangeteamname) /* f17e2f4: 25cfa9f8 */ addiu $t7,$t6,-22024 /* f17e2f8: ac2fee1c */ sw $t7,-0x11e4($at) -/* f17e2fc: 0fc3cbd3 */ jal func0f0f2f4c +/* f17e2fc: 0fc3cbd3 */ jal menuPushDialog /* f17e300: 24845e18 */ addiu $a0,$a0,%lo(menudialog_mpchangeteamname) .L0f17e304: /* f17e304: 8fbf0014 */ lw $ra,0x14($sp) @@ -9263,7 +9263,7 @@ glabel menuhandler0017e4d4 /* f17e59c: 3c048008 */ lui $a0,%hi(menudialog_2bfa8) /* f17e5a0: 15c00005 */ bnez $t6,.L0f17e5b8 /* f17e5a4: 00000000 */ sll $zero,$zero,0x0 -/* f17e5a8: 0fc3cbd3 */ jal func0f0f2f4c +/* f17e5a8: 0fc3cbd3 */ jal menuPushDialog /* f17e5ac: 24845f88 */ addiu $a0,$a0,%lo(menudialog_2bfa8) /* f17e5b0: 100000fe */ beqz $zero,.L0f17e9ac /* f17e5b4: 00001025 */ or $v0,$zero,$zero @@ -9274,12 +9274,12 @@ glabel menuhandler0017e4d4 /* f17e5c4: 15e10006 */ bne $t7,$at,.L0f17e5e0 /* f17e5c8: 00000000 */ sll $zero,$zero,0x0 /* f17e5cc: 3c048007 */ lui $a0,%hi(menudialog_1b1bc) -/* f17e5d0: 0fc3cbd3 */ jal func0f0f2f4c +/* f17e5d0: 0fc3cbd3 */ jal menuPushDialog /* f17e5d4: 2484519c */ addiu $a0,$a0,%lo(menudialog_1b1bc) /* f17e5d8: 100000f4 */ beqz $zero,.L0f17e9ac /* f17e5dc: 00001025 */ or $v0,$zero,$zero .L0f17e5e0: -/* f17e5e0: 0fc3cbd3 */ jal func0f0f2f4c +/* f17e5e0: 0fc3cbd3 */ jal menuPushDialog /* f17e5e4: 248460ac */ addiu $a0,$a0,%lo(menudialog_2c0cc) /* f17e5e8: 100000f0 */ beqz $zero,.L0f17e9ac /* f17e5ec: 00001025 */ or $v0,$zero,$zero @@ -9614,7 +9614,7 @@ glabel menuhandlerMpStartChallenge .L0f17eaa4: /* f17eaa4: 14810003 */ bne $a0,$at,.L0f17eab4 /* f17eaa8: 3c048008 */ lui $a0,%hi(menudialog_mpready) -/* f17eaac: 0fc3cbd3 */ jal func0f0f2f4c +/* f17eaac: 0fc3cbd3 */ jal menuPushDialog /* f17eab0: 248457b8 */ addiu $a0,$a0,%lo(menudialog_mpready) .L0f17eab4: /* f17eab4: 00001025 */ or $v0,$zero,$zero @@ -9915,7 +9915,7 @@ glabel menuhandler0017ee60 /* f17eeb0: 10000004 */ beqz $zero,.L0f17eec4 /* f17eeb4: 8fbf0014 */ lw $ra,0x14($sp) .L0f17eeb8: -/* f17eeb8: 0fc3cbd3 */ jal func0f0f2f4c +/* f17eeb8: 0fc3cbd3 */ jal menuPushDialog /* f17eebc: 24844c88 */ addiu $a0,$a0,%lo(menudialog_mpsavechr) .L0f17eec0: /* f17eec0: 8fbf0014 */ lw $ra,0x14($sp) @@ -10012,7 +10012,7 @@ glabel menuhandlerMpSaveSettings /* f17efe0: 3c048008 */ lui $a0,%hi(menudialog_mpsavesetupname) /* f17efe4: 15c00005 */ bnez $t6,.L0f17effc /* f17efe8: 00000000 */ sll $zero,$zero,0x0 -/* f17efec: 0fc3cbd3 */ jal func0f0f2f4c +/* f17efec: 0fc3cbd3 */ jal menuPushDialog /* f17eff0: 24844cdc */ addiu $a0,$a0,%lo(menudialog_mpsavesetupname) /* f17eff4: 10000007 */ beqz $zero,.L0f17f014 /* f17eff8: 8fbf0014 */ lw $ra,0x14($sp) @@ -10020,7 +10020,7 @@ glabel menuhandlerMpSaveSettings /* f17effc: 0fc420c9 */ jal func0f108324 /* f17f000: 94440024 */ lhu $a0,0x24($v0) /* f17f004: 3c048008 */ lui $a0,%hi(menudialog_mpsavesetup) -/* f17f008: 0fc3cbd3 */ jal func0f0f2f4c +/* f17f008: 0fc3cbd3 */ jal menuPushDialog /* f17f00c: 24844d80 */ addiu $a0,$a0,%lo(menudialog_mpsavesetup) .L0f17f010: /* f17f010: 8fbf0014 */ lw $ra,0x14($sp) @@ -10707,7 +10707,7 @@ glabel menuhandlerMpQuickteamOption .L0f17f910: /* f17f910: a0600010 */ sb $zero,0x10($v1) .L0f17f914: -/* f17f914: 0fc3cbd3 */ jal func0f0f2f4c +/* f17f914: 0fc3cbd3 */ jal menuPushDialog /* f17f918: 24846680 */ addiu $a0,$a0,%lo(menudialog_2c6a0) .L0f17f91c: /* f17f91c: 8fbf0014 */ lw $ra,0x14($sp) @@ -16985,7 +16985,7 @@ glabel menudialog00184ec0 /* f184f88: 01ee7821 */ addu $t7,$t7,$t6 /* f184f8c: 000f78c0 */ sll $t7,$t7,0x3 /* f184f90: 008f2021 */ addu $a0,$a0,$t7 -/* f184f94: 0fc3cbd3 */ jal func0f0f2f4c +/* f184f94: 0fc3cbd3 */ jal menuPushDialog /* f184f98: 8c846f98 */ lw $a0,0x6f98($a0) .L0f184f9c: /* f184f9c: 8fbf0014 */ lw $ra,0x14($sp) @@ -17292,7 +17292,7 @@ glabel menuhandlerMpOpenOptions /* f1853a8: 01ee7821 */ addu $t7,$t7,$t6 /* f1853ac: 000f78c0 */ sll $t7,$t7,0x3 /* f1853b0: 008f2021 */ addu $a0,$a0,$t7 -/* f1853b4: 0fc3cbd3 */ jal func0f0f2f4c +/* f1853b4: 0fc3cbd3 */ jal menuPushDialog /* f1853b8: 8c846f98 */ lw $a0,0x6f98($a0) .L0f1853bc: /* f1853bc: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index 79b127b45..fd2c4f4cd 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -290,7 +290,7 @@ glabel menuhandler001a348c /* f1a354c: 0fc67570 */ jal func0f19d5c0 /* f1a3550: 00402025 */ or $a0,$v0,$zero /* f1a3554: 3c048009 */ lui $a0,%hi(menudialog_frdifficulty) -/* f1a3558: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a3558: 0fc3cbd3 */ jal menuPushDialog /* f1a355c: 24848d38 */ addiu $a0,$a0,%lo(menudialog_frdifficulty) /* f1a3560: 1000010d */ beqz $zero,.L0f1a3998 /* f1a3564: 00001025 */ or $v0,$zero,$zero @@ -298,7 +298,7 @@ glabel menuhandler001a348c /* f1a3568: 0fc67570 */ jal func0f19d5c0 /* f1a356c: 00002025 */ or $a0,$zero,$zero /* f1a3570: 3c048009 */ lui $a0,%hi(menudialog_frtraininginfo2) -/* f1a3574: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a3574: 0fc3cbd3 */ jal menuPushDialog /* f1a3578: 24848f60 */ addiu $a0,$a0,%lo(menudialog_frtraininginfo2) /* f1a357c: 10000106 */ beqz $zero,.L0f1a3998 /* f1a3580: 00001025 */ or $v0,$zero,$zero @@ -739,7 +739,7 @@ glabel menudialog001a3af4 /* f1a3bd8: 0fc67570 */ jal func0f19d5c0 /* f1a3bdc: 8cc40000 */ lw $a0,0x0($a2) /* f1a3be0: 3c048009 */ lui $a0,%hi(menudialog_frtraininginfo2) -/* f1a3be4: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a3be4: 0fc3cbd3 */ jal menuPushDialog /* f1a3be8: 24848f60 */ addiu $a0,$a0,%lo(menudialog_frtraininginfo2) /* f1a3bec: 10000006 */ beqz $zero,.L0f1a3c08 /* f1a3bf0: 00001025 */ or $v0,$zero,$zero @@ -791,7 +791,7 @@ glabel menuhandlerFrDifficulty /* f1a3c84: 0fc67570 */ jal func0f19d5c0 /* f1a3c88: 93040001 */ lbu $a0,0x1($t8) /* f1a3c8c: 3c048009 */ lui $a0,%hi(menudialog_frtraininginfo2) -/* f1a3c90: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a3c90: 0fc3cbd3 */ jal menuPushDialog /* f1a3c94: 24848f60 */ addiu $a0,$a0,%lo(menudialog_frtraininginfo2) /* f1a3c98: 10000011 */ beqz $zero,.L0f1a3ce0 /* f1a3c9c: 00001025 */ or $v0,$zero,$zero @@ -3125,13 +3125,13 @@ glabel menuhandler001a5dc0 /* f1a5eb0: 10200006 */ beqz $at,.L0f1a5ecc /* f1a5eb4: a04c0000 */ sb $t4,0x0($v0) /* f1a5eb8: 3c048009 */ lui $a0,%hi(menudialog_characterprofile) -/* f1a5ebc: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a5ebc: 0fc3cbd3 */ jal menuPushDialog /* f1a5ec0: 24849338 */ addiu $a0,$a0,%lo(menudialog_characterprofile) /* f1a5ec4: 1000001c */ beqz $zero,.L0f1a5f38 /* f1a5ec8: 00001025 */ or $v0,$zero,$zero .L0f1a5ecc: /* f1a5ecc: 3c048009 */ lui $a0,%hi(menudialog_2f3c0) -/* f1a5ed0: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a5ed0: 0fc3cbd3 */ jal menuPushDialog /* f1a5ed4: 248493a0 */ addiu $a0,$a0,%lo(menudialog_2f3c0) /* f1a5ed8: 10000017 */ beqz $zero,.L0f1a5f38 /* f1a5edc: 00001025 */ or $v0,$zero,$zero @@ -3525,7 +3525,7 @@ glabel menuhandler001a63e4 /* f1a644c: 3c018009 */ lui $at,0x8009 /* f1a6450: 3c048009 */ lui $a0,%hi(menudialog_2f49c) /* f1a6454: 2484947c */ addiu $a0,$a0,%lo(menudialog_2f49c) -/* f1a6458: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a6458: 0fc3cbd3 */ jal menuPushDialog /* f1a645c: a02f8ad8 */ sb $t7,-0x7528($at) /* f1a6460: 1000000b */ beqz $zero,.L0f1a6490 /* f1a6464: 00001025 */ or $v0,$zero,$zero @@ -3927,7 +3927,7 @@ glabel menuhandler001a6950 /* f1a69b0: 3c018009 */ lui $at,0x8009 /* f1a69b4: 3c048009 */ lui $a0,%hi(menudialog_2f68c) /* f1a69b8: 2484966c */ addiu $a0,$a0,%lo(menudialog_2f68c) -/* f1a69bc: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a69bc: 0fc3cbd3 */ jal menuPushDialog /* f1a69c0: a02f8bb4 */ sb $t7,-0x744c($at) /* f1a69c4: 1000000b */ beqz $zero,.L0f1a69f4 /* f1a69c8: 00001025 */ or $v0,$zero,$zero @@ -4269,12 +4269,12 @@ glabel menuhandler001a6d4c /* f1a6e10: 10200006 */ beqz $at,.L0f1a6e2c /* f1a6e14: 3c048009 */ lui $a0,%hi(menudialog_2f938) /* f1a6e18: 3c048009 */ lui $a0,%hi(menudialog_2f950) -/* f1a6e1c: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a6e1c: 0fc3cbd3 */ jal menuPushDialog /* f1a6e20: 24849930 */ addiu $a0,$a0,%lo(menudialog_2f950) /* f1a6e24: 1000001b */ beqz $zero,.L0f1a6e94 /* f1a6e28: 00001025 */ or $v0,$zero,$zero .L0f1a6e2c: -/* f1a6e2c: 0fc3cbd3 */ jal func0f0f2f4c +/* f1a6e2c: 0fc3cbd3 */ jal menuPushDialog /* f1a6e30: 24849918 */ addiu $a0,$a0,%lo(menudialog_2f938) /* f1a6e34: 10000017 */ beqz $zero,.L0f1a6e94 /* f1a6e38: 00001025 */ or $v0,$zero,$zero diff --git a/src/include/constants.h b/src/include/constants.h index 20d4b170e..3da92e474 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -466,6 +466,7 @@ #define MENUOP_GET 8 #define MENUOP_GETSLIDER 9 #define MENUOP_CHECKDISABLED 12 +#define MENUOP_15 15 #define MENUOP_CHECKHIDDEN 24 // Object flags - bank 0 (object struct offset 0x08) diff --git a/src/include/game/game_0f09f0.h b/src/include/game/game_0f09f0.h index 4c9028d74..602187bc0 100644 --- a/src/include/game/game_0f09f0.h +++ b/src/include/game/game_0f09f0.h @@ -33,7 +33,7 @@ u32 func0f0f29cc(void); u32 func0f0f2b2c(void); u32 func0f0f2c44(void); u32 func0f0f2cf4(void); -void func0f0f2f4c(struct menu_dialog *dialog); +void menuPushDialog(struct menu_dialog *dialog); u32 func0f0f3220(void); u32 func0f0f33bc(void); u32 func0f0f361c(void); diff --git a/src/include/game/game_102240.h b/src/include/game/game_102240.h index 97478c130..5a0871b0d 100644 --- a/src/include/game/game_102240.h +++ b/src/include/game/game_102240.h @@ -8,7 +8,7 @@ u32 func0f10229c(void); u32 func0f102330(void); u32 func0f103550(void); f32 func0f1036ac(s32 arg0, s32 arg1); -u32 func0f1038ec(void); +bool isStageDifficultyUnlocked(s32 stagenum, s32 difficulty); u32 func0f103e68(void); u32 func0f10408c(void); u32 func0f104664(void); @@ -80,7 +80,7 @@ s32 menuhandlerShowGunFunction(u32 operation, struct menu_item *item, bool *enab s32 menuhandlerShowMissionTime(u32 operation, struct menu_item *item, bool *enable); s32 menuhandlerShowZoomRange(u32 operation, struct menu_item *item, bool *enable); s32 menuhandlerSightOnScreen(u32 operation, struct menu_item *item, bool *enable); -s32 menuhandlerSoloDifficulty(u32 operation, struct menu_item *item, bool *enable); +s32 menuhandlerSoloDifficulty(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerSoundMode(u32 operation, struct menu_item *item, bool *enable); #endif diff --git a/src/include/types.h b/src/include/types.h index dfa762e9e..abf85cb04 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3984,9 +3984,8 @@ struct missionconfig { u8 difficulty : 7; u8 bits0_07 : 1; - u8 stagenum : 8; - - u8 bits2_00 : 8; + /*0x01*/ u8 stagenum; + /*0x02*/ u8 unk02; u8 iscoop : 1; u8 isanti : 1;