diff --git a/src/game/data/data_01a3a0.c b/src/game/data/data_01a3a0.c index b5c8a1346..cb1083e4c 100644 --- a/src/game/data/data_01a3a0.c +++ b/src/game/data/data_01a3a0.c @@ -688,7 +688,7 @@ struct menu_dialog g_MpEditSimulant4MbMenuDialog = { struct menu_item menuitems_mpgamesetup[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, L_MPMENU(19), (u32)&mpMenuTextScenarioShortName, &menudialog_mpscenario }, // "Scenario" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU(21), 0x00000000, menuhandlerMpOpenOptions }, // "Options" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(20), (u32)&func0f17f024, &menudialog_mparena }, // "Arena" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(20), (u32)&mpMenuTextArenaName, &menudialog_mparena }, // "Arena" { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, L_MPMENU(44), 0x00000000, menuhandlerMpLock }, // "Lock" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(23), 0x00000000, &menudialog_mpweapons }, // "Weapons" diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index e49344b32..da0b75b89 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -10343,29 +10343,27 @@ struct menu_dialog menudialog_2aba0 = { }; // 2abb8 -u16 mpstages[] = { +struct mparena g_MpArenas[] = { // Stage, unlock, name - STAGE_MP_SKEDAR, 0x0000, 0x5077, - STAGE_MP_PIPES, 0x0000, 0x5078, - STAGE_MP_RAVINE, 0x2600, 0x5079, - STAGE_MP_G5BUILDING, 0x2800, 0x507a, - STAGE_MP_SEWERS, 0x2c00, 0x507b, - STAGE_MP_WAREHOUSE, 0x2500, 0x507c, - STAGE_MP_GRID, 0x2900, 0x507d, - STAGE_MP_RUINS, 0x2d00, 0x507e, - STAGE_MP_AREA52, 0x0000, 0x507f, - STAGE_MP_BASE, 0x2e00, 0x5080, - STAGE_MP_FORTRESS, 0x3000, 0x5082, - STAGE_MP_VILLA, 0x2b00, 0x5083, - STAGE_MP_CARPARK, 0x2300, 0x5084, - STAGE_MP_TEMPLE, 0x2700, 0x5085, - STAGE_MP_COMPLEX, 0x2400, 0x5086, - STAGE_MP_FELICITY, 0x2a00, 0x5087, + { STAGE_MP_SKEDAR, 0x00, L_MPMENU(119) }, + { STAGE_MP_PIPES, 0x00, L_MPMENU(120) }, + { STAGE_MP_RAVINE, 0x26, L_MPMENU(121) }, + { STAGE_MP_G5BUILDING, 0x28, L_MPMENU(122) }, + { STAGE_MP_SEWERS, 0x2c, L_MPMENU(123) }, + { STAGE_MP_WAREHOUSE, 0x25, L_MPMENU(124) }, + { STAGE_MP_GRID, 0x29, L_MPMENU(125) }, + { STAGE_MP_RUINS, 0x2d, L_MPMENU(126) }, + { STAGE_MP_AREA52, 0x00, L_MPMENU(127) }, + { STAGE_MP_BASE, 0x2e, L_MPMENU(128) }, + { STAGE_MP_FORTRESS, 0x30, L_MPMENU(130) }, + { STAGE_MP_VILLA, 0x2b, L_MPMENU(131) }, + { STAGE_MP_CARPARK, 0x23, L_MPMENU(132) }, + { STAGE_MP_TEMPLE, 0x27, L_MPMENU(133) }, + { STAGE_MP_COMPLEX, 0x24, L_MPMENU(134) }, + { STAGE_MP_FELICITY, 0x2a, L_MPMENU(135) }, + { 1, 0x00, L_MPMENU(136) }, // "Random" }; -u32 var80084bf8 = 0x00010000; -u32 var80084bfc = 0x50880000; // "Random" - // 2ac20 u32 var80084c00[] = { 0x00000000, 0x50740000, // "Dark" @@ -11218,7 +11216,7 @@ struct menu_dialog menudialog_mpscenario; struct menu_item menuitems_mpgamesetup3[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, L_MPMENU(19), (u32)&mpMenuTextScenarioShortName, &menudialog_mpscenario }, // "Scenario" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU(21), 0x00000000, menuhandlerMpOpenOptions }, // "Options" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(20), (u32)&func0f17f024, &menudialog_mparena }, // "Arena" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(20), (u32)&mpMenuTextArenaName, &menudialog_mparena }, // "Arena" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(23), 0x00000000, &menudialog_mpweapons }, // "Weapons" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(24), 0x00000000, &menudialog_mplimits }, // "Limits" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPWEAPONS(184), 0x00000000, &menudialog_mpplayerhandicaps }, // "Player Handicaps" @@ -11275,7 +11273,7 @@ struct menu_dialog menudialog_mpscenario2; struct menu_item menuitems_mpquickteamgamesetup[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, L_MPMENU(19), (u32)&mpMenuTextScenarioShortName, &menudialog_mpscenario2 }, // "Scenario" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU(21), 0x00000000, menuhandlerMpOpenOptions }, // "Options" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(20), (u32)&func0f17f024, &menudialog_mparena }, // "Arena" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(20), (u32)&mpMenuTextArenaName, &menudialog_mparena }, // "Arena" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(23), (u32)&func0f17f088, &menudialog_mpweapons2 }, // "Weapons" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU(24), 0x00000000, &menudialog_mplimits }, // "Limits" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, menuhandlerQuickTeamSeparator }, diff --git a/src/game/game_179060.c b/src/game/game_179060.c index b58b41d90..faa2e2fe8 100644 --- a/src/game/game_179060.c +++ b/src/game/game_179060.c @@ -129,12 +129,12 @@ glabel func0f179104 /* f179108: afb1001c */ sw $s1,0x1c($sp) /* f17910c: afb00018 */ sw $s0,0x18($sp) /* f179110: afb20020 */ sw $s2,0x20($sp) -/* f179114: 3c108008 */ lui $s0,%hi(mpstages) -/* f179118: 3c118008 */ lui $s1,%hi(var80084bf8) +/* f179114: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f179118: 3c118008 */ lui $s1,0x8008 /* f17911c: afbf0024 */ sw $ra,0x24($sp) /* f179120: 00009025 */ or $s2,$zero,$zero -/* f179124: 26314bf8 */ addiu $s1,$s1,%lo(var80084bf8) -/* f179128: 26104b98 */ addiu $s0,$s0,%lo(mpstages) +/* f179124: 26314bf8 */ addiu $s1,$s1,19448 +/* f179128: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f17912c: /* f17912c: 0fc67244 */ jal mpIsChallengeComplete /* f179130: 92040002 */ lbu $a0,0x2($s0) @@ -153,10 +153,10 @@ glabel func0f179104 /* f179160: 0007000d */ break 0x7 .L0f179164: /* f179164: 00008810 */ mfhi $s1 -/* f179168: 3c128008 */ lui $s2,%hi(var80084bf8) -/* f17916c: 3c108008 */ lui $s0,%hi(mpstages) -/* f179170: 26104b98 */ addiu $s0,$s0,%lo(mpstages) -/* f179174: 26524bf8 */ addiu $s2,$s2,%lo(var80084bf8) +/* f179168: 3c128008 */ lui $s2,0x8008 +/* f17916c: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f179170: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) +/* f179174: 26524bf8 */ addiu $s2,$s2,19448 /* f179178: 00001825 */ or $v1,$zero,$zero .L0f17917c: /* f17917c: 0fc67244 */ jal mpIsChallengeComplete @@ -233,8 +233,8 @@ glabel var7f1b8074 /* f17923c: 8c29805c */ lw $t1,%lo(var7f1b805c)($at) /* f179240: 01200008 */ jr $t1 /* f179244: 00000000 */ sll $zero,$zero,0x0 -/* f179248: 3c108008 */ lui $s0,%hi(mpstages) -/* f17924c: 26104b98 */ addiu $s0,$s0,%lo(mpstages) +/* f179248: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f17924c: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f179250: /* f179250: 0fc67244 */ jal mpIsChallengeComplete /* f179254: 92040002 */ lbu $a0,0x2($s0) @@ -248,8 +248,8 @@ glabel var7f1b8074 /* f179270: 00000000 */ sll $zero,$zero,0x0 /* f179274: 10000088 */ beqz $zero,.L0f179498 /* f179278: ae510000 */ sw $s1,0x0($s2) -/* f17927c: 3c108008 */ lui $s0,%hi(mpstages) -/* f179280: 26104b98 */ addiu $s0,$s0,%lo(mpstages) +/* f17927c: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f179280: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f179284: /* f179284: 0fc67244 */ jal mpIsChallengeComplete /* f179288: 92040002 */ lbu $a0,0x2($s0) @@ -270,8 +270,8 @@ glabel var7f1b8074 /* f1792c0: 00000000 */ sll $zero,$zero,0x0 /* f1792c4: 10000075 */ beqz $zero,.L0f17949c /* f1792c8: 00001025 */ or $v0,$zero,$zero -/* f1792cc: 3c108008 */ lui $s0,%hi(mpstages) -/* f1792d0: 26104b98 */ addiu $s0,$s0,%lo(mpstages) +/* f1792cc: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f1792d0: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f1792d4: /* f1792d4: 0fc67244 */ jal mpIsChallengeComplete /* f1792d8: 92040002 */ lbu $a0,0x2($s0) @@ -290,8 +290,8 @@ glabel var7f1b8074 /* f179304: 3c01800b */ lui $at,%hi(g_MpSetup+0x11) /* f179308: 10000063 */ beqz $zero,.L0f179498 /* f17930c: a038cb99 */ sb $t8,%lo(g_MpSetup+0x11)($at) -/* f179310: 3c108008 */ lui $s0,%hi(mpstages) -/* f179314: 26104b98 */ addiu $s0,$s0,%lo(mpstages) +/* f179310: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f179314: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f179318: /* f179318: 3c0e800b */ lui $t6,%hi(g_MpSetup+0x11) /* f17931c: 91cecb99 */ lbu $t6,%lo(g_MpSetup+0x11)($t6) @@ -375,8 +375,8 @@ glabel var7f1b8074 /* f179440: 27b90040 */ addiu $t9,$sp,0x40 /* f179444: 01b92821 */ addu $a1,$t5,$t9 /* f179448: 8cb80000 */ lw $t8,0x0($a1) -/* f17944c: 3c108008 */ lui $s0,%hi(mpstages) -/* f179450: 26104b98 */ addiu $s0,$s0,%lo(mpstages) +/* f17944c: 3c108008 */ lui $s0,%hi(g_MpArenas) +/* f179450: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) /* f179454: 1b00000f */ blez $t8,.L0f179494 /* f179458: 00001825 */ or $v1,$zero,$zero /* f17945c: 92040002 */ lbu $a0,0x2($s0) @@ -3163,9 +3163,9 @@ glabel func0f17be2c /* f17bea8: 27a70040 */ addiu $a3,$sp,0x40 /* f17beac: 0fc638e7 */ jal func0f18e39c /* f17beb0: afa80038 */ sw $t0,0x38($sp) -/* f17beb4: 3c038008 */ lui $v1,%hi(mpstages) +/* f17beb4: 3c038008 */ lui $v1,%hi(g_MpArenas) /* f17beb8: 8fa80038 */ lw $t0,0x38($sp) -/* f17bebc: 24634b98 */ addiu $v1,$v1,%lo(mpstages) +/* f17bebc: 24634b98 */ addiu $v1,$v1,%lo(g_MpArenas) /* f17bec0: 00001025 */ or $v0,$zero,$zero /* f17bec4: 97a40040 */ lhu $a0,0x40($sp) /* f17bec8: 24050011 */ addiu $a1,$zero,0x11 @@ -4617,7 +4617,6 @@ char *mpMenuTextChrNameForTeamSetup(struct menu_item *item) const char var7f1b8044[] = "\n"; const char var7f1b8048[] = "%s:\n"; -const char var7f1b8050[] = "\n"; GLOBAL_ASM( glabel func0f17dac4 @@ -5923,37 +5922,18 @@ s32 menuhandlerMpSaveSettings(u32 operation, struct menu_item *item, s32 *value) return 0; } -GLOBAL_ASM( -glabel func0f17f024 -/* f17f024: 27bdffe8 */ addiu $sp,$sp,-24 -/* f17f028: afa40018 */ sw $a0,0x18($sp) -/* f17f02c: 3c048008 */ lui $a0,0x8008 -/* f17f030: 3c03800b */ lui $v1,%hi(g_MpSetup+0x11) -/* f17f034: 3c028008 */ lui $v0,%hi(mpstages) -/* f17f038: afbf0014 */ sw $ra,0x14($sp) -/* f17f03c: 24424b98 */ addiu $v0,$v0,%lo(mpstages) -/* f17f040: 9063cb99 */ lbu $v1,%lo(g_MpSetup+0x11)($v1) -/* f17f044: 24844bfe */ addiu $a0,$a0,0x4bfe -/* f17f048: 844e0000 */ lh $t6,0x0($v0) -.L0f17f04c: -/* f17f04c: 546e0006 */ bnel $v1,$t6,.L0f17f068 -/* f17f050: 24420006 */ addiu $v0,$v0,0x6 -/* f17f054: 0fc5b9f1 */ jal langGet -/* f17f058: 94440004 */ lhu $a0,0x4($v0) -/* f17f05c: 10000007 */ beqz $zero,.L0f17f07c -/* f17f060: 8fbf0014 */ lw $ra,0x14($sp) -/* f17f064: 24420006 */ addiu $v0,$v0,0x6 -.L0f17f068: -/* f17f068: 5444fff8 */ bnel $v0,$a0,.L0f17f04c -/* f17f06c: 844e0000 */ lh $t6,0x0($v0) -/* f17f070: 3c027f1c */ lui $v0,%hi(var7f1b8050) -/* f17f074: 24428050 */ addiu $v0,$v0,%lo(var7f1b8050) -/* f17f078: 8fbf0014 */ lw $ra,0x14($sp) -.L0f17f07c: -/* f17f07c: 27bd0018 */ addiu $sp,$sp,0x18 -/* f17f080: 03e00008 */ jr $ra -/* f17f084: 00000000 */ sll $zero,$zero,0x0 -); +char *mpMenuTextArenaName(struct menu_item *item) +{ + s32 i; + + for (i = 0; i != ARRAYCOUNT(g_MpArenas); i++) { + if (g_MpArenas[i].stagenum == g_MpSetup.stagenum) { + return langGet(g_MpArenas[i].name); + } + } + + return "\n"; +} GLOBAL_ASM( glabel func0f17f088 diff --git a/src/game/game_19aa80.c b/src/game/game_19aa80.c index a22db5f83..ae44ab59b 100644 --- a/src/game/game_19aa80.c +++ b/src/game/game_19aa80.c @@ -1220,8 +1220,8 @@ glabel func0f19bb98 /* f19bc30: 18400018 */ blez $v0,.L0f19bc94 /* f19bc34: 00114080 */ sll $t0,$s1,0x2 /* f19bc38: 01114023 */ subu $t0,$t0,$s1 -/* f19bc3c: 3c098008 */ lui $t1,%hi(mpstages) -/* f19bc40: 25294b98 */ addiu $t1,$t1,%lo(mpstages) +/* f19bc3c: 3c098008 */ lui $t1,%hi(g_MpArenas) +/* f19bc40: 25294b98 */ addiu $t1,$t1,%lo(g_MpArenas) /* f19bc44: 00084040 */ sll $t0,$t0,0x1 /* f19bc48: 01098021 */ addu $s0,$t0,$t1 /* f19bc4c: 92ea0011 */ lbu $t2,0x11($s7) diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index f245b0882..6c4ec80d8 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -254,7 +254,7 @@ extern struct menu_dialog menudialog_2aa60; extern struct menu_dialog menudialog_2aa78; extern struct menu_dialog menudialog_2ab34; extern struct menu_dialog menudialog_2aba0; -extern u16 mpstages[]; +extern struct mparena g_MpArenas[17]; extern u32 var80084bf8; extern u32 var80084c00[]; extern u16 g_MpControlStyleLabels[4]; diff --git a/src/include/game/game_179060.h b/src/include/game/game_179060.h index 11f4af0e0..e6625262b 100644 --- a/src/include/game/game_179060.h +++ b/src/include/game/game_179060.h @@ -60,7 +60,7 @@ s32 menuhandler0017e4d4(u32, u32, u32 *); u32 func0f17eac8(void); s32 menudialog0017eb34(u32, u32, u32 *); char *mpMenuTextSavePlayerOrCopy(struct menu_item *item); -u32 func0f17f024(void); +char *mpMenuTextArenaName(struct menu_item *item); u32 func0f17f088(void); u32 func0f17f100(void); u32 func0f17f260(void); diff --git a/src/include/types.h b/src/include/types.h index 8a0b3f848..27c092457 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4420,7 +4420,7 @@ struct mpsetup { /*0x8009cb88*/ char namebuffer[12]; /*0x8009cb94*/ u32 options; /*0x8009cb98*/ u8 scenario; - /*0x8009cb99*/ u8 unk11; + /*0x8009cb99*/ u8 stagenum; /*0x8009cb9a*/ u8 timelimit; /*0x8009cb9b*/ u8 scorelimit; /*0x8009cb9c*/ u16 teamscorelimit; @@ -4473,6 +4473,12 @@ struct mpscenariooverview { u8 unk05; }; +struct mparena { + s16 stagenum; + u8 unlock; + u16 name; +}; + // Throwaway struct for passing two values to menu handlers struct numandtext { s32 num;