diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index 55a746163..439dfc13d 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -16806,10 +16806,10 @@ glabel menudialog00184ec0 /* f184f08: 030fc021 */ addu $t8,$t8,$t7 /* f184f0c: 001940c0 */ sll $t0,$t9,0x3 /* f184f10: 8f18e4f8 */ lw $t8,-0x1b08($t8) -/* f184f14: 3c098008 */ lui $t1,%hi(var80086f98) +/* f184f14: 3c098008 */ lui $t1,%hi(g_MpOptionsDialogs) /* f184f18: 01194021 */ addu $t0,$t0,$t9 /* f184f1c: 000840c0 */ sll $t0,$t0,0x3 -/* f184f20: 25296f98 */ addiu $t1,$t1,%lo(var80086f98) +/* f184f20: 25296f98 */ addiu $t1,$t1,%lo(g_MpOptionsDialogs) /* f184f24: 01095021 */ addu $t2,$t0,$t1 /* f184f28: 8d4b0000 */ lw $t3,0x0($t2) /* f184f2c: 8f040000 */ lw $a0,0x0($t8) @@ -17132,30 +17132,14 @@ glabel menuhandler00185068 /* f18537c: 27bd0050 */ addiu $sp,$sp,0x50 ); -GLOBAL_ASM( -glabel menuhandlerMpOpenOptions -/* f185380: 27bdffe8 */ addiu $sp,$sp,-24 -/* f185384: 24010006 */ addiu $at,$zero,0x6 -/* f185388: afbf0014 */ sw $ra,0x14($sp) -/* f18538c: afa5001c */ sw $a1,0x1c($sp) -/* f185390: 1481000a */ bne $a0,$at,.L0f1853bc -/* f185394: afa60020 */ sw $a2,0x20($sp) -/* f185398: 3c0e800b */ lui $t6,0x800b -/* f18539c: 91cecb98 */ lbu $t6,-0x3468($t6) -/* f1853a0: 3c048008 */ lui $a0,0x8008 -/* f1853a4: 000e78c0 */ sll $t7,$t6,0x3 -/* f1853a8: 01ee7821 */ addu $t7,$t7,$t6 -/* f1853ac: 000f78c0 */ sll $t7,$t7,0x3 -/* f1853b0: 008f2021 */ addu $a0,$a0,$t7 -/* f1853b4: 0fc3cbd3 */ jal menuPushDialog -/* f1853b8: 8c846f98 */ lw $a0,0x6f98($a0) -.L0f1853bc: -/* f1853bc: 8fbf0014 */ lw $ra,0x14($sp) -/* f1853c0: 27bd0018 */ addiu $sp,$sp,0x18 -/* f1853c4: 00001025 */ or $v0,$zero,$zero -/* f1853c8: 03e00008 */ jr $ra -/* f1853cc: 00000000 */ sll $zero,$zero,0x0 -); +s32 menuhandlerMpOpenOptions(u32 operation, struct menu_item *item, s32 *value) +{ + if (operation == MENUOP_SET) { + menuPushDialog(g_MpOptionsDialogs[var800acb98].dialog); + } + + return 0; +} GLOBAL_ASM( glabel func0f1853d0 @@ -17451,9 +17435,9 @@ glabel func0f185774 /* f185794: 254acb88 */ addiu $t2,$t2,%lo(g_MpSetup) /* f185798: 914f0010 */ lbu $t7,0x10($t2) /* f18579c: 240b0048 */ addiu $t3,$zero,0x48 -/* f1857a0: 3c088008 */ lui $t0,%hi(var80086f98) +/* f1857a0: 3c088008 */ lui $t0,%hi(g_MpOptionsDialogs) /* f1857a4: 01eb0019 */ multu $t7,$t3 -/* f1857a8: 25086f98 */ addiu $t0,$t0,%lo(var80086f98) +/* f1857a8: 25086f98 */ addiu $t0,$t0,%lo(g_MpOptionsDialogs) /* f1857ac: 0000c012 */ mflo $t8 /* f1857b0: 0118c821 */ addu $t9,$t0,$t8 /* f1857b4: 8f2c0018 */ lw $t4,0x18($t9) diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index d0bb68760..167698b58 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -241,7 +241,7 @@ s32 menuhandlerMpMedal(u32, u32, u32 *); s32 menuhandlerMpMultipleTunes(u32, u32, u32 *); s32 menuhandlerMpNumberOfSimulants(u32, u32, u32 *); s32 menuhandlerMpOneHitKills(u32, u32, u32 *); -s32 menuhandlerMpOpenOptions(u32, u32, u32 *); +s32 menuhandlerMpOpenOptions(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerMpQuickteamOption(u32, u32, u32 *); s32 menuhandlerMpRestoreHandicapDefaults(u32, u32, u32 *); s32 menuhandlerMpRestoreScoreDefaults(u32 operation, struct menu_item *item, s32 *value); diff --git a/src/include/setup/setup_020df0.h b/src/include/setup/setup_020df0.h index b5518ce75..141870dcb 100644 --- a/src/include/setup/setup_020df0.h +++ b/src/include/setup/setup_020df0.h @@ -286,7 +286,7 @@ extern struct menu_dialog menudialog_mphilloptions; extern struct menu_dialog menudialog_mphackeroptions; extern u32 var80086e14; extern struct menu_dialog menudialog_mppopacapoptions; -extern u32 var80086f98[]; +extern struct mpoptionsdialoginfo g_MpOptionsDialogs[]; extern u16 mpscenarios[]; extern u32 var8008716c; extern u32 var800871fc; diff --git a/src/include/types.h b/src/include/types.h index 4dfecfb94..acf118bd1 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4007,4 +4007,25 @@ struct mpsetup { u32 options; }; +struct mpoptionsdialoginfo { + struct menu_dialog *dialog; + void *unk04; + void *unk08; + void *unk0c; + void *unk10; + void *unk14; + void *unk18; + void *unk1c; + void *unk20; + void *unk24; + void *unk28; + void *unk2c; + void *unk30; + void *unk34; + void *unk38; + void *unk3c; + void *unk40; + void *unk44; +}; + #endif diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index 10f9149e2..6ccf73df2 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -11546,13 +11546,13 @@ struct menu_dialog menudialog_mppopacapoptions = { }; // 2cfb8 -u32 var80086f98[] = { - (u32) &menudialog_mpcombatoptions, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - (u32) &menudialog_mpbriefcaseoptions, (u32)&func0f17ff80, (u32)&func0f17ffdc, (u32)&func0f1802bc, (u32)&func0f1802e0, (u32)&func0f180600, (u32)&func0f18079c, (u32)&func0f180960, (u32)&func0f180a68, (u32)&func0f180b1c, (u32)&func0f180c48, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - (u32) &menudialog_mphackeroptions, (u32)&func0f182b90, (u32)&func0f182b9c, (u32)&func0f182e98, (u32)&func0f1830a4, (u32)&func0f183380, (u32)&func0f1839a8, (u32)&func0f183bb4, (u32)&func0f183d10, (u32)&func0f184218, (u32)&func0f184344, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - (u32) &menudialog_mppopacapoptions, (u32)&func0f1844ec, 0x00000000, (u32)&func0f18450c, (u32)&func0f1848c0, 0x00000000, (u32)&func0f184a18, (u32)&func0f184c18, (u32)&func0f184d84, (u32)&func0f184d8c, (u32)&func0f18452c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - (u32) &menudialog_mphilloptions, (u32)&func0f181b70, 0x00000000, (u32)&func0f181bfc, (u32)&func0f181cf0, 0x00000000, (u32)&func0f182670, (u32)&func0f182908, (u32)&func0f1829e4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, (u32)&func0f182ae8, (u32)&func0f182b08, 0x00000000, (u32)&func0f181b24, (u32)&func0f181b48, - (u32) &menudialog_mpcaptureoptions, (u32)&func0f180c98, (u32)&func0f180e1c, (u32)&func0f180e34, (u32)&func0f180e24, (u32)&func0f180e2c, 0x00000000, (u32)&func0f1813d8, (u32)&func0f1814bc, (u32)&func0f181608, (u32)&func0f181764, (u32)&func0f18189c, (u32)&func0f181944, (u32)&func0f18194c, (u32)&func0f1819a4, 0x00000000, 0x00000000, 0x00000000, +struct mpoptionsdialoginfo g_MpOptionsDialogs[] = { + { &menudialog_mpcombatoptions, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mpbriefcaseoptions, func0f17ff80, func0f17ffdc, func0f1802bc, func0f1802e0, func0f180600, func0f18079c, func0f180960, func0f180a68, func0f180b1c, func0f180c48, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mphackeroptions, func0f182b90, func0f182b9c, func0f182e98, func0f1830a4, func0f183380, func0f1839a8, func0f183bb4, func0f183d10, func0f184218, func0f184344, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mppopacapoptions, func0f1844ec, NULL, func0f18450c, func0f1848c0, NULL, func0f184a18, func0f184c18, func0f184d84, func0f184d8c, func0f18452c, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mphilloptions, func0f181b70, NULL, func0f181bfc, func0f181cf0, NULL, func0f182670, func0f182908, func0f1829e4, NULL, NULL, NULL, NULL, func0f182ae8, func0f182b08, NULL, func0f181b24, func0f181b48 }, + { &menudialog_mpcaptureoptions, func0f180c98, func0f180e1c, func0f180e34, func0f180e24, func0f180e2c, NULL, func0f1813d8, func0f1814bc, func0f181608, func0f181764, func0f18189c, func0f181944, func0f18194c, func0f1819a4, NULL, NULL, NULL }, }; // 2d168