From 376edf64fdf85b99dde54e8873b87b7416390d0e Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 1 Jan 2020 13:37:18 +1000 Subject: [PATCH] Decompile menuhandlerAcceptPdModeSettings --- src/game/chr/chraicommands.c | 2 +- src/game/game_000090.c | 8 +- src/game/game_015470.c | 24 ++--- src/game/game_0f09f0.c | 4 +- src/game/game_102240.c | 160 +++++++++++++------------------ src/game/game_10ccd0.c | 36 +++---- src/game/game_1668e0.c | 4 +- src/gvars/gvars.c | 7 +- src/include/game/game_0f09f0.h | 2 +- src/include/game/game_102240.h | 4 +- src/include/gvars/gvars.h | 2 +- src/include/setup/setup_0160b0.h | 2 +- src/include/types.h | 11 ++- src/setup/setup_0160b0.c | 4 +- 14 files changed, 121 insertions(+), 149 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index c27bb69f1..b287e23f4 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -14466,7 +14466,7 @@ glabel ai01de // Mismatch due to different temporary registers //bool ai01de(void) //{ -// if (g_Vars.unk000318 == 0 && (s8)var8009dfe8[3] < 0) { +// if (g_Vars.unk000318 == 0 && (s8)g_MissionConfig[3] < 0) { // u8 *cmd = g_Vars.ailist + g_Vars.aioffset; // g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]); // } else { diff --git a/src/game/game_000090.c b/src/game/game_000090.c index 8958cd608..57c518e80 100644 --- a/src/game/game_000090.c +++ b/src/game/game_000090.c @@ -17,10 +17,10 @@ void func0f000090(void) var800624ec = 0; var800624f0 = 0; var800624f4 = 1; - var8009dfe8[4] = 0; - var8009dfe8[5] = 0x80; - var8009dfe8[6] = 0x80; - var8009dfe8[7] = 0x80; + g_MissionConfig.unk04 = 0; + g_MissionConfig.updmodehealth = 128; + g_MissionConfig.updmodedamage = 128; + g_MissionConfig.updmodeaccuracy = 128; } void func0f000100(void) diff --git a/src/game/game_015470.c b/src/game/game_015470.c index 19a05fb6d..7272b36e2 100644 --- a/src/game/game_015470.c +++ b/src/game/game_015470.c @@ -6565,8 +6565,8 @@ glabel func0f01b0a0 GLOBAL_ASM( glabel func0f01b0ac -/* f01b0ac: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f01b0b0: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f01b0ac: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f01b0b0: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f01b0b4: 904e0000 */ lbu $t6,0x0($v0) /* f01b0b8: 31cf0001 */ andi $t7,$t6,0x1 /* f01b0bc: 51e00004 */ beqzl $t7,.L0f01b0d0 @@ -6583,8 +6583,8 @@ glabel func0f01b0ac GLOBAL_ASM( glabel func0f01b0e0 -/* f01b0e0: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f01b0e4: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f01b0e0: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f01b0e4: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f01b0e8: 904e0000 */ lbu $t6,0x0($v0) /* f01b0ec: 31cf0001 */ andi $t7,$t6,0x1 /* f01b0f0: 51e00004 */ beqzl $t7,.L0f01b104 @@ -6601,8 +6601,8 @@ glabel func0f01b0e0 GLOBAL_ASM( glabel func0f01b114 -/* f01b114: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f01b118: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f01b114: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f01b118: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f01b11c: 904e0000 */ lbu $t6,0x0($v0) /* f01b120: 31cf0001 */ andi $t7,$t6,0x1 /* f01b124: 51e00004 */ beqzl $t7,.L0f01b138 @@ -8656,8 +8656,8 @@ glabel func0f01bf28 /* f01cd38: 0fc3f552 */ jal func0f0fd548 /* f01cd3c: 24040004 */ addiu $a0,$zero,0x4 .L0f01cd40: -/* f01cd40: 3c12800a */ lui $s2,%hi(var8009dfe8) -/* f01cd44: 2652dfe8 */ addiu $s2,$s2,%lo(var8009dfe8) +/* f01cd40: 3c12800a */ lui $s2,%hi(g_MissionConfig) +/* f01cd44: 2652dfe8 */ addiu $s2,$s2,%lo(g_MissionConfig) /* f01cd48: 00008825 */ or $s1,$zero,$zero /* f01cd4c: 24140038 */ addiu $s4,$zero,0x38 .L0f01cd50: @@ -8890,10 +8890,10 @@ glabel func0f01bf28 /* f01d088: 00000000 */ sll $zero,$zero,0x0 .L0f01d08c: /* f01d08c: 8e6e0318 */ lw $t6,0x318($s3) -/* f01d090: 3c12800a */ lui $s2,%hi(var8009dfe8) +/* f01d090: 3c12800a */ lui $s2,%hi(g_MissionConfig) /* f01d094: 3c018008 */ lui $at,0x8008 /* f01d098: 11c00004 */ beqz $t6,.L0f01d0ac -/* f01d09c: 2652dfe8 */ addiu $s2,$s2,%lo(var8009dfe8) +/* f01d09c: 2652dfe8 */ addiu $s2,$s2,%lo(g_MissionConfig) /* f01d0a0: ac227260 */ sw $v0,0x7260($at) /* f01d0a4: 10000062 */ beqz $zero,.L0f01d230 /* f01d0a8: 8e630298 */ lw $v1,0x298($s3) @@ -9095,8 +9095,8 @@ glabel func0f01bf28 /* f01d378: 24040005 */ addiu $a0,$zero,0x5 /* f01d37c: 0c003a57 */ jal func0000e95c /* f01d380: 24040026 */ addiu $a0,$zero,0x26 -/* f01d384: 3c12800a */ lui $s2,%hi(var8009dfe8) -/* f01d388: 2652dfe8 */ addiu $s2,$s2,%lo(var8009dfe8) +/* f01d384: 3c12800a */ lui $s2,%hi(g_MissionConfig) +/* f01d388: 2652dfe8 */ addiu $s2,$s2,%lo(g_MissionConfig) /* f01d38c: 92590003 */ lbu $t9,0x3($s2) /* f01d390: 332fff7f */ andi $t7,$t9,0xff7f /* f01d394: a24f0003 */ sb $t7,0x3($s2) diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index b24cf20f3..6f6e1b824 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -9774,8 +9774,8 @@ glabel func0f0f8c98 /* f0f8df0: 24010026 */ addiu $at,$zero,0x26 /* f0f8df4: 1481000b */ bne $a0,$at,.L0f0f8e24 /* f0f8df8: ae200020 */ sw $zero,0x20($s1) -/* f0f8dfc: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f0f8e00: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f0f8dfc: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f0f8e00: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f0f8e04: 90490003 */ lbu $t1,0x3($v0) /* f0f8e08: 904d0000 */ lbu $t5,0x0($v0) /* f0f8e0c: 312bff7f */ andi $t3,$t1,0xff7f diff --git a/src/game/game_102240.c b/src/game/game_102240.c index ccf2364c9..67087b731 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -160,8 +160,8 @@ glabel func0f102240 GLOBAL_ASM( glabel func0f10229c -/* f10229c: 3c03800a */ lui $v1,%hi(var8009dfe8) -/* f1022a0: 2463dfe8 */ addiu $v1,$v1,%lo(var8009dfe8) +/* f10229c: 3c03800a */ lui $v1,%hi(g_MissionConfig) +/* f1022a0: 2463dfe8 */ addiu $v1,$v1,%lo(g_MissionConfig) /* f1022a4: 906e0000 */ lbu $t6,0x0($v1) /* f1022a8: 27bdffe8 */ addiu $sp,$sp,-24 /* f1022ac: afbf0014 */ sw $ra,0x14($sp) @@ -1109,8 +1109,8 @@ glabel menuhandlerAcceptMission .START: /* f10343c: 0fc06c55 */ jal func0f01b154 /* f103440: 00000000 */ sll $zero,$zero,0x0 -/* f103444: 3c06800a */ lui $a2,%hi(var8009dfe8) -/* f103448: 24c6dfe8 */ addiu $a2,$a2,%lo(var8009dfe8) +/* f103444: 3c06800a */ lui $a2,%hi(g_MissionConfig) +/* f103448: 24c6dfe8 */ addiu $a2,$a2,%lo(g_MissionConfig) /* f10344c: 80d80003 */ lb $t8,0x3($a2) /* f103450: 3c02800a */ lui $v0,%hi(g_Vars) /* f103454: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) @@ -1195,13 +1195,13 @@ glabel menuhandlerAcceptMission // if (operation == MENUOP_SET) { // func0f01bea0(); // -// if (g_Vars.stagenum == var8009dfe8.stagenum) { +// if (g_Vars.stagenum == g_MissionConfig.stagenum) { // g_Vars.isreplayingmission = true; // } // -// func0f01b154(var8009dfe8.stagenum); +// func0f01b154(g_MissionConfig.stagenum); // -// if (var8009dfe8.iscoop) { +// if (g_MissionConfig.iscoop) { // if (g_Vars.numaibuddies == 0) { // // Coop with human buddy // g_Vars.bondplayernum = 0; @@ -1215,7 +1215,7 @@ glabel menuhandlerAcceptMission // g_Vars.antiplayernum = -1; // setNumPlayers(1); // } -// } else if (var8009dfe8.isanti) { +// } else if (g_MissionConfig.isanti) { // if (g_Vars.pendingantiplayernum == 1) { // g_Vars.bondplayernum = 0; // g_Vars.antiplayernum = 1; @@ -1234,9 +1234,9 @@ glabel menuhandlerAcceptMission // setNumPlayers(1); // } // -// setDifficulty(var8009dfe8.difficulty); +// setDifficulty(g_MissionConfig.difficulty); // func0f01a7e4(5); -// func0000e95c(var8009dfe8.stagenum); +// func0000e95c(g_MissionConfig.stagenum); // func00009ec4(1); // } // @@ -1465,54 +1465,22 @@ glabel menuhandlerPdModeSetting /* f103838: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel menuhandler0010383c -/* f10383c: 27bdffe0 */ addiu $sp,$sp,-32 -/* f103840: 24010006 */ addiu $at,$zero,0x6 -/* f103844: afbf001c */ sw $ra,0x1c($sp) -/* f103848: afb00018 */ sw $s0,0x18($sp) -/* f10384c: afa50024 */ sw $a1,0x24($sp) -/* f103850: 14810021 */ bne $a0,$at,.L0f1038d8 -/* f103854: afa60028 */ sw $a2,0x28($sp) -/* f103858: 3c10800a */ lui $s0,%hi(var8009dfe8) -/* f10385c: 2610dfe8 */ addiu $s0,$s0,%lo(var8009dfe8) -/* f103860: 920f0000 */ lbu $t7,0x0($s0) -/* f103864: 92040005 */ lbu $a0,0x5($s0) -/* f103868: 24050001 */ addiu $a1,$zero,0x1 -/* f10386c: 35f80001 */ ori $t8,$t7,0x1 -/* f103870: 0fc40dab */ jal func0f1036ac -/* f103874: a2180000 */ sb $t8,0x0($s0) -/* f103878: e600000c */ swc1 $f0,0xc($s0) -/* f10387c: 92040006 */ lbu $a0,0x6($s0) -/* f103880: 0fc40dab */ jal func0f1036ac -/* f103884: 24050002 */ addiu $a1,$zero,0x2 -/* f103888: e6000010 */ swc1 $f0,0x10($s0) -/* f10388c: 92040007 */ lbu $a0,0x7($s0) -/* f103890: 0fc40dab */ jal func0f1036ac -/* f103894: 24050003 */ addiu $a1,$zero,0x3 -/* f103898: 92190000 */ lbu $t9,0x0($s0) -/* f10389c: e6000014 */ swc1 $f0,0x14($s0) -/* f1038a0: 3328ff01 */ andi $t0,$t9,0xff01 -/* f1038a4: 35090004 */ ori $t1,$t0,0x4 -/* f1038a8: a2090000 */ sb $t1,0x0($s0) -/* f1038ac: 8e040000 */ lw $a0,0x0($s0) -/* f1038b0: 00045642 */ srl $t2,$a0,0x19 -/* f1038b4: 0fc5b36a */ jal setDifficulty -/* f1038b8: 01402025 */ or $a0,$t2,$zero -/* f1038bc: 0fc3cdb7 */ jal func0f0f36dc -/* f1038c0: 00000000 */ sll $zero,$zero,0x0 -/* f1038c4: 0fc3cdb7 */ jal func0f0f36dc -/* f1038c8: 00000000 */ sll $zero,$zero,0x0 -/* f1038cc: 3c048007 */ lui $a0,%hi(menudialog_objectives) -/* f1038d0: 0fc3cbd3 */ jal func0f0f2f4c -/* f1038d4: 24841a90 */ addiu $a0,$a0,%lo(menudialog_objectives) -.L0f1038d8: -/* f1038d8: 8fbf001c */ lw $ra,0x1c($sp) -/* f1038dc: 8fb00018 */ lw $s0,0x18($sp) -/* f1038e0: 27bd0020 */ addiu $sp,$sp,0x20 -/* f1038e4: 03e00008 */ jr $ra -/* f1038e8: 00001025 */ or $v0,$zero,$zero -); +s32 menuhandlerAcceptPdModeSettings(s32 operation, struct menu_item *item, bool *value) +{ + if (operation == MENUOP_SET) { + g_MissionConfig.bits0_07 = 1; + g_MissionConfig.fpdmodehealth = func0f1036ac(g_MissionConfig.updmodehealth, 1); + g_MissionConfig.fpdmodedamage = func0f1036ac(g_MissionConfig.updmodedamage, 2); + g_MissionConfig.fpdmodeaccuracy = func0f1036ac(g_MissionConfig.updmodeaccuracy, 3); + g_MissionConfig.difficulty = DIFF_PA; + setDifficulty(g_MissionConfig.difficulty); + func0f0f36dc(); + func0f0f36dc(); + func0f0f2f4c(&g_ObjectivesMenuDialog); + } + + return 0; +} GLOBAL_ASM( glabel func0f1038ec @@ -1588,8 +1556,8 @@ glabel func0f1038ec /* f1039e0: 27182200 */ addiu $t8,$t8,0x2200 /* f1039e4: 01ae7821 */ addu $t7,$t5,$t6 /* f1039e8: 3c0a800a */ lui $t2,0x800a -/* f1039ec: 3c09800a */ lui $t1,%hi(var8009dfe8) -/* f1039f0: 2529dfe8 */ addiu $t1,$t1,%lo(var8009dfe8) +/* f1039ec: 3c09800a */ lui $t1,%hi(g_MissionConfig) +/* f1039f0: 2529dfe8 */ addiu $t1,$t1,%lo(g_MissionConfig) /* f1039f4: 254a2200 */ addiu $t2,$t2,0x2200 /* f1039f8: 01f81021 */ addu $v0,$t7,$t8 /* f1039fc: 240b0003 */ addiu $t3,$zero,0x3 @@ -1622,10 +1590,10 @@ glabel func0f1038ec /* f103a58: 146bffe9 */ bne $v1,$t3,.L0f103a00 /* f103a5c: 24420002 */ addiu $v0,$v0,0x2 .L0f103a60: -/* f103a60: 3c09800a */ lui $t1,%hi(var8009dfe8) +/* f103a60: 3c09800a */ lui $t1,%hi(g_MissionConfig) /* f103a64: 3c0a800a */ lui $t2,0x800a /* f103a68: 254a2200 */ addiu $t2,$t2,0x2200 -/* f103a6c: 2529dfe8 */ addiu $t1,$t1,%lo(var8009dfe8) +/* f103a6c: 2529dfe8 */ addiu $t1,$t1,%lo(g_MissionConfig) /* f103a70: 18800052 */ blez $a0,.L0f103bbc /* f103a74: 240b0003 */ addiu $t3,$zero,0x3 /* f103a78: 2401002a */ addiu $at,$zero,0x2a @@ -1825,11 +1793,11 @@ glabel menuhandlerSoloDifficulty /* f103d08: afa5001c */ sw $a1,0x1c($sp) /* f103d0c: 2401000c */ addiu $at,$zero,0xc /* f103d10: 1081002e */ beq $a0,$at,.L0f103dcc -/* f103d14: 3c02800a */ lui $v0,%hi(var8009dfe8) +/* f103d14: 3c02800a */ lui $v0,%hi(g_MissionConfig) /* f103d18: 2401000f */ addiu $at,$zero,0xf /* f103d1c: 14810033 */ bne $a0,$at,.L0f103dec -/* f103d20: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f103d24: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* 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 @@ -1852,8 +1820,8 @@ glabel menuhandlerSoloDifficulty /* f103d70: 1000001f */ beqz $zero,.L0f103df0 /* f103d74: 24020001 */ addiu $v0,$zero,0x1 .L0f103d78: -/* f103d78: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f103d7c: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* 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) @@ -1868,13 +1836,13 @@ glabel menuhandlerSoloDifficulty /* f103dac: 03202025 */ or $a0,$t9,$zero /* f103db0: 0fc3cdb7 */ jal func0f0f36dc /* f103db4: 00000000 */ sll $zero,$zero,0x0 -/* f103db8: 3c048007 */ lui $a0,%hi(menudialog_objectives) +/* f103db8: 3c048007 */ lui $a0,%hi(g_ObjectivesMenuDialog) /* f103dbc: 0fc3cbd3 */ jal func0f0f2f4c -/* f103dc0: 24841a90 */ addiu $a0,$a0,%lo(menudialog_objectives) +/* 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(var8009dfe8) +/* f103dcc: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f103dd0: 90440002 */ lbu $a0,0x2($v0) /* f103dd4: 0fc40e3b */ jal func0f1038ec /* f103dd8: 90c50001 */ lbu $a1,0x1($a2) @@ -2072,9 +2040,9 @@ glabel menuhandler00104038 /* f104050: afa60020 */ sw $a2,0x20($sp) /* f104054: 0fc3cdb7 */ jal func0f0f36dc /* f104058: 00000000 */ sll $zero,$zero,0x0 -/* f10405c: 3c048007 */ lui $a0,%hi(menudialog_objectives) +/* f10405c: 3c048007 */ lui $a0,%hi(g_ObjectivesMenuDialog) /* f104060: 0fc3cbd3 */ jal func0f0f2f4c -/* f104064: 24841a90 */ addiu $a0,$a0,%lo(menudialog_objectives) +/* f104064: 24841a90 */ addiu $a0,$a0,%lo(g_ObjectivesMenuDialog) .L0f104068: /* f104068: 8faf0018 */ lw $t7,0x18($sp) /* f10406c: 2401000f */ addiu $at,$zero,0xf @@ -2464,12 +2432,12 @@ glabel menuhandler00104538 /* f104550: afa5001c */ sw $a1,0x1c($sp) /* f104554: 2401000c */ addiu $at,$zero,0xc /* f104558: 10810018 */ beq $a0,$at,.L0f1045bc -/* f10455c: 3c02800a */ lui $v0,%hi(var8009dfe8) +/* f10455c: 3c02800a */ lui $v0,%hi(g_MissionConfig) /* f104560: 1000001f */ beqz $zero,.L0f1045e0 /* f104564: 00001025 */ or $v0,$zero,$zero .L0f104568: -/* f104568: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f10456c: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f104568: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f10456c: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f104570: 904e0000 */ lbu $t6,0x0($v0) /* f104574: 31cafffe */ andi $t2,$t6,0xfffe /* f104578: a04a0000 */ sb $t2,0x0($v0) @@ -2490,7 +2458,7 @@ glabel menuhandler00104538 /* f1045b4: 1000000a */ beqz $zero,.L0f1045e0 /* f1045b8: 00001025 */ or $v0,$zero,$zero .L0f1045bc: -/* f1045bc: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f1045bc: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f1045c0: 90440002 */ lbu $a0,0x2($v0) /* f1045c4: 0fc40e3b */ jal func0f1038ec /* f1045c8: 90c50001 */ lbu $a1,0x1($a2) @@ -2513,8 +2481,8 @@ glabel menuhandler001045f0 /* f1045f8: afbf0014 */ sw $ra,0x14($sp) /* f1045fc: 14810014 */ bne $a0,$at,.L0f104650 /* f104600: afa60020 */ sw $a2,0x20($sp) -/* f104604: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f104608: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f104604: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f104608: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10460c: 904e0000 */ lbu $t6,0x0($v0) /* f104610: 31cafffe */ andi $t2,$t6,0xfffe /* f104614: a04a0000 */ sb $t2,0x0($v0) @@ -2563,8 +2531,8 @@ glabel func0f104664 /* f1046a4: 2a010003 */ slti $at,$s0,0x3 /* f1046a8: 1420fff9 */ bnez $at,.L0f104690 /* f1046ac: 24420002 */ addiu $v0,$v0,0x2 -/* f1046b0: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f1046b4: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f1046b0: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f1046b4: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f1046b8: 80580003 */ lb $t8,0x3($v0) /* f1046bc: 07000007 */ bltz $t8,.L0f1046dc /* f1046c0: 00000000 */ sll $zero,$zero,0x0 @@ -2660,9 +2628,9 @@ glabel menuhandler0010476c /* f1047e8: 00000000 */ sll $zero,$zero,0x0 /* f1047ec: 3c0a800a */ lui $t2,0x800a /* f1047f0: 3c09800a */ lui $t1,0x800a -/* f1047f4: 3c08800a */ lui $t0,%hi(var8009dfe8) +/* f1047f4: 3c08800a */ lui $t0,%hi(g_MissionConfig) /* f1047f8: ae000000 */ sw $zero,0x0($s0) -/* f1047fc: 2508dfe8 */ addiu $t0,$t0,%lo(var8009dfe8) +/* f1047fc: 2508dfe8 */ addiu $t0,$t0,%lo(g_MissionConfig) /* f104800: 25292200 */ addiu $t1,$t1,0x2200 /* f104804: 254a2200 */ addiu $t2,$t2,0x2200 /* f104808: 00003025 */ or $a2,$zero,$zero @@ -2774,9 +2742,9 @@ glabel menuhandler0010476c /* f104988: 3c02800a */ lui $v0,%hi(g_Vars) /* f10498c: 00077080 */ sll $t6,$a3,0x2 /* f104990: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f104994: 3c08800a */ lui $t0,%hi(var8009dfe8) +/* f104994: 3c08800a */ lui $t0,%hi(g_MissionConfig) /* f104998: 01c77023 */ subu $t6,$t6,$a3 -/* f10499c: 2508dfe8 */ addiu $t0,$t0,%lo(var8009dfe8) +/* f10499c: 2508dfe8 */ addiu $t0,$t0,%lo(g_MissionConfig) /* f1049a0: 000e7080 */ sll $t6,$t6,0x2 /* f1049a4: 3c188007 */ lui $t8,0x8007 /* f1049a8: 810f0003 */ lb $t7,0x3($t0) @@ -2813,8 +2781,8 @@ glabel menuhandler0010476c /* f104a1c: 100002d9 */ beqz $zero,.L0f105584 /* f104a20: ae0f0000 */ sw $t7,0x0($s0) /* f104a24: 8e0e0004 */ lw $t6,0x4($s0) -/* f104a28: 3c08800a */ lui $t0,%hi(var8009dfe8) -/* f104a2c: 2508dfe8 */ addiu $t0,$t0,%lo(var8009dfe8) +/* f104a28: 3c08800a */ lui $t0,%hi(g_MissionConfig) +/* f104a2c: 2508dfe8 */ addiu $t0,$t0,%lo(g_MissionConfig) /* f104a30: 55c002d5 */ bnezl $t6,.L0f105588 /* f104a34: 00001025 */ or $v0,$zero,$zero /* f104a38: 81190003 */ lb $t9,0x3($t0) @@ -3066,8 +3034,8 @@ glabel menuhandler0010476c /* f104df0: 000fc080 */ sll $t8,$t7,0x2 /* f104df4: 030e0019 */ multu $t8,$t6 /* f104df8: 3c01e400 */ lui $at,0xe400 -/* f104dfc: 3c08800a */ lui $t0,%hi(var8009dfe8) -/* f104e00: 2508dfe8 */ addiu $t0,$t0,%lo(var8009dfe8) +/* f104dfc: 3c08800a */ lui $t0,%hi(g_MissionConfig) +/* f104e00: 2508dfe8 */ addiu $t0,$t0,%lo(g_MissionConfig) /* f104e04: 3c0b800b */ lui $t3,%hi(var800ab5a8) /* f104e08: 256bb5a8 */ addiu $t3,$t3,%lo(var800ab5a8) /* f104e0c: 0000c812 */ mflo $t9 @@ -4864,8 +4832,8 @@ glabel menuhandlerMainMenuSoloMissions /* f106810: afa40018 */ sw $a0,0x18($sp) /* f106814: 1481000d */ bne $a0,$at,.L0f10684c /* f106818: afa60020 */ sw $a2,0x20($sp) -/* f10681c: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f106820: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10681c: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f106820: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f106824: 904e0003 */ lbu $t6,0x3($v0) /* f106828: 3c048007 */ lui $a0,%hi(menudialog_missionselect) /* f10682c: 248439a8 */ addiu $a0,$a0,%lo(menudialog_missionselect) @@ -4936,8 +4904,8 @@ glabel menuhandlerMainMenuCooperative /* f106900: afa5001c */ sw $a1,0x1c($sp) /* f106904: 1481000b */ bne $a0,$at,.L0f106934 /* f106908: afa60020 */ sw $a2,0x20($sp) -/* f10690c: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f106910: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10690c: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f106910: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f106914: 904f0003 */ lbu $t7,0x3($v0) /* f106918: 3c048007 */ lui $a0,%hi(menudialog_missionselect) /* f10691c: 248439a8 */ addiu $a0,$a0,%lo(menudialog_missionselect) @@ -4972,8 +4940,8 @@ glabel menuhandlerMainMenuCounterOperative .L0f10697c: /* f10697c: 24010006 */ addiu $at,$zero,0x6 /* f106980: 1481000a */ bne $a0,$at,.L0f1069ac -/* f106984: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f106988: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f106984: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f106988: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10698c: 904f0003 */ lbu $t7,0x3($v0) /* f106990: 3c048007 */ lui $a0,%hi(menudialog_missionselect) /* f106994: 248439a8 */ addiu $a0,$a0,%lo(menudialog_missionselect) @@ -5031,8 +4999,8 @@ glabel menudialog001069c0 /* f106a44: 1040000b */ beqz $v0,.L0f106a74 /* f106a48: 00000000 */ sll $zero,$zero,0x0 /* f106a4c: 8c480000 */ lw $t0,0x0($v0) -/* f106a50: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f106a54: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f106a50: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f106a54: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f106a58: 14a80006 */ bne $a1,$t0,.L0f106a74 /* f106a5c: 00000000 */ sll $zero,$zero,0x0 /* f106a60: 90490003 */ lbu $t1,0x3($v0) diff --git a/src/game/game_10ccd0.c b/src/game/game_10ccd0.c index a68fce105..ac5f46e09 100644 --- a/src/game/game_10ccd0.c +++ b/src/game/game_10ccd0.c @@ -307,8 +307,8 @@ glabel menuhandlerReplyPreviousMission /* f10cfec: afbf0014 */ sw $ra,0x14($sp) /* f10cff0: 1481000e */ bne $a0,$at,.L0f10d02c /* f10cff4: afa5001c */ sw $a1,0x1c($sp) -/* f10cff8: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f10cffc: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10cff8: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f10cffc: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10d000: 904e0002 */ lbu $t6,0x2($v0) /* f10d004: 3c088007 */ lui $t0,0x8007 /* f10d008: 25cfffff */ addiu $t7,$t6,-1 @@ -850,8 +850,8 @@ glabel func0f10d6e4 GLOBAL_ASM( glabel func0f10d730 -/* f10d730: 3c03800a */ lui $v1,%hi(var8009dfe8) -/* f10d734: 2463dfe8 */ addiu $v1,$v1,%lo(var8009dfe8) +/* f10d730: 3c03800a */ lui $v1,%hi(g_MissionConfig) +/* f10d734: 2463dfe8 */ addiu $v1,$v1,%lo(g_MissionConfig) /* f10d738: 906e0002 */ lbu $t6,0x2($v1) /* f10d73c: 3c088007 */ lui $t0,0x8007 /* f10d740: 3c028007 */ lui $v0,%hi(menudialog_promptnextmission) @@ -946,8 +946,8 @@ glabel menuhandlerReplyLastLevel /* f10d884: afbf0014 */ sw $ra,0x14($sp) /* f10d888: 1481000f */ bne $a0,$at,.L0f10d8c8 /* f10d88c: afa5001c */ sw $a1,0x1c($sp) -/* f10d890: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f10d894: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10d890: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f10d894: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10d898: 904e0002 */ lbu $t6,0x2($v0) /* f10d89c: 3c188007 */ lui $t8,0x8007 /* f10d8a0: 00002825 */ or $a1,$zero,$zero @@ -1071,8 +1071,8 @@ glabel func0f10d910 .L0f10da30: /* f10da30: 1482004c */ bne $a0,$v0,.L0f10db64 /* f10da34: 2401002a */ addiu $at,$zero,0x2a -/* f10da38: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f10da3c: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10da38: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f10da3c: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10da40: 8c450000 */ lw $a1,0x0($v0) /* f10da44: 90440002 */ lbu $a0,0x2($v0) /* f10da48: 0005c642 */ srl $t8,$a1,0x19 @@ -1088,8 +1088,8 @@ glabel func0f10d910 /* f10da70: 100000aa */ beqz $zero,.L0f10dd1c /* f10da74: 8fbf0014 */ lw $ra,0x14($sp) .L0f10da78: -/* f10da78: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f10da7c: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10da78: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f10da7c: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10da80: 90590002 */ lbu $t9,0x2($v0) /* f10da84: 3c0b8007 */ lui $t3,0x8007 /* f10da88: 27280001 */ addiu $t0,$t9,0x1 @@ -1153,8 +1153,8 @@ glabel func0f10d910 .L0f10db64: /* f10db64: 1441006c */ bne $v0,$at,.L0f10dd18 /* f10db68: 2419005c */ addiu $t9,$zero,0x5c -/* f10db6c: 3c02800a */ lui $v0,%hi(var8009dfe8) -/* f10db70: 2442dfe8 */ addiu $v0,$v0,%lo(var8009dfe8) +/* f10db6c: 3c02800a */ lui $v0,%hi(g_MissionConfig) +/* f10db70: 2442dfe8 */ addiu $v0,$v0,%lo(g_MissionConfig) /* f10db74: a0590001 */ sb $t9,0x1($v0) /* f10db78: 0fc06c55 */ jal func0f01b154 /* f10db7c: 332400ff */ andi $a0,$t9,0xff @@ -1895,8 +1895,8 @@ glabel func0f10e588 /* f10e594: 15c00020 */ bnez $t6,.L0f10e618 /* f10e598: 00000000 */ sll $zero,$zero,0x0 /* f10e59c: 8def21d4 */ lw $t7,0x21d4($t7) -/* f10e5a0: 3c05800a */ lui $a1,%hi(var8009dfe8) -/* f10e5a4: 24a5dfe8 */ addiu $a1,$a1,%lo(var8009dfe8) +/* f10e5a0: 3c05800a */ lui $a1,%hi(g_MissionConfig) +/* f10e5a4: 24a5dfe8 */ addiu $a1,$a1,%lo(g_MissionConfig) /* f10e5a8: 15e0001b */ bnez $t7,.L0f10e618 /* f10e5ac: 3c09800a */ lui $t1,0x800a /* f10e5b0: 8cb80000 */ lw $t8,0x0($a1) @@ -1935,8 +1935,8 @@ GLOBAL_ASM( glabel func0f10e620 /* f10e620: 3c0e8007 */ lui $t6,0x8007 /* f10e624: 8dce1448 */ lw $t6,0x1448($t6) -/* f10e628: 3c07800a */ lui $a3,%hi(var8009dfe8) -/* f10e62c: 24e7dfe8 */ addiu $a3,$a3,%lo(var8009dfe8) +/* f10e628: 3c07800a */ lui $a3,%hi(g_MissionConfig) +/* f10e62c: 24e7dfe8 */ addiu $a3,$a3,%lo(g_MissionConfig) /* f10e630: 000e78c0 */ sll $t7,$t6,0x3 /* f10e634: 01ee7823 */ subu $t7,$t7,$t6 /* f10e638: 000f7880 */ sll $t7,$t7,0x2 @@ -2143,8 +2143,8 @@ glabel func0f10e620 /* f10e938: 3c01800a */ lui $at,0x800a /* f10e93c: ac2a2210 */ sw $t2,0x2210($at) .L0f10e940: -/* f10e940: 3c03800a */ lui $v1,%hi(var8009dfe8) -/* f10e944: 2463dfe8 */ addiu $v1,$v1,%lo(var8009dfe8) +/* f10e940: 3c03800a */ lui $v1,%hi(g_MissionConfig) +/* f10e944: 2463dfe8 */ addiu $v1,$v1,%lo(g_MissionConfig) /* f10e948: 3c05800a */ lui $a1,0x800a /* f10e94c: 8c6d0000 */ lw $t5,0x0($v1) /* f10e950: 24a52200 */ addiu $a1,$a1,0x2200 diff --git a/src/game/game_1668e0.c b/src/game/game_1668e0.c index 01113f7bb..64382230e 100644 --- a/src/game/game_1668e0.c +++ b/src/game/game_1668e0.c @@ -5204,8 +5204,8 @@ glabel func0f169374 /* f16af54: 3c118007 */ lui $s1,%hi(cutscenetable) /* f16af58: 01d40019 */ multu $t6,$s4 /* f16af5c: 263136d8 */ addiu $s1,$s1,%lo(cutscenetable) -/* f16af60: 3c10800a */ lui $s0,%hi(var8009dfe8) -/* f16af64: 2610dfe8 */ addiu $s0,$s0,%lo(var8009dfe8) +/* f16af60: 3c10800a */ lui $s0,%hi(g_MissionConfig) +/* f16af64: 2610dfe8 */ addiu $s0,$s0,%lo(g_MissionConfig) /* f16af68: 920c0003 */ lbu $t4,0x3($s0) /* f16af6c: 24040001 */ addiu $a0,$zero,0x1 /* f16af70: 3199ff7f */ andi $t9,$t4,0xff7f diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 749f57046..146b71f43 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -17020,12 +17020,7 @@ u32 var8009dfd8 = 0; u32 var8009dfdc = 0; u32 var8009dfe0 = 0; u32 var8009dfe4 = 0; -struct var8009dfe8 var8009dfe8 = {0}; -u32 var8009dfec = 0; -u32 var8009dff0 = 0; -u32 var8009dff4 = 0; -u32 var8009dff8 = 0; -u32 var8009dffc = 0; +struct missionconfig g_MissionConfig = {0}; u32 var8009e000 = 0; u32 var8009e004 = 0; u32 var8009e008 = 0; diff --git a/src/include/game/game_0f09f0.h b/src/include/game/game_0f09f0.h index 8a86d7d93..4c9028d74 100644 --- a/src/include/game/game_0f09f0.h +++ b/src/include/game/game_0f09f0.h @@ -37,7 +37,7 @@ void func0f0f2f4c(struct menu_dialog *dialog); u32 func0f0f3220(void); u32 func0f0f33bc(void); u32 func0f0f361c(void); -u32 func0f0f36dc(void); +void func0f0f36dc(void); u32 func0f0f3704(void); u32 func0f0f372c(void); u32 func0f0f37a4(void); diff --git a/src/include/game/game_102240.h b/src/include/game/game_102240.h index 9317dc55b..97478c130 100644 --- a/src/include/game/game_102240.h +++ b/src/include/game/game_102240.h @@ -7,7 +7,7 @@ u32 func0f102240(void); u32 func0f10229c(void); u32 func0f102330(void); u32 func0f103550(void); -u32 func0f1036ac(void); +f32 func0f1036ac(s32 arg0, s32 arg1); u32 func0f1038ec(void); u32 func0f103e68(void); u32 func0f10408c(void); @@ -36,7 +36,7 @@ s32 menudialog001069c0(u32, u32, u32 *); s32 menuhandler001024dc(u32 operation, struct menu_item *item, bool *enable); s32 menuhandler001024fc(u32 operation, struct menu_item *item, bool *enable); s32 menuhandlerAcceptMission(u32 operation, struct menu_item *item, s32 *value); -s32 menuhandler0010383c(u32 operation, struct menu_item *item, bool *enable); +s32 menuhandlerAcceptPdModeSettings(s32 operation, struct menu_item *item, bool *value); s32 menuhandler00104038(u32 operation, struct menu_item *item, bool *enable); s32 menuhandler00104538(u32 operation, struct menu_item *item, bool *enable); s32 menuhandler001045f0(u32 operation, struct menu_item *item, bool *enable); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index b339efb98..a62de184e 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -628,7 +628,7 @@ extern u32 var8009dfbc; extern u32 var8009dfc0; extern u32 var8009dfc8; extern u32 var8009dfd4; -extern struct var8009dfe8 var8009dfe8; +extern struct missionconfig g_MissionConfig; extern u32 var8009e000; extern struct menustackitem g_MenuStack[]; extern u32 var8009f6b0; diff --git a/src/include/setup/setup_0160b0.h b/src/include/setup/setup_0160b0.h index 36e5dcaa7..5cf1c228b 100644 --- a/src/include/setup/setup_0160b0.h +++ b/src/include/setup/setup_0160b0.h @@ -180,7 +180,7 @@ extern u16 g_SoundModeOptions[]; extern u16 g_ScreenSizeOptions[]; extern u16 g_ScreenRatioOptions[]; extern u16 g_ScreenSplitOptions[]; -extern struct menu_dialog menudialog_objectives; +extern struct menu_dialog g_ObjectivesMenuDialog; extern struct menu_dialog menudialog_perfectdarkmodesettings; extern struct menu_dialog menudialog_selectdifficulty; extern struct menu_dialog menudialog_cooperativeoptions; diff --git a/src/include/types.h b/src/include/types.h index 4f9a2168d..dfa762e9e 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3980,7 +3980,7 @@ struct options { /*0x9c*/ u32 unk9c; }; -struct var8009dfe8 { +struct missionconfig { u8 difficulty : 7; u8 bits0_07 : 1; @@ -3990,6 +3990,15 @@ struct var8009dfe8 { u8 iscoop : 1; u8 isanti : 1; + + /*0x04*/ u8 unk04; + /*0x05*/ u8 updmodehealth; + /*0x06*/ u8 updmodedamage; + /*0x07*/ u8 updmodeaccuracy; + /*0x08*/ u32 unk08; + /*0x0c*/ f32 fpdmodehealth; + /*0x10*/ f32 fpdmodedamage; + /*0x14*/ f32 fpdmodeaccuracy; }; #endif diff --git a/src/setup/setup_0160b0.c b/src/setup/setup_0160b0.c index 9db39f553..2aebc1146 100644 --- a/src/setup/setup_0160b0.c +++ b/src/setup/setup_0160b0.c @@ -1607,7 +1607,7 @@ struct menu_item menuitems_objectives[] = { }; // 17ab0 -struct menu_dialog menudialog_objectives = { +struct menu_dialog g_ObjectivesMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x7f103550, menuitems_objectives, @@ -1623,7 +1623,7 @@ struct menu_item menuitems_perfectdarkmodesettings[] = { { MENUITEMTYPE_SLIDER, 2, 0x00100000, 0x000054e1, 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Damage" { MENUITEMTYPE_SLIDER, 3, 0x00100000, 0x000054e2, 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Accuracy" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000b4, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054e3, 0x00000000, menuhandler0010383c }, // "OK" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054e3, 0x00000000, menuhandlerAcceptPdModeSettings }, // "OK" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000054e4, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, };