diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index 78ce4ecc3..f4190f466 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -1372,46 +1372,18 @@ s32 menuhandler00108ecc(u32 operation, struct menu_item *item, s32 *value) return 0; } -GLOBAL_ASM( -glabel menuhandler00108f08 -/* f108f08: 27bdffe8 */ addiu $sp,$sp,-24 -/* f108f0c: 24010006 */ addiu $at,$zero,0x6 -/* f108f10: afbf0014 */ sw $ra,0x14($sp) -/* f108f14: afa5001c */ sw $a1,0x1c($sp) -/* f108f18: 14810018 */ bne $a0,$at,.L0f108f7c -/* f108f1c: afa60020 */ sw $a2,0x20($sp) -/* f108f20: 3c0e8007 */ lui $t6,0x8007 -/* f108f24: 8dce1448 */ lw $t6,0x1448($t6) -/* f108f28: 3c02800a */ lui $v0,0x800a -/* f108f2c: 000e78c0 */ sll $t7,$t6,0x3 -/* f108f30: 01ee7823 */ subu $t7,$t7,$t6 -/* f108f34: 000f7880 */ sll $t7,$t7,0x2 -/* f108f38: 01ee7821 */ addu $t7,$t7,$t6 -/* f108f3c: 000f78c0 */ sll $t7,$t7,0x3 -/* f108f40: 01ee7823 */ subu $t7,$t7,$t6 -/* f108f44: 000f7900 */ sll $t7,$t7,0x4 -/* f108f48: 004f1021 */ addu $v0,$v0,$t7 -/* f108f4c: 9042ee42 */ lbu $v0,-0x11be($v0) -/* f108f50: 28410064 */ slti $at,$v0,0x64 -/* f108f54: 10200007 */ beqz $at,.L0f108f74 -/* f108f58: 24010001 */ addiu $at,$zero,0x1 -/* f108f5c: 10410005 */ beq $v0,$at,.L0f108f74 -/* f108f60: 3c048007 */ lui $a0,%hi(menudialog_saveelsewhere) -/* f108f64: 0fc3cdc1 */ jal func0f0f3704 -/* f108f68: 248445cc */ addiu $a0,$a0,%lo(menudialog_saveelsewhere) -/* f108f6c: 10000004 */ beqz $zero,.L0f108f80 -/* f108f70: 8fbf0014 */ lw $ra,0x14($sp) -.L0f108f74: -/* f108f74: 0fc3cdb7 */ jal menuPopDialog -/* f108f78: 00000000 */ sll $zero,$zero,0x0 -.L0f108f7c: -/* f108f7c: 8fbf0014 */ lw $ra,0x14($sp) -.L0f108f80: -/* f108f80: 27bd0018 */ addiu $sp,$sp,0x18 -/* f108f84: 00001025 */ or $v0,$zero,$zero -/* f108f88: 03e00008 */ jr $ra -/* f108f8c: 00000000 */ sll $zero,$zero,0x0 -); +s32 menuhandler00108f08(u32 operation, struct menu_item *item, s32 *value) +{ + if (operation == MENUOP_SET) { + if (g_MenuStack[g_MpPlayerNum].unk94a < 100 && g_MenuStack[g_MpPlayerNum].unk94a != 1) { + func0f0f3704(&g_SaveElsewhereMenuDialog); + } else { + menuPopDialog(); + } + } + + return 0; +} GLOBAL_ASM( glabel func0f108f90 diff --git a/src/include/game/game_107fb0.h b/src/include/game/game_107fb0.h index 97d2124f2..52983eb9e 100644 --- a/src/include/game/game_107fb0.h +++ b/src/include/game/game_107fb0.h @@ -65,7 +65,7 @@ s32 menuhandlerPakErrorTryAgain(u32 operation, struct menu_item *item, s32 *valu s32 menuhandlerPakCancelSave2(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerAcknowledgePakFileLost(u32 operation, struct menu_item *item, s32 *value); s32 menuhandler00108ecc(u32 operation, struct menu_item *item, s32 *value); -s32 menuhandler00108f08(u32, u32, u32 *); +s32 menuhandler00108f08(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerPakRenameDuplicateSave(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerPakCancelDuplicateSave(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerPakCancelSave(u32 operation, struct menu_item *item, s32 *value); diff --git a/src/include/setup/setup_0160b0.h b/src/include/setup/setup_0160b0.h index 31fcf3c38..f36f11010 100644 --- a/src/include/setup/setup_0160b0.h +++ b/src/include/setup/setup_0160b0.h @@ -218,7 +218,7 @@ extern u16 filetypenames[]; extern struct menu_dialog menudialog_filesaved; extern struct menu_dialog menudialog_saveerror; extern struct menu_dialog menudialog_savelost; -extern struct menu_dialog menudialog_saveelsewhere; +extern struct menu_dialog g_SaveElsewhereMenuDialog; extern struct menu_dialog menudialog_1a654; extern u32 var8007464c; extern struct menu_dialog menudialog_changefilename; diff --git a/src/include/types.h b/src/include/types.h index e5756c579..e577f97b2 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3582,7 +3582,12 @@ struct menustackitem { /*0x940*/ u32 unk940; /*0x944*/ u8 unk944_00 : 1; /*0x944*/ u8 unk944_01 : 7; - /*0x948*/ u32 unk948; + /*0x945*/ u8 unk945; + /*0x946*/ u8 unk946; + /*0x947*/ u8 unk947; + /*0x948*/ u8 unk948; + /*0x949*/ u8 unk949; + /*0x94a*/ u8 unk94a; /*0x94c*/ u32 unk94c; /*0x950*/ u32 unk950; /*0x954*/ u32 unk954; diff --git a/src/setup/setup_0160b0.c b/src/setup/setup_0160b0.c index 6286d3025..6e23965be 100644 --- a/src/setup/setup_0160b0.c +++ b/src/setup/setup_0160b0.c @@ -3340,7 +3340,7 @@ struct menu_item menuitems_saveelsewhere[] = { }; // 1a5ec -struct menu_dialog menudialog_saveelsewhere = { +struct menu_dialog g_SaveElsewhereMenuDialog = { MENUDIALOGTYPE_DANGER, 0x5767, // "Save" menuitems_saveelsewhere,