From 9b63a5263cfbe1652dce9f22f74133df1f2d6ebb Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 1 Jan 2020 12:32:53 +1000 Subject: [PATCH] Attempt to decompile menuhandlerAcceptMission --- src/game/game_015470.c | 18 ++--- src/game/game_102240.c | 118 +++++++++++++++++++++------- src/game/game_10ccd0.c | 16 ++-- src/game/game_129900.c | 4 +- src/game/game_1668e0.c | 6 +- src/game/game_187770.c | 2 +- src/gvars/gvars.c | 3 +- src/include/game/game_015470.h | 8 +- src/include/game/game_102240.h | 2 +- src/include/game/game_1668e0.h | 2 +- src/include/gvars/gvars.h | 8 +- src/include/library/library_09660.h | 2 +- src/include/library/library_0d520.h | 2 +- src/include/types.h | 12 +++ src/library/library_0d520.c | 2 +- src/setup/setup_0160b0.c | 6 +- 16 files changed, 142 insertions(+), 69 deletions(-) diff --git a/src/game/game_015470.c b/src/game/game_015470.c index 10ee3b543..f29cbed04 100644 --- a/src/game/game_015470.c +++ b/src/game/game_015470.c @@ -2174,7 +2174,7 @@ glabel func0f0170bc /* f017170: 240e005c */ addiu $t6,$zero,0x5c /* f017174: 3c018006 */ lui $at,0x8006 /* f017178: ac2e24e4 */ sw $t6,0x24e4($at) -/* f01717c: 0fc068d5 */ jal func0f01a354 +/* f01717c: 0fc068d5 */ jal setNumPlayers /* f017180: 24040001 */ addiu $a0,$zero,0x1 /* f017184: 3c048006 */ lui $a0,0x8006 /* f017188: 0c003a57 */ jal func0000e95c @@ -2185,7 +2185,7 @@ glabel func0f0170bc /* f01719c: ac600294 */ sw $zero,0x294($v1) /* f0171a0: ac620298 */ sw $v0,0x298($v1) /* f0171a4: ac62029c */ sw $v0,0x29c($v1) -/* f0171a8: 0fc5b36a */ jal func0f16cda8 +/* f0171a8: 0fc5b36a */ jal setDifficulty /* f0171ac: 00002025 */ or $a0,$zero,$zero /* f0171b0: 0c0027b1 */ jal func00009ec4 /* f0171b4: 24040001 */ addiu $a0,$zero,0x1 @@ -5607,7 +5607,7 @@ glabel func0f01a348 ); GLOBAL_ASM( -glabel func0f01a354 +glabel setNumPlayers /* f01a354: 3c018006 */ lui $at,0x8006 /* f01a358: 03e00008 */ jr $ra /* f01a35c: ac242924 */ sw $a0,0x2924($at) @@ -5642,7 +5642,7 @@ glabel func0f01a3b8 /* f01a3c0: 240e0026 */ addiu $t6,$zero,0x26 /* f01a3c4: 3c018006 */ lui $at,0x8006 /* f01a3c8: ac2e24e4 */ sw $t6,0x24e4($at) -/* f01a3cc: 0fc068d5 */ jal func0f01a354 +/* f01a3cc: 0fc068d5 */ jal setNumPlayers /* f01a3d0: 24040001 */ addiu $a0,$zero,0x1 /* f01a3d4: 3c038006 */ lui $v1,%hi(var800624a4) /* f01a3d8: 246324a4 */ addiu $v1,$v1,%lo(var800624a4) @@ -5686,7 +5686,7 @@ glabel func0f01a3b8 /* f01a468: ac400294 */ sw $zero,0x294($v0) /* f01a46c: ac430298 */ sw $v1,0x298($v0) /* f01a470: ac43029c */ sw $v1,0x29c($v0) -/* f01a474: 0fc5b36a */ jal func0f16cda8 +/* f01a474: 0fc5b36a */ jal setDifficulty /* f01a478: 00002025 */ or $a0,$zero,$zero /* f01a47c: 0c0027b1 */ jal func00009ec4 /* f01a480: 24040001 */ addiu $a0,$zero,0x1 @@ -8691,7 +8691,7 @@ glabel func0f01bf28 /* f01cdbc: 31a400ff */ andi $a0,$t5,0xff /* f01cdc0: 8e440000 */ lw $a0,0x0($s2) /* f01cdc4: 0004ce42 */ srl $t9,$a0,0x19 -/* f01cdc8: 0fc5b36a */ jal func0f16cda8 +/* f01cdc8: 0fc5b36a */ jal setDifficulty /* f01cdcc: 03202025 */ or $a0,$t9,$zero /* f01cdd0: 0fc069f9 */ jal func0f01a7e4 /* f01cdd4: 24040005 */ addiu $a0,$zero,0x5 @@ -9059,7 +9059,7 @@ glabel func0f01bf28 /* f01d2f0: 00000000 */ sll $zero,$zero,0x0 /* f01d2f4: 0fc06c55 */ jal func0f01b154 /* f01d2f8: 24040026 */ addiu $a0,$zero,0x26 -/* f01d2fc: 0fc068d5 */ jal func0f01a354 +/* f01d2fc: 0fc068d5 */ jal setNumPlayers /* f01d300: 02c02025 */ or $a0,$s6,$zero /* f01d304: 0fc069f9 */ jal func0f01a7e4 /* f01d308: 24040005 */ addiu $a0,$zero,0x5 @@ -9070,7 +9070,7 @@ glabel func0f01bf28 .L0f01d31c: /* f01d31c: 0fc06c55 */ jal func0f01b154 /* f01d320: 2404005d */ addiu $a0,$zero,0x5d -/* f01d324: 0fc068d5 */ jal func0f01a354 +/* f01d324: 0fc068d5 */ jal setNumPlayers /* f01d328: 02c02025 */ or $a0,$s6,$zero /* f01d32c: 0fc069f9 */ jal func0f01a7e4 /* f01d330: 24040005 */ addiu $a0,$zero,0x5 @@ -9089,7 +9089,7 @@ glabel func0f01bf28 /* f01d360: ae60031c */ sw $zero,0x31c($s3) /* f01d364: 0fc06c55 */ jal func0f01b154 /* f01d368: 24040026 */ addiu $a0,$zero,0x26 -/* f01d36c: 0fc068d5 */ jal func0f01a354 +/* f01d36c: 0fc068d5 */ jal setNumPlayers /* f01d370: 02c02025 */ or $a0,$s6,$zero /* f01d374: 0fc069f9 */ jal func0f01a7e4 /* f01d378: 24040005 */ addiu $a0,$zero,0x5 diff --git a/src/game/game_102240.c b/src/game/game_102240.c index eb4d5f37e..ccf2364c9 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -1,6 +1,8 @@ #include #include "constants.h" #include "gvars/gvars.h" +#include "library/library_09660.h" +#include "library/library_0d520.h" #include "library/library_0e9d0.h" #include "setup/setup_000000.h" #include "setup/setup_0160b0.h" @@ -1072,7 +1074,7 @@ glabel menudialog00103368 /* f1033c8: 8059000a */ lb $t9,0xa($v0) /* f1033cc: 53200005 */ beqzl $t9,.L0f1033e4 /* f1033d0: a040000a */ sb $zero,0xa($v0) -/* f1033d4: 0fc40cfe */ jal menuhandler001033f8 +/* f1033d4: 0fc40cfe */ jal menuhandlerAcceptMission /* f1033d8: afa2001c */ sw $v0,0x1c($sp) /* f1033dc: 8fa2001c */ lw $v0,0x1c($sp) /* f1033e0: a040000a */ sb $zero,0xa($v0) @@ -1086,12 +1088,12 @@ glabel menudialog00103368 ); GLOBAL_ASM( -glabel menuhandler001033f8 +glabel menuhandlerAcceptMission /* f1033f8: 27bdffe8 */ addiu $sp,$sp,-24 /* f1033fc: 24010006 */ addiu $at,$zero,0x6 /* f103400: afbf0014 */ sw $ra,0x14($sp) /* f103404: afa5001c */ sw $a1,0x1c($sp) -/* f103408: 1481004c */ bne $a0,$at,.L0f10353c +/* f103408: 1481004c */ bne $a0,$at,.END /* f10340c: afa60020 */ sw $a2,0x20($sp) /* f103410: 0fc06fa8 */ jal func0f01bea0 /* f103414: 00000000 */ sll $zero,$zero,0x0 @@ -1101,10 +1103,10 @@ glabel menuhandler001033f8 /* f103424: 9084dfe9 */ lbu $a0,-0x2017($a0) /* f103428: 8c4e04b4 */ lw $t6,0x4b4($v0) /* f10342c: 24030001 */ addiu $v1,$zero,0x1 -/* f103430: 15c40002 */ bne $t6,$a0,.L0f10343c +/* f103430: 15c40002 */ bne $t6,$a0,.START /* f103434: 00000000 */ sll $zero,$zero,0x0 /* f103438: ac43046c */ sw $v1,0x46c($v0) -.L0f10343c: +.START: /* f10343c: 0fc06c55 */ jal func0f01b154 /* f103440: 00000000 */ sll $zero,$zero,0x0 /* f103444: 3c06800a */ lui $a2,%hi(var8009dfe8) @@ -1112,61 +1114,65 @@ glabel menuhandler001033f8 /* f10344c: 80d80003 */ lb $t8,0x3($a2) /* f103450: 3c02800a */ lui $v0,%hi(g_Vars) /* f103454: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f103458: 07010014 */ bgez $t8,.L0f1034ac +/* f103458: 07010014 */ bgez $t8,.NOTCOOP /* f10345c: 24030001 */ addiu $v1,$zero,0x1 +.COOP: /* f103460: 8c590474 */ lw $t9,0x474($v0) /* f103464: 2405ffff */ addiu $a1,$zero,-1 /* f103468: 24040001 */ addiu $a0,$zero,0x1 -/* f10346c: 5720000a */ bnezl $t9,.L0f103498 +/* f10346c: 5720000a */ bnezl $t9,.COOPBUDDIES /* f103470: ac400294 */ sw $zero,0x294($v0) +.COOPNOBUDDIES: /* f103474: 2405ffff */ addiu $a1,$zero,-1 /* f103478: ac400294 */ sw $zero,0x294($v0) /* f10347c: ac430298 */ sw $v1,0x298($v0) /* f103480: ac45029c */ sw $a1,0x29c($v0) -/* f103484: 0fc068d5 */ jal func0f01a354 +/* f103484: 0fc068d5 */ jal setNumPlayers /* f103488: 24040002 */ addiu $a0,$zero,0x2 -/* f10348c: 1000001f */ beqz $zero,.L0f10350c +/* f10348c: 1000001f */ beqz $zero,.DONE /* f103490: 00000000 */ sll $zero,$zero,0x0 /* f103494: ac400294 */ sw $zero,0x294($v0) -.L0f103498: +.COOPBUDDIES: /* f103498: ac450298 */ sw $a1,0x298($v0) -/* f10349c: 0fc068d5 */ jal func0f01a354 +/* f10349c: 0fc068d5 */ jal setNumPlayers /* f1034a0: ac45029c */ sw $a1,0x29c($v0) -/* f1034a4: 10000019 */ beqz $zero,.L0f10350c +/* f1034a4: 10000019 */ beqz $zero,.DONE /* f1034a8: 00000000 */ sll $zero,$zero,0x0 -.L0f1034ac: +.NOTCOOP: /* f1034ac: 8cc80000 */ lw $t0,0x0($a2) /* f1034b0: 2405ffff */ addiu $a1,$zero,-1 /* f1034b4: 24040001 */ addiu $a0,$zero,0x1 /* f1034b8: 00085640 */ sll $t2,$t0,0x19 -/* f1034bc: 05430010 */ bgezl $t2,.L0f103500 +/* f1034bc: 05430010 */ bgezl $t2,.SOLO /* f1034c0: ac400294 */ sw $zero,0x294($v0) +.ANTI: /* f1034c4: 8c4b0450 */ lw $t3,0x450($v0) /* f1034c8: 2405ffff */ addiu $a1,$zero,-1 /* f1034cc: 24040002 */ addiu $a0,$zero,0x2 -/* f1034d0: 546b0005 */ bnel $v1,$t3,.L0f1034e8 +/* f1034d0: 546b0005 */ bnel $v1,$t3,.ANTIP0 /* f1034d4: ac430294 */ sw $v1,0x294($v0) +.ANTIP1: /* f1034d8: ac400294 */ sw $zero,0x294($v0) -/* f1034dc: 10000003 */ beqz $zero,.L0f1034ec +/* f1034dc: 10000003 */ beqz $zero,.ANTIEND /* f1034e0: ac43029c */ sw $v1,0x29c($v0) /* f1034e4: ac430294 */ sw $v1,0x294($v0) -.L0f1034e8: +.ANTIP0: /* f1034e8: ac40029c */ sw $zero,0x29c($v0) -.L0f1034ec: -/* f1034ec: 0fc068d5 */ jal func0f01a354 +.ANTIEND: +/* f1034ec: 0fc068d5 */ jal setNumPlayers /* f1034f0: ac450298 */ sw $a1,0x298($v0) -/* f1034f4: 10000005 */ beqz $zero,.L0f10350c +/* f1034f4: 10000005 */ beqz $zero,.DONE /* f1034f8: 00000000 */ sll $zero,$zero,0x0 /* f1034fc: ac400294 */ sw $zero,0x294($v0) -.L0f103500: +.SOLO: /* f103500: ac450298 */ sw $a1,0x298($v0) -/* f103504: 0fc068d5 */ jal func0f01a354 +/* f103504: 0fc068d5 */ jal setNumPlayers /* f103508: ac45029c */ sw $a1,0x29c($v0) -.L0f10350c: +.DONE: /* f10350c: 3c04800a */ lui $a0,0x800a /* f103510: 8c84dfe8 */ lw $a0,-0x2018($a0) /* f103514: 00046642 */ srl $t4,$a0,0x19 -/* f103518: 0fc5b36a */ jal func0f16cda8 +/* f103518: 0fc5b36a */ jal setDifficulty /* f10351c: 01802025 */ or $a0,$t4,$zero /* f103520: 0fc069f9 */ jal func0f01a7e4 /* f103524: 24040005 */ addiu $a0,$zero,0x5 @@ -1175,7 +1181,7 @@ glabel menuhandler001033f8 /* f103530: 9084dfe9 */ lbu $a0,-0x2017($a0) /* f103534: 0c0027b1 */ jal func00009ec4 /* f103538: 24040001 */ addiu $a0,$zero,0x1 -.L0f10353c: +.END: /* f10353c: 8fbf0014 */ lw $ra,0x14($sp) /* f103540: 27bd0018 */ addiu $sp,$sp,0x18 /* f103544: 00001025 */ or $v0,$zero,$zero @@ -1183,6 +1189,60 @@ glabel menuhandler001033f8 /* f10354c: 00000000 */ sll $zero,$zero,0x0 ); +// Mismatching branch/branch-likelys +//s32 menuhandlerAcceptMission(u32 operation, struct menu_item *item, s32 *value) +//{ +// if (operation == MENUOP_SET) { +// func0f01bea0(); +// +// if (g_Vars.stagenum == var8009dfe8.stagenum) { +// g_Vars.isreplayingmission = true; +// } +// +// func0f01b154(var8009dfe8.stagenum); +// +// if (var8009dfe8.iscoop) { +// if (g_Vars.numaibuddies == 0) { +// // Coop with human buddy +// g_Vars.bondplayernum = 0; +// g_Vars.coopplayernum = 1; +// g_Vars.antiplayernum = -1; +// setNumPlayers(2); +// } else { +// // Coop with AI buddies +// g_Vars.bondplayernum = 0; +// g_Vars.coopplayernum = -1; +// g_Vars.antiplayernum = -1; +// setNumPlayers(1); +// } +// } else if (var8009dfe8.isanti) { +// if (g_Vars.pendingantiplayernum == 1) { +// g_Vars.bondplayernum = 0; +// g_Vars.antiplayernum = 1; +// } else { +// g_Vars.bondplayernum = 1; +// g_Vars.antiplayernum = 0; +// } +// +// g_Vars.coopplayernum = -1; +// setNumPlayers(2); +// } else { +// // Solo +// g_Vars.bondplayernum = 0; +// g_Vars.coopplayernum = -1; +// g_Vars.antiplayernum = -1; +// setNumPlayers(1); +// } +// +// setDifficulty(var8009dfe8.difficulty); +// func0f01a7e4(5); +// func0000e95c(var8009dfe8.stagenum); +// func00009ec4(1); +// } +// +// return 0; +//} + GLOBAL_ASM( glabel func0f103550 /* f103550: 3c0e8007 */ lui $t6,0x8007 @@ -1437,7 +1497,7 @@ glabel menuhandler0010383c /* f1038a8: a2090000 */ sb $t1,0x0($s0) /* f1038ac: 8e040000 */ lw $a0,0x0($s0) /* f1038b0: 00045642 */ srl $t2,$a0,0x19 -/* f1038b4: 0fc5b36a */ jal func0f16cda8 +/* f1038b4: 0fc5b36a */ jal setDifficulty /* f1038b8: 01402025 */ or $a0,$t2,$zero /* f1038bc: 0fc3cdb7 */ jal func0f0f36dc /* f1038c0: 00000000 */ sll $zero,$zero,0x0 @@ -1804,7 +1864,7 @@ glabel menuhandlerSoloDifficulty /* f103d9c: a0580000 */ sb $t8,0x0($v0) /* f103da0: 8c440000 */ lw $a0,0x0($v0) /* f103da4: 0004ce42 */ srl $t9,$a0,0x19 -/* f103da8: 0fc5b36a */ jal func0f16cda8 +/* f103da8: 0fc5b36a */ jal setDifficulty /* f103dac: 03202025 */ or $a0,$t9,$zero /* f103db0: 0fc3cdb7 */ jal func0f0f36dc /* f103db4: 00000000 */ sll $zero,$zero,0x0 @@ -2420,7 +2480,7 @@ glabel menuhandler00104538 /* f10458c: a04c0000 */ sb $t4,0x0($v0) /* f104590: 8c440000 */ lw $a0,0x0($v0) /* f104594: 00046e42 */ srl $t5,$a0,0x19 -/* f104598: 0fc5b36a */ jal func0f16cda8 +/* f104598: 0fc5b36a */ jal setDifficulty /* f10459c: 01a02025 */ or $a0,$t5,$zero /* f1045a0: 0fc3cdb7 */ jal func0f0f36dc /* f1045a4: 00000000 */ sll $zero,$zero,0x0 @@ -2465,7 +2525,7 @@ glabel menuhandler001045f0 /* f104628: a04c0000 */ sb $t4,0x0($v0) /* f10462c: 8c440000 */ lw $a0,0x0($v0) /* f104630: 00046e42 */ srl $t5,$a0,0x19 -/* f104634: 0fc5b36a */ jal func0f16cda8 +/* f104634: 0fc5b36a */ jal setDifficulty /* f104638: 01a02025 */ or $a0,$t5,$zero /* f10463c: 0fc3cdb7 */ jal func0f0f36dc /* f104640: 00000000 */ sll $zero,$zero,0x0 diff --git a/src/game/game_10ccd0.c b/src/game/game_10ccd0.c index d1c4ed3a0..a68fce105 100644 --- a/src/game/game_10ccd0.c +++ b/src/game/game_10ccd0.c @@ -181,7 +181,7 @@ glabel menudialog0010cd0c /* f10ce3c: 24040006 */ addiu $a0,$zero,0x6 /* f10ce40: 8ce50008 */ lw $a1,0x8($a3) /* f10ce44: afa70044 */ sw $a3,0x44($sp) -/* f10ce48: 0fc40cfe */ jal menuhandler001033f8 +/* f10ce48: 0fc40cfe */ jal menuhandlerAcceptMission /* f10ce4c: 24a50014 */ addiu $a1,$a1,0x14 /* f10ce50: 8fa70044 */ lw $a3,0x44($sp) .L0f10ce54: @@ -321,7 +321,7 @@ glabel menuhandlerReplyPreviousMission /* f10d024: 8d081e6c */ lw $t0,0x1e6c($t0) /* f10d028: a0480001 */ sb $t0,0x1($v0) .L0f10d02c: -/* f10d02c: 0fc40cfe */ jal menuhandler001033f8 +/* f10d02c: 0fc40cfe */ jal menuhandlerAcceptMission /* f10d030: 00002825 */ or $a1,$zero,$zero /* f10d034: 8fbf0014 */ lw $ra,0x14($sp) /* f10d038: 27bd0018 */ addiu $sp,$sp,0x18 @@ -956,7 +956,7 @@ glabel menuhandlerReplyLastLevel /* f10d8ac: 000f7880 */ sll $t7,$t7,0x2 /* f10d8b0: 030fc021 */ addu $t8,$t8,$t7 /* f10d8b4: 8f181e6c */ lw $t8,0x1e6c($t8) -/* f10d8b8: 0fc40cfe */ jal menuhandler001033f8 +/* f10d8b8: 0fc40cfe */ jal menuhandlerAcceptMission /* f10d8bc: a0580001 */ sb $t8,0x1($v0) /* f10d8c0: 10000003 */ beqz $zero,.L0f10d8d0 /* f10d8c4: 8fbf0014 */ lw $ra,0x14($sp) @@ -1118,14 +1118,14 @@ glabel func0f10d910 /* f10dae4: ac600294 */ sw $zero,0x294($v1) /* f10dae8: ac6f0298 */ sw $t7,0x298($v1) /* f10daec: ac62029c */ sw $v0,0x29c($v1) -/* f10daf0: 0fc068d5 */ jal func0f01a354 +/* f10daf0: 0fc068d5 */ jal setNumPlayers /* f10daf4: 24040002 */ addiu $a0,$zero,0x2 /* f10daf8: 1000000c */ beqz $zero,.L0f10db2c /* f10dafc: 00000000 */ sll $zero,$zero,0x0 .L0f10db00: /* f10db00: ac600294 */ sw $zero,0x294($v1) /* f10db04: ac620298 */ sw $v0,0x298($v1) -/* f10db08: 0fc068d5 */ jal func0f01a354 +/* f10db08: 0fc068d5 */ jal setNumPlayers /* f10db0c: ac62029c */ sw $v0,0x29c($v1) /* f10db10: 10000006 */ beqz $zero,.L0f10db2c /* f10db14: 00000000 */ sll $zero,$zero,0x0 @@ -1133,13 +1133,13 @@ glabel func0f10d910 /* f10db18: ac600294 */ sw $zero,0x294($v1) /* f10db1c: ac620298 */ sw $v0,0x298($v1) /* f10db20: ac62029c */ sw $v0,0x29c($v1) -/* f10db24: 0fc068d5 */ jal func0f01a354 +/* f10db24: 0fc068d5 */ jal setNumPlayers /* f10db28: 24040001 */ addiu $a0,$zero,0x1 .L0f10db2c: /* f10db2c: 3c04800a */ lui $a0,0x800a /* f10db30: 8c84dfe8 */ lw $a0,-0x2018($a0) /* f10db34: 0004c642 */ srl $t8,$a0,0x19 -/* f10db38: 0fc5b36a */ jal func0f16cda8 +/* f10db38: 0fc5b36a */ jal setDifficulty /* f10db3c: 03002025 */ or $a0,$t8,$zero /* f10db40: 0fc069f9 */ jal func0f01a7e4 /* f10db44: 24040005 */ addiu $a0,$zero,0x5 @@ -1161,7 +1161,7 @@ glabel func0f10d910 /* f10db80: 3c04800a */ lui $a0,0x800a /* f10db84: 8c84dfe8 */ lw $a0,-0x2018($a0) /* f10db88: 00044642 */ srl $t0,$a0,0x19 -/* f10db8c: 0fc5b36a */ jal func0f16cda8 +/* f10db8c: 0fc5b36a */ jal setDifficulty /* f10db90: 01002025 */ or $a0,$t0,$zero /* f10db94: 0fc069f9 */ jal func0f01a7e4 /* f10db98: 24040005 */ addiu $a0,$zero,0x5 diff --git a/src/game/game_129900.c b/src/game/game_129900.c index 20b93d56a..6de0de482 100644 --- a/src/game/game_129900.c +++ b/src/game/game_129900.c @@ -20392,7 +20392,7 @@ glabel func0f13b064 /* f13b464: 240d0026 */ addiu $t5,$zero,0x26 /* f13b468: 3c018006 */ lui $at,0x8006 /* f13b46c: ac2d24e4 */ sw $t5,0x24e4($at) -/* f13b470: 0fc068d5 */ jal func0f01a354 +/* f13b470: 0fc068d5 */ jal setNumPlayers /* f13b474: 24040001 */ addiu $a0,$zero,0x1 /* f13b478: 3c048006 */ lui $a0,0x8006 /* f13b47c: 0c003a57 */ jal func0000e95c @@ -20404,7 +20404,7 @@ glabel func0f13b064 /* f13b494: ac22a258 */ sw $v0,-0x5da8($at) /* f13b498: 3c01800a */ lui $at,0x800a /* f13b49c: ac22a25c */ sw $v0,-0x5da4($at) -/* f13b4a0: 0fc5b36a */ jal func0f16cda8 +/* f13b4a0: 0fc5b36a */ jal setDifficulty /* f13b4a4: 00002025 */ or $a0,$zero,$zero /* f13b4a8: 0c0027b1 */ jal func00009ec4 /* f13b4ac: 24040001 */ addiu $a0,$zero,0x1 diff --git a/src/game/game_1668e0.c b/src/game/game_1668e0.c index daf922f70..91c6e91ea 100644 --- a/src/game/game_1668e0.c +++ b/src/game/game_1668e0.c @@ -5220,14 +5220,14 @@ glabel func0f169374 /* f16af94: ae770298 */ sw $s7,0x298($s3) /* f16af98: ae77029c */ sw $s7,0x29c($s3) /* f16af9c: a20a0003 */ sb $t2,0x3($s0) -/* f16afa0: 0fc068d5 */ jal func0f01a354 +/* f16afa0: 0fc068d5 */ jal setNumPlayers /* f16afa4: a26f04d2 */ sb $t7,0x4d2($s3) /* f16afa8: 0fc069f9 */ jal func0f01a7e4 /* f16afac: 24040005 */ addiu $a0,$zero,0x5 /* f16afb0: 920e0000 */ lbu $t6,0x0($s0) /* f16afb4: 00002025 */ or $a0,$zero,$zero /* f16afb8: 31d8ff01 */ andi $t8,$t6,0xff01 -/* f16afbc: 0fc5b36a */ jal func0f16cda8 +/* f16afbc: 0fc5b36a */ jal setDifficulty /* f16afc0: a2180000 */ sb $t8,0x0($s0) /* f16afc4: 826d04d4 */ lb $t5,0x4d4($s3) /* f16afc8: 01b40019 */ multu $t5,$s4 @@ -7305,7 +7305,7 @@ s32 getDifficulty(void) } GLOBAL_ASM( -glabel func0f16cda8 +glabel setDifficulty /* f16cda8: 04800003 */ bltz $a0,.L0f16cdb8 /* f16cdac: 28810004 */ slti $at,$a0,0x4 /* f16cdb0: 14200002 */ bnez $at,.L0f16cdbc diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 1d0512d19..0a73711b2 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -354,7 +354,7 @@ glabel func0f187864 /* f18790c: afa40024 */ sw $a0,0x24($sp) /* f187910: 0c003a57 */ jal func0000e95c /* f187914: 8fa40024 */ lw $a0,0x24($sp) -/* f187918: 0fc068d5 */ jal func0f01a354 +/* f187918: 0fc068d5 */ jal setNumPlayers /* f18791c: 02002025 */ or $a0,$s0,$zero /* f187920: 0fc069f9 */ jal func0f01a7e4 /* f187924: 24040005 */ addiu $a0,$zero,0x5 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 6398fb0c2..749f57046 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -17020,7 +17020,8 @@ u32 var8009dfd8 = 0; u32 var8009dfdc = 0; u32 var8009dfe0 = 0; u32 var8009dfe4 = 0; -u8 var8009dfe8[] = {0, 0, 0, 0, 0, 0, 0, 0}; +struct var8009dfe8 var8009dfe8 = {0}; +u32 var8009dfec = 0; u32 var8009dff0 = 0; u32 var8009dff4 = 0; u32 var8009dff8 = 0; diff --git a/src/include/game/game_015470.h b/src/include/game/game_015470.h index 52512ff09..85fe01463 100644 --- a/src/include/game/game_015470.h +++ b/src/include/game/game_015470.h @@ -37,13 +37,13 @@ u32 func0f019ba0(void); u32 func0f019d0c(void); u32 func0f019d38(void); u32 func0f01a348(void); -u32 func0f01a354(void); +void setNumPlayers(s32 numplayers); u32 func0f01a3b8(void); u32 func0f01a494(void); void func0f01a4a0(void); u32 func0f01a4a8(void); u32 func0f01a510(void); -u32 func0f01a7e4(void); +void func0f01a7e4(s32 arg0); u32 func0f01a810(void); u32 func0f01ab94(void); u32 func0f01aba8(void); @@ -59,9 +59,9 @@ u32 func0f01b0ac(void); u32 func0f01b0e0(void); u32 func0f01b114(void); u32 func0f01b148(void); -u32 func0f01b154(void); +void func0f01b154(s32 arg0); u32 func0f01b160(void); -u32 func0f01bea0(void); +void func0f01bea0(void); u32 func0f01bee0(void); u32 func0f01bf28(void); u32 func0f01d770(void); diff --git a/src/include/game/game_102240.h b/src/include/game/game_102240.h index 0819edc43..9317dc55b 100644 --- a/src/include/game/game_102240.h +++ b/src/include/game/game_102240.h @@ -35,7 +35,7 @@ s32 menudialog001063e4(u32, u32, u32 *); 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 menuhandler001033f8(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 menuhandler00104038(u32 operation, struct menu_item *item, bool *enable); s32 menuhandler00104538(u32 operation, struct menu_item *item, bool *enable); diff --git a/src/include/game/game_1668e0.h b/src/include/game/game_1668e0.h index c47f8856e..d09cd2585 100644 --- a/src/include/game/game_1668e0.h +++ b/src/include/game/game_1668e0.h @@ -62,7 +62,7 @@ void stageLoad(void); u32 func0f16cce4(void); u32 func0f16cd40(void); u32 getVar80084014(void); -u32 func0f16cda8(void); +void setDifficulty(s32 arg0); void setVar80084028(u32 arg0); void setVar8008402c(u32 arg0); void setVar80084030(u32 arg0); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index faf533c1f..b339efb98 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -147,16 +147,16 @@ struct g_vars { /*000444*/ u32 unk000444; /*000448*/ u32 unk000448; /*00044c*/ u32 unk00044c; - /*000450*/ u32 unk000450; + /*000450*/ u32 pendingantiplayernum; /*000454*/ u32 unk000454; /*000458*/ u32 unk000458; /*00045c*/ u32 unk00045c; /*000460*/ u32 unk000460; /*000464*/ u32 unk000464; /*000468*/ u32 unk000468; - /*00046c*/ u32 unk00046c; + /*00046c*/ bool isreplayingmission; /*000470*/ u32 unk000470; - /*000474*/ u32 unk000474; + /*000474*/ u32 numaibuddies; /*000478*/ u32 unk000478; /*00047c*/ u32 unk00047c; /*000480*/ u32 unk000480; @@ -628,7 +628,7 @@ extern u32 var8009dfbc; extern u32 var8009dfc0; extern u32 var8009dfc8; extern u32 var8009dfd4; -extern u8 var8009dfe8[]; +extern struct var8009dfe8 var8009dfe8; extern u32 var8009e000; extern struct menustackitem g_MenuStack[]; extern u32 var8009f6b0; diff --git a/src/include/library/library_09660.h b/src/include/library/library_09660.h index 2d9c0b163..48724f59f 100644 --- a/src/include/library/library_09660.h +++ b/src/include/library/library_09660.h @@ -16,7 +16,7 @@ u32 func00009ab0(void); u32 func00009b50(void); u32 func00009bf8(void); u32 func00009c3c(void); -u32 func00009ec4(void); +void func00009ec4(s32 arg0); u32 func00009ed4(void); u32 func0000a044(void); u32 func0000aa50(void); diff --git a/src/include/library/library_0d520.h b/src/include/library/library_0d520.h index db17c53e3..30e3ed4bb 100644 --- a/src/include/library/library_0d520.h +++ b/src/include/library/library_0d520.h @@ -9,7 +9,7 @@ u32 func0000db30(void); u32 func0000db3c(void); u32 func0000e324(void); u32 func0000e684(void); -u32 func0000e95c(void); +void func0000e95c(s32 stagenum); u32 func0000e990(void); u32 func0000e9c0(void); s32 getCurrentStageId(void); diff --git a/src/include/types.h b/src/include/types.h index e22a9cd17..4f9a2168d 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3980,4 +3980,16 @@ struct options { /*0x9c*/ u32 unk9c; }; +struct var8009dfe8 { + u8 difficulty : 7; + u8 bits0_07 : 1; + + u8 stagenum : 8; + + u8 bits2_00 : 8; + + u8 iscoop : 1; + u8 isanti : 1; +}; + #endif diff --git a/src/library/library_0d520.c b/src/library/library_0d520.c index 493b7912a..cac5052ed 100644 --- a/src/library/library_0d520.c +++ b/src/library/library_0d520.c @@ -668,7 +668,7 @@ glabel func0000db3c /* dc58: 0c004c04 */ jal func00013010 /* dc5c: 24a53adc */ addiu $a1,$a1,%lo(var70053adc) /* dc60: 90440000 */ lbu $a0,0x0($v0) -/* dc64: 0fc5b36a */ jal func0f16cda8 +/* dc64: 0fc5b36a */ jal setDifficulty /* dc68: 2484ffd0 */ addiu $a0,$a0,-48 .L0000dc6c: /* dc6c: 3c028006 */ lui $v0,%hi(g_StageNum) diff --git a/src/setup/setup_0160b0.c b/src/setup/setup_0160b0.c index 9d715830c..9db39f553 100644 --- a/src/setup/setup_0160b0.c +++ b/src/setup/setup_0160b0.c @@ -1601,7 +1601,7 @@ struct menu_dialog menudialog_briefing = { // 17a60 struct menu_item menuitems_objectives[] = { { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005712, 0x00000000, menuhandler001033f8 }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005712, 0x00000000, menuhandlerAcceptMission }, // "Accept" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005713, 0x00000000, NULL }, // "Decline" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -3903,7 +3903,7 @@ struct menu_dialog menudialog_mpgamesetup = { // 1b570 struct menu_item menuitems_1b570[] = { { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandler001033f8 }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandlerAcceptMission }, // "Accept" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572b, 0x00000000, menuhandler0010ccd0 }, // "Decline" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -3921,7 +3921,7 @@ struct menu_dialog menudialog_1b5c0 = { // 1b5d8 struct menu_item menuitems_promptnextmission[] = { { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandler001033f8 }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandlerAcceptMission }, // "Accept" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572b, 0x00000000, menuhandler0010ccd0 }, // "Decline" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000059d6, 0x00000000, menuhandlerReplyPreviousMission }, // "Replay Previous Mission"