From e4e54c1a5422b23d00a66830293bb43e20f1d5e3 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 4 Jan 2020 15:12:24 +1000 Subject: [PATCH] Decompile menuhandler4MbDropOut --- src/game/game_015470.c | 8 ++--- src/game/game_107fb0.c | 56 ++++++++++++-------------------- src/include/game/game_107fb0.h | 2 +- src/include/setup/setup_0160b0.h | 2 +- src/setup/setup_0160b0.c | 4 +-- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/src/game/game_015470.c b/src/game/game_015470.c index 74d48b516..ea28fb7f9 100644 --- a/src/game/game_015470.c +++ b/src/game/game_015470.c @@ -7958,8 +7958,8 @@ glabel func0f01bf28 /* f01c388: 248467a0 */ addiu $a0,$a0,%lo(g_CombatSimulatorMenuDialog) /* f01c38c: 16d80008 */ bne $s6,$t8,.L0f01c3b0 /* f01c390: 24050003 */ addiu $a1,$zero,0x3 -/* f01c394: 3c048007 */ lui $a0,%hi(menudialog_smallbutperfectmenu) -/* f01c398: 24845294 */ addiu $a0,$a0,%lo(menudialog_smallbutperfectmenu) +/* f01c394: 3c048007 */ lui $a0,%hi(g_4MbMainMenu) +/* f01c398: 24845294 */ addiu $a0,$a0,%lo(g_4MbMainMenu) /* f01c39c: 2405000b */ addiu $a1,$zero,0xb /* f01c3a0: 0fc3e0cc */ jal func0f0f8330 /* f01c3a4: afa80058 */ sw $t0,0x58($sp) @@ -8613,9 +8613,9 @@ glabel func0f01bf28 /* f01cc9c: 271867a0 */ addiu $t8,$t8,%lo(g_CombatSimulatorMenuDialog) /* f01cca0: 16cd0007 */ bne $s6,$t5,.L0f01ccc0 /* f01cca4: 00402825 */ or $a1,$v0,$zero -/* f01cca8: 3c0e8007 */ lui $t6,%hi(menudialog_smallbutperfectmenu) +/* f01cca8: 3c0e8007 */ lui $t6,%hi(g_4MbMainMenu) /* f01ccac: 2405000b */ addiu $a1,$zero,0xb -/* f01ccb0: 25ce5294 */ addiu $t6,$t6,%lo(menudialog_smallbutperfectmenu) +/* f01ccb0: 25ce5294 */ addiu $t6,$t6,%lo(g_4MbMainMenu) /* f01ccb4: aea50008 */ sw $a1,0x8($s5) /* f01ccb8: 10000003 */ beqz $zero,.L0f01ccc8 /* f01ccbc: aeae000c */ sw $t6,0xc($s5) diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index 2511401fa..29ef116d0 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -1185,8 +1185,8 @@ glabel func0f108a80 /* f108b98: 3c048007 */ lui $a0,%hi(menudialog_mainmenu) /* f108b9c: 15e10007 */ bne $t7,$at,.L0f108bbc /* f108ba0: 24843a5c */ addiu $a0,$a0,%lo(menudialog_mainmenu) -/* f108ba4: 3c048007 */ lui $a0,%hi(menudialog_smallbutperfectmenu) -/* f108ba8: 24845294 */ addiu $a0,$a0,%lo(menudialog_smallbutperfectmenu) +/* f108ba4: 3c048007 */ lui $a0,%hi(g_4MbMainMenu) +/* f108ba8: 24845294 */ addiu $a0,$a0,%lo(g_4MbMainMenu) /* f108bac: 0fc3e083 */ jal func0f0f820c /* f108bb0: 2405000b */ addiu $a1,$zero,0xb /* f108bb4: 1000000b */ beqz $zero,.L0f108be4 @@ -5527,33 +5527,19 @@ glabel func0f10c970 /* f10c9bc: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel menuhandlerDropOut -/* f10c9c0: 27bdffe8 */ addiu $sp,$sp,-24 -/* f10c9c4: 24010006 */ addiu $at,$zero,0x6 -/* f10c9c8: afbf0014 */ sw $ra,0x14($sp) -/* f10c9cc: afa5001c */ sw $a1,0x1c($sp) -/* f10c9d0: 1481000d */ bne $a0,$at,.L0f10ca08 -/* f10c9d4: afa60020 */ sw $a2,0x20($sp) -/* f10c9d8: 0fc3cdb7 */ jal menuPopDialog -/* f10c9dc: 00000000 */ sll $zero,$zero,0x0 -/* f10c9e0: 0fc3cdb7 */ jal menuPopDialog -/* f10c9e4: 00000000 */ sll $zero,$zero,0x0 -/* f10c9e8: 0fc6321f */ jal func0f18c87c -/* f10c9ec: 00000000 */ sll $zero,$zero,0x0 -/* f10c9f0: 24010001 */ addiu $at,$zero,0x1 -/* f10c9f4: 14410004 */ bne $v0,$at,.L0f10ca08 -/* f10c9f8: 3c048007 */ lui $a0,%hi(menudialog_smallbutperfectmenu) -/* f10c9fc: 24845294 */ addiu $a0,$a0,%lo(menudialog_smallbutperfectmenu) -/* f10ca00: 0fc3e083 */ jal func0f0f820c -/* f10ca04: 2405000b */ addiu $a1,$zero,0xb -.L0f10ca08: -/* f10ca08: 8fbf0014 */ lw $ra,0x14($sp) -/* f10ca0c: 27bd0018 */ addiu $sp,$sp,0x18 -/* f10ca10: 00001025 */ or $v0,$zero,$zero -/* f10ca14: 03e00008 */ jr $ra -/* f10ca18: 00000000 */ sll $zero,$zero,0x0 -); +s32 menuhandler4MbDropOut(u32 operation, struct menu_item *item, s32 *value) +{ + if (operation == MENUOP_SET) { + menuPopDialog(); + menuPopDialog(); + + if (func0f18c87c() == 1) { + func0f0f820c(&g_4MbMainMenu, 11); + } + } + + return 0; +} GLOBAL_ASM( glabel menuhandler0010ca1c @@ -5569,8 +5555,8 @@ glabel menuhandler0010ca1c /* f10ca40: 3c048007 */ lui $a0,%hi(menudialog_196b0) /* f10ca44: 15c10007 */ bne $t6,$at,.L0f10ca64 /* f10ca48: 24843690 */ addiu $a0,$a0,%lo(menudialog_196b0) -/* f10ca4c: 3c048007 */ lui $a0,%hi(menudialog_smallbutperfectmenu) -/* f10ca50: 24845294 */ addiu $a0,$a0,%lo(menudialog_smallbutperfectmenu) +/* f10ca4c: 3c048007 */ lui $a0,%hi(g_4MbMainMenu) +/* f10ca50: 24845294 */ addiu $a0,$a0,%lo(g_4MbMainMenu) /* f10ca54: 0fc3e083 */ jal func0f0f820c /* f10ca58: 2405000b */ addiu $a1,$zero,0xb /* f10ca5c: 10000004 */ beqz $zero,.L0f10ca70 @@ -5650,9 +5636,9 @@ glabel func0f10cb2c /* f10cb6c: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) /* f10cb70: 1700001d */ bnez $t8,.L0f10cbe8 /* f10cb74: 24190002 */ addiu $t9,$zero,0x2 -/* f10cb78: 3c048007 */ lui $a0,%hi(menudialog_smallbutperfectmenu) +/* f10cb78: 3c048007 */ lui $a0,%hi(g_4MbMainMenu) /* f10cb7c: ac590490 */ sw $t9,0x490($v0) -/* f10cb80: 24845294 */ addiu $a0,$a0,%lo(menudialog_smallbutperfectmenu) +/* f10cb80: 24845294 */ addiu $a0,$a0,%lo(g_4MbMainMenu) /* f10cb84: 0fc3e0cc */ jal func0f0f8330 /* f10cb88: 2405000b */ addiu $a1,$zero,0xb /* f10cb8c: 10000017 */ beqz $zero,.L0f10cbec @@ -5724,8 +5710,8 @@ glabel menudialog0010cc08 /* f10cc70: 50600010 */ beqzl $v1,.L0f10ccb4 /* f10cc74: 8fbf0014 */ lw $ra,0x14($sp) /* f10cc78: 8c790000 */ lw $t9,0x0($v1) -/* f10cc7c: 3c188007 */ lui $t8,%hi(menudialog_smallbutperfectmenu) -/* f10cc80: 27185294 */ addiu $t8,$t8,%lo(menudialog_smallbutperfectmenu) +/* f10cc7c: 3c188007 */ lui $t8,%hi(g_4MbMainMenu) +/* f10cc80: 27185294 */ addiu $t8,$t8,%lo(g_4MbMainMenu) /* f10cc84: 1719000a */ bne $t8,$t9,.L0f10ccb0 /* f10cc88: 24010066 */ addiu $at,$zero,0x66 /* f10cc8c: 14810008 */ bne $a0,$at,.L0f10ccb0 diff --git a/src/include/game/game_107fb0.h b/src/include/game/game_107fb0.h index 6283a3ab4..b60dec11c 100644 --- a/src/include/game/game_107fb0.h +++ b/src/include/game/game_107fb0.h @@ -77,7 +77,7 @@ s32 menuhandler0010bc98(u32, u32, u32 *); s32 menuhandler0010ca1c(u32, u32, u32 *); s32 menuhandler0010cabc(u32, u32, u32 *); s32 menuhandler4MbAdvancedSetup(u32 operation, struct menu_item *item, s32 *value); -s32 menuhandlerDropOut(u32, u32, u32 *); +s32 menuhandler4MbDropOut(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerOpenCopyFile(u32, u32, u32 *); s32 menuhandlerOpenDeleteFile(u32, u32, u32 *); s32 menuhandlerRenameFile(u32, u32, u32 *); diff --git a/src/include/setup/setup_0160b0.h b/src/include/setup/setup_0160b0.h index 59672f340..31fcf3c38 100644 --- a/src/include/setup/setup_0160b0.h +++ b/src/include/setup/setup_0160b0.h @@ -238,7 +238,7 @@ extern struct menu_dialog menudialog_fileselect; extern struct menu_dialog menudialog_fileselect2; extern struct menu_dialog menudialog_mpquickgo2; extern struct menu_dialog menudialog_1b1bc; -extern struct menu_dialog menudialog_smallbutperfectmenu; +extern struct menu_dialog g_4MbMainMenu; extern struct menu_dialog menudialog_mpdropout; extern struct menu_dialog menudialog_1b414; extern struct menu_dialog g_4MbAdvancedSetupMenuDialog; diff --git a/src/setup/setup_0160b0.c b/src/setup/setup_0160b0.c index e873f84b8..8806466d8 100644 --- a/src/setup/setup_0160b0.c +++ b/src/setup/setup_0160b0.c @@ -3806,7 +3806,7 @@ struct menu_item menuitems_smallbutperfectmenu[] = { }; // 1b2b4 -struct menu_dialog menudialog_smallbutperfectmenu = { +struct menu_dialog g_4MbMainMenu = { MENUDIALOGTYPE_DEFAULT, 0x572e, // "Small but Perfect Menu" menuitems_smallbutperfectmenu, @@ -3818,7 +3818,7 @@ struct menu_dialog menudialog_smallbutperfectmenu = { // 1b2cc struct menu_item menuitems_mpdropout[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000050c4, 0x00000000, NULL }, // "Are you sure you want to drop out?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000050c5, 0x00000000, menuhandlerDropOut }, // "Drop Out" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000050c5, 0x00000000, menuhandler4MbDropOut }, // "Drop Out" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000050c6, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, };