From a2f51fc146c33151d6946dc5659a2d89bc15dce4 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 18 Jan 2020 10:59:08 +1000 Subject: [PATCH] Decompile menudialogMainMenu --- src/game/game_102240.c | 70 +++++++++------------------------- src/include/game/game_102240.h | 2 +- src/setup/setup_0160b0.c | 4 +- 3 files changed, 20 insertions(+), 56 deletions(-) diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 7dddb15b4..af0bdf6f4 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -4543,59 +4543,23 @@ s32 menuhandlerMainMenuCounterOperative(u32 operation, struct menu_item *item, s return 0; } -GLOBAL_ASM( -glabel menudialog001069c0 -/* f1069c0: 24010064 */ addiu $at,$zero,0x64 -/* f1069c4: 10810006 */ beq $a0,$at,.L0f1069e0 -/* f1069c8: afa60008 */ sw $a2,0x8($sp) -/* f1069cc: 24010066 */ addiu $at,$zero,0x66 -/* f1069d0: 10810011 */ beq $a0,$at,.L0f106a18 -/* f1069d4: 3c188007 */ lui $t8,0x8007 -/* f1069d8: 03e00008 */ jr $ra -/* f1069dc: 00001025 */ or $v0,$zero,$zero -.L0f1069e0: -/* f1069e0: 3c0e8007 */ lui $t6,0x8007 -/* f1069e4: 8dce1448 */ lw $t6,0x1448($t6) -/* f1069e8: 3c01800a */ lui $at,0x800a -/* f1069ec: 00001025 */ or $v0,$zero,$zero -/* f1069f0: 000e78c0 */ sll $t7,$t6,0x3 -/* f1069f4: 01ee7823 */ subu $t7,$t7,$t6 -/* f1069f8: 000f7880 */ sll $t7,$t7,0x2 -/* f1069fc: 01ee7821 */ addu $t7,$t7,$t6 -/* f106a00: 000f78c0 */ sll $t7,$t7,0x3 -/* f106a04: 01ee7823 */ subu $t7,$t7,$t6 -/* f106a08: 000f7900 */ sll $t7,$t7,0x4 -/* f106a0c: 002f0821 */ addu $at,$at,$t7 -/* f106a10: 03e00008 */ jr $ra -/* f106a14: ac20ee2c */ sw $zero,-0x11d4($at) -.L0f106a18: -/* f106a18: 8f181448 */ lw $t8,0x1448($t8) -/* f106a1c: 3c02800a */ lui $v0,0x800a -/* f106a20: 0018c8c0 */ sll $t9,$t8,0x3 -/* f106a24: 0338c823 */ subu $t9,$t9,$t8 -/* f106a28: 0019c880 */ sll $t9,$t9,0x2 -/* f106a2c: 0338c821 */ addu $t9,$t9,$t8 -/* f106a30: 0019c8c0 */ sll $t9,$t9,0x3 -/* f106a34: 0338c823 */ subu $t9,$t9,$t8 -/* f106a38: 0019c900 */ sll $t9,$t9,0x4 -/* f106a3c: 00591021 */ addu $v0,$v0,$t9 -/* f106a40: 8c42e4f8 */ lw $v0,-0x1b08($v0) -/* f106a44: 1040000b */ beqz $v0,.L0f106a74 -/* f106a48: 00000000 */ sll $zero,$zero,0x0 -/* f106a4c: 8c480000 */ lw $t0,0x0($v0) -/* 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) -/* f106a64: 312bff7f */ andi $t3,$t1,0xff7f -/* f106a68: a04b0003 */ sb $t3,0x3($v0) -/* f106a6c: 316c00bf */ andi $t4,$t3,0xbf -/* f106a70: a04c0003 */ sb $t4,0x3($v0) -.L0f106a74: -/* f106a74: 03e00008 */ jr $ra -/* f106a78: 00001025 */ or $v0,$zero,$zero -); +bool menudialogMainMenu(u32 operation, struct menu_dialog *dialog, struct menustackitem *stackitem) +{ + switch (operation) { + case MENUOP_100: + g_MenuStack[g_MpPlayerNum].unk934 = 0; + break; + case MENUOP_102: + if (g_MenuStack[g_MpPlayerNum].unk00 && + g_MenuStack[g_MpPlayerNum].unk00->dialog == dialog) { + g_MissionConfig.iscoop = false; + g_MissionConfig.isanti = false; + } + break; + } + + return false; +} GLOBAL_ASM( glabel func0f106a7c diff --git a/src/include/game/game_102240.h b/src/include/game/game_102240.h index cfc4b2e65..8dafefaec 100644 --- a/src/include/game/game_102240.h +++ b/src/include/game/game_102240.h @@ -32,7 +32,7 @@ s32 menudialog0010559c(u32, u32, u32 *); s32 menudialog00105c54(u32, u32, u32 *); s32 menudialog001063d4(u32, u32, u32 *); s32 menudialog001063e4(u32, u32, u32 *); -s32 menudialog001069c0(u32, u32, u32 *); +bool menudialogMainMenu(u32 operation, struct menu_dialog *dialog, struct menustackitem *stackitem); s32 menuhandler001024dc(u32 operation, struct menu_item *item, s32 *value); s32 menuhandler001024fc(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerAcceptMission(u32 operation, struct menu_item *item, s32 *value); diff --git a/src/setup/setup_0160b0.c b/src/setup/setup_0160b0.c index aebb1d546..33ca64ac6 100644 --- a/src/setup/setup_0160b0.c +++ b/src/setup/setup_0160b0.c @@ -2942,7 +2942,7 @@ struct menu_dialog menudialog_mainmenu = { MENUDIALOGTYPE_DEFAULT, 0x5674, // "Perfect Menu" menuitems_mainmenu, - menudialog001069c0, + menudialogMainMenu, 0x00000004, &menudialog_18d48, }; @@ -2952,7 +2952,7 @@ struct menu_dialog menudialog_mainmenu2 = { MENUDIALOGTYPE_DEFAULT, 0x5674, // "Perfect Menu" menuitems_mainmenu, - menudialog001069c0, + menudialogMainMenu, 0x00000004, &menudialog_18d60, };