#include #include "constants.h" #include "game/camdraw.h" #include "game/game_0b3350.h" #include "game/game_0d4690.h" #include "game/game_0f09f0.h" #include "game/game_102240.h" #include "game/game_107fb0.h" #include "game/game_1531a0.h" #include "game/music.h" #include "game/mplayer/ingame.h" #include "game/mplayer/setup.h" #include "game/mplayer/scenarios.h" #include "game/game_19aa80.h" #include "game/lang.h" #include "game/mplayer/mplayer.h" #include "game/options.h" #include "bss.h" #include "lib/snd.h" #include "lib/lib_09a80.h" #include "lib/rng.h" #include "data.h" #include "types.h" struct menuitem g_MpCharacterMenuItems[]; struct menudialog g_MpAddSimulantMenuDialog; struct menudialog g_MpChangeSimulantMenuDialog; struct menudialog g_MpChangeTeamNameMenuDialog; struct menudialog g_MpEditSimulantMenuDialog; struct menudialog g_MpSaveSetupNameMenuDialog; s32 menuhandlerMpDropOut(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); menuPopDialog(); } return 0; } char *mpGetCurrentPlayerName(struct menuitem *item) { return g_MpPlayers[g_MpPlayerNum].base.name; } s32 menuhandlerMpTeamsLabel(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKDISABLED) { if ((g_MpSetup.options & MPOPTION_TEAMSENABLED) == 0) { return true; } } return 0; } struct menuitem g_MpDropOutMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_196, 0x00000000, NULL }, // "Are you sure you want to drop out?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_197, 0x00000000, menuhandlerMpDropOut }, // "Drop Out" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_198, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpDropOutMenuDialog = { MENUDIALOGTYPE_DANGER, L_MPMENU_195, // "Drop Out" g_MpDropOutMenuItems, NULL, 0x00000000, NULL, }; struct mparena g_MpArenas[] = { // Stage, unlock, name { STAGE_MP_SKEDAR, 0, L_MPMENU_119 }, { STAGE_MP_PIPES, 0, L_MPMENU_120 }, { STAGE_MP_RAVINE, MPFEATURE_STAGE_RAVINE, L_MPMENU_121 }, { STAGE_MP_G5BUILDING, MPFEATURE_STAGE_G5BUILDING, L_MPMENU_122 }, { STAGE_MP_SEWERS, MPFEATURE_STAGE_SEWERS, L_MPMENU_123 }, { STAGE_MP_WAREHOUSE, MPFEATURE_STAGE_WAREHOUSE, L_MPMENU_124 }, { STAGE_MP_GRID, MPFEATURE_STAGE_GRID, L_MPMENU_125 }, { STAGE_MP_RUINS, MPFEATURE_STAGE_RUINS, L_MPMENU_126 }, { STAGE_MP_AREA52, 0, L_MPMENU_127 }, { STAGE_MP_BASE, MPFEATURE_STAGE_BASE, L_MPMENU_128 }, { STAGE_MP_FORTRESS, MPFEATURE_STAGE_FORTRESS, L_MPMENU_130 }, { STAGE_MP_VILLA, MPFEATURE_STAGE_VILLA, L_MPMENU_131 }, { STAGE_MP_CARPARK, MPFEATURE_STAGE_CARPARK, L_MPMENU_132 }, { STAGE_MP_TEMPLE, MPFEATURE_STAGE_TEMPLE, L_MPMENU_133 }, { STAGE_MP_COMPLEX, MPFEATURE_STAGE_COMPLEX, L_MPMENU_134 }, { STAGE_MP_FELICITY, MPFEATURE_STAGE_FELICITY, L_MPMENU_135 }, { 1, 0, L_MPMENU_136 }, // "Random" }; s32 mpGetNumStages(void) { return 17; } s16 mpChooseRandomStage(void) { s32 i; s32 numchallengescomplete = 0; s32 index; for (i = 0; i < 16; i++) { if (mpIsFeatureUnlocked(g_MpArenas[i].requirefeature)) { numchallengescomplete++; } } index = random() % numchallengescomplete; for (i = 0; i < 16; i++) { if (mpIsFeatureUnlocked(g_MpArenas[i].requirefeature)) { if (index == 0) { return g_MpArenas[i].stagenum; } index--; } } return STAGE_MP_SKEDAR; } u32 var80084c00[] = { 0x00000000, 0x50740000, // "Dark" 0x0000000d, 0x50750000, // "Classic" 0x00000010, 0x50760000, // "Custom" }; GLOBAL_ASM( glabel menuhandler001791c8 .late_rodata glabel var7f1b805c .word menuhandler001791c8+0x80 # f179248 glabel var7f1b8060 .word menuhandler001791c8+0x194 # f17935c glabel var7f1b8064 .word menuhandler001791c8+0xb4 # f17927c glabel var7f1b8068 .word menuhandler001791c8+0x1dc # f1793a4 glabel var7f1b806c .word menuhandler001791c8+0x234 # f1793fc glabel var7f1b8070 .word menuhandler001791c8+0x104 # f1792cc glabel var7f1b8074 .word menuhandler001791c8+0x148 # f179310 .text /* f1791c8: 27bdffa8 */ addiu $sp,$sp,-88 /* f1791cc: 3c0f8008 */ lui $t7,%hi(var80084c00) /* f1791d0: afbf0024 */ sw $ra,0x24($sp) /* f1791d4: afb20020 */ sw $s2,0x20($sp) /* f1791d8: afb1001c */ sw $s1,0x1c($sp) /* f1791dc: afb00018 */ sw $s0,0x18($sp) /* f1791e0: afa5005c */ sw $a1,0x5c($sp) /* f1791e4: 25ef4c00 */ addiu $t7,$t7,%lo(var80084c00) /* f1791e8: 8de10000 */ lw $at,0x0($t7) /* f1791ec: 27ae0040 */ addiu $t6,$sp,0x40 /* f1791f0: 8de80004 */ lw $t0,0x4($t7) /* f1791f4: adc10000 */ sw $at,0x0($t6) /* f1791f8: 8de10008 */ lw $at,0x8($t7) /* f1791fc: adc80004 */ sw $t0,0x4($t6) /* f179200: 8de8000c */ lw $t0,0xc($t7) /* f179204: adc10008 */ sw $at,0x8($t6) /* f179208: 8de10010 */ lw $at,0x10($t7) /* f17920c: adc8000c */ sw $t0,0xc($t6) /* f179210: 8de80014 */ lw $t0,0x14($t7) /* f179214: 2489ffff */ addiu $t1,$a0,-1 /* f179218: adc10010 */ sw $at,0x10($t6) /* f17921c: 2d210007 */ sltiu $at,$t1,0x7 /* f179220: 00c09025 */ or $s2,$a2,$zero /* f179224: 00008825 */ or $s1,$zero,$zero /* f179228: 1020009b */ beqz $at,.L0f179498 /* f17922c: adc80014 */ sw $t0,0x14($t6) /* f179230: 00094880 */ sll $t1,$t1,0x2 /* f179234: 3c017f1c */ lui $at,%hi(var7f1b805c) /* f179238: 00290821 */ addu $at,$at,$t1 /* f17923c: 8c29805c */ lw $t1,%lo(var7f1b805c)($at) /* f179240: 01200008 */ jr $t1 /* f179244: 00000000 */ nop /* f179248: 3c108008 */ lui $s0,%hi(g_MpArenas) /* f17924c: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f179250: /* f179250: 0fc67244 */ jal mpIsFeatureUnlocked /* f179254: 92040002 */ lbu $a0,0x2($s0) /* f179258: 10400002 */ beqz $v0,.L0f179264 /* f17925c: 26100006 */ addiu $s0,$s0,0x6 /* f179260: 26310001 */ addiu $s1,$s1,0x1 .L0f179264: /* f179264: 3c0a8008 */ lui $t2,%hi(g_MpArenas+0x66) /* f179268: 254a4bfe */ addiu $t2,$t2,%lo(g_MpArenas+0x66) /* f17926c: 160afff8 */ bne $s0,$t2,.L0f179250 /* f179270: 00000000 */ nop /* f179274: 10000088 */ b .L0f179498 /* f179278: ae510000 */ sw $s1,0x0($s2) /* f17927c: 3c108008 */ lui $s0,%hi(g_MpArenas) /* f179280: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f179284: /* f179284: 0fc67244 */ jal mpIsFeatureUnlocked /* f179288: 92040002 */ lbu $a0,0x2($s0) /* f17928c: 10400009 */ beqz $v0,.L0f1792b4 /* f179290: 3c0c8008 */ lui $t4,%hi(g_MpArenas+0x66) /* f179294: 8e4b0000 */ lw $t3,0x0($s2) /* f179298: 562b0006 */ bnel $s1,$t3,.L0f1792b4 /* f17929c: 26310001 */ addiu $s1,$s1,0x1 /* f1792a0: 0fc5b9f1 */ jal langGet /* f1792a4: 96040004 */ lhu $a0,0x4($s0) /* f1792a8: 1000007d */ b .L0f1794a0 /* f1792ac: 8fbf0024 */ lw $ra,0x24($sp) /* f1792b0: 26310001 */ addiu $s1,$s1,0x1 .L0f1792b4: /* f1792b4: 26100006 */ addiu $s0,$s0,0x6 /* f1792b8: 258c4bfe */ addiu $t4,$t4,%lo(g_MpArenas+0x66) /* f1792bc: 160cfff1 */ bne $s0,$t4,.L0f179284 /* f1792c0: 00000000 */ nop /* f1792c4: 10000075 */ b .L0f17949c /* f1792c8: 00001025 */ or $v0,$zero,$zero /* f1792cc: 3c108008 */ lui $s0,%hi(g_MpArenas) /* f1792d0: 26104b98 */ addiu $s0,$s0,%lo(g_MpArenas) .L0f1792d4: /* f1792d4: 0fc67244 */ jal mpIsFeatureUnlocked /* f1792d8: 92040002 */ lbu $a0,0x2($s0) /* f1792dc: 10400004 */ beqz $v0,.L0f1792f0 /* f1792e0: 3c198008 */ lui $t9,%hi(g_MpArenas+0x66) /* f1792e4: 8e4d0000 */ lw $t5,0x0($s2) /* f1792e8: 122d0005 */ beq $s1,$t5,.L0f179300 /* f1792ec: 26310001 */ addiu $s1,$s1,0x1 .L0f1792f0: /* f1792f0: 26100006 */ addiu $s0,$s0,0x6 /* f1792f4: 27394bfe */ addiu $t9,$t9,%lo(g_MpArenas+0x66) /* f1792f8: 1619fff6 */ bne $s0,$t9,.L0f1792d4 /* f1792fc: 00000000 */ nop .L0f179300: /* f179300: 86180000 */ lh $t8,0x0($s0) /* f179304: 3c01800b */ lui $at,%hi(g_MpSetup+0x11) /* f179308: 10000063 */ b .L0f179498 /* f17930c: a038cb99 */ sb $t8,%lo(g_MpSetup+0x11)($at) /* 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) /* f179320: 860f0000 */ lh $t7,0x0($s0) /* f179324: 15cf0002 */ bne $t6,$t7,.L0f179330 /* f179328: 00000000 */ nop /* f17932c: ae510000 */ sw $s1,0x0($s2) .L0f179330: /* f179330: 0fc67244 */ jal mpIsFeatureUnlocked /* f179334: 92040002 */ lbu $a0,0x2($s0) /* f179338: 10400002 */ beqz $v0,.L0f179344 /* f17933c: 26100006 */ addiu $s0,$s0,0x6 /* f179340: 26310001 */ addiu $s1,$s1,0x1 .L0f179344: /* f179344: 3c088008 */ lui $t0,%hi(g_MpArenas+0x66) /* f179348: 25084bfe */ addiu $t0,$t0,%lo(g_MpArenas+0x66) /* f17934c: 1608fff2 */ bne $s0,$t0,.L0f179318 /* f179350: 00000000 */ nop /* f179354: 10000051 */ b .L0f17949c /* f179358: 00001025 */ or $v0,$zero,$zero /* f17935c: 24090003 */ addiu $t1,$zero,0x3 /* f179360: ae490000 */ sw $t1,0x0($s2) /* f179364: 0fc67244 */ jal mpIsFeatureUnlocked /* f179368: 24040024 */ addiu $a0,$zero,0x24 /* f17936c: 5440004b */ bnezl $v0,.L0f17949c /* f179370: 00001025 */ or $v0,$zero,$zero /* f179374: 0fc67244 */ jal mpIsFeatureUnlocked /* f179378: 24040027 */ addiu $a0,$zero,0x27 /* f17937c: 54400047 */ bnezl $v0,.L0f17949c /* f179380: 00001025 */ or $v0,$zero,$zero /* f179384: 0fc67244 */ jal mpIsFeatureUnlocked /* f179388: 2404002a */ addiu $a0,$zero,0x2a /* f17938c: 54400043 */ bnezl $v0,.L0f17949c /* f179390: 00001025 */ or $v0,$zero,$zero /* f179394: 8e4a0000 */ lw $t2,0x0($s2) /* f179398: 254bffff */ addiu $t3,$t2,-1 /* f17939c: 1000003e */ b .L0f179498 /* f1793a0: ae4b0000 */ sw $t3,0x0($s2) /* f1793a4: 8e510000 */ lw $s1,0x0($s2) /* f1793a8: 0fc67244 */ jal mpIsFeatureUnlocked /* f1793ac: 24040024 */ addiu $a0,$zero,0x24 /* f1793b0: 5440000d */ bnezl $v0,.L0f1793e8 /* f1793b4: 001160c0 */ sll $t4,$s1,0x3 /* f1793b8: 0fc67244 */ jal mpIsFeatureUnlocked /* f1793bc: 24040027 */ addiu $a0,$zero,0x27 /* f1793c0: 54400009 */ bnezl $v0,.L0f1793e8 /* f1793c4: 001160c0 */ sll $t4,$s1,0x3 /* f1793c8: 0fc67244 */ jal mpIsFeatureUnlocked /* f1793cc: 2404002a */ addiu $a0,$zero,0x2a /* f1793d0: 54400005 */ bnezl $v0,.L0f1793e8 /* f1793d4: 001160c0 */ sll $t4,$s1,0x3 /* f1793d8: 5a200003 */ blezl $s1,.L0f1793e8 /* f1793dc: 001160c0 */ sll $t4,$s1,0x3 /* f1793e0: 26310001 */ addiu $s1,$s1,0x1 /* f1793e4: 001160c0 */ sll $t4,$s1,0x3 .L0f1793e8: /* f1793e8: 03ac2021 */ addu $a0,$sp,$t4 /* f1793ec: 0fc5b9f1 */ jal langGet /* f1793f0: 94840044 */ lhu $a0,0x44($a0) /* f1793f4: 1000002a */ b .L0f1794a0 /* f1793f8: 8fbf0024 */ lw $ra,0x24($sp) /* f1793fc: 8e500000 */ lw $s0,0x0($s2) /* f179400: 0fc67244 */ jal mpIsFeatureUnlocked /* f179404: 24040024 */ addiu $a0,$zero,0x24 /* f179408: 5440000d */ bnezl $v0,.L0f179440 /* f17940c: 001068c0 */ sll $t5,$s0,0x3 /* f179410: 0fc67244 */ jal mpIsFeatureUnlocked /* f179414: 24040027 */ addiu $a0,$zero,0x27 /* f179418: 54400009 */ bnezl $v0,.L0f179440 /* f17941c: 001068c0 */ sll $t5,$s0,0x3 /* f179420: 0fc67244 */ jal mpIsFeatureUnlocked /* f179424: 2404002a */ addiu $a0,$zero,0x2a /* f179428: 14400004 */ bnez $v0,.L0f17943c /* f17942c: 24010001 */ addiu $at,$zero,0x1 /* f179430: 56010003 */ bnel $s0,$at,.L0f179440 /* f179434: 001068c0 */ sll $t5,$s0,0x3 /* f179438: 26100001 */ addiu $s0,$s0,0x1 .L0f17943c: /* f17943c: 001068c0 */ sll $t5,$s0,0x3 .L0f179440: /* f179440: 27b90040 */ addiu $t9,$sp,0x40 /* f179444: 01b92821 */ addu $a1,$t5,$t9 /* f179448: 8cb80000 */ lw $t8,0x0($a1) /* 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) .L0f179460: /* f179460: afa3003c */ sw $v1,0x3c($sp) /* f179464: 0fc67244 */ jal mpIsFeatureUnlocked /* f179468: afa5002c */ sw $a1,0x2c($sp) /* f17946c: 8fa3003c */ lw $v1,0x3c($sp) /* f179470: 10400002 */ beqz $v0,.L0f17947c /* f179474: 8fa5002c */ lw $a1,0x2c($sp) /* f179478: 26310001 */ addiu $s1,$s1,0x1 .L0f17947c: /* f17947c: 8cae0000 */ lw $t6,0x0($a1) /* f179480: 24630001 */ addiu $v1,$v1,0x1 /* f179484: 26100006 */ addiu $s0,$s0,0x6 /* f179488: 006e082a */ slt $at,$v1,$t6 /* f17948c: 5420fff4 */ bnezl $at,.L0f179460 /* f179490: 92040002 */ lbu $a0,0x2($s0) .L0f179494: /* f179494: ae510008 */ sw $s1,0x8($s2) .L0f179498: /* f179498: 00001025 */ or $v0,$zero,$zero .L0f17949c: /* f17949c: 8fbf0024 */ lw $ra,0x24($sp) .L0f1794a0: /* f1794a0: 8fb00018 */ lw $s0,0x18($sp) /* f1794a4: 8fb1001c */ lw $s1,0x1c($sp) /* f1794a8: 8fb20020 */ lw $s2,0x20($sp) /* f1794ac: 03e00008 */ jr $ra /* f1794b0: 27bd0058 */ addiu $sp,$sp,0x58 ); s32 menuhandlerMpControlStyle(s32 operation, struct menuitem *item, union handlerdata *data) { u16 labels[] = { L_OPTIONS_239, // "1.1" L_OPTIONS_240, // "1.2" L_OPTIONS_241, // "1.3" L_OPTIONS_242, // "1.4" }; switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = 4; break; case MENUOP_GETOPTIONTEXT: return (s32) langGet(labels[data->dropdown.value]); case MENUOP_SET: optionsSetControlMode(g_MpPlayerNum, data->dropdown.value); break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = optionsGetControlMode(g_MpPlayerNum); break; } return 0; } s32 menuhandlerMpWeaponSlot(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = mpGetNumWeaponOptions(); break; case MENUOP_GETOPTIONTEXT: return (s32) mpGetWeaponLabel(data->dropdown.value); case MENUOP_SET: mpSetWeaponSlot(item->param3, data->dropdown.value); break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = mpGetWeaponSlot(item->param3); } return 0; } char *mpMenuTextWeaponNameForSlot(struct menuitem *item) { return mpGetWeaponLabel(mpGetWeaponSlot(item->param)); } s32 menuhandlerMpWeaponSetDropdown(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = func0f189058(item->param); break; case MENUOP_GETOPTIONTEXT: return (s32) mpGetWeaponSetName(data->dropdown.value); case MENUOP_SET: mpSetWeaponSet(data->dropdown.value); break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = mpGetWeaponSet(); break; } return 0; } s32 menuhandlerMpControlCheckbox(s32 operation, struct menuitem *item, union handlerdata *data) { s32 val; switch (operation) { case MENUOP_GET: if (item->param3 == OPTION_FORWARDPITCH) { if ((g_MpPlayers[g_MpPlayerNum].options & item->param3) == 0) { return true; } return false; } if ((g_MpPlayers[g_MpPlayerNum].options & item->param3) == 0) { return false; } return true; case MENUOP_SET: val = OPTION_FORWARDPITCH; if (item->param3 == val) { if (data->checkbox.value == 0) { data->checkbox.value = val; } else { data->checkbox.value = 0; } } g_MpPlayers[g_MpPlayerNum].options &= ~item->param3; if (data->checkbox.value) { g_MpPlayers[g_MpPlayerNum].options |= item->param3; } } return 0; } s32 menuhandlerMpAimControl(s32 operation, struct menuitem *item, union handlerdata *data) { u16 labels[] = { #if PAL L_MPWEAPONS_276, // "Hold" L_MPWEAPONS_277, // "Toggle" #else L_MPMENU_213, // "Hold" L_MPMENU_214, // "Toggle" #endif }; switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = 2; break; case MENUOP_GETOPTIONTEXT: return (s32) langGet(labels[data->dropdown.value]); case MENUOP_SET: optionsSetAimControl(g_MpPlayerNum, data->dropdown.value); break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = optionsGetAimControl(g_MpPlayerNum); break; } return 0; } s32 menuhandlerMpCheckboxOption(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GET: if ((g_MpSetup.options & item->param3) == 0) { return false; } return true; case MENUOP_SET: g_MpSetup.options = g_MpSetup.options & ~item->param3; if (data->checkbox.value) { g_MpSetup.options = g_MpSetup.options | item->param3; } } return 0; } s32 menuhandlerMpTeamsEnabled(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKDISABLED) { if (g_MpSetup.scenario == MPSCENARIO_CAPTURETHECASE || g_MpSetup.scenario == MPSCENARIO_KINGOFTHEHILL) { return true; } return false; } return menuhandlerMpCheckboxOption(operation, item, data); } s32 menuhandlerMpDisplayOptionCheckbox(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GET: if ((g_MpPlayers[g_MpPlayerNum].base.displayoptions & item->param3) == 0) { return false; } return true; case MENUOP_SET: g_MpPlayers[g_MpPlayerNum].base.displayoptions &= ~(u8)item->param3; if (data->checkbox.value) { g_MpPlayers[g_MpPlayerNum].base.displayoptions |= (u8)item->param3; } break; } return 0; } s32 menuhandlerMpConfirmSaveChr(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); filemgrPushSelectLocationDialog(6, 2); } return 0; } s32 menuhandlerMpPlayerName(s32 operation, struct menuitem *item, union handlerdata *data) { char *name = data->keyboard.string; switch (operation) { case MENUOP_GETTEXT: strcpy(name, g_MpSetup.name); break; case MENUOP_SETTEXT: strcpy(g_MpSetup.name, name); break; case MENUOP_SET: filemgrPushSelectLocationDialog(7, 1); break; } return 0; } s32 menuhandlerMpSaveSetupOverwrite(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); func0f1094e4(&g_MpSetup.unk20, 4, NULL); } return 0; } s32 menuhandlerMpSaveSetupCopy(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); menuPushDialog(&g_MpSaveSetupNameMenuDialog); } return 0; } #if VERSION >= VERSION_NTSC_1_0 char *mpMenuTextSetupName(struct menuitem *item) { return g_MpSetup.name; } #endif s32 func0f179b68(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETSLIDER: data->slider.value = g_MpPlayers[g_MpPlayerNum].base.unk18; break; case MENUOP_SET: g_MpPlayers[g_MpPlayerNum].base.unk18 = (u8) data->slider.value; break; case MENUOP_GETSLIDERLABEL: sprintf(data->slider.label, "%d%%\n", data->slider.value + 20); break; } return 0; } s32 func0f179c14(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETSLIDER: data->slider.value = g_MpPlayers[g_MpPlayerNum].base.unk1a; break; case MENUOP_SET: g_MpPlayers[g_MpPlayerNum].base.unk1a = (u8) data->slider.value; break; case MENUOP_GETSLIDERLABEL: sprintf(data->slider.label, "%d%%\n", data->slider.value + 20); break; } return 0; } s32 func0f179cc0(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETSLIDER: data->slider.value = g_MpPlayers[g_MpPlayerNum].base.unk1c; break; case MENUOP_SET: g_MpPlayers[g_MpPlayerNum].base.unk1c = data->slider.value; break; case MENUOP_GETSLIDERLABEL: sprintf(data->slider.label, "%d%%\n", data->slider.value + 25); break; } return 0; } s32 func0f179d6c(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { func0f187fbc(g_MpPlayerNum); } return 0; } #if VERSION >= VERSION_PAL_FINAL GLOBAL_ASM( glabel func0f179da4 .late_rodata glabel var7f1b8078 .word func0f179da4+0x34 # f179dd8 glabel var7f1b807c .word func0f179da4+0x270 # f17a014 glabel var7f1b8080 .word func0f179da4+0x270 # f17a014 glabel var7f1b8084 .word func0f179da4+0x270 # f17a014 glabel var7f1b8088 .word func0f179da4+0x270 # f17a014 glabel var7f1b808c .word func0f179da4+0x168 # f179f0c glabel var7f1b8090 .word func0f179da4+0x160 # f179f04 glabel var7f1b8094 .word func0f179da4+0x270 # f17a014 glabel var7f1b8098 .word func0f179da4+0x270 # f17a014 glabel var7f1b809c .word func0f179da4+0x270 # f17a014 glabel var7f1b80a0 .word func0f179da4+0x48 # f179dec glabel var7f1b80a4 .word func0f179da4+0x270 # f17a014 glabel var7f1b80a8 .word func0f179da4+0x128 # f179ecc glabel var7f1b80ac .word func0f179da4+0x270 # f17a014 glabel var7f1b80b0 .word func0f179da4+0x168 # f179f0c glabel var7f1b80b4 .word func0f179da4+0x270 # f17a014 glabel var7f1b80b8 .word func0f179da4+0x270 # f17a014 glabel var7f1b80bc .word func0f179da4+0x270 # f17a014 glabel var7f1b80c0 .word func0f179da4+0x270 # f17a014 glabel var7f1b80c4 .word func0f179da4+0x270 # f17a014 glabel var7f1b80c8 .word func0f179da4+0x108 # f179eac glabel var7f1b80cc .word 0x3c23d70a glabel var7f1b80d0 .word 0x41033333 glabel var7f1b80d4 .word 0xc0833333 glabel var7f1b80d8 .word 0xbe4ccccd glabel var7f1b80dc .word 0x3b03126f .text /* f179da4: 248effff */ addiu $t6,$a0,-1 /* f179da8: 27bdffc0 */ addiu $sp,$sp,-64 /* f179dac: 2dc10015 */ sltiu $at,$t6,0x15 /* f179db0: afbf002c */ sw $ra,0x2c($sp) /* f179db4: afa50044 */ sw $a1,0x44($sp) /* f179db8: 10200096 */ beqz $at,.L0f17a014 /* f179dbc: 00801825 */ or $v1,$a0,$zero /* f179dc0: 000e7080 */ sll $t6,$t6,0x2 /* f179dc4: 3c017f1c */ lui $at,%hi(var7f1b8078) /* f179dc8: 002e0821 */ addu $at,$at,$t6 /* f179dcc: 8c2e8078 */ lw $t6,%lo(var7f1b8078)($at) /* f179dd0: 01c00008 */ jr $t6 /* f179dd4: 00000000 */ nop /* f179dd8: 0fc62ee2 */ jal mpGetNumBodies /* f179ddc: afa60048 */ sw $a2,0x48($sp) /* f179de0: 8fa60048 */ lw $a2,0x48($sp) /* f179de4: 1000008b */ b .L0f17a014 /* f179de8: acc20000 */ sw $v0,0x0($a2) /* f179dec: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f179df0: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f179df4: 3c19800a */ lui $t9,%hi(g_Menus) /* f179df8: 3c05800a */ lui $a1,%hi(g_Vars) /* f179dfc: 000fc0c0 */ sll $t8,$t7,0x3 /* f179e00: 030fc023 */ subu $t8,$t8,$t7 /* f179e04: 0018c080 */ sll $t8,$t8,0x2 /* f179e08: 030fc021 */ addu $t8,$t8,$t7 /* f179e0c: 0018c0c0 */ sll $t8,$t8,0x3 /* f179e10: 030fc023 */ subu $t8,$t8,$t7 /* f179e14: 0018c100 */ sll $t8,$t8,0x4 /* f179e18: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f179e1c: 8fa90050 */ lw $t1,0x50($sp) /* f179e20: 24a59fc0 */ addiu $a1,$a1,%lo(g_Vars) /* f179e24: 03191021 */ addu $v0,$t8,$t9 /* f179e28: 8c4e0db4 */ lw $t6,0xdb4($v0) /* f179e2c: 8ca40000 */ lw $a0,0x0($a1) /* f179e30: 00095400 */ sll $t2,$t1,0x10 /* f179e34: 354bffff */ ori $t3,$t2,0xffff /* f179e38: 00076600 */ sll $t4,$a3,0x18 /* f179e3c: 01c47821 */ addu $t7,$t6,$a0 /* f179e40: 240801fc */ addiu $t0,$zero,0x1fc /* f179e44: 016c6825 */ or $t5,$t3,$t4 /* f179e48: 29e101e1 */ slti $at,$t7,0x191 /* f179e4c: a448089c */ sh $t0,0x89c($v0) /* f179e50: ac4d084c */ sw $t5,0x84c($v0) /* f179e54: 14200003 */ bnez $at,.L0f179e64 /* f179e58: ac4f0db4 */ sw $t7,0xdb4($v0) /* f179e5c: 25f8fe20 */ addiu $t8,$t7,-0x190 /* f179e60: ac580db4 */ sw $t8,0xdb4($v0) .L0f179e64: /* f179e64: 8c430db8 */ lw $v1,0xdb8($v0) /* f179e68: 3c017f1c */ lui $at,%hi(var7f1b80cc) /* f179e6c: 18600003 */ blez $v1,.L0f179e7c /* f179e70: 0064c823 */ subu $t9,$v1,$a0 /* f179e74: 10000008 */ b .L0f179e98 /* f179e78: ac590db8 */ sw $t9,0xdb8($v0) .L0f179e7c: /* f179e7c: c42480cc */ lwc1 $f4,%lo(var7f1b80cc)($at) /* f179e80: c4a60004 */ lwc1 $f6,0x10($a1) /* f179e84: c44a0d64 */ lwc1 $f10,0xd64($v0) /* f179e88: 46062202 */ mul.s $f8,$f4,$f6 /* f179e8c: 46085000 */ add.s $f0,$f10,$f8 /* f179e90: e4400d8c */ swc1 $f0,0xd8c($v0) /* f179e94: e4400d64 */ swc1 $f0,0xd64($v0) .L0f179e98: /* f179e98: 3c0141f0 */ lui $at,0x41f0 /* f179e9c: 44818000 */ mtc1 $at,$f16 /* f179ea0: ac400df4 */ sw $zero,0xdf4($v0) /* f179ea4: 1000005b */ b .L0f17a014 /* f179ea8: e4500d94 */ swc1 $f16,0xd94($v0) /* f179eac: 0fc62f1c */ jal mpGetBodyRequiredFeature /* f179eb0: 90c40003 */ lbu $a0,0x3($a2) /* f179eb4: 0fc67244 */ jal mpIsFeatureUnlocked /* f179eb8: 00402025 */ or $a0,$v0,$zero /* f179ebc: 54400056 */ bnezl $v0,.L0f17a018 /* f179ec0: 00001025 */ or $v0,$zero,$zero /* f179ec4: 10000054 */ b .L0f17a018 /* f179ec8: 24020001 */ addiu $v0,$zero,0x1 /* f179ecc: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f179ed0: 8d291448 */ lw $t1,%lo(g_MpPlayerNum)($t1) /* f179ed4: 3c01800a */ lui $at,%hi(g_Menus+0x840) /* f179ed8: 24080003 */ addiu $t0,$zero,0x3 /* f179edc: 000950c0 */ sll $t2,$t1,0x3 /* f179ee0: 01495023 */ subu $t2,$t2,$t1 /* f179ee4: 000a5080 */ sll $t2,$t2,0x2 /* f179ee8: 01495021 */ addu $t2,$t2,$t1 /* f179eec: 000a50c0 */ sll $t2,$t2,0x3 /* f179ef0: 01495023 */ subu $t2,$t2,$t1 /* f179ef4: 000a5100 */ sll $t2,$t2,0x4 /* f179ef8: 002a0821 */ addu $at,$at,$t2 /* f179efc: 10000045 */ b .L0f17a014 /* f179f00: a028e840 */ sb $t0,%lo(g_Menus+0x840)($at) /* f179f04: 10000043 */ b .L0f17a014 /* f179f08: acc70000 */ sw $a3,0x0($a2) /* f179f0c: 3c0b8007 */ lui $t3,%hi(g_MpPlayerNum) /* f179f10: 8d6b1448 */ lw $t3,%lo(g_MpPlayerNum)($t3) /* f179f14: 44800000 */ mtc1 $zero,$f0 /* f179f18: 3c0d800a */ lui $t5,%hi(g_Menus) /* f179f1c: 000b60c0 */ sll $t4,$t3,0x3 /* f179f20: 018b6023 */ subu $t4,$t4,$t3 /* f179f24: 000c6080 */ sll $t4,$t4,0x2 /* f179f28: 018b6021 */ addu $t4,$t4,$t3 /* f179f2c: 000c60c0 */ sll $t4,$t4,0x3 /* f179f30: 3c013f80 */ lui $at,0x3f80 /* f179f34: 018b6023 */ subu $t4,$t4,$t3 /* f179f38: 44819000 */ mtc1 $at,$f18 /* f179f3c: 000c6100 */ sll $t4,$t4,0x4 /* f179f40: 25ade000 */ addiu $t5,$t5,%lo(g_Menus) /* f179f44: 018d1021 */ addu $v0,$t4,$t5 /* f179f48: 240e0001 */ addiu $t6,$zero,0x1 /* f179f4c: 44050000 */ mfc1 $a1,$f0 /* f179f50: 44060000 */ mfc1 $a2,$f0 /* f179f54: 44070000 */ mfc1 $a3,$f0 /* f179f58: ac400dc0 */ sw $zero,0xdc0($v0) /* f179f5c: afae0020 */ sw $t6,0x20($sp) /* f179f60: 24440840 */ addiu $a0,$v0,0x840 /* f179f64: afa30034 */ sw $v1,0x34($sp) /* f179f68: e7a00010 */ swc1 $f0,0x10($sp) /* f179f6c: e7a00014 */ swc1 $f0,0x14($sp) /* f179f70: e7a00018 */ swc1 $f0,0x18($sp) /* f179f74: 0fc3cdcb */ jal func0f0f372c /* f179f78: e7b2001c */ swc1 $f18,0x1c($sp) /* f179f7c: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f179f80: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f179f84: 3c017f1c */ lui $at,%hi(var7f1b80d0) /* f179f88: c42080d0 */ lwc1 $f0,%lo(var7f1b80d0)($at) /* f179f8c: 000fc0c0 */ sll $t8,$t7,0x3 /* f179f90: 030fc023 */ subu $t8,$t8,$t7 /* f179f94: 0018c080 */ sll $t8,$t8,0x2 /* f179f98: 3c017f1c */ lui $at,%hi(var7f1b80d4) /* f179f9c: 030fc021 */ addu $t8,$t8,$t7 /* f179fa0: c42280d4 */ lwc1 $f2,%lo(var7f1b80d4)($at) /* f179fa4: 0018c0c0 */ sll $t8,$t8,0x3 /* f179fa8: 3c017f1c */ lui $at,%hi(var7f1b80d8) /* f179fac: 3c19800a */ lui $t9,%hi(g_Menus) /* f179fb0: 030fc023 */ subu $t8,$t8,$t7 /* f179fb4: c42c80d8 */ lwc1 $f12,%lo(var7f1b80d8)($at) /* f179fb8: 0018c100 */ sll $t8,$t8,0x4 /* f179fbc: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f179fc0: 03191021 */ addu $v0,$t8,$t9 /* f179fc4: 3c017f1c */ lui $at,%hi(var7f1b80dc) /* f179fc8: e4400d50 */ swc1 $f0,0xd50($v0) /* f179fcc: e4400d78 */ swc1 $f0,0xd78($v0) /* f179fd0: e4420d54 */ swc1 $f2,0xd54($v0) /* f179fd4: e4420d7c */ swc1 $f2,0xd7c($v0) /* f179fd8: c42480dc */ lwc1 $f4,%lo(var7f1b80dc)($at) /* f179fdc: 8fa30034 */ lw $v1,0x34($sp) /* f179fe0: 2409003c */ addiu $t1,$zero,0x32 /* f179fe4: 24080078 */ addiu $t0,$zero,0x64 /* f179fe8: 240a0008 */ addiu $t2,$zero,0x8 /* f179fec: 2401000f */ addiu $at,$zero,0xf /* f179ff0: ac490db8 */ sw $t1,0xdb8($v0) /* f179ff4: ac480db4 */ sw $t0,0xdb4($v0) /* f179ff8: a04a0840 */ sb $t2,0x840($v0) /* f179ffc: e44c0d64 */ swc1 $f12,0xd64($v0) /* f17a000: e44c0d8c */ swc1 $f12,0xd8c($v0) /* f17a004: 14610003 */ bne $v1,$at,.L0f17a014 /* f17a008: e4440d5c */ swc1 $f4,0xd5c($v0) /* f17a00c: 240b0010 */ addiu $t3,$zero,0x10 /* f17a010: a04b0840 */ sb $t3,0x840($v0) .L0f17a014: /* f17a014: 00001025 */ or $v0,$zero,$zero .L0f17a018: /* f17a018: 8fbf002c */ lw $ra,0x2c($sp) /* f17a01c: 27bd0040 */ addiu $sp,$sp,0x40 /* f17a020: 03e00008 */ jr $ra /* f17a024: 00000000 */ nop ); #elif VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel func0f179da4 .late_rodata glabel var7f1b8078 .word func0f179da4+0x34 # f179dd8 glabel var7f1b807c .word func0f179da4+0x270 # f17a014 glabel var7f1b8080 .word func0f179da4+0x270 # f17a014 glabel var7f1b8084 .word func0f179da4+0x270 # f17a014 glabel var7f1b8088 .word func0f179da4+0x270 # f17a014 glabel var7f1b808c .word func0f179da4+0x168 # f179f0c glabel var7f1b8090 .word func0f179da4+0x160 # f179f04 glabel var7f1b8094 .word func0f179da4+0x270 # f17a014 glabel var7f1b8098 .word func0f179da4+0x270 # f17a014 glabel var7f1b809c .word func0f179da4+0x270 # f17a014 glabel var7f1b80a0 .word func0f179da4+0x48 # f179dec glabel var7f1b80a4 .word func0f179da4+0x270 # f17a014 glabel var7f1b80a8 .word func0f179da4+0x128 # f179ecc glabel var7f1b80ac .word func0f179da4+0x270 # f17a014 glabel var7f1b80b0 .word func0f179da4+0x168 # f179f0c glabel var7f1b80b4 .word func0f179da4+0x270 # f17a014 glabel var7f1b80b8 .word func0f179da4+0x270 # f17a014 glabel var7f1b80bc .word func0f179da4+0x270 # f17a014 glabel var7f1b80c0 .word func0f179da4+0x270 # f17a014 glabel var7f1b80c4 .word func0f179da4+0x270 # f17a014 glabel var7f1b80c8 .word func0f179da4+0x108 # f179eac glabel var7f1b80cc .word 0x3c23d70a glabel var7f1b80d0 .word 0x41033333 glabel var7f1b80d4 .word 0xc0833333 glabel var7f1b80d8 .word 0xbe4ccccd glabel var7f1b80dc .word 0x3b03126f .text /* f179da4: 248effff */ addiu $t6,$a0,-1 /* f179da8: 27bdffc0 */ addiu $sp,$sp,-64 /* f179dac: 2dc10015 */ sltiu $at,$t6,0x15 /* f179db0: afbf002c */ sw $ra,0x2c($sp) /* f179db4: afa50044 */ sw $a1,0x44($sp) /* f179db8: 10200096 */ beqz $at,.L0f17a014 /* f179dbc: 00801825 */ or $v1,$a0,$zero /* f179dc0: 000e7080 */ sll $t6,$t6,0x2 /* f179dc4: 3c017f1c */ lui $at,%hi(var7f1b8078) /* f179dc8: 002e0821 */ addu $at,$at,$t6 /* f179dcc: 8c2e8078 */ lw $t6,%lo(var7f1b8078)($at) /* f179dd0: 01c00008 */ jr $t6 /* f179dd4: 00000000 */ nop /* f179dd8: 0fc62ee2 */ jal mpGetNumBodies /* f179ddc: afa60048 */ sw $a2,0x48($sp) /* f179de0: 8fa60048 */ lw $a2,0x48($sp) /* f179de4: 1000008b */ b .L0f17a014 /* f179de8: acc20000 */ sw $v0,0x0($a2) /* f179dec: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f179df0: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f179df4: 3c19800a */ lui $t9,%hi(g_Menus) /* f179df8: 3c05800a */ lui $a1,%hi(g_Vars) /* f179dfc: 000fc0c0 */ sll $t8,$t7,0x3 /* f179e00: 030fc023 */ subu $t8,$t8,$t7 /* f179e04: 0018c080 */ sll $t8,$t8,0x2 /* f179e08: 030fc021 */ addu $t8,$t8,$t7 /* f179e0c: 0018c0c0 */ sll $t8,$t8,0x3 /* f179e10: 030fc023 */ subu $t8,$t8,$t7 /* f179e14: 0018c100 */ sll $t8,$t8,0x4 /* f179e18: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f179e1c: 8fa90050 */ lw $t1,0x50($sp) /* f179e20: 24a59fc0 */ addiu $a1,$a1,%lo(g_Vars) /* f179e24: 03191021 */ addu $v0,$t8,$t9 /* f179e28: 8c4e0db4 */ lw $t6,0xdb4($v0) /* f179e2c: 8ca40000 */ lw $a0,0x0($a1) /* f179e30: 00095400 */ sll $t2,$t1,0x10 /* f179e34: 354bffff */ ori $t3,$t2,0xffff /* f179e38: 00076600 */ sll $t4,$a3,0x18 /* f179e3c: 01c47821 */ addu $t7,$t6,$a0 /* f179e40: 240801fc */ addiu $t0,$zero,0x1fc /* f179e44: 016c6825 */ or $t5,$t3,$t4 /* f179e48: 29e101e1 */ slti $at,$t7,0x1e1 /* f179e4c: a448089c */ sh $t0,0x89c($v0) /* f179e50: ac4d084c */ sw $t5,0x84c($v0) /* f179e54: 14200003 */ bnez $at,.L0f179e64 /* f179e58: ac4f0db4 */ sw $t7,0xdb4($v0) /* f179e5c: 25f8fe20 */ addiu $t8,$t7,-480 /* f179e60: ac580db4 */ sw $t8,0xdb4($v0) .L0f179e64: /* f179e64: 8c430db8 */ lw $v1,0xdb8($v0) /* f179e68: 3c017f1c */ lui $at,%hi(var7f1b80cc) /* f179e6c: 18600003 */ blez $v1,.L0f179e7c /* f179e70: 0064c823 */ subu $t9,$v1,$a0 /* f179e74: 10000008 */ b .L0f179e98 /* f179e78: ac590db8 */ sw $t9,0xdb8($v0) .L0f179e7c: /* f179e7c: c42480cc */ lwc1 $f4,%lo(var7f1b80cc)($at) /* f179e80: c4a60004 */ lwc1 $f6,0x4($a1) /* f179e84: c44a0d64 */ lwc1 $f10,0xd64($v0) /* f179e88: 46062202 */ mul.s $f8,$f4,$f6 /* f179e8c: 46085000 */ add.s $f0,$f10,$f8 /* f179e90: e4400d8c */ swc1 $f0,0xd8c($v0) /* f179e94: e4400d64 */ swc1 $f0,0xd64($v0) .L0f179e98: /* f179e98: 3c0141f0 */ lui $at,0x41f0 /* f179e9c: 44818000 */ mtc1 $at,$f16 /* f179ea0: ac400df4 */ sw $zero,0xdf4($v0) /* f179ea4: 1000005b */ b .L0f17a014 /* f179ea8: e4500d94 */ swc1 $f16,0xd94($v0) /* f179eac: 0fc62f1c */ jal mpGetBodyRequiredFeature /* f179eb0: 90c40003 */ lbu $a0,0x3($a2) /* f179eb4: 0fc67244 */ jal mpIsFeatureUnlocked /* f179eb8: 00402025 */ or $a0,$v0,$zero /* f179ebc: 54400056 */ bnezl $v0,.L0f17a018 /* f179ec0: 00001025 */ or $v0,$zero,$zero /* f179ec4: 10000054 */ b .L0f17a018 /* f179ec8: 24020001 */ addiu $v0,$zero,0x1 /* f179ecc: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f179ed0: 8d291448 */ lw $t1,%lo(g_MpPlayerNum)($t1) /* f179ed4: 3c01800a */ lui $at,%hi(g_Menus+0x840) /* f179ed8: 24080003 */ addiu $t0,$zero,0x3 /* f179edc: 000950c0 */ sll $t2,$t1,0x3 /* f179ee0: 01495023 */ subu $t2,$t2,$t1 /* f179ee4: 000a5080 */ sll $t2,$t2,0x2 /* f179ee8: 01495021 */ addu $t2,$t2,$t1 /* f179eec: 000a50c0 */ sll $t2,$t2,0x3 /* f179ef0: 01495023 */ subu $t2,$t2,$t1 /* f179ef4: 000a5100 */ sll $t2,$t2,0x4 /* f179ef8: 002a0821 */ addu $at,$at,$t2 /* f179efc: 10000045 */ b .L0f17a014 /* f179f00: a028e840 */ sb $t0,%lo(g_Menus+0x840)($at) /* f179f04: 10000043 */ b .L0f17a014 /* f179f08: acc70000 */ sw $a3,0x0($a2) /* f179f0c: 3c0b8007 */ lui $t3,%hi(g_MpPlayerNum) /* f179f10: 8d6b1448 */ lw $t3,%lo(g_MpPlayerNum)($t3) /* f179f14: 44800000 */ mtc1 $zero,$f0 /* f179f18: 3c0d800a */ lui $t5,%hi(g_Menus) /* f179f1c: 000b60c0 */ sll $t4,$t3,0x3 /* f179f20: 018b6023 */ subu $t4,$t4,$t3 /* f179f24: 000c6080 */ sll $t4,$t4,0x2 /* f179f28: 018b6021 */ addu $t4,$t4,$t3 /* f179f2c: 000c60c0 */ sll $t4,$t4,0x3 /* f179f30: 3c013f80 */ lui $at,0x3f80 /* f179f34: 018b6023 */ subu $t4,$t4,$t3 /* f179f38: 44819000 */ mtc1 $at,$f18 /* f179f3c: 000c6100 */ sll $t4,$t4,0x4 /* f179f40: 25ade000 */ addiu $t5,$t5,%lo(g_Menus) /* f179f44: 018d1021 */ addu $v0,$t4,$t5 /* f179f48: 240e0001 */ addiu $t6,$zero,0x1 /* f179f4c: 44050000 */ mfc1 $a1,$f0 /* f179f50: 44060000 */ mfc1 $a2,$f0 /* f179f54: 44070000 */ mfc1 $a3,$f0 /* f179f58: ac400dc0 */ sw $zero,0xdc0($v0) /* f179f5c: afae0020 */ sw $t6,0x20($sp) /* f179f60: 24440840 */ addiu $a0,$v0,0x840 /* f179f64: afa30034 */ sw $v1,0x34($sp) /* f179f68: e7a00010 */ swc1 $f0,0x10($sp) /* f179f6c: e7a00014 */ swc1 $f0,0x14($sp) /* f179f70: e7a00018 */ swc1 $f0,0x18($sp) /* f179f74: 0fc3cdcb */ jal func0f0f372c /* f179f78: e7b2001c */ swc1 $f18,0x1c($sp) /* f179f7c: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f179f80: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f179f84: 3c017f1c */ lui $at,%hi(var7f1b80d0) /* f179f88: c42080d0 */ lwc1 $f0,%lo(var7f1b80d0)($at) /* f179f8c: 000fc0c0 */ sll $t8,$t7,0x3 /* f179f90: 030fc023 */ subu $t8,$t8,$t7 /* f179f94: 0018c080 */ sll $t8,$t8,0x2 /* f179f98: 3c017f1c */ lui $at,%hi(var7f1b80d4) /* f179f9c: 030fc021 */ addu $t8,$t8,$t7 /* f179fa0: c42280d4 */ lwc1 $f2,%lo(var7f1b80d4)($at) /* f179fa4: 0018c0c0 */ sll $t8,$t8,0x3 /* f179fa8: 3c017f1c */ lui $at,%hi(var7f1b80d8) /* f179fac: 3c19800a */ lui $t9,%hi(g_Menus) /* f179fb0: 030fc023 */ subu $t8,$t8,$t7 /* f179fb4: c42c80d8 */ lwc1 $f12,%lo(var7f1b80d8)($at) /* f179fb8: 0018c100 */ sll $t8,$t8,0x4 /* f179fbc: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f179fc0: 03191021 */ addu $v0,$t8,$t9 /* f179fc4: 3c017f1c */ lui $at,%hi(var7f1b80dc) /* f179fc8: e4400d50 */ swc1 $f0,0xd50($v0) /* f179fcc: e4400d78 */ swc1 $f0,0xd78($v0) /* f179fd0: e4420d54 */ swc1 $f2,0xd54($v0) /* f179fd4: e4420d7c */ swc1 $f2,0xd7c($v0) /* f179fd8: c42480dc */ lwc1 $f4,%lo(var7f1b80dc)($at) /* f179fdc: 8fa30034 */ lw $v1,0x34($sp) /* f179fe0: 2409003c */ addiu $t1,$zero,0x3c /* f179fe4: 24080078 */ addiu $t0,$zero,0x78 /* f179fe8: 240a0008 */ addiu $t2,$zero,0x8 /* f179fec: 2401000f */ addiu $at,$zero,0xf /* f179ff0: ac490db8 */ sw $t1,0xdb8($v0) /* f179ff4: ac480db4 */ sw $t0,0xdb4($v0) /* f179ff8: a04a0840 */ sb $t2,0x840($v0) /* f179ffc: e44c0d64 */ swc1 $f12,0xd64($v0) /* f17a000: e44c0d8c */ swc1 $f12,0xd8c($v0) /* f17a004: 14610003 */ bne $v1,$at,.L0f17a014 /* f17a008: e4440d5c */ swc1 $f4,0xd5c($v0) /* f17a00c: 240b0010 */ addiu $t3,$zero,0x10 /* f17a010: a04b0840 */ sb $t3,0x840($v0) .L0f17a014: /* f17a014: 00001025 */ or $v0,$zero,$zero .L0f17a018: /* f17a018: 8fbf002c */ lw $ra,0x2c($sp) /* f17a01c: 27bd0040 */ addiu $sp,$sp,0x40 /* f17a020: 03e00008 */ jr $ra /* f17a024: 00000000 */ nop ); #else GLOBAL_ASM( glabel func0f179da4 .late_rodata glabel var7f1b2978nb .word func0f179da4+0x030 glabel var7f1b297cnb .word func0f179da4+0x21c glabel var7f1b2980nb .word func0f179da4+0x21c glabel var7f1b2984nb .word func0f179da4+0x21c glabel var7f1b2988nb .word func0f179da4+0x21c glabel var7f1b298cnb .word func0f179da4+0x12c glabel var7f1b2990nb .word func0f179da4+0x124 glabel var7f1b2994nb .word func0f179da4+0x21c glabel var7f1b2998nb .word func0f179da4+0x21c glabel var7f1b299cnb .word func0f179da4+0x21c glabel var7f1b29a0nb .word func0f179da4+0x044 glabel var7f1b29a4nb .word func0f179da4+0x21c glabel var7f1b29a8nb .word func0f179da4+0x21c glabel var7f1b29acnb .word func0f179da4+0x21c glabel var7f1b29b0nb .word func0f179da4+0x12c glabel var7f1b29b4nb .word func0f179da4+0x21c glabel var7f1b29b8nb .word func0f179da4+0x21c glabel var7f1b29bcnb .word func0f179da4+0x21c glabel var7f1b29c0nb .word func0f179da4+0x21c glabel var7f1b29c4nb .word func0f179da4+0x21c glabel var7f1b29c8nb .word func0f179da4+0x104 glabel var7f1b80cc .word 0x3c23d70a glabel var7f1b80d0 .word 0x41033333 glabel var7f1b80d4 .word 0xc0833333 glabel var7f1b80d8 .word 0xbe4ccccd glabel var7f1b80dc .word 0x3b03126f .text /* f1747f4: 248effff */ addiu $t6,$a0,-1 /* f1747f8: 27bdffd0 */ addiu $sp,$sp,-48 /* f1747fc: 2dc10015 */ sltiu $at,$t6,0x15 /* f174800: afbf002c */ sw $ra,0x2c($sp) /* f174804: 10200082 */ beqz $at,.NB0f174a10 /* f174808: afa50034 */ sw $a1,0x34($sp) /* f17480c: 000e7080 */ sll $t6,$t6,0x2 /* f174810: 3c017f1b */ lui $at,0x7f1b /* f174814: 002e0821 */ addu $at,$at,$t6 /* f174818: 8c2e2978 */ lw $t6,0x2978($at) /* f17481c: 01c00008 */ jr $t6 /* f174820: 00000000 */ sll $zero,$zero,0x0 /* f174824: 0fc61778 */ jal mpGetNumBodies /* f174828: afa60038 */ sw $a2,0x38($sp) /* f17482c: 8fa60038 */ lw $a2,0x38($sp) /* f174830: 10000077 */ beqz $zero,.NB0f174a10 /* f174834: acc20000 */ sw $v0,0x0($a2) /* f174838: 3c0f8007 */ lui $t7,0x8007 /* f17483c: 8def3af0 */ lw $t7,0x3af0($t7) /* f174840: 3c19800a */ lui $t9,0x800a /* f174844: 3c05800a */ lui $a1,0x800a /* f174848: 000fc0c0 */ sll $t8,$t7,0x3 /* f17484c: 030fc023 */ subu $t8,$t8,$t7 /* f174850: 0018c0c0 */ sll $t8,$t8,0x3 /* f174854: 030fc023 */ subu $t8,$t8,$t7 /* f174858: 0018c100 */ sll $t8,$t8,0x4 /* f17485c: 030fc023 */ subu $t8,$t8,$t7 /* f174860: 0018c080 */ sll $t8,$t8,0x2 /* f174864: 273927c0 */ addiu $t9,$t9,0x27c0 /* f174868: 8fa90040 */ lw $t1,0x40($sp) /* f17486c: 24a5e6c0 */ addiu $a1,$a1,-6464 /* f174870: 03191021 */ addu $v0,$t8,$t9 /* f174874: 8c4e0d10 */ lw $t6,0xd10($v0) /* f174878: 8ca40000 */ lw $a0,0x0($a1) /* f17487c: 00095400 */ sll $t2,$t1,0x10 /* f174880: 354bffff */ ori $t3,$t2,0xffff /* f174884: 00076600 */ sll $t4,$a3,0x18 /* f174888: 01c47821 */ addu $t7,$t6,$a0 /* f17488c: 240801fc */ addiu $t0,$zero,0x1fc /* f174890: 016c6825 */ or $t5,$t3,$t4 /* f174894: 29e101e1 */ slti $at,$t7,0x1e1 /* f174898: a44807f8 */ sh $t0,0x7f8($v0) /* f17489c: ac4d07a8 */ sw $t5,0x7a8($v0) /* f1748a0: 14200003 */ bnez $at,.NB0f1748b0 /* f1748a4: ac4f0d10 */ sw $t7,0xd10($v0) /* f1748a8: 25f8fe20 */ addiu $t8,$t7,-480 /* f1748ac: ac580d10 */ sw $t8,0xd10($v0) .NB0f1748b0: /* f1748b0: 8c430d14 */ lw $v1,0xd14($v0) /* f1748b4: 3c017f1b */ lui $at,0x7f1b /* f1748b8: 18600003 */ blez $v1,.NB0f1748c8 /* f1748bc: 0064c823 */ subu $t9,$v1,$a0 /* f1748c0: 10000008 */ beqz $zero,.NB0f1748e4 /* f1748c4: ac590d14 */ sw $t9,0xd14($v0) .NB0f1748c8: /* f1748c8: c42429cc */ lwc1 $f4,0x29cc($at) /* f1748cc: c4a60004 */ lwc1 $f6,0x4($a1) /* f1748d0: c44a0cc0 */ lwc1 $f10,0xcc0($v0) /* f1748d4: 46062202 */ mul.s $f8,$f4,$f6 /* f1748d8: 46085000 */ add.s $f0,$f10,$f8 /* f1748dc: e4400ce8 */ swc1 $f0,0xce8($v0) /* f1748e0: e4400cc0 */ swc1 $f0,0xcc0($v0) .NB0f1748e4: /* f1748e4: 3c0141f0 */ lui $at,0x41f0 /* f1748e8: 44818000 */ mtc1 $at,$f16 /* f1748ec: ac400d50 */ sw $zero,0xd50($v0) /* f1748f0: 10000047 */ beqz $zero,.NB0f174a10 /* f1748f4: e4500cf0 */ swc1 $f16,0xcf0($v0) /* f1748f8: 0fc617b2 */ jal mpGetBodyRequiredFeature /* f1748fc: 90c40003 */ lbu $a0,0x3($a2) /* f174900: 0fc65a5e */ jal mpIsFeatureUnlocked /* f174904: 00402025 */ or $a0,$v0,$zero /* f174908: 54400042 */ bnezl $v0,.NB0f174a14 /* f17490c: 00001025 */ or $v0,$zero,$zero /* f174910: 10000040 */ beqz $zero,.NB0f174a14 /* f174914: 24020001 */ addiu $v0,$zero,0x1 /* f174918: 1000003d */ beqz $zero,.NB0f174a10 /* f17491c: acc70000 */ sw $a3,0x0($a2) /* f174920: 3c088007 */ lui $t0,0x8007 /* f174924: 8d083af0 */ lw $t0,0x3af0($t0) /* f174928: 44800000 */ mtc1 $zero,$f0 /* f17492c: 3c0a800a */ lui $t2,0x800a /* f174930: 000848c0 */ sll $t1,$t0,0x3 /* f174934: 01284823 */ subu $t1,$t1,$t0 /* f174938: 000948c0 */ sll $t1,$t1,0x3 /* f17493c: 01284823 */ subu $t1,$t1,$t0 /* f174940: 00094900 */ sll $t1,$t1,0x4 /* f174944: 3c013f80 */ lui $at,0x3f80 /* f174948: 01284823 */ subu $t1,$t1,$t0 /* f17494c: 44819000 */ mtc1 $at,$f18 /* f174950: 00094880 */ sll $t1,$t1,0x2 /* f174954: 254a27c0 */ addiu $t2,$t2,0x27c0 /* f174958: 012a1021 */ addu $v0,$t1,$t2 /* f17495c: 240b0001 */ addiu $t3,$zero,0x1 /* f174960: 44050000 */ mfc1 $a1,$f0 /* f174964: 44060000 */ mfc1 $a2,$f0 /* f174968: 44070000 */ mfc1 $a3,$f0 /* f17496c: ac400d1c */ sw $zero,0xd1c($v0) /* f174970: afab0020 */ sw $t3,0x20($sp) /* f174974: 2444079c */ addiu $a0,$v0,0x79c /* f174978: e7a00010 */ swc1 $f0,0x10($sp) /* f17497c: e7a00014 */ swc1 $f0,0x14($sp) /* f174980: e7a00018 */ swc1 $f0,0x18($sp) /* f174984: 0fc3c09c */ jal func0f0f372c /* f174988: e7b2001c */ swc1 $f18,0x1c($sp) /* f17498c: 3c0c8007 */ lui $t4,0x8007 /* f174990: 8d8c3af0 */ lw $t4,0x3af0($t4) /* f174994: 3c017f1b */ lui $at,0x7f1b /* f174998: c42029d0 */ lwc1 $f0,0x29d0($at) /* f17499c: 000c68c0 */ sll $t5,$t4,0x3 /* f1749a0: 01ac6823 */ subu $t5,$t5,$t4 /* f1749a4: 000d68c0 */ sll $t5,$t5,0x3 /* f1749a8: 3c017f1b */ lui $at,0x7f1b /* f1749ac: 01ac6823 */ subu $t5,$t5,$t4 /* f1749b0: c42229d4 */ lwc1 $f2,0x29d4($at) /* f1749b4: 000d6900 */ sll $t5,$t5,0x4 /* f1749b8: 3c017f1b */ lui $at,0x7f1b /* f1749bc: 3c0e800a */ lui $t6,0x800a /* f1749c0: 01ac6823 */ subu $t5,$t5,$t4 /* f1749c4: c42c29d8 */ lwc1 $f12,0x29d8($at) /* f1749c8: 000d6880 */ sll $t5,$t5,0x2 /* f1749cc: 25ce27c0 */ addiu $t6,$t6,0x27c0 /* f1749d0: 01ae1021 */ addu $v0,$t5,$t6 /* f1749d4: 3c017f1b */ lui $at,0x7f1b /* f1749d8: e4400cac */ swc1 $f0,0xcac($v0) /* f1749dc: e4400cd4 */ swc1 $f0,0xcd4($v0) /* f1749e0: e4420cb0 */ swc1 $f2,0xcb0($v0) /* f1749e4: e4420cd8 */ swc1 $f2,0xcd8($v0) /* f1749e8: c42429dc */ lwc1 $f4,0x29dc($at) /* f1749ec: 240f003c */ addiu $t7,$zero,0x3c /* f1749f0: 24180078 */ addiu $t8,$zero,0x78 /* f1749f4: 24190008 */ addiu $t9,$zero,0x8 /* f1749f8: ac4f0d14 */ sw $t7,0xd14($v0) /* f1749fc: ac580d10 */ sw $t8,0xd10($v0) /* f174a00: a059079c */ sb $t9,0x79c($v0) /* f174a04: e44c0cc0 */ swc1 $f12,0xcc0($v0) /* f174a08: e44c0ce8 */ swc1 $f12,0xce8($v0) /* f174a0c: e4440cb8 */ swc1 $f4,0xcb8($v0) .NB0f174a10: /* f174a10: 00001025 */ or $v0,$zero,$zero .NB0f174a14: /* f174a14: 8fbf002c */ lw $ra,0x2c($sp) /* f174a18: 27bd0030 */ addiu $sp,$sp,0x30 /* f174a1c: 03e00008 */ jr $ra /* f174a20: 00000000 */ sll $zero,$zero,0x0 ); #endif s32 menuhandlerMpCharacterBody(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_SET: if (g_MpPlayers[g_MpPlayerNum].base.mpheadnum < mpGetNumHeads()) { #if VERSION >= VERSION_NTSC_1_0 if (!data->carousel.unk04) #endif { g_MpPlayers[g_MpPlayerNum].base.mpheadnum = mpGetMpheadnumByMpbodynum(data->carousel.value); } } g_MpPlayers[g_MpPlayerNum].base.mpbodynum = data->carousel.value; func0f17b8f0(); break; case MENUOP_CHECKPREFOCUSED: #if VERSION >= VERSION_NTSC_1_0 func0f179da4(operation, item, data, g_MpPlayers[g_MpPlayerNum].base.mpbodynum, g_MpPlayers[g_MpPlayerNum].base.mpheadnum, 1); #endif return true; } return func0f179da4(operation, item, data, g_MpPlayers[g_MpPlayerNum].base.mpbodynum, g_MpPlayers[g_MpPlayerNum].base.mpheadnum, 1); } s32 menudialog0017a174(s32 operation, struct menudialog *dialog, union handlerdata *data) { switch (operation) { case MENUOP_OPEN: break; case MENUOP_CLOSE: break; case MENUOP_TICK: if (g_Menus[g_MpPlayerNum].curframe->dialog == dialog && g_Menus[g_MpPlayerNum].curframe->focuseditem != &dialog->items[1] && g_Menus[g_MpPlayerNum].curframe->focuseditem != &dialog->items[2]) { union handlerdata data; menuhandlerMpCharacterBody(MENUOP_11, &dialog->items[2], &data); } } return 0; } s32 mpChallengesListHandler(s32 operation, struct menuitem *item, union handlerdata *data) { Gfx *gdl; struct menuitemrenderdata *renderdata; s32 challengeindex; s32 x; s32 y; s32 loopx; s32 maxplayers; s32 i; char *name; s32 size = 11; switch (operation) { case MENUOP_GETOPTIONCOUNT: data->list.value = mpGetAutoFocusedChallengeIndex(g_MpPlayerNum); break; case MENUOP_RENDER: maxplayers = 4; gdl = data->type19.gdl; renderdata = data->type19.renderdata2; challengeindex = data->list.unk04; if (IS4MB()) { maxplayers = 2; } x = renderdata->x + 10; y = renderdata->y + 1; gdl = func0f153628(gdl); name = mpChallengeGetNameWithArg(g_MpPlayerNum, challengeindex); gdl = textRenderProjected(gdl, &x, &y, name, g_FontHandelGothicSm1, g_FontHandelGothicSm2, renderdata->colour, viGetWidth(), viGetHeight(), 0, 0); gdl = func0f153780(gdl); gDPPipeSync(gdl++); gDPSetTexturePersp(gdl++, G_TP_NONE); gDPSetAlphaCompare(gdl++, G_AC_NONE); gDPSetTextureLOD(gdl++, G_TL_TILE); gDPSetTextureConvert(gdl++, G_TC_FILT); func0f0b39c0(&gdl, &var800ab5a8[35], 2, 0, 2, 1, 0); gDPSetCycleType(gdl++, G_CYC_1CYCLE); gDPSetTextureFilter(gdl++, G_TF_POINT); for (i = 0, loopx = 10; i < maxplayers; i++) { #if VERSION >= VERSION_NTSC_1_0 if (mpIsChallengeCompletedByPlayerWithNumPlayers2(g_MpPlayerNum, challengeindex, i + 1)) { gDPSetEnvColorViaWord(gdl++, 0xb2efff00 | (renderdata->colour & 0xff) * 255 / 256); } else { gDPSetEnvColorViaWord(gdl++, 0x30407000 | (renderdata->colour & 0xff) * 255 / 256); } #else if (mpIsChallengeCompletedByPlayerWithNumPlayers2(g_MpPlayerNum, challengeindex, i + 1)) { gDPSetEnvColorViaWord(gdl++, 0xb2efffff); } else { gDPSetEnvColorViaWord(gdl++, 0x304070ff); } #endif gDPSetCombineLERP(gdl++, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, ENVIRONMENT, 0); gSPTextureRectangle(gdl++, ((renderdata->x + loopx) << 2) * g_ScaleX, (renderdata->y + size) << 2, ((renderdata->x + size + loopx) << 2) * g_ScaleX, (renderdata->y + size * 2) << 2, G_TX_RENDERTILE, 0, 0x0160, 0x0400 / g_ScaleX, 0xfc00); loopx += 13; } return (s32) gdl; case MENUOP_GETOPTIONHEIGHT: data->list.value = 26; break; } return 0; } const char var7f1b7ea8[] = "Menu99 -> Calling Camera Module Start\n"; const char var7f1b7ed0[] = "Menu99 -> Calling Camera Module Finish\n"; char *mpMenuTextKills(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].kills); return g_StringPointer; } char *mpMenuTextDeaths(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].deaths); return g_StringPointer; } char *mpMenuTextGamesPlayed(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].gamesplayed); return g_StringPointer; } char *mpMenuTextGamesWon(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].gameswon); return g_StringPointer; } char *mpMenuTextGamesLost(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].gameslost); return g_StringPointer; } char *mpMenuTextHeadShots(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].headshots); return g_StringPointer; } char *mpMenuTextMedalAccuracy(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].accuracymedals); return g_StringPointer; } char *mpMenuTextMedalHeadShot(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].headshotmedals); return g_StringPointer; } char *mpMenuTextMedalKillMaster(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].killmastermedals); return g_StringPointer; } char *mpMenuTextMedalSurvivor(struct menuitem *item) { \ sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].survivormedals); return g_StringPointer; } char *mpMenuTextAmmoUsed(struct menuitem *item) { s32 value = g_MpPlayers[g_MpPlayerNum].ammoused; if (value > 100000) { value = value / 1000; if (value > 100000) { value = value / 1000; sprintf(g_StringPointer, "%dM\n", value); } else { sprintf(g_StringPointer, "%dK\n", value); } } else { sprintf(g_StringPointer, "%d\n", value); } return g_StringPointer; } char *mpMenuTextDistance(struct menuitem *item) { sprintf(g_StringPointer, "%s%s%.1fkm\n", "", "", g_MpPlayers[g_MpPlayerNum].distance / 10.0f); return g_StringPointer; } #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel mpMenuTextTime /* f17ab38: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17ab3c: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17ab40: 3c02800b */ lui $v0,%hi(g_MpPlayers+0x68) /* f17ab44: 2408003c */ addiu $t0,$zero,0x3c /* f17ab48: 000e7880 */ sll $t7,$t6,0x2 /* f17ab4c: 01ee7821 */ addu $t7,$t7,$t6 /* f17ab50: 000f7940 */ sll $t7,$t7,0x5 /* f17ab54: 004f1021 */ addu $v0,$v0,$t7 /* f17ab58: 8c42c820 */ lw $v0,%lo(g_MpPlayers+0x68)($v0) /* f17ab5c: 27bdffe0 */ addiu $sp,$sp,-32 /* f17ab60: afbf001c */ sw $ra,0x1c($sp) /* f17ab64: 0048001b */ divu $zero,$v0,$t0 /* f17ab68: 00004810 */ mfhi $t1 /* f17ab6c: afa40020 */ sw $a0,0x20($sp) /* f17ab70: 15000002 */ bnez $t0,.L0f17ab7c /* f17ab74: 00000000 */ nop /* f17ab78: 0007000d */ break 0x7 .L0f17ab7c: /* f17ab7c: 3c017fff */ lui $at,0x7fff /* f17ab80: 54400005 */ bnezl $v0,.L0f17ab98 /* f17ab84: 3421ffff */ ori $at,$at,0xffff /* f17ab88: 3c027f1b */ lui $v0,%hi(var7f1b7f48) /* f17ab8c: 10000052 */ b .L0f17acd8 /* f17ab90: 24427f48 */ addiu $v0,$v0,%lo(var7f1b7f48) /* f17ab94: 3421ffff */ ori $at,$at,0xffff .L0f17ab98: /* f17ab98: 0041082b */ sltu $at,$v0,$at /* f17ab9c: 14200004 */ bnez $at,.L0f17abb0 /* f17aba0: 00000000 */ nop /* f17aba4: 3c027f1b */ lui $v0,%hi(var7f1b7f50) /* f17aba8: 1000004b */ b .L0f17acd8 /* f17abac: 24427f50 */ addiu $v0,$v0,%lo(var7f1b7f50) .L0f17abb0: /* f17abb0: 0048001b */ divu $zero,$v0,$t0 /* f17abb4: 00001012 */ mflo $v0 /* f17abb8: 240a0018 */ addiu $t2,$zero,0x18 /* f17abbc: 15000002 */ bnez $t0,.L0f17abc8 /* f17abc0: 00000000 */ nop /* f17abc4: 0007000d */ break 0x7 .L0f17abc8: /* f17abc8: 0048001b */ divu $zero,$v0,$t0 /* f17abcc: 00001812 */ mflo $v1 /* f17abd0: 3c057f1b */ lui $a1,%hi(var7f1b7f68) /* f17abd4: 15000002 */ bnez $t0,.L0f17abe0 /* f17abd8: 00000000 */ nop /* f17abdc: 0007000d */ break 0x7 .L0f17abe0: /* f17abe0: 006a001a */ div $zero,$v1,$t2 /* f17abe4: 00003012 */ mflo $a2 /* f17abe8: 24a57f68 */ addiu $a1,$a1,%lo(var7f1b7f68) /* f17abec: 15400002 */ bnez $t2,.L0f17abf8 /* f17abf0: 00000000 */ nop /* f17abf4: 0007000d */ break 0x7 .L0f17abf8: /* f17abf8: 2401ffff */ addiu $at,$zero,-1 /* f17abfc: 15410004 */ bne $t2,$at,.L0f17ac10 /* f17ac00: 3c018000 */ lui $at,0x8000 /* f17ac04: 14610002 */ bne $v1,$at,.L0f17ac10 /* f17ac08: 00000000 */ nop /* f17ac0c: 0006000d */ break 0x6 .L0f17ac10: /* f17ac10: 3c048007 */ lui $a0,%hi(g_StringPointer) /* f17ac14: 14c0001a */ bnez $a2,.L0f17ac80 /* f17ac18: 00000000 */ nop /* f17ac1c: 006a001a */ div $zero,$v1,$t2 /* f17ac20: 00003010 */ mfhi $a2 /* f17ac24: 3c048007 */ lui $a0,%hi(g_StringPointer) /* f17ac28: 3c057f1b */ lui $a1,%hi(var7f1b7f58) /* f17ac2c: 0048001b */ divu $zero,$v0,$t0 /* f17ac30: 00003810 */ mfhi $a3 /* f17ac34: 24a57f58 */ addiu $a1,$a1,%lo(var7f1b7f58) /* f17ac38: 8c841440 */ lw $a0,%lo(g_StringPointer)($a0) /* f17ac3c: 15400002 */ bnez $t2,.L0f17ac48 /* f17ac40: 00000000 */ nop /* f17ac44: 0007000d */ break 0x7 .L0f17ac48: /* f17ac48: 2401ffff */ addiu $at,$zero,-1 /* f17ac4c: 15410004 */ bne $t2,$at,.L0f17ac60 /* f17ac50: 3c018000 */ lui $at,0x8000 /* f17ac54: 14610002 */ bne $v1,$at,.L0f17ac60 /* f17ac58: 00000000 */ nop /* f17ac5c: 0006000d */ break 0x6 .L0f17ac60: /* f17ac60: afa90010 */ sw $t1,0x10($sp) /* f17ac64: 15000002 */ bnez $t0,.L0f17ac70 /* f17ac68: 00000000 */ nop /* f17ac6c: 0007000d */ break 0x7 .L0f17ac70: /* f17ac70: 0c004dad */ jal sprintf /* f17ac74: 00000000 */ nop /* f17ac78: 10000015 */ b .L0f17acd0 /* f17ac7c: 00000000 */ nop .L0f17ac80: /* f17ac80: 006a001a */ div $zero,$v1,$t2 /* f17ac84: 00003810 */ mfhi $a3 /* f17ac88: 8c841440 */ lw $a0,%lo(g_StringPointer)($a0) /* f17ac8c: 15400002 */ bnez $t2,.L0f17ac98 /* f17ac90: 00000000 */ nop /* f17ac94: 0007000d */ break 0x7 .L0f17ac98: /* f17ac98: 2401ffff */ addiu $at,$zero,-1 /* f17ac9c: 15410004 */ bne $t2,$at,.L0f17acb0 /* f17aca0: 3c018000 */ lui $at,0x8000 /* f17aca4: 14610002 */ bne $v1,$at,.L0f17acb0 /* f17aca8: 00000000 */ nop /* f17acac: 0006000d */ break 0x6 .L0f17acb0: /* f17acb0: 0048001b */ divu $zero,$v0,$t0 /* f17acb4: 0000c010 */ mfhi $t8 /* f17acb8: afb80010 */ sw $t8,0x10($sp) /* f17acbc: 15000002 */ bnez $t0,.L0f17acc8 /* f17acc0: 00000000 */ nop /* f17acc4: 0007000d */ break 0x7 .L0f17acc8: /* f17acc8: 0c004dad */ jal sprintf /* f17accc: 00000000 */ nop .L0f17acd0: /* f17acd0: 3c028007 */ lui $v0,%hi(g_StringPointer) /* f17acd4: 8c421440 */ lw $v0,%lo(g_StringPointer)($v0) .L0f17acd8: /* f17acd8: 8fbf001c */ lw $ra,0x1c($sp) /* f17acdc: 27bd0020 */ addiu $sp,$sp,0x20 /* f17ace0: 03e00008 */ jr $ra /* f17ace4: 00000000 */ nop ); #else GLOBAL_ASM( glabel mpMenuTextTime /* f1754c0: 3c0e8007 */ lui $t6,0x8007 /* f1754c4: 8dce3af0 */ lw $t6,0x3af0($t6) /* f1754c8: 3c02800b */ lui $v0,0x800b /* f1754cc: 2408003c */ addiu $t0,$zero,0x3c /* f1754d0: 000e7880 */ sll $t7,$t6,0x2 /* f1754d4: 01ee7821 */ addu $t7,$t7,$t6 /* f1754d8: 000f7940 */ sll $t7,$t7,0x5 /* f1754dc: 004f1021 */ addu $v0,$v0,$t7 /* f1754e0: 8c4210d0 */ lw $v0,0x10d0($v0) /* f1754e4: 27bdffe0 */ addiu $sp,$sp,-32 /* f1754e8: afbf001c */ sw $ra,0x1c($sp) /* f1754ec: 0048001b */ divu $zero,$v0,$t0 /* f1754f0: 00004810 */ mfhi $t1 /* f1754f4: afa40020 */ sw $a0,0x20($sp) /* f1754f8: 15000002 */ bnez $t0,.NB0f175504 /* f1754fc: 00000000 */ sll $zero,$zero,0x0 /* f175500: 0007000d */ break 0x7 .NB0f175504: /* f175504: 3c017fff */ lui $at,0x7fff /* f175508: 54400005 */ bnezl $v0,.NB0f175520 /* f17550c: 3421ffff */ ori $at,$at,0xffff /* f175510: 3c027f1b */ lui $v0,0x7f1b /* f175514: 10000052 */ beqz $zero,.NB0f175660 /* f175518: 24422898 */ addiu $v0,$v0,0x2898 /* f17551c: 3421ffff */ ori $at,$at,0xffff .NB0f175520: /* f175520: 0041082b */ sltu $at,$v0,$at /* f175524: 14200004 */ bnez $at,.NB0f175538 /* f175528: 00000000 */ sll $zero,$zero,0x0 /* f17552c: 3c027f1b */ lui $v0,0x7f1b /* f175530: 1000004b */ beqz $zero,.NB0f175660 /* f175534: 244228a0 */ addiu $v0,$v0,0x28a0 .NB0f175538: /* f175538: 0048001b */ divu $zero,$v0,$t0 /* f17553c: 00001012 */ mflo $v0 /* f175540: 240a0018 */ addiu $t2,$zero,0x18 /* f175544: 15000002 */ bnez $t0,.NB0f175550 /* f175548: 00000000 */ sll $zero,$zero,0x0 /* f17554c: 0007000d */ break 0x7 .NB0f175550: /* f175550: 0048001b */ divu $zero,$v0,$t0 /* f175554: 00001812 */ mflo $v1 /* f175558: 3c04800a */ lui $a0,0x800a /* f17555c: 15000002 */ bnez $t0,.NB0f175568 /* f175560: 00000000 */ sll $zero,$zero,0x0 /* f175564: 0007000d */ break 0x7 .NB0f175568: /* f175568: 006a001a */ div $zero,$v1,$t2 /* f17556c: 00003012 */ mflo $a2 /* f175570: 248426b0 */ addiu $a0,$a0,0x26b0 /* f175574: 15400002 */ bnez $t2,.NB0f175580 /* f175578: 00000000 */ sll $zero,$zero,0x0 /* f17557c: 0007000d */ break 0x7 .NB0f175580: /* f175580: 2401ffff */ addiu $at,$zero,-1 /* f175584: 15410004 */ bne $t2,$at,.NB0f175598 /* f175588: 3c018000 */ lui $at,0x8000 /* f17558c: 14610002 */ bne $v1,$at,.NB0f175598 /* f175590: 00000000 */ sll $zero,$zero,0x0 /* f175594: 0006000d */ break 0x6 .NB0f175598: /* f175598: 3c057f1b */ lui $a1,0x7f1b /* f17559c: 14c0001a */ bnez $a2,.NB0f175608 /* f1755a0: 00000000 */ sll $zero,$zero,0x0 /* f1755a4: 006a001a */ div $zero,$v1,$t2 /* f1755a8: 00003010 */ mfhi $a2 /* f1755ac: 3c04800a */ lui $a0,0x800a /* f1755b0: 3c057f1b */ lui $a1,0x7f1b /* f1755b4: 0048001b */ divu $zero,$v0,$t0 /* f1755b8: 00003810 */ mfhi $a3 /* f1755bc: 24a528a8 */ addiu $a1,$a1,0x28a8 /* f1755c0: 248426b0 */ addiu $a0,$a0,0x26b0 /* f1755c4: 15400002 */ bnez $t2,.NB0f1755d0 /* f1755c8: 00000000 */ sll $zero,$zero,0x0 /* f1755cc: 0007000d */ break 0x7 .NB0f1755d0: /* f1755d0: 2401ffff */ addiu $at,$zero,-1 /* f1755d4: 15410004 */ bne $t2,$at,.NB0f1755e8 /* f1755d8: 3c018000 */ lui $at,0x8000 /* f1755dc: 14610002 */ bne $v1,$at,.NB0f1755e8 /* f1755e0: 00000000 */ sll $zero,$zero,0x0 /* f1755e4: 0006000d */ break 0x6 .NB0f1755e8: /* f1755e8: afa90010 */ sw $t1,0x10($sp) /* f1755ec: 15000002 */ bnez $t0,.NB0f1755f8 /* f1755f0: 00000000 */ sll $zero,$zero,0x0 /* f1755f4: 0007000d */ break 0x7 .NB0f1755f8: /* f1755f8: 0c004fc1 */ jal sprintf /* f1755fc: 00000000 */ sll $zero,$zero,0x0 /* f175600: 10000015 */ beqz $zero,.NB0f175658 /* f175604: 00000000 */ sll $zero,$zero,0x0 .NB0f175608: /* f175608: 006a001a */ div $zero,$v1,$t2 /* f17560c: 00003810 */ mfhi $a3 /* f175610: 24a528b8 */ addiu $a1,$a1,0x28b8 /* f175614: 15400002 */ bnez $t2,.NB0f175620 /* f175618: 00000000 */ sll $zero,$zero,0x0 /* f17561c: 0007000d */ break 0x7 .NB0f175620: /* f175620: 2401ffff */ addiu $at,$zero,-1 /* f175624: 15410004 */ bne $t2,$at,.NB0f175638 /* f175628: 3c018000 */ lui $at,0x8000 /* f17562c: 14610002 */ bne $v1,$at,.NB0f175638 /* f175630: 00000000 */ sll $zero,$zero,0x0 /* f175634: 0006000d */ break 0x6 .NB0f175638: /* f175638: 0048001b */ divu $zero,$v0,$t0 /* f17563c: 0000c010 */ mfhi $t8 /* f175640: afb80010 */ sw $t8,0x10($sp) /* f175644: 15000002 */ bnez $t0,.NB0f175650 /* f175648: 00000000 */ sll $zero,$zero,0x0 /* f17564c: 0007000d */ break 0x7 .NB0f175650: /* f175650: 0c004fc1 */ jal sprintf /* f175654: 00000000 */ sll $zero,$zero,0x0 .NB0f175658: /* f175658: 3c02800a */ lui $v0,0x800a /* f17565c: 244226b0 */ addiu $v0,$v0,0x26b0 .NB0f175660: /* f175660: 8fbf001c */ lw $ra,0x1c($sp) /* f175664: 27bd0020 */ addiu $sp,$sp,0x20 /* f175668: 03e00008 */ jr $ra /* f17566c: 00000000 */ sll $zero,$zero,0x0 ); #endif const char var7f1b7f48[] = "--:--\n"; const char var7f1b7f50[] = "==:==\n"; const char var7f1b7f58[] = "%d:%02d.%02d"; const char var7f1b7f68[] = "%d:%02d:%02d"; char *mpMenuTextAccuracy(struct menuitem *item) { #if VERSION < VERSION_NTSC_1_0 if (g_MpPlayers[g_MpPlayerNum].ammoused < 8) { return "-\n"; } #endif sprintf(g_StringPointer, "%s%s%.1f%%", "", "", g_MpPlayers[g_MpPlayerNum].accuracy / 10.0f); return g_StringPointer; } void mpFormatDamageValue(char *dst, f32 damage) { #if VERSION >= VERSION_NTSC_1_0 if (damage < 1000) { sprintf(dst, "%s%s%.1f", "", "", damage); } else if (damage < 10000) { sprintf(dst, "%s%s%.0f", "", "", damage); } else if (damage < 100000) { damage = damage / 1000; sprintf(dst, "%s%s%.1fK", "", "", damage); } else if (damage < 1000000) { damage = damage / 1000; sprintf(dst, "%s%s%.0fK", "", "", damage); } else if (damage < 10000000) { damage = damage / 1000; damage = damage / 1000; sprintf(dst, "%s%s%.1fM", "", "", damage); } else { damage = damage / 1000; damage = damage / 1000; sprintf(dst, "%s%s%.0fM", "", "", damage); } #else if (damage > 100000) { damage = damage / 1000; sprintf(dst, "%s%s%.1fKL", "", "", damage); } else { sprintf(dst, "%s%s%.1fL", "", "", damage); } #endif } char *mpMenuTextPainReceived(struct menuitem *item) { mpFormatDamageValue(g_StringPointer, g_MpPlayers[g_MpPlayerNum].painreceived / 10.0f); return g_StringPointer; } char *mpMenuTextDamageDealt(struct menuitem *item) { mpFormatDamageValue(g_StringPointer, g_MpPlayers[g_MpPlayerNum].damagedealt / 10.0f); return g_StringPointer; } #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel menuhandlerMpMedal /* f17b01c: 27bdff90 */ addiu $sp,$sp,-112 /* f17b020: 24010013 */ addiu $at,$zero,0x13 /* f17b024: afbf0024 */ sw $ra,0x24($sp) /* f17b028: 148100c8 */ bne $a0,$at,.L0f17b34c /* f17b02c: afa50074 */ sw $a1,0x74($sp) /* f17b030: 8cce0000 */ lw $t6,0x0($a2) /* f17b034: 3c19e700 */ lui $t9,0xe700 /* f17b038: 3c0cba00 */ lui $t4,0xba00 /* f17b03c: afae006c */ sw $t6,0x6c($sp) /* f17b040: 8cc80008 */ lw $t0,0x8($a2) /* f17b044: 25d80008 */ addiu $t8,$t6,0x8 /* f17b048: afb8006c */ sw $t8,0x6c($sp) /* f17b04c: adc00004 */ sw $zero,0x4($t6) /* f17b050: add90000 */ sw $t9,0x0($t6) /* f17b054: 8faa006c */ lw $t2,0x6c($sp) /* f17b058: 358c1301 */ ori $t4,$t4,0x1301 /* f17b05c: 3c0fb900 */ lui $t7,0xb900 /* f17b060: 254b0008 */ addiu $t3,$t2,0x8 /* f17b064: afab006c */ sw $t3,0x6c($sp) /* f17b068: ad400004 */ sw $zero,0x4($t2) /* f17b06c: ad4c0000 */ sw $t4,0x0($t2) /* f17b070: 8fad006c */ lw $t5,0x6c($sp) /* f17b074: 35ef0002 */ ori $t7,$t7,0x2 /* f17b078: 3c0aba00 */ lui $t2,0xba00 /* f17b07c: 25ae0008 */ addiu $t6,$t5,0x8 /* f17b080: afae006c */ sw $t6,0x6c($sp) /* f17b084: ada00004 */ sw $zero,0x4($t5) /* f17b088: adaf0000 */ sw $t7,0x0($t5) /* f17b08c: 8fb8006c */ lw $t8,0x6c($sp) /* f17b090: 354a1001 */ ori $t2,$t2,0x1001 /* f17b094: 3c0dba00 */ lui $t5,0xba00 /* f17b098: 27190008 */ addiu $t9,$t8,0x8 /* f17b09c: afb9006c */ sw $t9,0x6c($sp) /* f17b0a0: af000004 */ sw $zero,0x4($t8) /* f17b0a4: af0a0000 */ sw $t2,0x0($t8) /* f17b0a8: 8fab006c */ lw $t3,0x6c($sp) /* f17b0ac: 35ad0903 */ ori $t5,$t5,0x903 /* f17b0b0: 240e0c00 */ addiu $t6,$zero,0xc00 /* f17b0b4: 256c0008 */ addiu $t4,$t3,0x8 /* f17b0b8: afac006c */ sw $t4,0x6c($sp) /* f17b0bc: ad6e0004 */ sw $t6,0x4($t3) /* f17b0c0: ad6d0000 */ sw $t5,0x0($t3) /* f17b0c4: 8faf006c */ lw $t7,0x6c($sp) /* f17b0c8: 3c19ba00 */ lui $t9,0xba00 /* f17b0cc: 37390c02 */ ori $t9,$t9,0xc02 /* f17b0d0: 25f80008 */ addiu $t8,$t7,0x8 /* f17b0d4: afb8006c */ sw $t8,0x6c($sp) /* f17b0d8: ade00004 */ sw $zero,0x4($t7) /* f17b0dc: adf90000 */ sw $t9,0x0($t7) /* f17b0e0: 3c05800b */ lui $a1,%hi(var800ab5a8) /* f17b0e4: 8ca5b5a8 */ lw $a1,%lo(var800ab5a8)($a1) /* f17b0e8: 240b0001 */ addiu $t3,$zero,0x1 /* f17b0ec: 240a0002 */ addiu $t2,$zero,0x2 /* f17b0f0: afaa0010 */ sw $t2,0x10($sp) /* f17b0f4: afab0014 */ sw $t3,0x14($sp) /* f17b0f8: afa00018 */ sw $zero,0x18($sp) /* f17b0fc: 24060002 */ addiu $a2,$zero,0x2 /* f17b100: 27a4006c */ addiu $a0,$sp,0x6c /* f17b104: 00003825 */ or $a3,$zero,$zero /* f17b108: afa80068 */ sw $t0,0x68($sp) /* f17b10c: 0fc2ce70 */ jal func0f0b39c0 /* f17b110: 24a501a4 */ addiu $a1,$a1,0x01a4 /* f17b114: 8fac006c */ lw $t4,0x6c($sp) /* f17b118: 8fa80068 */ lw $t0,0x68($sp) /* f17b11c: 3c0eba00 */ lui $t6,0xba00 /* f17b120: 258d0008 */ addiu $t5,$t4,0x8 /* f17b124: afad006c */ sw $t5,0x6c($sp) /* f17b128: 35ce1402 */ ori $t6,$t6,0x1402 /* f17b12c: ad8e0000 */ sw $t6,0x0($t4) /* f17b130: ad800004 */ sw $zero,0x4($t4) /* f17b134: 8faf006c */ lw $t7,0x6c($sp) /* f17b138: 3c19fcff */ lui $t9,0xfcff /* f17b13c: 3c0afffc */ lui $t2,0xfffc /* f17b140: 25f80008 */ addiu $t8,$t7,0x8 /* f17b144: afb8006c */ sw $t8,0x6c($sp) /* f17b148: 354af279 */ ori $t2,$t2,0xf279 /* f17b14c: 3739ffff */ ori $t9,$t9,0xffff /* f17b150: adf90000 */ sw $t9,0x0($t7) /* f17b154: adea0004 */ sw $t2,0x4($t7) /* f17b158: 8fab006c */ lw $t3,0x6c($sp) /* f17b15c: 3c0dba00 */ lui $t5,0xba00 /* f17b160: 35ad0c02 */ ori $t5,$t5,0xc02 /* f17b164: 256c0008 */ addiu $t4,$t3,0x8 /* f17b168: afac006c */ sw $t4,0x6c($sp) /* f17b16c: ad600004 */ sw $zero,0x4($t3) /* f17b170: ad6d0000 */ sw $t5,0x0($t3) /* f17b174: 8fae0074 */ lw $t6,0x74($sp) /* f17b178: 24010001 */ addiu $at,$zero,0x1 /* f17b17c: 91c50001 */ lbu $a1,0x1($t6) /* f17b180: 50a0000a */ beqzl $a1,.L0f17b1ac /* f17b184: 3c05ff7f */ lui $a1,0xff7f /* f17b188: 10a1000a */ beq $a1,$at,.L0f17b1b4 /* f17b18c: 24010002 */ addiu $at,$zero,0x2 /* f17b190: 10a1000b */ beq $a1,$at,.L0f17b1c0 /* f17b194: 24010003 */ addiu $at,$zero,0x3 /* f17b198: 50a1000d */ beql $a1,$at,.L0f17b1d0 /* f17b19c: 3c0500bf */ lui $a1,0xbf /* f17b1a0: 1000000c */ b .L0f17b1d4 /* f17b1a4: 8fa50064 */ lw $a1,0x64($sp) /* f17b1a8: 3c05ff7f */ lui $a1,0xff7f .L0f17b1ac: /* f17b1ac: 10000009 */ b .L0f17b1d4 /* f17b1b0: 34a57fff */ ori $a1,$a1,0x7fff .L0f17b1b4: /* f17b1b4: 3c05bfbf */ lui $a1,0xbfbf /* f17b1b8: 10000006 */ b .L0f17b1d4 /* f17b1bc: 34a500ff */ ori $a1,$a1,0xff .L0f17b1c0: /* f17b1c0: 3c0500ff */ lui $a1,0xff /* f17b1c4: 10000003 */ b .L0f17b1d4 /* f17b1c8: 34a500ff */ ori $a1,$a1,0xff /* f17b1cc: 3c0500bf */ lui $a1,0xbf .L0f17b1d0: /* f17b1d0: 34a5bfff */ ori $a1,$a1,0xbfff .L0f17b1d4: /* f17b1d4: 8d18000c */ lw $t8,0xc($t0) /* f17b1d8: 30af00ff */ andi $t7,$a1,0xff /* f17b1dc: 8fad006c */ lw $t5,0x6c($sp) /* f17b1e0: 331900ff */ andi $t9,$t8,0xff /* f17b1e4: 01f90019 */ multu $t7,$t9 /* f17b1e8: 2401ff00 */ addiu $at,$zero,-256 /* f17b1ec: 25ae0008 */ addiu $t6,$t5,0x8 /* f17b1f0: 00a16024 */ and $t4,$a1,$at /* f17b1f4: afae006c */ sw $t6,0x6c($sp) /* f17b1f8: 3c18fb00 */ lui $t8,0xfb00 /* f17b1fc: adb80000 */ sw $t8,0x0($t5) /* f17b200: 01a01025 */ or $v0,$t5,$zero /* f17b204: 3c068008 */ lui $a2,%hi(g_ScaleX) /* f17b208: 24c6fac0 */ addiu $a2,$a2,%lo(g_ScaleX) /* f17b20c: 00005012 */ mflo $t2 /* f17b210: 000a5a02 */ srl $t3,$t2,0x8 /* f17b214: 018b2825 */ or $a1,$t4,$t3 /* f17b218: ada50004 */ sw $a1,0x4($t5) /* f17b21c: 8faf006c */ lw $t7,0x6c($sp) /* f17b220: 3c0cff37 */ lui $t4,0xff37 /* f17b224: 3c0afc12 */ lui $t2,0xfc12 /* f17b228: 25f90008 */ addiu $t9,$t7,0x8 /* f17b22c: afb9006c */ sw $t9,0x6c($sp) /* f17b230: 354a9a25 */ ori $t2,$t2,0x9a25 /* f17b234: 358cffff */ ori $t4,$t4,0xffff /* f17b238: adec0004 */ sw $t4,0x4($t7) /* f17b23c: adea0000 */ sw $t2,0x0($t7) /* f17b240: 8fab006c */ lw $t3,0x6c($sp) /* f17b244: 8cd90000 */ lw $t9,0x0($a2) /* f17b248: 3c01e400 */ lui $at,0xe400 /* f17b24c: 256d0008 */ addiu $t5,$t3,0x8 /* f17b250: afad006c */ sw $t5,0x6c($sp) /* f17b254: 8d0e0000 */ lw $t6,0x0($t0) /* f17b258: 01602025 */ or $a0,$t3,$zero /* f17b25c: 25d80014 */ addiu $t8,$t6,0x14 /* f17b260: 00187880 */ sll $t7,$t8,0x2 /* f17b264: 01f90019 */ multu $t7,$t9 /* f17b268: 8d0e0004 */ lw $t6,0x4($t0) /* f17b26c: 25d8000b */ addiu $t8,$t6,0xb /* f17b270: 00187880 */ sll $t7,$t8,0x2 /* f17b274: 31f90fff */ andi $t9,$t7,0xfff /* f17b278: 00005012 */ mflo $t2 /* f17b27c: 314c0fff */ andi $t4,$t2,0xfff /* f17b280: 000c5b00 */ sll $t3,$t4,0xc /* f17b284: 01616825 */ or $t5,$t3,$at /* f17b288: 01b95025 */ or $t2,$t5,$t9 /* f17b28c: ac8a0000 */ sw $t2,0x0($a0) /* f17b290: 8d0c0000 */ lw $t4,0x0($t0) /* f17b294: 8cd80000 */ lw $t8,0x0($a2) /* f17b298: 8d0a0004 */ lw $t2,0x4($t0) /* f17b29c: 258b0009 */ addiu $t3,$t4,0x9 /* f17b2a0: 000b7080 */ sll $t6,$t3,0x2 /* f17b2a4: 01d80019 */ multu $t6,$t8 /* f17b2a8: 000a6080 */ sll $t4,$t2,0x2 /* f17b2ac: 318b0fff */ andi $t3,$t4,0xfff /* f17b2b0: 240a0160 */ addiu $t2,$zero,0x160 /* f17b2b4: 00007812 */ mflo $t7 /* f17b2b8: 31ed0fff */ andi $t5,$t7,0xfff /* f17b2bc: 000dcb00 */ sll $t9,$t5,0xc /* f17b2c0: 032b7025 */ or $t6,$t9,$t3 /* f17b2c4: ac8e0004 */ sw $t6,0x4($a0) /* f17b2c8: 8fb8006c */ lw $t8,0x6c($sp) /* f17b2cc: 3c0db400 */ lui $t5,0xb400 /* f17b2d0: 3c0bb300 */ lui $t3,0xb300 /* f17b2d4: 270f0008 */ addiu $t7,$t8,0x8 /* f17b2d8: afaf006c */ sw $t7,0x6c($sp) /* f17b2dc: af0a0004 */ sw $t2,0x4($t8) /* f17b2e0: af0d0000 */ sw $t5,0x0($t8) /* f17b2e4: 8fac006c */ lw $t4,0x6c($sp) /* f17b2e8: 03001825 */ or $v1,$t8,$zero /* f17b2ec: 24180400 */ addiu $t8,$zero,0x400 /* f17b2f0: 25990008 */ addiu $t9,$t4,0x8 /* f17b2f4: afb9006c */ sw $t9,0x6c($sp) /* f17b2f8: ad8b0000 */ sw $t3,0x0($t4) /* f17b2fc: 8cce0000 */ lw $t6,0x0($a2) /* f17b300: 01802025 */ or $a0,$t4,$zero /* f17b304: 030e001a */ div $zero,$t8,$t6 /* f17b308: 00007812 */ mflo $t7 /* f17b30c: 31edffff */ andi $t5,$t7,0xffff /* f17b310: 000d5400 */ sll $t2,$t5,0x10 /* f17b314: 354cfc00 */ ori $t4,$t2,0xfc00 /* f17b318: ac8c0004 */ sw $t4,0x4($a0) /* f17b31c: 15c00002 */ bnez $t6,.L0f17b328 /* f17b320: 00000000 */ nop /* f17b324: 0007000d */ break 0x7 .L0f17b328: /* f17b328: 2401ffff */ addiu $at,$zero,-1 /* f17b32c: 15c10004 */ bne $t6,$at,.L0f17b340 /* f17b330: 3c018000 */ lui $at,0x8000 /* f17b334: 17010002 */ bne $t8,$at,.L0f17b340 /* f17b338: 00000000 */ nop /* f17b33c: 0006000d */ break 0x6 .L0f17b340: /* f17b340: 8fa2006c */ lw $v0,0x6c($sp) /* f17b344: 10000003 */ b .L0f17b354 /* f17b348: 8fbf0024 */ lw $ra,0x24($sp) .L0f17b34c: /* f17b34c: 00001025 */ or $v0,$zero,$zero /* f17b350: 8fbf0024 */ lw $ra,0x24($sp) .L0f17b354: /* f17b354: 27bd0070 */ addiu $sp,$sp,0x70 /* f17b358: 03e00008 */ jr $ra /* f17b35c: 00000000 */ nop ); #else GLOBAL_ASM( glabel menuhandlerMpMedal /* f1758b0: 27bdff90 */ addiu $sp,$sp,-112 /* f1758b4: 24010013 */ addiu $at,$zero,0x13 /* f1758b8: afbf0024 */ sw $ra,0x24($sp) /* f1758bc: 148100c3 */ bne $a0,$at,.NB0f175bcc /* f1758c0: afa50074 */ sw $a1,0x74($sp) /* f1758c4: 8cce0000 */ lw $t6,0x0($a2) /* f1758c8: 3c19e700 */ lui $t9,0xe700 /* f1758cc: 3c0cba00 */ lui $t4,0xba00 /* f1758d0: afae006c */ sw $t6,0x6c($sp) /* f1758d4: 8cc90008 */ lw $t1,0x8($a2) /* f1758d8: 25d80008 */ addiu $t8,$t6,0x8 /* f1758dc: afb8006c */ sw $t8,0x6c($sp) /* f1758e0: adc00004 */ sw $zero,0x4($t6) /* f1758e4: add90000 */ sw $t9,0x0($t6) /* f1758e8: 8faa006c */ lw $t2,0x6c($sp) /* f1758ec: 358c1301 */ ori $t4,$t4,0x1301 /* f1758f0: 3c0fb900 */ lui $t7,0xb900 /* f1758f4: 254b0008 */ addiu $t3,$t2,0x8 /* f1758f8: afab006c */ sw $t3,0x6c($sp) /* f1758fc: ad400004 */ sw $zero,0x4($t2) /* f175900: ad4c0000 */ sw $t4,0x0($t2) /* f175904: 8fad006c */ lw $t5,0x6c($sp) /* f175908: 35ef0002 */ ori $t7,$t7,0x2 /* f17590c: 3c0aba00 */ lui $t2,0xba00 /* f175910: 25ae0008 */ addiu $t6,$t5,0x8 /* f175914: afae006c */ sw $t6,0x6c($sp) /* f175918: ada00004 */ sw $zero,0x4($t5) /* f17591c: adaf0000 */ sw $t7,0x0($t5) /* f175920: 8fb8006c */ lw $t8,0x6c($sp) /* f175924: 354a1001 */ ori $t2,$t2,0x1001 /* f175928: 3c0dba00 */ lui $t5,0xba00 /* f17592c: 27190008 */ addiu $t9,$t8,0x8 /* f175930: afb9006c */ sw $t9,0x6c($sp) /* f175934: af000004 */ sw $zero,0x4($t8) /* f175938: af0a0000 */ sw $t2,0x0($t8) /* f17593c: 8fab006c */ lw $t3,0x6c($sp) /* f175940: 35ad0903 */ ori $t5,$t5,0x903 /* f175944: 240e0c00 */ addiu $t6,$zero,0xc00 /* f175948: 256c0008 */ addiu $t4,$t3,0x8 /* f17594c: afac006c */ sw $t4,0x6c($sp) /* f175950: ad6e0004 */ sw $t6,0x4($t3) /* f175954: ad6d0000 */ sw $t5,0x0($t3) /* f175958: 8faf006c */ lw $t7,0x6c($sp) /* f17595c: 3c19ba00 */ lui $t9,0xba00 /* f175960: 37390c02 */ ori $t9,$t9,0xc02 /* f175964: 25f80008 */ addiu $t8,$t7,0x8 /* f175968: afb8006c */ sw $t8,0x6c($sp) /* f17596c: ade00004 */ sw $zero,0x4($t7) /* f175970: adf90000 */ sw $t9,0x0($t7) /* f175974: 3c05800b */ lui $a1,0x800b /* f175978: 8ca5fe58 */ lw $a1,-0x1a8($a1) /* f17597c: 240b0001 */ addiu $t3,$zero,0x1 /* f175980: 240a0002 */ addiu $t2,$zero,0x2 /* f175984: afaa0010 */ sw $t2,0x10($sp) /* f175988: afab0014 */ sw $t3,0x14($sp) /* f17598c: afa00018 */ sw $zero,0x18($sp) /* f175990: 24060002 */ addiu $a2,$zero,0x2 /* f175994: 27a4006c */ addiu $a0,$sp,0x6c /* f175998: 00003825 */ or $a3,$zero,$zero /* f17599c: afa90068 */ sw $t1,0x68($sp) /* f1759a0: 0fc2c5c8 */ jal func0f0b39c0 /* f1759a4: 24a501a4 */ addiu $a1,$a1,0x1a4 /* f1759a8: 8fac006c */ lw $t4,0x6c($sp) /* f1759ac: 8fa90068 */ lw $t1,0x68($sp) /* f1759b0: 3c0eba00 */ lui $t6,0xba00 /* f1759b4: 258d0008 */ addiu $t5,$t4,0x8 /* f1759b8: afad006c */ sw $t5,0x6c($sp) /* f1759bc: 35ce1402 */ ori $t6,$t6,0x1402 /* f1759c0: ad8e0000 */ sw $t6,0x0($t4) /* f1759c4: ad800004 */ sw $zero,0x4($t4) /* f1759c8: 8faf006c */ lw $t7,0x6c($sp) /* f1759cc: 3c19fcff */ lui $t9,0xfcff /* f1759d0: 3c0afffc */ lui $t2,0xfffc /* f1759d4: 25f80008 */ addiu $t8,$t7,0x8 /* f1759d8: afb8006c */ sw $t8,0x6c($sp) /* f1759dc: 354af279 */ ori $t2,$t2,0xf279 /* f1759e0: 3739ffff */ ori $t9,$t9,0xffff /* f1759e4: adf90000 */ sw $t9,0x0($t7) /* f1759e8: adea0004 */ sw $t2,0x4($t7) /* f1759ec: 8fab006c */ lw $t3,0x6c($sp) /* f1759f0: 3c0dba00 */ lui $t5,0xba00 /* f1759f4: 35ad0c02 */ ori $t5,$t5,0xc02 /* f1759f8: 256c0008 */ addiu $t4,$t3,0x8 /* f1759fc: afac006c */ sw $t4,0x6c($sp) /* f175a00: ad600004 */ sw $zero,0x4($t3) /* f175a04: ad6d0000 */ sw $t5,0x0($t3) /* f175a08: 8fae0074 */ lw $t6,0x74($sp) /* f175a0c: 3c0fff7f */ lui $t7,0xff7f /* f175a10: 24010001 */ addiu $at,$zero,0x1 /* f175a14: 91c50001 */ lbu $a1,0x1($t6) /* f175a18: 35ef7fff */ ori $t7,$t7,0x7fff /* f175a1c: 10a0000b */ beqz $a1,.NB0f175a4c /* f175a20: 00000000 */ sll $zero,$zero,0x0 /* f175a24: 10a1000b */ beq $a1,$at,.NB0f175a54 /* f175a28: 3c18bfbf */ lui $t8,0xbfbf /* f175a2c: 24010002 */ addiu $at,$zero,0x2 /* f175a30: 10a1000b */ beq $a1,$at,.NB0f175a60 /* f175a34: 3c1900ff */ lui $t9,0xff /* f175a38: 24010003 */ addiu $at,$zero,0x3 /* f175a3c: 10a1000b */ beq $a1,$at,.NB0f175a6c /* f175a40: 3c0a00bf */ lui $t2,0xbf /* f175a44: 1000000c */ beqz $zero,.NB0f175a78 /* f175a48: 8fab006c */ lw $t3,0x6c($sp) .NB0f175a4c: /* f175a4c: 10000009 */ beqz $zero,.NB0f175a74 /* f175a50: afaf0064 */ sw $t7,0x64($sp) .NB0f175a54: /* f175a54: 371800ff */ ori $t8,$t8,0xff /* f175a58: 10000006 */ beqz $zero,.NB0f175a74 /* f175a5c: afb80064 */ sw $t8,0x64($sp) .NB0f175a60: /* f175a60: 373900ff */ ori $t9,$t9,0xff /* f175a64: 10000003 */ beqz $zero,.NB0f175a74 /* f175a68: afb90064 */ sw $t9,0x64($sp) .NB0f175a6c: /* f175a6c: 354abfff */ ori $t2,$t2,0xbfff /* f175a70: afaa0064 */ sw $t2,0x64($sp) .NB0f175a74: /* f175a74: 8fab006c */ lw $t3,0x6c($sp) .NB0f175a78: /* f175a78: 3c0dfb00 */ lui $t5,0xfb00 /* f175a7c: 3c19fc12 */ lui $t9,0xfc12 /* f175a80: 256c0008 */ addiu $t4,$t3,0x8 /* f175a84: afac006c */ sw $t4,0x6c($sp) /* f175a88: ad6d0000 */ sw $t5,0x0($t3) /* f175a8c: 8fae0064 */ lw $t6,0x64($sp) /* f175a90: 3c0aff37 */ lui $t2,0xff37 /* f175a94: 354affff */ ori $t2,$t2,0xffff /* f175a98: ad6e0004 */ sw $t6,0x4($t3) /* f175a9c: 8faf006c */ lw $t7,0x6c($sp) /* f175aa0: 37399a25 */ ori $t9,$t9,0x9a25 /* f175aa4: 01601025 */ or $v0,$t3,$zero /* f175aa8: 25f80008 */ addiu $t8,$t7,0x8 /* f175aac: afb8006c */ sw $t8,0x6c($sp) /* f175ab0: adea0004 */ sw $t2,0x4($t7) /* f175ab4: adf90000 */ sw $t9,0x0($t7) /* f175ab8: 8fab006c */ lw $t3,0x6c($sp) /* f175abc: 3c068008 */ lui $a2,0x8008 /* f175ac0: 24c62320 */ addiu $a2,$a2,0x2320 /* f175ac4: 256c0008 */ addiu $t4,$t3,0x8 /* f175ac8: afac006c */ sw $t4,0x6c($sp) /* f175acc: 8d2d0000 */ lw $t5,0x0($t1) /* f175ad0: 8cd80000 */ lw $t8,0x0($a2) /* f175ad4: 01602025 */ or $a0,$t3,$zero /* f175ad8: 25ae0014 */ addiu $t6,$t5,0x14 /* f175adc: 000e7880 */ sll $t7,$t6,0x2 /* f175ae0: 01f80019 */ multu $t7,$t8 /* f175ae4: 8d2d0004 */ lw $t5,0x4($t1) /* f175ae8: 3c01e400 */ lui $at,0xe400 /* f175aec: 25ae000b */ addiu $t6,$t5,0xb /* f175af0: 000e7880 */ sll $t7,$t6,0x2 /* f175af4: 31f80fff */ andi $t8,$t7,0xfff /* f175af8: 0000c812 */ mflo $t9 /* f175afc: 332a0fff */ andi $t2,$t9,0xfff /* f175b00: 000a5b00 */ sll $t3,$t2,0xc /* f175b04: 01616025 */ or $t4,$t3,$at /* f175b08: 0198c825 */ or $t9,$t4,$t8 /* f175b0c: ac990000 */ sw $t9,0x0($a0) /* f175b10: 8d2a0000 */ lw $t2,0x0($t1) /* f175b14: 8cce0000 */ lw $t6,0x0($a2) /* f175b18: 8d390004 */ lw $t9,0x4($t1) /* f175b1c: 254b0009 */ addiu $t3,$t2,0x9 /* f175b20: 000b6880 */ sll $t5,$t3,0x2 /* f175b24: 01ae0019 */ multu $t5,$t6 /* f175b28: 00195080 */ sll $t2,$t9,0x2 /* f175b2c: 314b0fff */ andi $t3,$t2,0xfff /* f175b30: 24190160 */ addiu $t9,$zero,0x160 /* f175b34: 00007812 */ mflo $t7 /* f175b38: 31ec0fff */ andi $t4,$t7,0xfff /* f175b3c: 000cc300 */ sll $t8,$t4,0xc /* f175b40: 030b6825 */ or $t5,$t8,$t3 /* f175b44: ac8d0004 */ sw $t5,0x4($a0) /* f175b48: 8fae006c */ lw $t6,0x6c($sp) /* f175b4c: 3c0cb400 */ lui $t4,0xb400 /* f175b50: 3c0bb300 */ lui $t3,0xb300 /* f175b54: 25cf0008 */ addiu $t7,$t6,0x8 /* f175b58: afaf006c */ sw $t7,0x6c($sp) /* f175b5c: add90004 */ sw $t9,0x4($t6) /* f175b60: adcc0000 */ sw $t4,0x0($t6) /* f175b64: 8faa006c */ lw $t2,0x6c($sp) /* f175b68: 01c02825 */ or $a1,$t6,$zero /* f175b6c: 240e0400 */ addiu $t6,$zero,0x400 /* f175b70: 25580008 */ addiu $t8,$t2,0x8 /* f175b74: afb8006c */ sw $t8,0x6c($sp) /* f175b78: ad4b0000 */ sw $t3,0x0($t2) /* f175b7c: 8ccd0000 */ lw $t5,0x0($a2) /* f175b80: 01401825 */ or $v1,$t2,$zero /* f175b84: 01cd001a */ div $zero,$t6,$t5 /* f175b88: 00007812 */ mflo $t7 /* f175b8c: 31ecffff */ andi $t4,$t7,0xffff /* f175b90: 000ccc00 */ sll $t9,$t4,0x10 /* f175b94: 372afc00 */ ori $t2,$t9,0xfc00 /* f175b98: ac6a0004 */ sw $t2,0x4($v1) /* f175b9c: 15a00002 */ bnez $t5,.NB0f175ba8 /* f175ba0: 00000000 */ sll $zero,$zero,0x0 /* f175ba4: 0007000d */ break 0x7 .NB0f175ba8: /* f175ba8: 2401ffff */ addiu $at,$zero,-1 /* f175bac: 15a10004 */ bne $t5,$at,.NB0f175bc0 /* f175bb0: 3c018000 */ lui $at,0x8000 /* f175bb4: 15c10002 */ bne $t6,$at,.NB0f175bc0 /* f175bb8: 00000000 */ sll $zero,$zero,0x0 /* f175bbc: 0006000d */ break 0x6 .NB0f175bc0: /* f175bc0: 8fa2006c */ lw $v0,0x6c($sp) /* f175bc4: 10000003 */ beqz $zero,.NB0f175bd4 /* f175bc8: 8fbf0024 */ lw $ra,0x24($sp) .NB0f175bcc: /* f175bcc: 00001025 */ or $v0,$zero,$zero /* f175bd0: 8fbf0024 */ lw $ra,0x24($sp) .NB0f175bd4: /* f175bd4: 27bd0070 */ addiu $sp,$sp,0x70 /* f175bd8: 03e00008 */ jr $ra /* f175bdc: 00000000 */ sll $zero,$zero,0x0 ); #endif char *mpMenuTitleStatsForPlayerName(struct menudialog *dialog) { // "Stats for %s" sprintf(g_StringPointer, langGet(L_MPMENU_145), g_MpPlayers[g_MpPlayerNum].base.name); return g_StringPointer; } s32 menuhandlerMpUsernamePassword(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { if (g_MpPlayers[g_MpPlayerNum].title != MPPLAYERTITLE_PERFECT) { return true; } } return 0; } struct menuitem g_MpSavePlayerMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_191, 0x00000000, NULL }, // "Your player file is always saved automatically." { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_192, 0x00000000, NULL }, // "Save a copy now?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_193, 0x00000000, NULL }, // "No" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_194, 0x00000000, menuhandlerMpConfirmSaveChr }, // "Yes" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSavePlayerMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_190, // "Confirm" g_MpSavePlayerMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpSaveSetupNameMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_189, 0x00000000, NULL }, // "Enter a name for your game setup file:" { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, menuhandlerMpPlayerName }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSaveSetupNameMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_188, // "Game File Name" g_MpSaveSetupNameMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpSaveSetupExistsMenuItems[] = { #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPWEAPONS_230, (u32)&mpMenuTextSetupName, NULL }, // "Name:" { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemgrMenuTextDeviceName, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_184, 0x00000000, NULL }, // "Do you want to save over your original game file?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_185, 0x00000000, menuhandlerMpSaveSetupOverwrite }, // "Save Over Original" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_186, 0x00000000, menuhandlerMpSaveSetupCopy }, // "Save Copy" #endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_187, 0x00000000, NULL }, // "Do Not Save" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSaveSetupExistsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_183, // "Save Game Setup" g_MpSaveSetupExistsMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpWeaponsMenuItems[] = { { MENUITEMTYPE_DROPDOWN, 1, 0x00020090, L_MPMENU_174, 0x00000000, menuhandlerMpWeaponSetDropdown }, // "Set:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000212, L_MPMENU_175, 0x00000000, NULL }, // "Current Weapon Setup:" { MENUITEMTYPE_DROPDOWN, 0, 0x000a0080, L_MPMENU_176, 0x00000000, menuhandlerMpWeaponSlot }, // "1:" { MENUITEMTYPE_DROPDOWN, 0, 0x000a0080, L_MPMENU_177, 0x00000001, menuhandlerMpWeaponSlot }, // "2:" { MENUITEMTYPE_DROPDOWN, 0, 0x000a0080, L_MPMENU_178, 0x00000002, menuhandlerMpWeaponSlot }, // "3:" { MENUITEMTYPE_DROPDOWN, 0, 0x000a0080, L_MPMENU_179, 0x00000003, menuhandlerMpWeaponSlot }, // "4:" { MENUITEMTYPE_DROPDOWN, 0, 0x000a0080, L_MPMENU_180, 0x00000004, menuhandlerMpWeaponSlot }, // "5:" { MENUITEMTYPE_DROPDOWN, 0, 0x000a0080, L_MPMENU_181, 0x00000005, menuhandlerMpWeaponSlot }, // "6:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_182, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpWeaponsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_173, // "Weapons" g_MpWeaponsMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpQuickTeamWeaponsMenuItems[] = { { MENUITEMTYPE_DROPDOWN, 0, 0x00020090, L_MPMENU_174, 0x00000000, menuhandlerMpWeaponSetDropdown }, // "Set:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_176, (u32)&mpMenuTextWeaponNameForSlot, NULL }, // "1:" { MENUITEMTYPE_LABEL, 1, 0x00000002, L_MPMENU_177, (u32)&mpMenuTextWeaponNameForSlot, NULL }, // "2:" { MENUITEMTYPE_LABEL, 2, 0x00000002, L_MPMENU_178, (u32)&mpMenuTextWeaponNameForSlot, NULL }, // "3:" { MENUITEMTYPE_LABEL, 3, 0x00000002, L_MPMENU_179, (u32)&mpMenuTextWeaponNameForSlot, NULL }, // "4:" { MENUITEMTYPE_LABEL, 4, 0x00000002, L_MPMENU_180, (u32)&mpMenuTextWeaponNameForSlot, NULL }, // "5:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_182, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpQuickTeamWeaponsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_173, // "Weapons" g_MpQuickTeamWeaponsMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpPlayerOptionsMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_168, MPDISPLAYOPTION_HIGHLIGHTPICKUPS, menuhandlerMpDisplayOptionCheckbox }, // "Highlight Pickups" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_169, MPDISPLAYOPTION_HIGHLIGHTPLAYERS, menuhandlerMpDisplayOptionCheckbox }, // "Highlight Players" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_170, MPDISPLAYOPTION_HIGHLIGHTTEAMS, menuhandlerMpDisplayOptionCheckbox }, // "Highlight Teams" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_171, MPDISPLAYOPTION_RADAR, menuhandlerMpDisplayOptionCheckbox }, // "Radar" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_172, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpPlayerOptionsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_167, // "Options" g_MpPlayerOptionsMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpControlMenuItems[] = { { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPMENU_200, 0x00000000, menuhandlerMpControlStyle }, // "Control Style" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_201, OPTION_FORWARDPITCH, menuhandlerMpControlCheckbox }, // "Reverse Pitch" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_202, OPTION_LOOKAHEAD, menuhandlerMpControlCheckbox }, // "Look Ahead" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_203, OPTION_HEADROLL, menuhandlerMpControlCheckbox }, // "Head Roll" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_204, OPTION_AUTOAIM, menuhandlerMpControlCheckbox }, // "Auto-Aim" { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPMENU_205, 0x00000000, menuhandlerMpAimControl }, // "Aim Control" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_206, OPTION_SIGHTONSCREEN, menuhandlerMpControlCheckbox }, // "Sight on Screen" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_207, OPTION_ALWAYSSHOWTARGET, menuhandlerMpControlCheckbox }, // "Show Target" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_208, OPTION_SHOWZOOMRANGE, menuhandlerMpControlCheckbox }, // "Show Zoom Range" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_209, OPTION_AMMOONSCREEN, menuhandlerMpControlCheckbox }, // "Ammo on Screen" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_210, OPTION_SHOWGUNFUNCTION, menuhandlerMpControlCheckbox }, // "Gun Function" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPMENU_211, OPTION_PAINTBALL, menuhandlerMpControlCheckbox }, // "Paintball" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_212, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpControlMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_199, // "Control" g_MpControlMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpCompletedChallengesMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00200000, 0x00000078, 0x0000004d, mpChallengesListHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpCompletedChallengesMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_165, // "Completed Challenges" g_MpCompletedChallengesMenuItems, NULL, 0x00000048, NULL, }; #if VERSION >= VERSION_NTSC_1_0 char *mpMenuTextUsernamePassword(struct menuitem *item) { // Phrases included here to assist people searching the code for them: // EnTROpIcDeCAy // ZeRo-Tau u8 username[15] = { 'E' + 9 * 1, 'n' + 9 * 2, 'T' + 9 * 3, 'R' + 9 * 4, 'O' + 9 * 5, 'p' + 9 * 6, 'I' + 9 * 7, 'c' + 9 * 8, 'D' + 9 * 9, 'e' + 9 * 10, 'C' + 9 * 11, 'A' + 9 * 12, 'y' + 9 * 13, '\n' + 9 * 14, '\0' + 9 * 15, }; u8 password[10] = { 'Z' + 4 * 1, 'e' + 4 * 2, 'R' + 4 * 3, 'o' + 4 * 4, '-' + 4 * 5, 'T' + 4 * 6, 'a' + 4 * 7, 'u' + 4 * 8, '\n' + 4 * 9, '\0' + 4 * 10, }; u32 stack; s32 i; if (item->param == 0) { for (i = 0; i < 15; i++) { g_StringPointer[i] = username[i] - i * 9 - 9; } } else { for (i = 0; i < 10; i++) { g_StringPointer[i] = password[i] - i * 4 - 4; } } return g_StringPointer; } #endif struct menuitem g_MpPlayerStatsMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_146, (u32)&mpMenuTextKills, NULL }, // "Kills:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_147, (u32)&mpMenuTextDeaths, NULL }, // "Deaths:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_148, (u32)&mpMenuTextAccuracy, NULL }, // "Accuracy:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_149, (u32)&mpMenuTextHeadShots, NULL }, // "Head Shots:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_150, (u32)&mpMenuTextAmmoUsed, NULL }, // "Ammo Used:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_151, (u32)&mpMenuTextDamageDealt, NULL }, // "Damage Dealt:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_152, (u32)&mpMenuTextPainReceived, NULL }, // "Pain Received:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_153, (u32)&mpMenuTextGamesPlayed, NULL }, // "Games Played:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_154, (u32)&mpMenuTextGamesWon, NULL }, // "Games Won:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_155, (u32)&mpMenuTextGamesLost, NULL }, // "Games Lost:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_156, (u32)&mpMenuTextTime, NULL }, // "Time:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_157, (u32)&mpMenuTextDistance, NULL }, // "Distance:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPMENU_158, 0x00000000, NULL }, // "Medals Won:" { MENUITEMTYPE_LABEL, 2, 0x00200000, L_MPMENU_159, (u32)&mpMenuTextMedalAccuracy, menuhandlerMpMedal }, // "Accuracy:" { MENUITEMTYPE_LABEL, 1, 0x00200000, L_MPMENU_160, (u32)&mpMenuTextMedalHeadShot, menuhandlerMpMedal }, // "Head Shot:" { MENUITEMTYPE_LABEL, 0, 0x00200000, L_MPMENU_161, (u32)&mpMenuTextMedalKillMaster, menuhandlerMpMedal }, // "KillMaster:" { MENUITEMTYPE_LABEL, 3, 0x00200000, L_MPMENU_162, (u32)&mpMenuTextMedalSurvivor, menuhandlerMpMedal }, // "Survivor:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_163, 0x00000000, NULL }, // "Your Title:" { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&mpMenuTextPlayerTitle, 0x00000000, NULL }, #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPWEAPONS_219, 0x00000000, menuhandlerMpUsernamePassword }, // "USERNAME:" { MENUITEMTYPE_LABEL, 0, 0x00000220, (u32)&mpMenuTextUsernamePassword, 0x00000000, menuhandlerMpUsernamePassword }, { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPWEAPONS_220, 0x00000000, menuhandlerMpUsernamePassword }, // "PASSWORD:" { MENUITEMTYPE_LABEL, 1, 0x00000220, (u32)&mpMenuTextUsernamePassword, 0x00000000, menuhandlerMpUsernamePassword }, #endif { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_164, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpPlayerStatsMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&mpMenuTitleStatsForPlayerName, g_MpPlayerStatsMenuItems, NULL, 0x00000048, &g_MpCompletedChallengesMenuDialog, }; u32 var80085448 = 0x00000300; u32 var8008544c = 0x0400ff00; #if VERSION >= VERSION_PAL_FINAL GLOBAL_ASM( glabel func0f17b4f8 .late_rodata glabel var7f1b80f0 .word func0f17b4f8+0x34 # f17b52c glabel var7f1b80f4 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b80f8 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b80fc .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8100 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8104 .word func0f17b4f8+0x214 # f17b70c glabel var7f1b8108 .word func0f17b4f8+0x208 # f17b700 glabel var7f1b810c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8110 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8114 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8118 .word func0f17b4f8+0x48 # f17b540 glabel var7f1b811c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8120 .word func0f17b4f8+0x214 # f17b70c glabel var7f1b8124 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8128 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b812c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8130 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8134 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8138 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b813c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8140 .word func0f17b4f8+0x1e8 # f17b6e0 glabel var7f1b8144 .word 0x3c23d70a glabel var7f1b8148 .word 0xbe99999a glabel var7f1b814c .word 0x3c23d70a .text /* f17b4f8: 27bdffd0 */ addiu $sp,$sp,-48 /* f17b4fc: 248effff */ addiu $t6,$a0,-1 /* f17b500: 2dc10015 */ sltiu $at,$t6,0x15 /* f17b504: afbf002c */ sw $ra,0x2c($sp) /* f17b508: afa50034 */ sw $a1,0x34($sp) /* f17b50c: 102000c7 */ beqz $at,.L0f17b82c /* f17b510: afa7003c */ sw $a3,0x3c($sp) /* f17b514: 000e7080 */ sll $t6,$t6,0x2 /* f17b518: 3c017f1c */ lui $at,%hi(var7f1b80f0) /* f17b51c: 002e0821 */ addu $at,$at,$t6 /* f17b520: 8c2e80f0 */ lw $t6,%lo(var7f1b80f0)($at) /* f17b524: 01c00008 */ jr $t6 /* f17b528: 00000000 */ nop /* f17b52c: 0fc62ec7 */ jal func0f18bb1c /* f17b530: afa60038 */ sw $a2,0x38($sp) /* f17b534: 8fa60038 */ lw $a2,0x38($sp) /* f17b538: 100000bc */ b .L0f17b82c /* f17b53c: acc20000 */ sw $v0,0x0($a2) /* f17b540: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f17b544: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f17b548: 3c017f1c */ lui $at,%hi(var7f1b8144) /* f17b54c: c4248144 */ lwc1 $f4,%lo(var7f1b8144)($at) /* f17b550: 3c01800a */ lui $at,%hi(g_Vars+0x10) /* f17b554: 000fc0c0 */ sll $t8,$t7,0x3 /* f17b558: c4269fc4 */ lwc1 $f6,%lo(g_Vars+0x10)($at) /* f17b55c: 030fc023 */ subu $t8,$t8,$t7 /* f17b560: 0018c080 */ sll $t8,$t8,0x2 /* f17b564: 030fc021 */ addu $t8,$t8,$t7 /* f17b568: 46062202 */ mul.s $f8,$f4,$f6 /* f17b56c: 0018c0c0 */ sll $t8,$t8,0x3 /* f17b570: 3c19800a */ lui $t9,%hi(g_Menus) /* f17b574: 030fc023 */ subu $t8,$t8,$t7 /* f17b578: 0018c100 */ sll $t8,$t8,0x4 /* f17b57c: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f17b580: 03191821 */ addu $v1,$t8,$t9 /* f17b584: c46a0d64 */ lwc1 $f10,0xd64($v1) /* f17b588: 46085000 */ add.s $f0,$f10,$f8 /* f17b58c: e4600d8c */ swc1 $f0,0xd8c($v1) /* f17b590: 0fc62ec7 */ jal func0f18bb1c /* f17b594: e4600d64 */ swc1 $f0,0xd64($v1) /* f17b598: 8fa3003c */ lw $v1,0x3c($sp) /* f17b59c: 0062082a */ slt $at,$v1,$v0 /* f17b5a0: 1020001a */ beqz $at,.L0f17b60c /* f17b5a4: 00000000 */ nop /* f17b5a8: 0fc62ecb */ jal mpGetHeadId /* f17b5ac: 306400ff */ andi $a0,$v1,0xff /* f17b5b0: 3c088007 */ lui $t0,%hi(g_MpPlayerNum) /* f17b5b4: 8d081448 */ lw $t0,%lo(g_MpPlayerNum)($t0) /* f17b5b8: 3c0a800a */ lui $t2,%hi(g_Menus) /* f17b5bc: 254ae000 */ addiu $t2,$t2,%lo(g_Menus) /* f17b5c0: 000848c0 */ sll $t1,$t0,0x3 /* f17b5c4: 01284823 */ subu $t1,$t1,$t0 /* f17b5c8: 00094880 */ sll $t1,$t1,0x2 /* f17b5cc: 01284821 */ addu $t1,$t1,$t0 /* f17b5d0: 000948c0 */ sll $t1,$t1,0x3 /* f17b5d4: 01284823 */ subu $t1,$t1,$t0 /* f17b5d8: 00094900 */ sll $t1,$t1,0x4 /* f17b5dc: 00025880 */ sll $t3,$v0,0x2 /* f17b5e0: 01625821 */ addu $t3,$t3,$v0 /* f17b5e4: 012a1821 */ addu $v1,$t1,$t2 /* f17b5e8: 906d0df1 */ lbu $t5,0xdf1($v1) /* f17b5ec: 000b5880 */ sll $t3,$t3,0x2 /* f17b5f0: 3c0c8008 */ lui $t4,%hi(g_HeadsAndBodies+0x2) /* f17b5f4: 018b6021 */ addu $t4,$t4,$t3 /* f17b5f8: 958ccf06 */ lhu $t4,%lo(g_HeadsAndBodies+0x2)($t4) /* f17b5fc: 31aeff7f */ andi $t6,$t5,0xff7f /* f17b600: a06e0df1 */ sb $t6,0xdf1($v1) /* f17b604: 1000002e */ b .L0f17b6c0 /* f17b608: ac6c084c */ sw $t4,0x84c($v1) .L0f17b60c: /* f17b60c: 0fc62ec7 */ jal func0f18bb1c /* f17b610: 00000000 */ nop /* f17b614: 8faf003c */ lw $t7,0x3c($sp) /* f17b618: 0fc52a7e */ jal func0f14a9f8 /* f17b61c: 01e22023 */ subu $a0,$t7,$v0 /* f17b620: 0fc62ed9 */ jal mpGetBeauHeadId /* f17b624: 304400ff */ andi $a0,$v0,0xff /* f17b628: 3c188007 */ lui $t8,%hi(g_MpPlayerNum) /* f17b62c: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8) /* f17b630: 3c08800a */ lui $t0,%hi(g_Menus) /* f17b634: 2508e000 */ addiu $t0,$t0,%lo(g_Menus) /* f17b638: 0018c8c0 */ sll $t9,$t8,0x3 /* f17b63c: 0338c823 */ subu $t9,$t9,$t8 /* f17b640: 0019c880 */ sll $t9,$t9,0x2 /* f17b644: 0338c821 */ addu $t9,$t9,$t8 /* f17b648: 0019c8c0 */ sll $t9,$t9,0x3 /* f17b64c: 0338c823 */ subu $t9,$t9,$t8 /* f17b650: 0019c900 */ sll $t9,$t9,0x4 /* f17b654: 00024880 */ sll $t1,$v0,0x2 /* f17b658: 01224821 */ addu $t1,$t1,$v0 /* f17b65c: 03281821 */ addu $v1,$t9,$t0 /* f17b660: 906c0df1 */ lbu $t4,0xdf1($v1) /* f17b664: 00094880 */ sll $t1,$t1,0x2 /* f17b668: 3c0a8008 */ lui $t2,%hi(g_HeadsAndBodies+0x2) /* f17b66c: 01495021 */ addu $t2,$t2,$t1 /* f17b670: 954acf06 */ lhu $t2,%lo(g_HeadsAndBodies+0x2)($t2) /* f17b674: 358d0080 */ ori $t5,$t4,0x80 /* f17b678: a06d0df1 */ sb $t5,0xdf1($v1) /* f17b67c: 0fc62ec7 */ jal func0f18bb1c /* f17b680: ac6a084c */ sw $t2,0x84c($v1) /* f17b684: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17b688: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17b68c: 8fb9003c */ lw $t9,0x3c($sp) /* f17b690: 3c18800a */ lui $t8,%hi(g_Menus) /* f17b694: 000e78c0 */ sll $t7,$t6,0x3 /* f17b698: 01ee7823 */ subu $t7,$t7,$t6 /* f17b69c: 000f7880 */ sll $t7,$t7,0x2 /* f17b6a0: 01ee7821 */ addu $t7,$t7,$t6 /* f17b6a4: 000f78c0 */ sll $t7,$t7,0x3 /* f17b6a8: 01ee7823 */ subu $t7,$t7,$t6 /* f17b6ac: 000f7900 */ sll $t7,$t7,0x4 /* f17b6b0: 2718e000 */ addiu $t8,$t8,%lo(g_Menus) /* f17b6b4: 01f81821 */ addu $v1,$t7,$t8 /* f17b6b8: 03224023 */ subu $t0,$t9,$v0 /* f17b6bc: a0680df0 */ sb $t0,0xdf0($v1) .L0f17b6c0: /* f17b6c0: 3c0141f0 */ lui $at,0x41f0 /* f17b6c4: 44818000 */ mtc1 $at,$f16 /* f17b6c8: 3c098008 */ lui $t1,%hi(var80085448) /* f17b6cc: 25295448 */ addiu $t1,$t1,%lo(var80085448) /* f17b6d0: ac600db4 */ sw $zero,0xdb4($v1) /* f17b6d4: ac690df4 */ sw $t1,0xdf4($v1) /* f17b6d8: 10000054 */ b .L0f17b82c /* f17b6dc: e4700d94 */ swc1 $f16,0xd94($v1) /* f17b6e0: 0fc62ed2 */ jal mpGetHeadRequiredFeature /* f17b6e4: 90c40003 */ lbu $a0,0x3($a2) /* f17b6e8: 0fc67244 */ jal mpIsFeatureUnlocked /* f17b6ec: 00402025 */ or $a0,$v0,$zero /* f17b6f0: 5440004f */ bnezl $v0,.L0f17b830 /* f17b6f4: 00001025 */ or $v0,$zero,$zero /* f17b6f8: 1000004d */ b .L0f17b830 /* f17b6fc: 24020001 */ addiu $v0,$zero,0x1 /* f17b700: 8faa003c */ lw $t2,0x3c($sp) /* f17b704: 10000049 */ b .L0f17b82c /* f17b708: acca0000 */ sw $t2,0x0($a2) /* f17b70c: 3c0c8007 */ lui $t4,%hi(g_MpPlayerNum) /* f17b710: 8d8c1448 */ lw $t4,%lo(g_MpPlayerNum)($t4) /* f17b714: 3c01800a */ lui $at,%hi(g_Menus+0x840) /* f17b718: 240b0003 */ addiu $t3,$zero,0x3 /* f17b71c: 000c68c0 */ sll $t5,$t4,0x3 /* f17b720: 01ac6823 */ subu $t5,$t5,$t4 /* f17b724: 000d6880 */ sll $t5,$t5,0x2 /* f17b728: 01ac6821 */ addu $t5,$t5,$t4 /* f17b72c: 000d68c0 */ sll $t5,$t5,0x3 /* f17b730: 01ac6823 */ subu $t5,$t5,$t4 /* f17b734: 000d6900 */ sll $t5,$t5,0x4 /* f17b738: 002d0821 */ addu $at,$at,$t5 /* f17b73c: 0fc62ec7 */ jal func0f18bb1c /* f17b740: a02be840 */ sb $t3,%lo(g_Menus+0x840)($at) /* f17b744: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17b748: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17b74c: 44800000 */ mtc1 $zero,$f0 /* f17b750: 3c013f80 */ lui $at,0x3f80 /* f17b754: 000e78c0 */ sll $t7,$t6,0x3 /* f17b758: 01ee7823 */ subu $t7,$t7,$t6 /* f17b75c: 000f7880 */ sll $t7,$t7,0x2 /* f17b760: 01ee7821 */ addu $t7,$t7,$t6 /* f17b764: 000f78c0 */ sll $t7,$t7,0x3 /* f17b768: 01ee7823 */ subu $t7,$t7,$t6 /* f17b76c: 44819000 */ mtc1 $at,$f18 /* f17b770: 000f7900 */ sll $t7,$t7,0x4 /* f17b774: 3c19800a */ lui $t9,%hi(g_Menus) /* f17b778: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f17b77c: 25f80840 */ addiu $t8,$t7,0x840 /* f17b780: 24080001 */ addiu $t0,$zero,0x1 /* f17b784: 44050000 */ mfc1 $a1,$f0 /* f17b788: 44060000 */ mfc1 $a2,$f0 /* f17b78c: 44070000 */ mfc1 $a3,$f0 /* f17b790: afa80020 */ sw $t0,0x20($sp) /* f17b794: 03192021 */ addu $a0,$t8,$t9 /* f17b798: e7a00010 */ swc1 $f0,0x10($sp) /* f17b79c: e7a00014 */ swc1 $f0,0x14($sp) /* f17b7a0: e7a00018 */ swc1 $f0,0x18($sp) /* f17b7a4: 0fc3cdcb */ jal func0f0f372c /* f17b7a8: e7b2001c */ swc1 $f18,0x1c($sp) /* f17b7ac: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f17b7b0: 8d291448 */ lw $t1,%lo(g_MpPlayerNum)($t1) /* f17b7b4: 3c017f1c */ lui $at,%hi(var7f1b8148) /* f17b7b8: 3c0c800a */ lui $t4,%hi(g_Menus) /* f17b7bc: 000950c0 */ sll $t2,$t1,0x3 /* f17b7c0: 01495023 */ subu $t2,$t2,$t1 /* f17b7c4: 000a5080 */ sll $t2,$t2,0x2 /* f17b7c8: 01495021 */ addu $t2,$t2,$t1 /* f17b7cc: 000a50c0 */ sll $t2,$t2,0x3 /* f17b7d0: 01495023 */ subu $t2,$t2,$t1 /* f17b7d4: c4228148 */ lwc1 $f2,%lo(var7f1b8148)($at) /* f17b7d8: 44800000 */ mtc1 $zero,$f0 /* f17b7dc: 000a5100 */ sll $t2,$t2,0x4 /* f17b7e0: 258ce000 */ addiu $t4,$t4,%lo(g_Menus) /* f17b7e4: 014c1821 */ addu $v1,$t2,$t4 /* f17b7e8: 3c01c040 */ lui $at,0xc040 /* f17b7ec: 44812000 */ mtc1 $at,$f4 /* f17b7f0: 3c017f1c */ lui $at,%hi(var7f1b814c) /* f17b7f4: e4600d50 */ swc1 $f0,0xd50($v1) /* f17b7f8: e4600d54 */ swc1 $f0,0xd54($v1) /* f17b7fc: e4600d78 */ swc1 $f0,0xd78($v1) /* f17b800: e4640d7c */ swc1 $f4,0xd7c($v1) /* f17b804: c426814c */ lwc1 $f6,%lo(var7f1b814c)($at) /* f17b808: 3c013f80 */ lui $at,0x3f80 /* f17b80c: 44815000 */ mtc1 $at,$f10 /* f17b810: 3c0141f0 */ lui $at,0x41f0 /* f17b814: 44814000 */ mtc1 $at,$f8 /* f17b818: e4620d64 */ swc1 $f2,0xd64($v1) /* f17b81c: e4620d8c */ swc1 $f2,0xd8c($v1) /* f17b820: e4660d5c */ swc1 $f6,0xd5c($v1) /* f17b824: e46a0d84 */ swc1 $f10,0xd84($v1) /* f17b828: e4680d94 */ swc1 $f8,0xd94($v1) .L0f17b82c: /* f17b82c: 00001025 */ or $v0,$zero,$zero .L0f17b830: /* f17b830: 8fbf002c */ lw $ra,0x2c($sp) /* f17b834: 27bd0030 */ addiu $sp,$sp,0x30 /* f17b838: 03e00008 */ jr $ra /* f17b83c: 00000000 */ nop ); #elif VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel func0f17b4f8 .late_rodata glabel var7f1b80f0 .word func0f17b4f8+0x34 # f17b52c glabel var7f1b80f4 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b80f8 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b80fc .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8100 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8104 .word func0f17b4f8+0x214 # f17b70c glabel var7f1b8108 .word func0f17b4f8+0x208 # f17b700 glabel var7f1b810c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8110 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8114 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8118 .word func0f17b4f8+0x48 # f17b540 glabel var7f1b811c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8120 .word func0f17b4f8+0x214 # f17b70c glabel var7f1b8124 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8128 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b812c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8130 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8134 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8138 .word func0f17b4f8+0x334 # f17b82c glabel var7f1b813c .word func0f17b4f8+0x334 # f17b82c glabel var7f1b8140 .word func0f17b4f8+0x1e8 # f17b6e0 glabel var7f1b8144 .word 0x3c23d70a glabel var7f1b8148 .word 0xbe99999a glabel var7f1b814c .word 0x3c23d70a .text /* f17b4f8: 27bdffd0 */ addiu $sp,$sp,-48 /* f17b4fc: 248effff */ addiu $t6,$a0,-1 /* f17b500: 2dc10015 */ sltiu $at,$t6,0x15 /* f17b504: afbf002c */ sw $ra,0x2c($sp) /* f17b508: afa50034 */ sw $a1,0x34($sp) /* f17b50c: 102000c7 */ beqz $at,.L0f17b82c /* f17b510: afa7003c */ sw $a3,0x3c($sp) /* f17b514: 000e7080 */ sll $t6,$t6,0x2 /* f17b518: 3c017f1c */ lui $at,%hi(var7f1b80f0) /* f17b51c: 002e0821 */ addu $at,$at,$t6 /* f17b520: 8c2e80f0 */ lw $t6,%lo(var7f1b80f0)($at) /* f17b524: 01c00008 */ jr $t6 /* f17b528: 00000000 */ nop /* f17b52c: 0fc62ec7 */ jal func0f18bb1c /* f17b530: afa60038 */ sw $a2,0x38($sp) /* f17b534: 8fa60038 */ lw $a2,0x38($sp) /* f17b538: 100000bc */ b .L0f17b82c /* f17b53c: acc20000 */ sw $v0,0x0($a2) /* f17b540: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f17b544: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f17b548: 3c017f1c */ lui $at,%hi(var7f1b8144) /* f17b54c: c4248144 */ lwc1 $f4,%lo(var7f1b8144)($at) /* f17b550: 3c01800a */ lui $at,%hi(g_Vars+0x4) /* f17b554: 000fc0c0 */ sll $t8,$t7,0x3 /* f17b558: c4269fc4 */ lwc1 $f6,%lo(g_Vars+0x4)($at) /* f17b55c: 030fc023 */ subu $t8,$t8,$t7 /* f17b560: 0018c080 */ sll $t8,$t8,0x2 /* f17b564: 030fc021 */ addu $t8,$t8,$t7 /* f17b568: 46062202 */ mul.s $f8,$f4,$f6 /* f17b56c: 0018c0c0 */ sll $t8,$t8,0x3 /* f17b570: 3c19800a */ lui $t9,%hi(g_Menus) /* f17b574: 030fc023 */ subu $t8,$t8,$t7 /* f17b578: 0018c100 */ sll $t8,$t8,0x4 /* f17b57c: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f17b580: 03191821 */ addu $v1,$t8,$t9 /* f17b584: c46a0d64 */ lwc1 $f10,0xd64($v1) /* f17b588: 46085000 */ add.s $f0,$f10,$f8 /* f17b58c: e4600d8c */ swc1 $f0,0xd8c($v1) /* f17b590: 0fc62ec7 */ jal func0f18bb1c /* f17b594: e4600d64 */ swc1 $f0,0xd64($v1) /* f17b598: 8fa3003c */ lw $v1,0x3c($sp) /* f17b59c: 0062082a */ slt $at,$v1,$v0 /* f17b5a0: 1020001a */ beqz $at,.L0f17b60c /* f17b5a4: 00000000 */ nop /* f17b5a8: 0fc62ecb */ jal mpGetHeadId /* f17b5ac: 306400ff */ andi $a0,$v1,0xff /* f17b5b0: 3c088007 */ lui $t0,%hi(g_MpPlayerNum) /* f17b5b4: 8d081448 */ lw $t0,%lo(g_MpPlayerNum)($t0) /* f17b5b8: 3c0a800a */ lui $t2,%hi(g_Menus) /* f17b5bc: 254ae000 */ addiu $t2,$t2,%lo(g_Menus) /* f17b5c0: 000848c0 */ sll $t1,$t0,0x3 /* f17b5c4: 01284823 */ subu $t1,$t1,$t0 /* f17b5c8: 00094880 */ sll $t1,$t1,0x2 /* f17b5cc: 01284821 */ addu $t1,$t1,$t0 /* f17b5d0: 000948c0 */ sll $t1,$t1,0x3 /* f17b5d4: 01284823 */ subu $t1,$t1,$t0 /* f17b5d8: 00094900 */ sll $t1,$t1,0x4 /* f17b5dc: 00025880 */ sll $t3,$v0,0x2 /* f17b5e0: 01625821 */ addu $t3,$t3,$v0 /* f17b5e4: 012a1821 */ addu $v1,$t1,$t2 /* f17b5e8: 906d0df1 */ lbu $t5,0xdf1($v1) /* f17b5ec: 000b5880 */ sll $t3,$t3,0x2 /* f17b5f0: 3c0c8008 */ lui $t4,%hi(g_HeadsAndBodies+0x2) /* f17b5f4: 018b6021 */ addu $t4,$t4,$t3 /* f17b5f8: 958ccf06 */ lhu $t4,%lo(g_HeadsAndBodies+0x2)($t4) /* f17b5fc: 31aeff7f */ andi $t6,$t5,0xff7f /* f17b600: a06e0df1 */ sb $t6,0xdf1($v1) /* f17b604: 1000002e */ b .L0f17b6c0 /* f17b608: ac6c084c */ sw $t4,0x84c($v1) .L0f17b60c: /* f17b60c: 0fc62ec7 */ jal func0f18bb1c /* f17b610: 00000000 */ nop /* f17b614: 8faf003c */ lw $t7,0x3c($sp) /* f17b618: 0fc52a7e */ jal func0f14a9f8 /* f17b61c: 01e22023 */ subu $a0,$t7,$v0 /* f17b620: 0fc62ed9 */ jal mpGetBeauHeadId /* f17b624: 304400ff */ andi $a0,$v0,0xff /* f17b628: 3c188007 */ lui $t8,%hi(g_MpPlayerNum) /* f17b62c: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8) /* f17b630: 3c08800a */ lui $t0,%hi(g_Menus) /* f17b634: 2508e000 */ addiu $t0,$t0,%lo(g_Menus) /* f17b638: 0018c8c0 */ sll $t9,$t8,0x3 /* f17b63c: 0338c823 */ subu $t9,$t9,$t8 /* f17b640: 0019c880 */ sll $t9,$t9,0x2 /* f17b644: 0338c821 */ addu $t9,$t9,$t8 /* f17b648: 0019c8c0 */ sll $t9,$t9,0x3 /* f17b64c: 0338c823 */ subu $t9,$t9,$t8 /* f17b650: 0019c900 */ sll $t9,$t9,0x4 /* f17b654: 00024880 */ sll $t1,$v0,0x2 /* f17b658: 01224821 */ addu $t1,$t1,$v0 /* f17b65c: 03281821 */ addu $v1,$t9,$t0 /* f17b660: 906c0df1 */ lbu $t4,0xdf1($v1) /* f17b664: 00094880 */ sll $t1,$t1,0x2 /* f17b668: 3c0a8008 */ lui $t2,%hi(g_HeadsAndBodies+0x2) /* f17b66c: 01495021 */ addu $t2,$t2,$t1 /* f17b670: 954acf06 */ lhu $t2,%lo(g_HeadsAndBodies+0x2)($t2) /* f17b674: 358d0080 */ ori $t5,$t4,0x80 /* f17b678: a06d0df1 */ sb $t5,0xdf1($v1) /* f17b67c: 0fc62ec7 */ jal func0f18bb1c /* f17b680: ac6a084c */ sw $t2,0x84c($v1) /* f17b684: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17b688: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17b68c: 8fb9003c */ lw $t9,0x3c($sp) /* f17b690: 3c18800a */ lui $t8,%hi(g_Menus) /* f17b694: 000e78c0 */ sll $t7,$t6,0x3 /* f17b698: 01ee7823 */ subu $t7,$t7,$t6 /* f17b69c: 000f7880 */ sll $t7,$t7,0x2 /* f17b6a0: 01ee7821 */ addu $t7,$t7,$t6 /* f17b6a4: 000f78c0 */ sll $t7,$t7,0x3 /* f17b6a8: 01ee7823 */ subu $t7,$t7,$t6 /* f17b6ac: 000f7900 */ sll $t7,$t7,0x4 /* f17b6b0: 2718e000 */ addiu $t8,$t8,%lo(g_Menus) /* f17b6b4: 01f81821 */ addu $v1,$t7,$t8 /* f17b6b8: 03224023 */ subu $t0,$t9,$v0 /* f17b6bc: a0680df0 */ sb $t0,0xdf0($v1) .L0f17b6c0: /* f17b6c0: 3c0141f0 */ lui $at,0x41f0 /* f17b6c4: 44818000 */ mtc1 $at,$f16 /* f17b6c8: 3c098008 */ lui $t1,%hi(var80085448) /* f17b6cc: 25295448 */ addiu $t1,$t1,%lo(var80085448) /* f17b6d0: ac600db4 */ sw $zero,0xdb4($v1) /* f17b6d4: ac690df4 */ sw $t1,0xdf4($v1) /* f17b6d8: 10000054 */ b .L0f17b82c /* f17b6dc: e4700d94 */ swc1 $f16,0xd94($v1) /* f17b6e0: 0fc62ed2 */ jal mpGetHeadRequiredFeature /* f17b6e4: 90c40003 */ lbu $a0,0x3($a2) /* f17b6e8: 0fc67244 */ jal mpIsFeatureUnlocked /* f17b6ec: 00402025 */ or $a0,$v0,$zero /* f17b6f0: 5440004f */ bnezl $v0,.L0f17b830 /* f17b6f4: 00001025 */ or $v0,$zero,$zero /* f17b6f8: 1000004d */ b .L0f17b830 /* f17b6fc: 24020001 */ addiu $v0,$zero,0x1 /* f17b700: 8faa003c */ lw $t2,0x3c($sp) /* f17b704: 10000049 */ b .L0f17b82c /* f17b708: acca0000 */ sw $t2,0x0($a2) /* f17b70c: 3c0c8007 */ lui $t4,%hi(g_MpPlayerNum) /* f17b710: 8d8c1448 */ lw $t4,%lo(g_MpPlayerNum)($t4) /* f17b714: 3c01800a */ lui $at,%hi(g_Menus+0x840) /* f17b718: 240b0003 */ addiu $t3,$zero,0x3 /* f17b71c: 000c68c0 */ sll $t5,$t4,0x3 /* f17b720: 01ac6823 */ subu $t5,$t5,$t4 /* f17b724: 000d6880 */ sll $t5,$t5,0x2 /* f17b728: 01ac6821 */ addu $t5,$t5,$t4 /* f17b72c: 000d68c0 */ sll $t5,$t5,0x3 /* f17b730: 01ac6823 */ subu $t5,$t5,$t4 /* f17b734: 000d6900 */ sll $t5,$t5,0x4 /* f17b738: 002d0821 */ addu $at,$at,$t5 /* f17b73c: 0fc62ec7 */ jal func0f18bb1c /* f17b740: a02be840 */ sb $t3,%lo(g_Menus+0x840)($at) /* f17b744: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17b748: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17b74c: 44800000 */ mtc1 $zero,$f0 /* f17b750: 3c013f80 */ lui $at,0x3f80 /* f17b754: 000e78c0 */ sll $t7,$t6,0x3 /* f17b758: 01ee7823 */ subu $t7,$t7,$t6 /* f17b75c: 000f7880 */ sll $t7,$t7,0x2 /* f17b760: 01ee7821 */ addu $t7,$t7,$t6 /* f17b764: 000f78c0 */ sll $t7,$t7,0x3 /* f17b768: 01ee7823 */ subu $t7,$t7,$t6 /* f17b76c: 44819000 */ mtc1 $at,$f18 /* f17b770: 000f7900 */ sll $t7,$t7,0x4 /* f17b774: 3c19800a */ lui $t9,%hi(g_Menus) /* f17b778: 2739e000 */ addiu $t9,$t9,%lo(g_Menus) /* f17b77c: 25f80840 */ addiu $t8,$t7,0x840 /* f17b780: 24080001 */ addiu $t0,$zero,0x1 /* f17b784: 44050000 */ mfc1 $a1,$f0 /* f17b788: 44060000 */ mfc1 $a2,$f0 /* f17b78c: 44070000 */ mfc1 $a3,$f0 /* f17b790: afa80020 */ sw $t0,0x20($sp) /* f17b794: 03192021 */ addu $a0,$t8,$t9 /* f17b798: e7a00010 */ swc1 $f0,0x10($sp) /* f17b79c: e7a00014 */ swc1 $f0,0x14($sp) /* f17b7a0: e7a00018 */ swc1 $f0,0x18($sp) /* f17b7a4: 0fc3cdcb */ jal func0f0f372c /* f17b7a8: e7b2001c */ swc1 $f18,0x1c($sp) /* f17b7ac: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f17b7b0: 8d291448 */ lw $t1,%lo(g_MpPlayerNum)($t1) /* f17b7b4: 3c017f1c */ lui $at,%hi(var7f1b8148) /* f17b7b8: 3c0c800a */ lui $t4,%hi(g_Menus) /* f17b7bc: 000950c0 */ sll $t2,$t1,0x3 /* f17b7c0: 01495023 */ subu $t2,$t2,$t1 /* f17b7c4: 000a5080 */ sll $t2,$t2,0x2 /* f17b7c8: 01495021 */ addu $t2,$t2,$t1 /* f17b7cc: 000a50c0 */ sll $t2,$t2,0x3 /* f17b7d0: 01495023 */ subu $t2,$t2,$t1 /* f17b7d4: c4228148 */ lwc1 $f2,%lo(var7f1b8148)($at) /* f17b7d8: 44800000 */ mtc1 $zero,$f0 /* f17b7dc: 000a5100 */ sll $t2,$t2,0x4 /* f17b7e0: 258ce000 */ addiu $t4,$t4,%lo(g_Menus) /* f17b7e4: 014c1821 */ addu $v1,$t2,$t4 /* f17b7e8: 3c01c040 */ lui $at,0xc040 /* f17b7ec: 44812000 */ mtc1 $at,$f4 /* f17b7f0: 3c017f1c */ lui $at,%hi(var7f1b814c) /* f17b7f4: e4600d50 */ swc1 $f0,0xd50($v1) /* f17b7f8: e4600d54 */ swc1 $f0,0xd54($v1) /* f17b7fc: e4600d78 */ swc1 $f0,0xd78($v1) /* f17b800: e4640d7c */ swc1 $f4,0xd7c($v1) /* f17b804: c426814c */ lwc1 $f6,%lo(var7f1b814c)($at) /* f17b808: 3c013f80 */ lui $at,0x3f80 /* f17b80c: 44815000 */ mtc1 $at,$f10 /* f17b810: 3c0141f0 */ lui $at,0x41f0 /* f17b814: 44814000 */ mtc1 $at,$f8 /* f17b818: e4620d64 */ swc1 $f2,0xd64($v1) /* f17b81c: e4620d8c */ swc1 $f2,0xd8c($v1) /* f17b820: e4660d5c */ swc1 $f6,0xd5c($v1) /* f17b824: e46a0d84 */ swc1 $f10,0xd84($v1) /* f17b828: e4680d94 */ swc1 $f8,0xd94($v1) .L0f17b82c: /* f17b82c: 00001025 */ or $v0,$zero,$zero .L0f17b830: /* f17b830: 8fbf002c */ lw $ra,0x2c($sp) /* f17b834: 27bd0030 */ addiu $sp,$sp,0x30 /* f17b838: 03e00008 */ jr $ra /* f17b83c: 00000000 */ nop ); #else GLOBAL_ASM( glabel func0f17b4f8 .late_rodata glabel var7f1b29e4nb .word func0f17b4f8+0x034 glabel var7f1b29e8nb .word func0f17b4f8+0x304 glabel var7f1b29ecnb .word func0f17b4f8+0x304 glabel var7f1b29f0nb .word func0f17b4f8+0x304 glabel var7f1b29f4nb .word func0f17b4f8+0x304 glabel var7f1b29f8nb .word func0f17b4f8+0x214 glabel var7f1b29fcnb .word func0f17b4f8+0x208 glabel var7f1b2a00nb .word func0f17b4f8+0x304 glabel var7f1b2a04nb .word func0f17b4f8+0x304 glabel var7f1b2a08nb .word func0f17b4f8+0x304 glabel var7f1b2a0cnb .word func0f17b4f8+0x048 glabel var7f1b2a10nb .word func0f17b4f8+0x304 glabel var7f1b2a14nb .word func0f17b4f8+0x214 glabel var7f1b2a18nb .word func0f17b4f8+0x304 glabel var7f1b2a1cnb .word func0f17b4f8+0x304 glabel var7f1b2a20nb .word func0f17b4f8+0x304 glabel var7f1b2a24nb .word func0f17b4f8+0x304 glabel var7f1b2a28nb .word func0f17b4f8+0x304 glabel var7f1b2a2cnb .word func0f17b4f8+0x304 glabel var7f1b2a30nb .word func0f17b4f8+0x304 glabel var7f1b2a34nb .word func0f17b4f8+0x1e8 glabel var7f1b8144 .word 0x3c23d70a glabel var7f1b8148 .word 0xbe99999a glabel var7f1b814c .word 0x3c23d70a .text /* f175c88: 27bdffd0 */ addiu $sp,$sp,-48 /* f175c8c: 248effff */ addiu $t6,$a0,-1 /* f175c90: 2dc10015 */ sltiu $at,$t6,0x15 /* f175c94: afbf002c */ sw $ra,0x2c($sp) /* f175c98: afa50034 */ sw $a1,0x34($sp) /* f175c9c: 102000bb */ beqz $at,.NB0f175f8c /* f175ca0: afa7003c */ sw $a3,0x3c($sp) /* f175ca4: 000e7080 */ sll $t6,$t6,0x2 /* f175ca8: 3c017f1b */ lui $at,0x7f1b /* f175cac: 002e0821 */ addu $at,$at,$t6 /* f175cb0: 8c2e29e4 */ lw $t6,0x29e4($at) /* f175cb4: 01c00008 */ jr $t6 /* f175cb8: 00000000 */ sll $zero,$zero,0x0 /* f175cbc: 0fc6175d */ jal func0f18bb1c /* f175cc0: afa60038 */ sw $a2,0x38($sp) /* f175cc4: 8fa60038 */ lw $a2,0x38($sp) /* f175cc8: 100000b0 */ beqz $zero,.NB0f175f8c /* f175ccc: acc20000 */ sw $v0,0x0($a2) /* f175cd0: 3c0f8007 */ lui $t7,0x8007 /* f175cd4: 8def3af0 */ lw $t7,0x3af0($t7) /* f175cd8: 3c017f1b */ lui $at,0x7f1b /* f175cdc: c4242a38 */ lwc1 $f4,0x2a38($at) /* f175ce0: 3c01800a */ lui $at,0x800a /* f175ce4: 000fc0c0 */ sll $t8,$t7,0x3 /* f175ce8: c426e6c4 */ lwc1 $f6,-0x193c($at) /* f175cec: 030fc023 */ subu $t8,$t8,$t7 /* f175cf0: 0018c0c0 */ sll $t8,$t8,0x3 /* f175cf4: 030fc023 */ subu $t8,$t8,$t7 /* f175cf8: 46062202 */ mul.s $f8,$f4,$f6 /* f175cfc: 0018c100 */ sll $t8,$t8,0x4 /* f175d00: 3c19800a */ lui $t9,0x800a /* f175d04: 030fc023 */ subu $t8,$t8,$t7 /* f175d08: 0018c080 */ sll $t8,$t8,0x2 /* f175d0c: 273927c0 */ addiu $t9,$t9,0x27c0 /* f175d10: 03191821 */ addu $v1,$t8,$t9 /* f175d14: c46a0cc0 */ lwc1 $f10,0xcc0($v1) /* f175d18: 46085000 */ add.s $f0,$f10,$f8 /* f175d1c: e4600ce8 */ swc1 $f0,0xce8($v1) /* f175d20: 0fc6175d */ jal func0f18bb1c /* f175d24: e4600cc0 */ swc1 $f0,0xcc0($v1) /* f175d28: 8fa3003c */ lw $v1,0x3c($sp) /* f175d2c: 0062082a */ slt $at,$v1,$v0 /* f175d30: 1020001a */ beqz $at,.NB0f175d9c /* f175d34: 00000000 */ sll $zero,$zero,0x0 /* f175d38: 0fc61761 */ jal mpGetHeadId /* f175d3c: 306400ff */ andi $a0,$v1,0xff /* f175d40: 3c088007 */ lui $t0,0x8007 /* f175d44: 8d083af0 */ lw $t0,0x3af0($t0) /* f175d48: 3c0a800a */ lui $t2,0x800a /* f175d4c: 254a27c0 */ addiu $t2,$t2,0x27c0 /* f175d50: 000848c0 */ sll $t1,$t0,0x3 /* f175d54: 01284823 */ subu $t1,$t1,$t0 /* f175d58: 000948c0 */ sll $t1,$t1,0x3 /* f175d5c: 01284823 */ subu $t1,$t1,$t0 /* f175d60: 00094900 */ sll $t1,$t1,0x4 /* f175d64: 01284823 */ subu $t1,$t1,$t0 /* f175d68: 00094880 */ sll $t1,$t1,0x2 /* f175d6c: 00025880 */ sll $t3,$v0,0x2 /* f175d70: 01625821 */ addu $t3,$t3,$v0 /* f175d74: 012a1821 */ addu $v1,$t1,$t2 /* f175d78: 906d0d4d */ lbu $t5,0xd4d($v1) /* f175d7c: 000b5880 */ sll $t3,$t3,0x2 /* f175d80: 3c0c8008 */ lui $t4,0x8008 /* f175d84: 018b6021 */ addu $t4,$t4,$t3 /* f175d88: 958cf766 */ lhu $t4,-0x89a($t4) /* f175d8c: 31aeff7f */ andi $t6,$t5,0xff7f /* f175d90: a06e0d4d */ sb $t6,0xd4d($v1) /* f175d94: 1000002e */ beqz $zero,.NB0f175e50 /* f175d98: ac6c07a8 */ sw $t4,0x7a8($v1) .NB0f175d9c: /* f175d9c: 0fc6175d */ jal func0f18bb1c /* f175da0: 00000000 */ sll $zero,$zero,0x0 /* f175da4: 8faf003c */ lw $t7,0x3c($sp) /* f175da8: 0fc51472 */ jal func0f14a9f8 /* f175dac: 01e22023 */ subu $a0,$t7,$v0 /* f175db0: 0fc6176f */ jal mpGetBeauHeadId /* f175db4: 304400ff */ andi $a0,$v0,0xff /* f175db8: 3c188007 */ lui $t8,0x8007 /* f175dbc: 8f183af0 */ lw $t8,0x3af0($t8) /* f175dc0: 3c08800a */ lui $t0,0x800a /* f175dc4: 250827c0 */ addiu $t0,$t0,0x27c0 /* f175dc8: 0018c8c0 */ sll $t9,$t8,0x3 /* f175dcc: 0338c823 */ subu $t9,$t9,$t8 /* f175dd0: 0019c8c0 */ sll $t9,$t9,0x3 /* f175dd4: 0338c823 */ subu $t9,$t9,$t8 /* f175dd8: 0019c900 */ sll $t9,$t9,0x4 /* f175ddc: 0338c823 */ subu $t9,$t9,$t8 /* f175de0: 0019c880 */ sll $t9,$t9,0x2 /* f175de4: 00024880 */ sll $t1,$v0,0x2 /* f175de8: 01224821 */ addu $t1,$t1,$v0 /* f175dec: 03281821 */ addu $v1,$t9,$t0 /* f175df0: 906c0d4d */ lbu $t4,0xd4d($v1) /* f175df4: 00094880 */ sll $t1,$t1,0x2 /* f175df8: 3c0a8008 */ lui $t2,0x8008 /* f175dfc: 01495021 */ addu $t2,$t2,$t1 /* f175e00: 954af766 */ lhu $t2,-0x89a($t2) /* f175e04: 358d0080 */ ori $t5,$t4,0x80 /* f175e08: a06d0d4d */ sb $t5,0xd4d($v1) /* f175e0c: 0fc6175d */ jal func0f18bb1c /* f175e10: ac6a07a8 */ sw $t2,0x7a8($v1) /* f175e14: 3c0e8007 */ lui $t6,0x8007 /* f175e18: 8dce3af0 */ lw $t6,0x3af0($t6) /* f175e1c: 8fb9003c */ lw $t9,0x3c($sp) /* f175e20: 3c18800a */ lui $t8,0x800a /* f175e24: 000e78c0 */ sll $t7,$t6,0x3 /* f175e28: 01ee7823 */ subu $t7,$t7,$t6 /* f175e2c: 000f78c0 */ sll $t7,$t7,0x3 /* f175e30: 01ee7823 */ subu $t7,$t7,$t6 /* f175e34: 000f7900 */ sll $t7,$t7,0x4 /* f175e38: 01ee7823 */ subu $t7,$t7,$t6 /* f175e3c: 000f7880 */ sll $t7,$t7,0x2 /* f175e40: 271827c0 */ addiu $t8,$t8,0x27c0 /* f175e44: 01f81821 */ addu $v1,$t7,$t8 /* f175e48: 03224023 */ subu $t0,$t9,$v0 /* f175e4c: a0680d4c */ sb $t0,0xd4c($v1) .NB0f175e50: /* f175e50: 3c0141f0 */ lui $at,0x41f0 /* f175e54: 44818000 */ mtc1 $at,$f16 /* f175e58: 3c098008 */ lui $t1,0x8008 /* f175e5c: 25297bc4 */ addiu $t1,$t1,0x7bc4 /* f175e60: ac600d10 */ sw $zero,0xd10($v1) /* f175e64: ac690d50 */ sw $t1,0xd50($v1) /* f175e68: 10000048 */ beqz $zero,.NB0f175f8c /* f175e6c: e4700cf0 */ swc1 $f16,0xcf0($v1) /* f175e70: 0fc61768 */ jal mpGetHeadRequiredFeature /* f175e74: 90c40003 */ lbu $a0,0x3($a2) /* f175e78: 0fc65a5e */ jal mpIsFeatureUnlocked /* f175e7c: 00402025 */ or $a0,$v0,$zero /* f175e80: 54400043 */ bnezl $v0,.NB0f175f90 /* f175e84: 00001025 */ or $v0,$zero,$zero /* f175e88: 10000041 */ beqz $zero,.NB0f175f90 /* f175e8c: 24020001 */ addiu $v0,$zero,0x1 /* f175e90: 8faa003c */ lw $t2,0x3c($sp) /* f175e94: 1000003d */ beqz $zero,.NB0f175f8c /* f175e98: acca0000 */ sw $t2,0x0($a2) /* f175e9c: 0fc6175d */ jal func0f18bb1c /* f175ea0: 00000000 */ sll $zero,$zero,0x0 /* f175ea4: 3c0b8007 */ lui $t3,0x8007 /* f175ea8: 8d6b3af0 */ lw $t3,0x3af0($t3) /* f175eac: 44800000 */ mtc1 $zero,$f0 /* f175eb0: 3c013f80 */ lui $at,0x3f80 /* f175eb4: 000b60c0 */ sll $t4,$t3,0x3 /* f175eb8: 018b6023 */ subu $t4,$t4,$t3 /* f175ebc: 000c60c0 */ sll $t4,$t4,0x3 /* f175ec0: 018b6023 */ subu $t4,$t4,$t3 /* f175ec4: 000c6100 */ sll $t4,$t4,0x4 /* f175ec8: 018b6023 */ subu $t4,$t4,$t3 /* f175ecc: 44819000 */ mtc1 $at,$f18 /* f175ed0: 000c6080 */ sll $t4,$t4,0x2 /* f175ed4: 3c0e800a */ lui $t6,0x800a /* f175ed8: 25ce27c0 */ addiu $t6,$t6,0x27c0 /* f175edc: 258d079c */ addiu $t5,$t4,0x79c /* f175ee0: 240f0001 */ addiu $t7,$zero,0x1 /* f175ee4: 44050000 */ mfc1 $a1,$f0 /* f175ee8: 44060000 */ mfc1 $a2,$f0 /* f175eec: 44070000 */ mfc1 $a3,$f0 /* f175ef0: afaf0020 */ sw $t7,0x20($sp) /* f175ef4: 01ae2021 */ addu $a0,$t5,$t6 /* f175ef8: e7a00010 */ swc1 $f0,0x10($sp) /* f175efc: e7a00014 */ swc1 $f0,0x14($sp) /* f175f00: e7a00018 */ swc1 $f0,0x18($sp) /* f175f04: 0fc3c09c */ jal func0f0f372c /* f175f08: e7b2001c */ swc1 $f18,0x1c($sp) /* f175f0c: 3c188007 */ lui $t8,0x8007 /* f175f10: 8f183af0 */ lw $t8,0x3af0($t8) /* f175f14: 3c017f1b */ lui $at,0x7f1b /* f175f18: 3c08800a */ lui $t0,0x800a /* f175f1c: 0018c8c0 */ sll $t9,$t8,0x3 /* f175f20: 0338c823 */ subu $t9,$t9,$t8 /* f175f24: 0019c8c0 */ sll $t9,$t9,0x3 /* f175f28: 0338c823 */ subu $t9,$t9,$t8 /* f175f2c: 0019c900 */ sll $t9,$t9,0x4 /* f175f30: 0338c823 */ subu $t9,$t9,$t8 /* f175f34: c4222a3c */ lwc1 $f2,0x2a3c($at) /* f175f38: 44800000 */ mtc1 $zero,$f0 /* f175f3c: 0019c880 */ sll $t9,$t9,0x2 /* f175f40: 250827c0 */ addiu $t0,$t0,0x27c0 /* f175f44: 03281821 */ addu $v1,$t9,$t0 /* f175f48: 3c01c040 */ lui $at,0xc040 /* f175f4c: 44812000 */ mtc1 $at,$f4 /* f175f50: 3c017f1b */ lui $at,0x7f1b /* f175f54: e4600cac */ swc1 $f0,0xcac($v1) /* f175f58: e4600cb0 */ swc1 $f0,0xcb0($v1) /* f175f5c: e4600cd4 */ swc1 $f0,0xcd4($v1) /* f175f60: e4640cd8 */ swc1 $f4,0xcd8($v1) /* f175f64: c4262a40 */ lwc1 $f6,0x2a40($at) /* f175f68: 3c013f80 */ lui $at,0x3f80 /* f175f6c: 44815000 */ mtc1 $at,$f10 /* f175f70: 3c0141f0 */ lui $at,0x41f0 /* f175f74: 44814000 */ mtc1 $at,$f8 /* f175f78: e4620cc0 */ swc1 $f2,0xcc0($v1) /* f175f7c: e4620ce8 */ swc1 $f2,0xce8($v1) /* f175f80: e4660cb8 */ swc1 $f6,0xcb8($v1) /* f175f84: e46a0ce0 */ swc1 $f10,0xce0($v1) /* f175f88: e4680cf0 */ swc1 $f8,0xcf0($v1) .NB0f175f8c: /* f175f8c: 00001025 */ or $v0,$zero,$zero .NB0f175f90: /* f175f90: 8fbf002c */ lw $ra,0x2c($sp) /* f175f94: 27bd0030 */ addiu $sp,$sp,0x30 /* f175f98: 03e00008 */ jr $ra /* f175f9c: 00000000 */ sll $zero,$zero,0x0 ); #endif s32 menuhandlerMpCharacterHead(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { g_MpPlayers[g_MpPlayerNum].base.mpheadnum = data->carousel.value; } return func0f17b4f8(operation, item, data, g_MpPlayers[g_MpPlayerNum].base.mpheadnum, 1); } char *mpMenuTextBodyName(struct menuitem *item) { return mpGetBodyName(g_MpPlayers[g_MpPlayerNum].base.mpbodynum); } void func0f17b8f0(void) { func0f0f139c(g_MpCharacterMenuItems, -0.4f); } GLOBAL_ASM( glabel menuhandler0017b91c /* f17b91c: afa50004 */ sw $a1,0x4($sp) /* f17b920: 24010011 */ addiu $at,$zero,0x11 /* f17b924: 10810006 */ beq $a0,$at,.L0f17b940 /* f17b928: 8cc20000 */ lw $v0,0x0($a2) /* f17b92c: 24010012 */ addiu $at,$zero,0x12 /* f17b930: 10810034 */ beq $a0,$at,.L0f17ba04 /* f17b934: 3c07800b */ lui $a3,%hi(g_MpPlayers) /* f17b938: 03e00008 */ jr $ra /* f17b93c: 00001025 */ or $v0,$zero,$zero .L0f17b940: /* f17b940: 3c088007 */ lui $t0,%hi(g_MpPlayerNum) /* f17b944: 25081448 */ addiu $t0,$t0,%lo(g_MpPlayerNum) /* f17b948: 8d040000 */ lw $a0,0x0($t0) /* f17b94c: 3c07800b */ lui $a3,%hi(g_MpPlayers) /* f17b950: 24e7c7b8 */ addiu $a3,$a3,%lo(g_MpPlayers) /* f17b954: 00047080 */ sll $t6,$a0,0x2 /* f17b958: 01c47021 */ addu $t6,$t6,$a0 /* f17b95c: 000e7140 */ sll $t6,$t6,0x5 /* f17b960: 00ee7821 */ addu $t7,$a3,$t6 /* f17b964: 91f80000 */ lbu $t8,0x0($t7) /* f17b968: 2409000a */ addiu $t1,$zero,0xa /* f17b96c: 00001825 */ or $v1,$zero,$zero /* f17b970: 1138001a */ beq $t1,$t8,.L0f17b9dc /* f17b974: 0004c880 */ sll $t9,$a0,0x2 /* f17b978: 0324c821 */ addu $t9,$t9,$a0 /* f17b97c: 0019c940 */ sll $t9,$t9,0x5 /* f17b980: 00f92821 */ addu $a1,$a3,$t9 /* f17b984: 90ab0000 */ lbu $t3,0x0($a1) /* f17b988: 00403021 */ addu $a2,$v0,$zero /* f17b98c: 240a000b */ addiu $t2,$zero,0xb /* f17b990: 51600013 */ beqzl $t3,.L0f17b9e0 /* f17b994: 2861000b */ slti $at,$v1,0xb /* f17b998: 90a40000 */ lbu $a0,0x0($a1) /* f17b99c: a0c40000 */ sb $a0,0x0($a2) .L0f17b9a0: /* f17b9a0: 8d0d0000 */ lw $t5,0x0($t0) /* f17b9a4: 24630001 */ addiu $v1,$v1,0x1 /* f17b9a8: 24c60001 */ addiu $a2,$a2,0x1 /* f17b9ac: 000d7080 */ sll $t6,$t5,0x2 /* f17b9b0: 01cd7021 */ addu $t6,$t6,$t5 /* f17b9b4: 000e7140 */ sll $t6,$t6,0x5 /* f17b9b8: 00ee7821 */ addu $t7,$a3,$t6 /* f17b9bc: 01e3c021 */ addu $t8,$t7,$v1 /* f17b9c0: 93040000 */ lbu $a0,0x0($t8) /* f17b9c4: 51240006 */ beql $t1,$a0,.L0f17b9e0 /* f17b9c8: 2861000b */ slti $at,$v1,0xb /* f17b9cc: 50800004 */ beqzl $a0,.L0f17b9e0 /* f17b9d0: 2861000b */ slti $at,$v1,0xb /* f17b9d4: 546afff2 */ bnel $v1,$t2,.L0f17b9a0 /* f17b9d8: a0c40000 */ sb $a0,0x0($a2) .L0f17b9dc: /* f17b9dc: 2861000b */ slti $at,$v1,0xb .L0f17b9e0: /* f17b9e0: 10200032 */ beqz $at,.L0f17baac /* f17b9e4: 00433021 */ addu $a2,$v0,$v1 .L0f17b9e8: /* f17b9e8: 24630001 */ addiu $v1,$v1,0x1 /* f17b9ec: 2861000b */ slti $at,$v1,0xb /* f17b9f0: a0c00000 */ sb $zero,0x0($a2) /* f17b9f4: 1420fffc */ bnez $at,.L0f17b9e8 /* f17b9f8: 24c60001 */ addiu $a2,$a2,0x1 /* f17b9fc: 03e00008 */ jr $ra /* f17ba00: 00001025 */ or $v0,$zero,$zero .L0f17ba04: /* f17ba04: 90590000 */ lbu $t9,0x0($v0) /* f17ba08: 3c088007 */ lui $t0,%hi(g_MpPlayerNum) /* f17ba0c: 00001825 */ or $v1,$zero,$zero /* f17ba10: 13200014 */ beqz $t9,.L0f17ba64 /* f17ba14: 25081448 */ addiu $t0,$t0,%lo(g_MpPlayerNum) /* f17ba18: 3c0b8007 */ lui $t3,%hi(g_MpPlayerNum) /* f17ba1c: 8d6b1448 */ lw $t3,%lo(g_MpPlayerNum)($t3) /* f17ba20: 3c0e800b */ lui $t6,%hi(g_MpPlayers) /* f17ba24: 25cec7b8 */ addiu $t6,$t6,%lo(g_MpPlayers) /* f17ba28: 000b6080 */ sll $t4,$t3,0x2 /* f17ba2c: 018b6021 */ addu $t4,$t4,$t3 /* f17ba30: 000c6140 */ sll $t4,$t4,0x5 /* f17ba34: 018e2021 */ addu $a0,$t4,$t6 /* f17ba38: 00403021 */ addu $a2,$v0,$zero /* f17ba3c: 90450000 */ lbu $a1,0x0($v0) /* f17ba40: 24630001 */ addiu $v1,$v1,0x1 .L0f17ba44: /* f17ba44: 2861000b */ slti $at,$v1,0xb /* f17ba48: a0850000 */ sb $a1,0x0($a0) /* f17ba4c: 24840001 */ addiu $a0,$a0,0x1 /* f17ba50: 10200004 */ beqz $at,.L0f17ba64 /* f17ba54: 24c60001 */ addiu $a2,$a2,0x1 /* f17ba58: 90c50000 */ lbu $a1,0x0($a2) /* f17ba5c: 54a0fff9 */ bnezl $a1,.L0f17ba44 /* f17ba60: 24630001 */ addiu $v1,$v1,0x1 .L0f17ba64: /* f17ba64: 8d0f0000 */ lw $t7,0x0($t0) /* f17ba68: 24e7c7b8 */ addiu $a3,$a3,%lo(g_MpPlayers) /* f17ba6c: 240b000a */ addiu $t3,$zero,0xa /* f17ba70: 000fc080 */ sll $t8,$t7,0x2 /* f17ba74: 030fc021 */ addu $t8,$t8,$t7 /* f17ba78: 0018c140 */ sll $t8,$t8,0x5 /* f17ba7c: 00f8c821 */ addu $t9,$a3,$t8 /* f17ba80: 03232021 */ addu $a0,$t9,$v1 /* f17ba84: 24630001 */ addiu $v1,$v1,0x1 /* f17ba88: 2861000b */ slti $at,$v1,0xb /* f17ba8c: a08b0000 */ sb $t3,0x0($a0) /* f17ba90: 10200006 */ beqz $at,.L0f17baac /* f17ba94: 24840001 */ addiu $a0,$a0,0x1 .L0f17ba98: /* f17ba98: 24630001 */ addiu $v1,$v1,0x1 /* f17ba9c: 2861000b */ slti $at,$v1,0xb /* f17baa0: a0800000 */ sb $zero,0x0($a0) /* f17baa4: 1420fffc */ bnez $at,.L0f17ba98 /* f17baa8: 24840001 */ addiu $a0,$a0,0x1 .L0f17baac: /* f17baac: 03e00008 */ jr $ra /* f17bab0: 00001025 */ or $v0,$zero,$zero ); #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel menuhandler0017bab4 .late_rodata glabel var7f1b8150 .word menuhandler0017bab4+0x38 # f17baec glabel var7f1b8154 .word menuhandler0017bab4+0x200 # f17bcb4 glabel var7f1b8158 .word menuhandler0017bab4+0x68 # f17bb1c glabel var7f1b815c .word menuhandler0017bab4+0x228 # f17bcdc glabel var7f1b8160 .word menuhandler0017bab4+0x26c # f17bd20 glabel var7f1b8164 .word menuhandler0017bab4+0x100 # f17bbb4 glabel var7f1b8168 .word menuhandler0017bab4+0x1f0 # f17bca4 glabel var7f1b816c .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8170 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8174 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8178 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b817c .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8180 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8184 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8188 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b818c .word menuhandler0017bab4+0x2cc # f17bd80 .text /* f17bab4: 27bdffd0 */ addiu $sp,$sp,-48 /* f17bab8: 248fffff */ addiu $t7,$a0,-1 /* f17babc: 2de10010 */ sltiu $at,$t7,0x10 /* f17bac0: afbf0014 */ sw $ra,0x14($sp) /* f17bac4: afa40030 */ sw $a0,0x30($sp) /* f17bac8: afa50034 */ sw $a1,0x34($sp) /* f17bacc: 102000d2 */ beqz $at,.L0f17be18 /* f17bad0: 00c03825 */ or $a3,$a2,$zero /* f17bad4: 000f7880 */ sll $t7,$t7,0x2 /* f17bad8: 3c017f1c */ lui $at,%hi(var7f1b8150) /* f17badc: 002f0821 */ addu $at,$at,$t7 /* f17bae0: 8c2f8150 */ lw $t7,%lo(var7f1b8150)($at) /* f17bae4: 01e00008 */ jr $t7 /* f17bae8: 00000000 */ nop /* f17baec: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17baf0: afa70038 */ sw $a3,0x38($sp) /* f17baf4: 8fa70038 */ lw $a3,0x38($sp) /* f17baf8: 3c038007 */ lui $v1,%hi(g_FileLists+0x4) /* f17bafc: ace20000 */ sw $v0,0x0($a3) /* f17bb00: 8c635bc4 */ lw $v1,%lo(g_FileLists+0x4)($v1) /* f17bb04: 506000c5 */ beqzl $v1,.L0f17be1c /* f17bb08: 00001025 */ or $v0,$zero,$zero /* f17bb0c: 847902d0 */ lh $t9,0x2d0($v1) /* f17bb10: 00594021 */ addu $t0,$v0,$t9 /* f17bb14: 100000c0 */ b .L0f17be18 /* f17bb18: ace80000 */ sw $t0,0x0($a3) /* f17bb1c: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bb20: afa70038 */ sw $a3,0x38($sp) /* f17bb24: 8fa70038 */ lw $a3,0x38($sp) /* f17bb28: 3c098007 */ lui $t1,%hi(g_FileLists+0x4) /* f17bb2c: 8ce30000 */ lw $v1,0x0($a3) /* f17bb30: 0062082b */ sltu $at,$v1,$v0 /* f17bb34: 10200005 */ beqz $at,.L0f17bb4c /* f17bb38: 00000000 */ nop /* f17bb3c: 0fc63719 */ jal mpGetPresetNameBySlot /* f17bb40: 00602025 */ or $a0,$v1,$zero /* f17bb44: 100000b6 */ b .L0f17be20 /* f17bb48: 8fbf0014 */ lw $ra,0x14($sp) .L0f17bb4c: /* f17bb4c: 8d295bc4 */ lw $t1,%lo(g_FileLists+0x4)($t1) /* f17bb50: 512000b2 */ beqzl $t1,.L0f17be1c /* f17bb54: 00001025 */ or $v0,$zero,$zero /* f17bb58: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bb5c: afa70038 */ sw $a3,0x38($sp) /* f17bb60: 8fa70038 */ lw $a3,0x38($sp) /* f17bb64: 3c0a8007 */ lui $t2,%hi(g_FileLists+0x4) /* f17bb68: 8d4a5bc4 */ lw $t2,%lo(g_FileLists+0x4)($t2) /* f17bb6c: 8ceb0000 */ lw $t3,0x0($a3) /* f17bb70: 00027080 */ sll $t6,$v0,0x2 /* f17bb74: 01c27023 */ subu $t6,$t6,$v0 /* f17bb78: 000b6080 */ sll $t4,$t3,0x2 /* f17bb7c: 018b6023 */ subu $t4,$t4,$t3 /* f17bb80: 000c60c0 */ sll $t4,$t4,0x3 /* f17bb84: 000e70c0 */ sll $t6,$t6,0x3 /* f17bb88: 000e7823 */ negu $t7,$t6 /* f17bb8c: 014c6821 */ addu $t5,$t2,$t4 /* f17bb90: 01af2021 */ addu $a0,$t5,$t7 /* f17bb94: 3c058007 */ lui $a1,%hi(g_StringPointer) /* f17bb98: 8ca51440 */ lw $a1,%lo(g_StringPointer)($a1) /* f17bb9c: 24840006 */ addiu $a0,$a0,0x6 /* f17bba0: 0fc35593 */ jal func0f0d564c /* f17bba4: 00003025 */ or $a2,$zero,$zero /* f17bba8: 3c028007 */ lui $v0,%hi(g_StringPointer) /* f17bbac: 1000009b */ b .L0f17be1c /* f17bbb0: 8c421440 */ lw $v0,%lo(g_StringPointer)($v0) /* f17bbb4: 0fc5fe8a */ jal func0f17fa28 /* f17bbb8: afa70038 */ sw $a3,0x38($sp) /* f17bbbc: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bbc0: 00000000 */ nop /* f17bbc4: 8fa70038 */ lw $a3,0x38($sp) /* f17bbc8: 3c188007 */ lui $t8,%hi(g_FileLists+0x4) /* f17bbcc: 8ce30000 */ lw $v1,0x0($a3) /* f17bbd0: 0062082b */ sltu $at,$v1,$v0 /* f17bbd4: 10200005 */ beqz $at,.L0f17bbec /* f17bbd8: 00000000 */ nop /* f17bbdc: 0fc637b1 */ jal func0f18dec4 /* f17bbe0: 00602025 */ or $a0,$v1,$zero /* f17bbe4: 1000001c */ b .L0f17bc58 /* f17bbe8: 8faf0034 */ lw $t7,0x34($sp) .L0f17bbec: /* f17bbec: 8f185bc4 */ lw $t8,%lo(g_FileLists+0x4)($t8) /* f17bbf0: 53000019 */ beqzl $t8,.L0f17bc58 /* f17bbf4: 8faf0034 */ lw $t7,0x34($sp) /* f17bbf8: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bbfc: afa70038 */ sw $a3,0x38($sp) /* f17bc00: 8fa70038 */ lw $a3,0x38($sp) /* f17bc04: 3c198007 */ lui $t9,%hi(g_FileLists+0x4) /* f17bc08: 8f395bc4 */ lw $t9,%lo(g_FileLists+0x4)($t9) /* f17bc0c: 8ce80000 */ lw $t0,0x0($a3) /* f17bc10: 00025080 */ sll $t2,$v0,0x2 /* f17bc14: 01425023 */ subu $t2,$t2,$v0 /* f17bc18: 00084880 */ sll $t1,$t0,0x2 /* f17bc1c: 01284823 */ subu $t1,$t1,$t0 /* f17bc20: 000948c0 */ sll $t1,$t1,0x3 /* f17bc24: 000a50c0 */ sll $t2,$t2,0x3 /* f17bc28: 000a6023 */ negu $t4,$t2 /* f17bc2c: 03295821 */ addu $t3,$t9,$t1 /* f17bc30: 016c1821 */ addu $v1,$t3,$t4 /* f17bc34: 8c6e0000 */ lw $t6,0x0($v1) /* f17bc38: 27a40024 */ addiu $a0,$sp,0x24 /* f17bc3c: 24050066 */ addiu $a1,$zero,0x66 /* f17bc40: afae0024 */ sw $t6,0x24($sp) /* f17bc44: 946d0004 */ lhu $t5,0x4($v1) /* f17bc48: 00003025 */ or $a2,$zero,$zero /* f17bc4c: 0fc42539 */ jal func0f1094e4 /* f17bc50: a7ad0028 */ sh $t5,0x28($sp) /* f17bc54: 8faf0034 */ lw $t7,0x34($sp) .L0f17bc58: /* f17bc58: 24020001 */ addiu $v0,$zero,0x1 /* f17bc5c: 3c088009 */ lui $t0,%hi(g_Is4Mb) /* f17bc60: 91f80001 */ lbu $t8,0x1($t7) /* f17bc64: 5458006d */ bnel $v0,$t8,.L0f17be1c /* f17bc68: 00001025 */ or $v0,$zero,$zero /* f17bc6c: 91080af0 */ lbu $t0,%lo(g_Is4Mb)($t0) /* f17bc70: 3c048008 */ lui $a0,%hi(g_MpQuickGoMenuDialog) /* f17bc74: 2405000b */ addiu $a1,$zero,0xb /* f17bc78: 14480006 */ bne $v0,$t0,.L0f17bc94 /* f17bc7c: 24846500 */ addiu $a0,$a0,%lo(g_MpQuickGoMenuDialog) /* f17bc80: 3c048007 */ lui $a0,%hi(g_MpQuickGo4MbMenuDialog) /* f17bc84: 0fc3e083 */ jal func0f0f820c /* f17bc88: 24845120 */ addiu $a0,$a0,%lo(g_MpQuickGo4MbMenuDialog) /* f17bc8c: 10000063 */ b .L0f17be1c /* f17bc90: 00001025 */ or $v0,$zero,$zero .L0f17bc94: /* f17bc94: 0fc3e083 */ jal func0f0f820c /* f17bc98: 24050003 */ addiu $a1,$zero,0x3 /* f17bc9c: 1000005f */ b .L0f17be1c /* f17bca0: 00001025 */ or $v0,$zero,$zero /* f17bca4: 3c19000f */ lui $t9,0xf /* f17bca8: 3739ffff */ ori $t9,$t9,0xffff /* f17bcac: 1000005a */ b .L0f17be18 /* f17bcb0: acf90000 */ sw $t9,0x0($a3) /* f17bcb4: 24090001 */ addiu $t1,$zero,0x1 /* f17bcb8: ace90000 */ sw $t1,0x0($a3) /* f17bcbc: 3c038007 */ lui $v1,%hi(g_FileLists+0x4) /* f17bcc0: 8c635bc4 */ lw $v1,%lo(g_FileLists+0x4)($v1) /* f17bcc4: 50600055 */ beqzl $v1,.L0f17be1c /* f17bcc8: 00001025 */ or $v0,$zero,$zero /* f17bccc: 906b030a */ lbu $t3,0x30a($v1) /* f17bcd0: 012b6021 */ addu $t4,$t1,$t3 /* f17bcd4: 10000050 */ b .L0f17be18 /* f17bcd8: acec0000 */ sw $t4,0x0($a3) /* f17bcdc: 8ce30000 */ lw $v1,0x0($a3) /* f17bce0: 3c0e8007 */ lui $t6,%hi(g_FileLists+0x4) /* f17bce4: 14600005 */ bnez $v1,.L0f17bcfc /* f17bce8: 00000000 */ nop /* f17bcec: 0fc5b9f1 */ jal langGet /* f17bcf0: 2404508d */ addiu $a0,$zero,0x508d /* f17bcf4: 1000004a */ b .L0f17be20 /* f17bcf8: 8fbf0014 */ lw $ra,0x14($sp) .L0f17bcfc: /* f17bcfc: 8dce5bc4 */ lw $t6,%lo(g_FileLists+0x4)($t6) /* f17bd00: 24040001 */ addiu $a0,$zero,0x1 /* f17bd04: 8fa50030 */ lw $a1,0x30($sp) /* f17bd08: 51c00044 */ beqzl $t6,.L0f17be1c /* f17bd0c: 00001025 */ or $v0,$zero,$zero /* f17bd10: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17bd14: 2466ffff */ addiu $a2,$v1,-1 /* f17bd18: 10000041 */ b .L0f17be20 /* f17bd1c: 8fbf0014 */ lw $ra,0x14($sp) /* f17bd20: 8ced0000 */ lw $t5,0x0($a3) /* f17bd24: 15a00003 */ bnez $t5,.L0f17bd34 /* f17bd28: 00000000 */ nop /* f17bd2c: 1000003a */ b .L0f17be18 /* f17bd30: ace00008 */ sw $zero,0x8($a3) .L0f17bd34: /* f17bd34: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bd38: afa70038 */ sw $a3,0x38($sp) /* f17bd3c: 8fa70038 */ lw $a3,0x38($sp) /* f17bd40: 3c0f8007 */ lui $t7,%hi(g_FileLists+0x4) /* f17bd44: 24040001 */ addiu $a0,$zero,0x1 /* f17bd48: ace20008 */ sw $v0,0x8($a3) /* f17bd4c: 8def5bc4 */ lw $t7,%lo(g_FileLists+0x4)($t7) /* f17bd50: 8fa50030 */ lw $a1,0x30($sp) /* f17bd54: 51e00031 */ beqzl $t7,.L0f17be1c /* f17bd58: 00001025 */ or $v0,$zero,$zero /* f17bd5c: 8ce60000 */ lw $a2,0x0($a3) /* f17bd60: afa70038 */ sw $a3,0x38($sp) /* f17bd64: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17bd68: 24c6ffff */ addiu $a2,$a2,-1 /* f17bd6c: 8fa70038 */ lw $a3,0x38($sp) /* f17bd70: 8cf80008 */ lw $t8,0x8($a3) /* f17bd74: 03024021 */ addu $t0,$t8,$v0 /* f17bd78: 10000027 */ b .L0f17be18 /* f17bd7c: ace80008 */ sw $t0,0x8($a3) /* f17bd80: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bd84: afa70038 */ sw $a3,0x38($sp) /* f17bd88: 8fa70038 */ lw $a3,0x38($sp) /* f17bd8c: 3c0a8007 */ lui $t2,%hi(g_MpPlayerNum) /* f17bd90: 8cf90000 */ lw $t9,0x0($a3) /* f17bd94: 0322082b */ sltu $at,$t9,$v0 /* f17bd98: 1020000e */ beqz $at,.L0f17bdd4 /* f17bd9c: 00000000 */ nop /* f17bda0: 8d4a1448 */ lw $t2,%lo(g_MpPlayerNum)($t2) /* f17bda4: 3c01800a */ lui $at,%hi(g_Menus+0xe1c) /* f17bda8: 3409ffff */ dli $t1,0xffff /* f17bdac: 000a58c0 */ sll $t3,$t2,0x3 /* f17bdb0: 016a5823 */ subu $t3,$t3,$t2 /* f17bdb4: 000b5880 */ sll $t3,$t3,0x2 /* f17bdb8: 016a5821 */ addu $t3,$t3,$t2 /* f17bdbc: 000b58c0 */ sll $t3,$t3,0x3 /* f17bdc0: 016a5823 */ subu $t3,$t3,$t2 /* f17bdc4: 000b5900 */ sll $t3,$t3,0x4 /* f17bdc8: 002b0821 */ addu $at,$at,$t3 /* f17bdcc: 10000012 */ b .L0f17be18 /* f17bdd0: ac29ee1c */ sw $t1,%lo(g_Menus+0xe1c)($at) .L0f17bdd4: /* f17bdd4: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bdd8: afa70038 */ sw $a3,0x38($sp) /* f17bddc: 3c0d8007 */ lui $t5,%hi(g_MpPlayerNum) /* f17bde0: 8dad1448 */ lw $t5,%lo(g_MpPlayerNum)($t5) /* f17bde4: 8fa70038 */ lw $a3,0x38($sp) /* f17bde8: 3c01800a */ lui $at,%hi(g_Menus+0xe1c) /* f17bdec: 000d78c0 */ sll $t7,$t5,0x3 /* f17bdf0: 01ed7823 */ subu $t7,$t7,$t5 /* f17bdf4: 000f7880 */ sll $t7,$t7,0x2 /* f17bdf8: 01ed7821 */ addu $t7,$t7,$t5 /* f17bdfc: 8cec0000 */ lw $t4,0x0($a3) /* f17be00: 000f78c0 */ sll $t7,$t7,0x3 /* f17be04: 01ed7823 */ subu $t7,$t7,$t5 /* f17be08: 000f7900 */ sll $t7,$t7,0x4 /* f17be0c: 002f0821 */ addu $at,$at,$t7 /* f17be10: 01827023 */ subu $t6,$t4,$v0 /* f17be14: ac2eee1c */ sw $t6,%lo(g_Menus+0xe1c)($at) .L0f17be18: /* f17be18: 00001025 */ or $v0,$zero,$zero .L0f17be1c: /* f17be1c: 8fbf0014 */ lw $ra,0x14($sp) .L0f17be20: /* f17be20: 27bd0030 */ addiu $sp,$sp,0x30 /* f17be24: 03e00008 */ jr $ra /* f17be28: 00000000 */ nop ); #else GLOBAL_ASM( glabel menuhandler0017bab4 .late_rodata glabel var7f1b8150 .word menuhandler0017bab4+0x38 # f17baec glabel var7f1b8154 .word menuhandler0017bab4+0x200 # f17bcb4 glabel var7f1b8158 .word menuhandler0017bab4+0x68 # f17bb1c glabel var7f1b815c .word menuhandler0017bab4+0x228 # f17bcdc glabel var7f1b8160 .word menuhandler0017bab4+0x26c # f17bd20 glabel var7f1b8164 .word menuhandler0017bab4+0x100 # f17bbb4 glabel var7f1b8168 .word menuhandler0017bab4+0x1f0 # f17bca4 glabel var7f1b816c .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8170 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8174 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8178 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b817c .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8180 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8184 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b8188 .word menuhandler0017bab4+0x364 # f17be18 glabel var7f1b818c .word menuhandler0017bab4+0x2cc # f17bd80 .text /* f176214: 27bdffd0 */ addiu $sp,$sp,-48 /* f176218: 248fffff */ addiu $t7,$a0,-1 /* f17621c: 2de10010 */ sltiu $at,$t7,0x10 /* f176220: afbf0014 */ sw $ra,0x14($sp) /* f176224: afa40030 */ sw $a0,0x30($sp) /* f176228: afa50034 */ sw $a1,0x34($sp) /* f17622c: 102000d2 */ beqz $at,.NB0f176578 /* f176230: 00c03825 */ or $a3,$a2,$zero /* f176234: 000f7880 */ sll $t7,$t7,0x2 /* f176238: 3c017f1b */ lui $at,0x7f1b /* f17623c: 002f0821 */ addu $at,$at,$t7 /* f176240: 8c2f2a44 */ lw $t7,0x2a44($at) /* f176244: 01e00008 */ jr $t7 /* f176248: 00000000 */ sll $zero,$zero,0x0 /* f17624c: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f176250: afa70038 */ sw $a3,0x38($sp) /* f176254: 8fa70038 */ lw $a3,0x38($sp) /* f176258: 3c038007 */ lui $v1,0x8007 /* f17625c: ace20000 */ sw $v0,0x0($a3) /* f176260: 8c637f64 */ lw $v1,0x7f64($v1) /* f176264: 506000c5 */ beqzl $v1,.NB0f17657c /* f176268: 00001025 */ or $v0,$zero,$zero /* f17626c: 847902d0 */ lh $t9,0x2d0($v1) /* f176270: 00594021 */ addu $t0,$v0,$t9 /* f176274: 100000c0 */ beqz $zero,.NB0f176578 /* f176278: ace80000 */ sw $t0,0x0($a3) /* f17627c: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f176280: afa70038 */ sw $a3,0x38($sp) /* f176284: 8fa70038 */ lw $a3,0x38($sp) /* f176288: 3c098007 */ lui $t1,0x8007 /* f17628c: 8ce30000 */ lw $v1,0x0($a3) /* f176290: 0062082b */ sltu $at,$v1,$v0 /* f176294: 10200005 */ beqz $at,.NB0f1762ac /* f176298: 00000000 */ sll $zero,$zero,0x0 /* f17629c: 0fc61f9a */ jal mpGetPresetNameBySlot /* f1762a0: 00602025 */ or $a0,$v1,$zero /* f1762a4: 100000b6 */ beqz $zero,.NB0f176580 /* f1762a8: 8fbf0014 */ lw $ra,0x14($sp) .NB0f1762ac: /* f1762ac: 8d297f64 */ lw $t1,0x7f64($t1) /* f1762b0: 512000b2 */ beqzl $t1,.NB0f17657c /* f1762b4: 00001025 */ or $v0,$zero,$zero /* f1762b8: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f1762bc: afa70038 */ sw $a3,0x38($sp) /* f1762c0: 8fa70038 */ lw $a3,0x38($sp) /* f1762c4: 3c0a8007 */ lui $t2,0x8007 /* f1762c8: 8d4a7f64 */ lw $t2,0x7f64($t2) /* f1762cc: 8ceb0000 */ lw $t3,0x0($a3) /* f1762d0: 00027080 */ sll $t6,$v0,0x2 /* f1762d4: 01c27023 */ subu $t6,$t6,$v0 /* f1762d8: 000b6080 */ sll $t4,$t3,0x2 /* f1762dc: 018b6023 */ subu $t4,$t4,$t3 /* f1762e0: 000c60c0 */ sll $t4,$t4,0x3 /* f1762e4: 000e70c0 */ sll $t6,$t6,0x3 /* f1762e8: 000e7823 */ negu $t7,$t6 /* f1762ec: 014c6821 */ addu $t5,$t2,$t4 /* f1762f0: 01af2021 */ addu $a0,$t5,$t7 /* f1762f4: 3c05800a */ lui $a1,0x800a /* f1762f8: 24a526b0 */ addiu $a1,$a1,0x26b0 /* f1762fc: 24840006 */ addiu $a0,$a0,0x6 /* f176300: 0fc34b4d */ jal func0f0d564c /* f176304: 00003025 */ or $a2,$zero,$zero /* f176308: 3c02800a */ lui $v0,0x800a /* f17630c: 1000009b */ beqz $zero,.NB0f17657c /* f176310: 244226b0 */ addiu $v0,$v0,0x26b0 /* f176314: 0fc5e82c */ jal func0f17fa28 /* f176318: afa70038 */ sw $a3,0x38($sp) /* f17631c: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f176320: 00000000 */ sll $zero,$zero,0x0 /* f176324: 8fa70038 */ lw $a3,0x38($sp) /* f176328: 3c188007 */ lui $t8,0x8007 /* f17632c: 8ce30000 */ lw $v1,0x0($a3) /* f176330: 0062082b */ sltu $at,$v1,$v0 /* f176334: 10200005 */ beqz $at,.NB0f17634c /* f176338: 00000000 */ sll $zero,$zero,0x0 /* f17633c: 0fc62021 */ jal func0f18dec4 /* f176340: 00602025 */ or $a0,$v1,$zero /* f176344: 1000001c */ beqz $zero,.NB0f1763b8 /* f176348: 8faf0034 */ lw $t7,0x34($sp) .NB0f17634c: /* f17634c: 8f187f64 */ lw $t8,0x7f64($t8) /* f176350: 53000019 */ beqzl $t8,.NB0f1763b8 /* f176354: 8faf0034 */ lw $t7,0x34($sp) /* f176358: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f17635c: afa70038 */ sw $a3,0x38($sp) /* f176360: 8fa70038 */ lw $a3,0x38($sp) /* f176364: 3c198007 */ lui $t9,0x8007 /* f176368: 8f397f64 */ lw $t9,0x7f64($t9) /* f17636c: 8ce80000 */ lw $t0,0x0($a3) /* f176370: 00025080 */ sll $t2,$v0,0x2 /* f176374: 01425023 */ subu $t2,$t2,$v0 /* f176378: 00084880 */ sll $t1,$t0,0x2 /* f17637c: 01284823 */ subu $t1,$t1,$t0 /* f176380: 000948c0 */ sll $t1,$t1,0x3 /* f176384: 000a50c0 */ sll $t2,$t2,0x3 /* f176388: 000a6023 */ negu $t4,$t2 /* f17638c: 03295821 */ addu $t3,$t9,$t1 /* f176390: 016c1821 */ addu $v1,$t3,$t4 /* f176394: 8c6e0000 */ lw $t6,0x0($v1) /* f176398: 27a40024 */ addiu $a0,$sp,0x24 /* f17639c: 24050066 */ addiu $a1,$zero,0x66 /* f1763a0: afae0024 */ sw $t6,0x24($sp) /* f1763a4: 946d0004 */ lhu $t5,0x4($v1) /* f1763a8: 00003025 */ or $a2,$zero,$zero /* f1763ac: 0fc41358 */ jal func0f1094e4 /* f1763b0: a7ad0028 */ sh $t5,0x28($sp) /* f1763b4: 8faf0034 */ lw $t7,0x34($sp) .NB0f1763b8: /* f1763b8: 24020001 */ addiu $v0,$zero,0x1 /* f1763bc: 3c088009 */ lui $t0,0x8009 /* f1763c0: 91f80001 */ lbu $t8,0x1($t7) /* f1763c4: 5458006d */ bnel $v0,$t8,.NB0f17657c /* f1763c8: 00001025 */ or $v0,$zero,$zero /* f1763cc: 910830e0 */ lbu $t0,0x30e0($t0) /* f1763d0: 3c048009 */ lui $a0,0x8009 /* f1763d4: 2405000b */ addiu $a1,$zero,0xb /* f1763d8: 14480006 */ bne $v0,$t0,.NB0f1763f4 /* f1763dc: 24848c7c */ addiu $a0,$a0,-29572 /* f1763e0: 3c048007 */ lui $a0,0x8007 /* f1763e4: 0fc3d2dd */ jal func0f0f820c /* f1763e8: 2484757c */ addiu $a0,$a0,0x757c /* f1763ec: 10000063 */ beqz $zero,.NB0f17657c /* f1763f0: 00001025 */ or $v0,$zero,$zero .NB0f1763f4: /* f1763f4: 0fc3d2dd */ jal func0f0f820c /* f1763f8: 24050003 */ addiu $a1,$zero,0x3 /* f1763fc: 1000005f */ beqz $zero,.NB0f17657c /* f176400: 00001025 */ or $v0,$zero,$zero /* f176404: 3c19000f */ lui $t9,0xf /* f176408: 3739ffff */ ori $t9,$t9,0xffff /* f17640c: 1000005a */ beqz $zero,.NB0f176578 /* f176410: acf90000 */ sw $t9,0x0($a3) /* f176414: 24090001 */ addiu $t1,$zero,0x1 /* f176418: ace90000 */ sw $t1,0x0($a3) /* f17641c: 3c038007 */ lui $v1,0x8007 /* f176420: 8c637f64 */ lw $v1,0x7f64($v1) /* f176424: 50600055 */ beqzl $v1,.NB0f17657c /* f176428: 00001025 */ or $v0,$zero,$zero /* f17642c: 906b030a */ lbu $t3,0x30a($v1) /* f176430: 012b6021 */ addu $t4,$t1,$t3 /* f176434: 10000050 */ beqz $zero,.NB0f176578 /* f176438: acec0000 */ sw $t4,0x0($a3) /* f17643c: 8ce30000 */ lw $v1,0x0($a3) /* f176440: 3c0e8007 */ lui $t6,0x8007 /* f176444: 14600005 */ bnez $v1,.NB0f17645c /* f176448: 00000000 */ sll $zero,$zero,0x0 /* f17644c: 0fc5a4dd */ jal langGet /* f176450: 2404508d */ addiu $a0,$zero,0x508d /* f176454: 1000004a */ beqz $zero,.NB0f176580 /* f176458: 8fbf0014 */ lw $ra,0x14($sp) .NB0f17645c: /* f17645c: 8dce7f64 */ lw $t6,0x7f64($t6) /* f176460: 24040001 */ addiu $a0,$zero,0x1 /* f176464: 8fa50030 */ lw $a1,0x30($sp) /* f176468: 51c00044 */ beqzl $t6,.NB0f17657c /* f17646c: 00001025 */ or $v0,$zero,$zero /* f176470: 0fc41070 */ jal filemgrGetDeviceNameOrStartIndex /* f176474: 2466ffff */ addiu $a2,$v1,-1 /* f176478: 10000041 */ beqz $zero,.NB0f176580 /* f17647c: 8fbf0014 */ lw $ra,0x14($sp) /* f176480: 8ced0000 */ lw $t5,0x0($a3) /* f176484: 15a00003 */ bnez $t5,.NB0f176494 /* f176488: 00000000 */ sll $zero,$zero,0x0 /* f17648c: 1000003a */ beqz $zero,.NB0f176578 /* f176490: ace00008 */ sw $zero,0x8($a3) .NB0f176494: /* f176494: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f176498: afa70038 */ sw $a3,0x38($sp) /* f17649c: 8fa70038 */ lw $a3,0x38($sp) /* f1764a0: 3c0f8007 */ lui $t7,0x8007 /* f1764a4: 24040001 */ addiu $a0,$zero,0x1 /* f1764a8: ace20008 */ sw $v0,0x8($a3) /* f1764ac: 8def7f64 */ lw $t7,0x7f64($t7) /* f1764b0: 8fa50030 */ lw $a1,0x30($sp) /* f1764b4: 51e00031 */ beqzl $t7,.NB0f17657c /* f1764b8: 00001025 */ or $v0,$zero,$zero /* f1764bc: 8ce60000 */ lw $a2,0x0($a3) /* f1764c0: afa70038 */ sw $a3,0x38($sp) /* f1764c4: 0fc41070 */ jal filemgrGetDeviceNameOrStartIndex /* f1764c8: 24c6ffff */ addiu $a2,$a2,-1 /* f1764cc: 8fa70038 */ lw $a3,0x38($sp) /* f1764d0: 8cf80008 */ lw $t8,0x8($a3) /* f1764d4: 03024021 */ addu $t0,$t8,$v0 /* f1764d8: 10000027 */ beqz $zero,.NB0f176578 /* f1764dc: ace80008 */ sw $t0,0x8($a3) /* f1764e0: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f1764e4: afa70038 */ sw $a3,0x38($sp) /* f1764e8: 8fa70038 */ lw $a3,0x38($sp) /* f1764ec: 3c0a8007 */ lui $t2,0x8007 /* f1764f0: 8cf90000 */ lw $t9,0x0($a3) /* f1764f4: 0322082b */ sltu $at,$t9,$v0 /* f1764f8: 1020000e */ beqz $at,.NB0f176534 /* f1764fc: 00000000 */ sll $zero,$zero,0x0 /* f176500: 8d4a3af0 */ lw $t2,0x3af0($t2) /* f176504: 3c01800a */ lui $at,0x800a /* f176508: 3409ffff */ dli $t1,0xffff /* f17650c: 000a58c0 */ sll $t3,$t2,0x3 /* f176510: 016a5823 */ subu $t3,$t3,$t2 /* f176514: 000b58c0 */ sll $t3,$t3,0x3 /* f176518: 016a5823 */ subu $t3,$t3,$t2 /* f17651c: 000b5900 */ sll $t3,$t3,0x4 /* f176520: 016a5823 */ subu $t3,$t3,$t2 /* f176524: 000b5880 */ sll $t3,$t3,0x2 /* f176528: 002b0821 */ addu $at,$at,$t3 /* f17652c: 10000012 */ beqz $zero,.NB0f176578 /* f176530: ac293538 */ sw $t1,0x3538($at) .NB0f176534: /* f176534: 0fc61f84 */ jal mpGetNumUnlockedPresets /* f176538: afa70038 */ sw $a3,0x38($sp) /* f17653c: 3c0d8007 */ lui $t5,0x8007 /* f176540: 8dad3af0 */ lw $t5,0x3af0($t5) /* f176544: 8fa70038 */ lw $a3,0x38($sp) /* f176548: 3c01800a */ lui $at,0x800a /* f17654c: 000d78c0 */ sll $t7,$t5,0x3 /* f176550: 01ed7823 */ subu $t7,$t7,$t5 /* f176554: 000f78c0 */ sll $t7,$t7,0x3 /* f176558: 01ed7823 */ subu $t7,$t7,$t5 /* f17655c: 8cec0000 */ lw $t4,0x0($a3) /* f176560: 000f7900 */ sll $t7,$t7,0x4 /* f176564: 01ed7823 */ subu $t7,$t7,$t5 /* f176568: 000f7880 */ sll $t7,$t7,0x2 /* f17656c: 002f0821 */ addu $at,$at,$t7 /* f176570: 01827023 */ subu $t6,$t4,$v0 /* f176574: ac2e3538 */ sw $t6,0x3538($at) .NB0f176578: /* f176578: 00001025 */ or $v0,$zero,$zero .NB0f17657c: /* f17657c: 8fbf0014 */ lw $ra,0x14($sp) .NB0f176580: /* f176580: 27bd0030 */ addiu $sp,$sp,0x30 /* f176584: 03e00008 */ jr $ra /* f176588: 00000000 */ sll $zero,$zero,0x0 ); #endif char *mpMenuTextMpconfigMarquee(struct menuitem *item) { char filename[20]; u16 numsims; u16 stagenum; u16 scenarionum; s32 arenanum; s32 i; if (g_Menus[g_MpPlayerNum].data.mpsetup.slotindex < 0xffff && g_FileLists[1]) { #if VERSION >= VERSION_NTSC_1_0 arenanum = -1; #else arenanum = 0; #endif func0f18e39c(g_FileLists[1]->unk000[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].unk06, filename, &numsims, &stagenum, &scenarionum); for (i = 0; i < ARRAYCOUNT(g_MpArenas); i++) { if (g_MpArenas[i].stagenum == stagenum) { arenanum = i; } } #if VERSION >= VERSION_NTSC_1_0 if (scenarionum <= 5 && arenanum != -1 && numsims >= 0 && filename[0] != '\0' && numsims <= 8) { // "%s: Scenario: %s Arena: %s Simulants: %d" sprintf(g_StringPointer, langGet(L_MPMENU_140), filename, langGet(g_MpScenarioOverviews[scenarionum].name), langGet(g_MpArenas[arenanum].name), numsims); } else { return ""; } #else // "%s: Scenario: %s Arena: %s Simulants: %d" sprintf(g_StringPointer, langGet(L_MPMENU_140), filename, langGet(g_MpScenarioOverviews[scenarionum].name), langGet(g_MpArenas[arenanum].name), numsims); #endif return g_StringPointer; } return ""; } #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel menuhandler0017bfc0 .late_rodata glabel var7f1b8190 .word menuhandler0017bfc0+0x68 # f17c028 glabel var7f1b8194 .word menuhandler0017bfc0+0x184 # f17c144 glabel var7f1b8198 .word menuhandler0017bfc0+0x74 # f17c034 glabel var7f1b819c .word menuhandler0017bfc0+0x190 # f17c150 glabel var7f1b81a0 .word menuhandler0017bfc0+0x1a4 # f17c164 glabel var7f1b81a4 .word menuhandler0017bfc0+0xa4 # f17c064 glabel var7f1b81a8 .word menuhandler0017bfc0+0x174 # f17c134 .text /* f17bfc0: 27bdffb0 */ addiu $sp,$sp,-80 /* f17bfc4: 3c028007 */ lui $v0,%hi(g_FileLists) /* f17bfc8: 8c425bc0 */ lw $v0,%lo(g_FileLists)($v0) /* f17bfcc: afb30020 */ sw $s3,0x20($sp) /* f17bfd0: afa50054 */ sw $a1,0x54($sp) /* f17bfd4: 00802825 */ or $a1,$a0,$zero /* f17bfd8: 00c09825 */ or $s3,$a2,$zero /* f17bfdc: afbf002c */ sw $ra,0x2c($sp) /* f17bfe0: afb50028 */ sw $s5,0x28($sp) /* f17bfe4: afb40024 */ sw $s4,0x24($sp) /* f17bfe8: afb2001c */ sw $s2,0x1c($sp) /* f17bfec: afb10018 */ sw $s1,0x18($sp) /* f17bff0: afb00014 */ sw $s0,0x14($sp) /* f17bff4: 14400003 */ bnez $v0,.L0f17c004 /* f17bff8: afa40050 */ sw $a0,0x50($sp) /* f17bffc: 10000060 */ b .L0f17c180 /* f17c000: 00001025 */ or $v0,$zero,$zero .L0f17c004: /* f17c004: 24aeffff */ addiu $t6,$a1,-1 /* f17c008: 2dc10007 */ sltiu $at,$t6,0x7 /* f17c00c: 1020005b */ beqz $at,.L0f17c17c /* f17c010: 000e7080 */ sll $t6,$t6,0x2 /* f17c014: 3c017f1c */ lui $at,%hi(var7f1b8190) /* f17c018: 002e0821 */ addu $at,$at,$t6 /* f17c01c: 8c2e8190 */ lw $t6,%lo(var7f1b8190)($at) /* f17c020: 01c00008 */ jr $t6 /* f17c024: 00000000 */ nop /* f17c028: 844f02d0 */ lh $t7,0x2d0($v0) /* f17c02c: 10000053 */ b .L0f17c17c /* f17c030: ae6f0000 */ sw $t7,0x0($s3) /* f17c034: 8e780000 */ lw $t8,0x0($s3) /* f17c038: 3c108007 */ lui $s0,%hi(g_StringPointer) /* f17c03c: 26101440 */ addiu $s0,$s0,%lo(g_StringPointer) /* f17c040: 0018c880 */ sll $t9,$t8,0x2 /* f17c044: 0338c823 */ subu $t9,$t9,$t8 /* f17c048: 0019c8c0 */ sll $t9,$t9,0x3 /* f17c04c: 00592821 */ addu $a1,$v0,$t9 /* f17c050: 8e040000 */ lw $a0,0x0($s0) /* f17c054: 0fc42034 */ jal filemgrGetFileName /* f17c058: 24060002 */ addiu $a2,$zero,0x2 /* f17c05c: 10000048 */ b .L0f17c180 /* f17c060: 8e020000 */ lw $v0,0x0($s0) /* f17c064: 8e680000 */ lw $t0,0x0($s3) /* f17c068: 3c13800b */ lui $s3,%hi(g_MpSetup) /* f17c06c: 3c11800b */ lui $s1,%hi(g_MpPlayers) /* f17c070: 00084880 */ sll $t1,$t0,0x2 /* f17c074: 01284823 */ subu $t1,$t1,$t0 /* f17c078: 000948c0 */ sll $t1,$t1,0x3 /* f17c07c: 00499021 */ addu $s2,$v0,$t1 /* f17c080: 24150001 */ addiu $s5,$zero,0x1 /* f17c084: 2631c7b8 */ addiu $s1,$s1,%lo(g_MpPlayers) /* f17c088: 2673cb88 */ addiu $s3,$s3,%lo(g_MpSetup) /* f17c08c: 00008025 */ or $s0,$zero,$zero /* f17c090: 24140004 */ addiu $s4,$zero,0x4 .L0f17c094: /* f17c094: 8e4a0000 */ lw $t2,0x0($s2) /* f17c098: 8e2b004c */ lw $t3,0x4c($s1) /* f17c09c: 554b0011 */ bnel $t2,$t3,.L0f17c0e4 /* f17c0a0: 26100001 */ addiu $s0,$s0,0x1 /* f17c0a4: 964c0004 */ lhu $t4,0x4($s2) /* f17c0a8: 962d0050 */ lhu $t5,0x50($s1) /* f17c0ac: 558d000d */ bnel $t4,$t5,.L0f17c0e4 /* f17c0b0: 26100001 */ addiu $s0,$s0,0x1 /* f17c0b4: 966e0016 */ lhu $t6,0x16($s3) /* f17c0b8: 240f0001 */ addiu $t7,$zero,0x1 /* f17c0bc: 020fc004 */ sllv $t8,$t7,$s0 /* f17c0c0: 01d8c824 */ and $t9,$t6,$t8 /* f17c0c4: 17200005 */ bnez $t9,.L0f17c0dc /* f17c0c8: 02002025 */ or $a0,$s0,$zero /* f17c0cc: 0fc62003 */ jal mpPlayerSetDefaults /* f17c0d0: 24050001 */ addiu $a1,$zero,0x1 /* f17c0d4: 10000003 */ b .L0f17c0e4 /* f17c0d8: 26100001 */ addiu $s0,$s0,0x1 .L0f17c0dc: /* f17c0dc: 0000a825 */ or $s5,$zero,$zero /* f17c0e0: 26100001 */ addiu $s0,$s0,0x1 .L0f17c0e4: /* f17c0e4: 1614ffeb */ bne $s0,$s4,.L0f17c094 /* f17c0e8: 263100a0 */ addiu $s1,$s1,0xa0 /* f17c0ec: 12a0000d */ beqz $s5,.L0f17c124 /* f17c0f0: 00000000 */ nop /* f17c0f4: 8e480000 */ lw $t0,0x0($s2) /* f17c0f8: afa80044 */ sw $t0,0x44($sp) /* f17c0fc: 96490004 */ lhu $t1,0x4($s2) /* f17c100: 0fc3cdb7 */ jal menuPopDialog /* f17c104: a7a90048 */ sh $t1,0x48($sp) /* f17c108: 3c068007 */ lui $a2,%hi(g_MpPlayerNum) /* f17c10c: 8cc61448 */ lw $a2,%lo(g_MpPlayerNum)($a2) /* f17c110: 27a40044 */ addiu $a0,$sp,0x44 /* f17c114: 0fc42539 */ jal func0f1094e4 /* f17c118: 24050065 */ addiu $a1,$zero,0x65 /* f17c11c: 10000018 */ b .L0f17c180 /* f17c120: 00001025 */ or $v0,$zero,$zero .L0f17c124: /* f17c124: 0fc42197 */ jal filemgrPushErrorDialog /* f17c128: 24040005 */ addiu $a0,$zero,0x5 /* f17c12c: 10000014 */ b .L0f17c180 /* f17c130: 00001025 */ or $v0,$zero,$zero /* f17c134: 3c0a000f */ lui $t2,0xf /* f17c138: 354affff */ ori $t2,$t2,0xffff /* f17c13c: 1000000f */ b .L0f17c17c /* f17c140: ae6a0000 */ sw $t2,0x0($s3) /* f17c144: 904b030a */ lbu $t3,0x30a($v0) /* f17c148: 1000000c */ b .L0f17c17c /* f17c14c: ae6b0000 */ sw $t3,0x0($s3) /* f17c150: 00002025 */ or $a0,$zero,$zero /* f17c154: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17c158: 8e660000 */ lw $a2,0x0($s3) /* f17c15c: 10000009 */ b .L0f17c184 /* f17c160: 8fbf002c */ lw $ra,0x2c($sp) /* f17c164: 00002025 */ or $a0,$zero,$zero /* f17c168: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17c16c: 8e660000 */ lw $a2,0x0($s3) /* f17c170: ae620008 */ sw $v0,0x8($s3) /* f17c174: 10000002 */ b .L0f17c180 /* f17c178: 00001025 */ or $v0,$zero,$zero .L0f17c17c: /* f17c17c: 00001025 */ or $v0,$zero,$zero .L0f17c180: /* f17c180: 8fbf002c */ lw $ra,0x2c($sp) .L0f17c184: /* f17c184: 8fb00014 */ lw $s0,0x14($sp) /* f17c188: 8fb10018 */ lw $s1,0x18($sp) /* f17c18c: 8fb2001c */ lw $s2,0x1c($sp) /* f17c190: 8fb30020 */ lw $s3,0x20($sp) /* f17c194: 8fb40024 */ lw $s4,0x24($sp) /* f17c198: 8fb50028 */ lw $s5,0x28($sp) /* f17c19c: 03e00008 */ jr $ra /* f17c1a0: 27bd0050 */ addiu $sp,$sp,0x50 ); #else GLOBAL_ASM( glabel menuhandler0017bfc0 .late_rodata glabel var7f1b8190 .word menuhandler0017bfc0+0x68 # f17c028 glabel var7f1b8194 .word menuhandler0017bfc0+0x184 # f17c144 glabel var7f1b8198 .word menuhandler0017bfc0+0x74 # f17c034 glabel var7f1b819c .word menuhandler0017bfc0+0x190 # f17c150 glabel var7f1b81a0 .word menuhandler0017bfc0+0x1a4 # f17c164 glabel var7f1b81a4 .word menuhandler0017bfc0+0xa4 # f17c064 glabel var7f1b81a8 .word menuhandler0017bfc0+0x174 # f17c134 .text /* f1766e0: 27bdffb0 */ addiu $sp,$sp,-80 /* f1766e4: 3c028007 */ lui $v0,0x8007 /* f1766e8: 8c427f60 */ lw $v0,0x7f60($v0) /* f1766ec: afb30020 */ sw $s3,0x20($sp) /* f1766f0: afa50054 */ sw $a1,0x54($sp) /* f1766f4: 00802825 */ or $a1,$a0,$zero /* f1766f8: 00c09825 */ or $s3,$a2,$zero /* f1766fc: afbf002c */ sw $ra,0x2c($sp) /* f176700: afb50028 */ sw $s5,0x28($sp) /* f176704: afb40024 */ sw $s4,0x24($sp) /* f176708: afb2001c */ sw $s2,0x1c($sp) /* f17670c: afb10018 */ sw $s1,0x18($sp) /* f176710: afb00014 */ sw $s0,0x14($sp) /* f176714: 14400003 */ bnez $v0,.NB0f176724 /* f176718: afa40050 */ sw $a0,0x50($sp) /* f17671c: 10000060 */ beqz $zero,.NB0f1768a0 /* f176720: 00001025 */ or $v0,$zero,$zero .NB0f176724: /* f176724: 24aeffff */ addiu $t6,$a1,-1 /* f176728: 2dc10007 */ sltiu $at,$t6,0x7 /* f17672c: 1020005b */ beqz $at,.NB0f17689c /* f176730: 000e7080 */ sll $t6,$t6,0x2 /* f176734: 3c017f1b */ lui $at,0x7f1b /* f176738: 002e0821 */ addu $at,$at,$t6 /* f17673c: 8c2e2a84 */ lw $t6,0x2a84($at) /* f176740: 01c00008 */ jr $t6 /* f176744: 00000000 */ sll $zero,$zero,0x0 /* f176748: 844f02d0 */ lh $t7,0x2d0($v0) /* f17674c: 10000053 */ beqz $zero,.NB0f17689c /* f176750: ae6f0000 */ sw $t7,0x0($s3) /* f176754: 8e780000 */ lw $t8,0x0($s3) /* f176758: 3c10800a */ lui $s0,0x800a /* f17675c: 261026b0 */ addiu $s0,$s0,0x26b0 /* f176760: 0018c880 */ sll $t9,$t8,0x2 /* f176764: 0338c823 */ subu $t9,$t9,$t8 /* f176768: 0019c8c0 */ sll $t9,$t9,0x3 /* f17676c: 00592821 */ addu $a1,$v0,$t9 /* f176770: 02002025 */ or $a0,$s0,$zero /* f176774: 0fc40efc */ jal filemgrGetFileName /* f176778: 24060002 */ addiu $a2,$zero,0x2 /* f17677c: 10000048 */ beqz $zero,.NB0f1768a0 /* f176780: 02001025 */ or $v0,$s0,$zero /* f176784: 8e680000 */ lw $t0,0x0($s3) /* f176788: 3c13800b */ lui $s3,0x800b /* f17678c: 3c11800b */ lui $s1,0x800b /* f176790: 00084880 */ sll $t1,$t0,0x2 /* f176794: 01284823 */ subu $t1,$t1,$t0 /* f176798: 000948c0 */ sll $t1,$t1,0x3 /* f17679c: 00499021 */ addu $s2,$v0,$t1 /* f1767a0: 24150001 */ addiu $s5,$zero,0x1 /* f1767a4: 26311068 */ addiu $s1,$s1,0x1068 /* f1767a8: 26731438 */ addiu $s3,$s3,0x1438 /* f1767ac: 00008025 */ or $s0,$zero,$zero /* f1767b0: 24140004 */ addiu $s4,$zero,0x4 .NB0f1767b4: /* f1767b4: 8e4a0000 */ lw $t2,0x0($s2) /* f1767b8: 8e2b004c */ lw $t3,0x4c($s1) /* f1767bc: 554b0011 */ bnel $t2,$t3,.NB0f176804 /* f1767c0: 26100001 */ addiu $s0,$s0,0x1 /* f1767c4: 964c0004 */ lhu $t4,0x4($s2) /* f1767c8: 962d0050 */ lhu $t5,0x50($s1) /* f1767cc: 558d000d */ bnel $t4,$t5,.NB0f176804 /* f1767d0: 26100001 */ addiu $s0,$s0,0x1 /* f1767d4: 966e0016 */ lhu $t6,0x16($s3) /* f1767d8: 240f0001 */ addiu $t7,$zero,0x1 /* f1767dc: 020fc004 */ sllv $t8,$t7,$s0 /* f1767e0: 01d8c824 */ and $t9,$t6,$t8 /* f1767e4: 17200005 */ bnez $t9,.NB0f1767fc /* f1767e8: 02002025 */ or $a0,$s0,$zero /* f1767ec: 0fc60904 */ jal mpPlayerSetDefaults /* f1767f0: 24050001 */ addiu $a1,$zero,0x1 /* f1767f4: 10000003 */ beqz $zero,.NB0f176804 /* f1767f8: 26100001 */ addiu $s0,$s0,0x1 .NB0f1767fc: /* f1767fc: 0000a825 */ or $s5,$zero,$zero /* f176800: 26100001 */ addiu $s0,$s0,0x1 .NB0f176804: /* f176804: 1614ffeb */ bne $s0,$s4,.NB0f1767b4 /* f176808: 263100a0 */ addiu $s1,$s1,0xa0 /* f17680c: 12a0000d */ beqz $s5,.NB0f176844 /* f176810: 00000000 */ sll $zero,$zero,0x0 /* f176814: 8e480000 */ lw $t0,0x0($s2) /* f176818: afa80044 */ sw $t0,0x44($sp) /* f17681c: 96490004 */ lhu $t1,0x4($s2) /* f176820: 0fc3c088 */ jal menuPopDialog /* f176824: a7a90048 */ sh $t1,0x48($sp) /* f176828: 3c068007 */ lui $a2,0x8007 /* f17682c: 8cc63af0 */ lw $a2,0x3af0($a2) /* f176830: 27a40044 */ addiu $a0,$sp,0x44 /* f176834: 0fc41358 */ jal func0f1094e4 /* f176838: 24050065 */ addiu $a1,$zero,0x65 /* f17683c: 10000018 */ beqz $zero,.NB0f1768a0 /* f176840: 00001025 */ or $v0,$zero,$zero .NB0f176844: /* f176844: 0fc41059 */ jal filemgrPushErrorDialog /* f176848: 24040005 */ addiu $a0,$zero,0x5 /* f17684c: 10000014 */ beqz $zero,.NB0f1768a0 /* f176850: 00001025 */ or $v0,$zero,$zero /* f176854: 3c0a000f */ lui $t2,0xf /* f176858: 354affff */ ori $t2,$t2,0xffff /* f17685c: 1000000f */ beqz $zero,.NB0f17689c /* f176860: ae6a0000 */ sw $t2,0x0($s3) /* f176864: 904b030a */ lbu $t3,0x30a($v0) /* f176868: 1000000c */ beqz $zero,.NB0f17689c /* f17686c: ae6b0000 */ sw $t3,0x0($s3) /* f176870: 00002025 */ or $a0,$zero,$zero /* f176874: 0fc41070 */ jal filemgrGetDeviceNameOrStartIndex /* f176878: 8e660000 */ lw $a2,0x0($s3) /* f17687c: 10000009 */ beqz $zero,.NB0f1768a4 /* f176880: 8fbf002c */ lw $ra,0x2c($sp) /* f176884: 00002025 */ or $a0,$zero,$zero /* f176888: 0fc41070 */ jal filemgrGetDeviceNameOrStartIndex /* f17688c: 8e660000 */ lw $a2,0x0($s3) /* f176890: ae620008 */ sw $v0,0x8($s3) /* f176894: 10000002 */ beqz $zero,.NB0f1768a0 /* f176898: 00001025 */ or $v0,$zero,$zero .NB0f17689c: /* f17689c: 00001025 */ or $v0,$zero,$zero .NB0f1768a0: /* f1768a0: 8fbf002c */ lw $ra,0x2c($sp) .NB0f1768a4: /* f1768a4: 8fb00014 */ lw $s0,0x14($sp) /* f1768a8: 8fb10018 */ lw $s1,0x18($sp) /* f1768ac: 8fb2001c */ lw $s2,0x1c($sp) /* f1768b0: 8fb30020 */ lw $s3,0x20($sp) /* f1768b4: 8fb40024 */ lw $s4,0x24($sp) /* f1768b8: 8fb50028 */ lw $s5,0x28($sp) /* f1768bc: 03e00008 */ jr $ra /* f1768c0: 27bd0050 */ addiu $sp,$sp,0x50 ); #endif s32 menuhandlerMpTimeLimitSlider(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETSLIDER: data->slider.value = g_MpSetup.timelimit; break; case MENUOP_SET: g_MpSetup.timelimit = data->slider.value; break; case MENUOP_GETSLIDERLABEL: if (data->slider.value == 60) { sprintf(data->slider.label, langGet(L_MPMENU_112)); // "No Limit" } else { sprintf(data->slider.label, langGet(L_MPMENU_114), data->slider.value + 1); // "%d Min" } } return 0; } s32 menuhandlerMpScoreLimitSlider(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETSLIDER: data->slider.value = g_MpSetup.scorelimit; break; case MENUOP_SET: g_MpSetup.scorelimit = data->slider.value; break; case MENUOP_GETSLIDERLABEL: if (data->slider.value == 100) { sprintf(data->slider.label, langGet(L_MPMENU_112)); // "No Limit" } else { sprintf(data->slider.label, langGet(L_MPMENU_113), data->slider.value + 1); // "%d" } } return 0; } s32 menuhandlerMpTeamScoreLimitSlider(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETSLIDER: data->slider.value = mpCalculateTeamScoreLimit(); break; case MENUOP_SET: g_MpSetup.teamscorelimit = data->slider.value; break; case MENUOP_GETSLIDERLABEL: if (data->slider.value == 400) { sprintf(data->slider.label, langGet(L_MPMENU_112)); // "No Limit" } else { sprintf(data->slider.label, langGet(L_MPMENU_113), data->slider.value + 1); // "%d" } } return 0; } s32 menuhandlerMpRestoreScoreDefaults(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { func0f187fec(); } return 0; } s32 menuhandlerMpHandicapPlayer(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_CHECKHIDDEN: if ((g_MpSetup.chrslots & (1 << item->param)) == 0) { return 1; } break; case MENUOP_GETSLIDER: data->slider.value = g_MpPlayers[item->param].handicap; break; case MENUOP_SET: g_MpPlayers[item->param].handicap = (u16)data->slider.value; break; case MENUOP_GETSLIDERLABEL: sprintf(data->slider.label, "%s%s%.00f%%\n", "", "", mpHandicapToDamageScale(g_MpPlayers[item->param].handicap) * 100); break; } return 0; } char *mpMenuTextHandicapPlayerName(struct menuitem *item) { if (g_MpSetup.chrslots & (1 << item->param)) { return g_MpPlayers[item->param].base.name; } return ""; } const char var7f1b8028[] = "\n"; s32 menuhandlerMpRestoreHandicapDefaults(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { s32 i; for (i = 0; i < 4; i++) { g_MpPlayers[i].handicap = 0x80; } } return 0; } s32 menudialogMpReady(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 && g_MpPlayers[g_MpPlayerNum].unk4c.unk04) { func0f1094e4(&g_MpPlayers[g_MpPlayerNum].unk4c, 3, (void *)g_MpPlayerNum); } } return false; } s32 menudialogMpSimulant(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_TICK) { if ((u8)g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.name[0] == '\0') { menuPopDialog(); } } return false; } struct menuitem g_MpCharacterMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00004230, (u32)&mpMenuTextBodyName, 0x00000000, NULL }, { MENUITEMTYPE_CAROUSEL, 0, 0x00000000, 0x00000000, 0x00000022, menuhandlerMpCharacterHead }, { MENUITEMTYPE_CAROUSEL, 0, 0x00000000, 0x00000000, 0x0000001b, menuhandlerMpCharacterBody }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpCharacterMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_143, // "Character" g_MpCharacterMenuItems, menudialog0017a174, 0x00000002, NULL, }; struct menuitem g_MpPlayerNameMenuItems[] = { { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, menuhandler0017b91c }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpPlayerNameMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_142, // "Player Name" g_MpPlayerNameMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpLoadSettingsMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00000000, 0x00000078, 0x00000042, menuhandler0017bab4 }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32)&mpMenuTextMpconfigMarquee, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpLoadSettingsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_139, // "Load Game Settings" g_MpLoadSettingsMenuItems, NULL, 0x00000001, NULL, }; struct menuitem g_MpLoadPresetMenuItems[] = { { MENUITEMTYPE_LIST, 1, 0x00000000, 0x00000078, 0x00000042, menuhandler0017bab4 }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32)&mpMenuTextMpconfigMarquee, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpLoadPresetMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_139, // "Load Game Settings" g_MpLoadPresetMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpLoadPlayerMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00000000, 0x0000007e, 0x00000042, menuhandler0017bfc0 }, { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPMENU_138, 0x00000000, NULL }, // "B Button to cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpLoadPlayerMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_137, // "Load Player" g_MpLoadPlayerMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpArenaMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00020000, 0x00000078, 0x0000004d, menuhandler001791c8 }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpArenaMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_115, // "Arena" g_MpArenaMenuItems, NULL, 0x00000011, NULL, }; struct menuitem g_MpLimitsMenuItems[] = { { MENUITEMTYPE_SLIDER, 0, 0x00020010, L_MPMENU_108, 0x0000003c, menuhandlerMpTimeLimitSlider }, // "Time" { MENUITEMTYPE_SLIDER, 0, 0x00020010, L_MPMENU_109, 0x00000064, menuhandlerMpScoreLimitSlider }, // "Score" { MENUITEMTYPE_SLIDER, 0, 0x00020010, L_MISC_447, 0x00000190, menuhandlerMpTeamScoreLimitSlider }, // "Team Score" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, L_MPMENU_110, 0x00000000, menuhandlerMpRestoreScoreDefaults }, // "Restore Defaults" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_111, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpLimitsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_107, // "Limits" g_MpLimitsMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpHandicapsMenuItems[] = { { MENUITEMTYPE_SLIDER, 0, 0x00020010, (u32)&mpMenuTextHandicapPlayerName, 0x000000ff, menuhandlerMpHandicapPlayer }, { MENUITEMTYPE_SLIDER, 1, 0x00020010, (u32)&mpMenuTextHandicapPlayerName, 0x000000ff, menuhandlerMpHandicapPlayer }, { MENUITEMTYPE_SLIDER, 2, 0x00020010, (u32)&mpMenuTextHandicapPlayerName, 0x000000ff, menuhandlerMpHandicapPlayer }, { MENUITEMTYPE_SLIDER, 3, 0x00020010, (u32)&mpMenuTextHandicapPlayerName, 0x000000ff, menuhandlerMpHandicapPlayer }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, L_MPMENU_110, 0x00000000, menuhandlerMpRestoreHandicapDefaults }, // "Restore Defaults" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_111, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpHandicapsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPWEAPONS_184, // "Player Handicaps" g_MpHandicapsMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpReadyMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_106, 0x00000000, NULL }, // "...and waiting" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpReadyMenuDialog = { MENUDIALOGTYPE_SUCCESS, L_MPMENU_105, // "Ready!" g_MpReadyMenuItems, menudialogMpReady, 0x00000001, NULL, }; u32 var800857d0 = 0x00000000; u32 var800857d4 = 0x50670000; // "Normal Simulants" u32 var800857d8 = 0x00000006; u32 var800857dc = 0x50680000; // "Special Simulants" GLOBAL_ASM( glabel menuhandler0017c6a4 .late_rodata glabel var7f1b81ac .word menuhandler0017c6a4+0x78 # f17c71c glabel var7f1b81b0 .word menuhandler0017c6a4+0x2f0 # f17c994 glabel var7f1b81b4 .word menuhandler0017c6a4+0xac # f17c750 glabel var7f1b81b8 .word menuhandler0017c6a4+0x2fc # f17c9a0 glabel var7f1b81bc .word menuhandler0017c6a4+0x318 # f17c9bc glabel var7f1b81c0 .word menuhandler0017c6a4+0x100 # f17c7a4 glabel var7f1b81c4 .word menuhandler0017c6a4+0x2b8 # f17c95c glabel var7f1b81c8 .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81cc .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81d0 .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81d4 .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81d8 .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81dc .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81e0 .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81e4 .word menuhandler0017c6a4+0x378 # f17ca1c glabel var7f1b81e8 .word menuhandler0017c6a4+0x250 # f17c8f4 .text /* f17c6a4: 27bdffa8 */ addiu $sp,$sp,-88 /* f17c6a8: 3c0e8008 */ lui $t6,%hi(var800857d0) /* f17c6ac: afbf002c */ sw $ra,0x2c($sp) /* f17c6b0: afb40028 */ sw $s4,0x28($sp) /* f17c6b4: afb30024 */ sw $s3,0x24($sp) /* f17c6b8: afb20020 */ sw $s2,0x20($sp) /* f17c6bc: afb1001c */ sw $s1,0x1c($sp) /* f17c6c0: afb00018 */ sw $s0,0x18($sp) /* f17c6c4: afa5005c */ sw $a1,0x5c($sp) /* f17c6c8: 25ce57d0 */ addiu $t6,$t6,%lo(var800857d0) /* f17c6cc: 8dc10000 */ lw $at,0x0($t6) /* f17c6d0: 27b30040 */ addiu $s3,$sp,0x40 /* f17c6d4: 2488ffff */ addiu $t0,$a0,-1 /* f17c6d8: ae610000 */ sw $at,0x0($s3) /* f17c6dc: 8dd90004 */ lw $t9,0x4($t6) /* f17c6e0: 00c0a025 */ or $s4,$a2,$zero /* f17c6e4: 00009025 */ or $s2,$zero,$zero /* f17c6e8: ae790004 */ sw $t9,0x4($s3) /* f17c6ec: 8dc10008 */ lw $at,0x8($t6) /* f17c6f0: ae610008 */ sw $at,0x8($s3) /* f17c6f4: 8dd9000c */ lw $t9,0xc($t6) /* f17c6f8: 2d010010 */ sltiu $at,$t0,0x10 /* f17c6fc: 102000c7 */ beqz $at,.L0f17ca1c /* f17c700: ae79000c */ sw $t9,0xc($s3) /* f17c704: 00084080 */ sll $t0,$t0,0x2 /* f17c708: 3c017f1c */ lui $at,%hi(var7f1b81ac) /* f17c70c: 00280821 */ addu $at,$at,$t0 /* f17c710: 8c2881ac */ lw $t0,%lo(var7f1b81ac)($at) /* f17c714: 01000008 */ jr $t0 /* f17c718: 00000000 */ nop /* f17c71c: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17c720: 3c118008 */ lui $s1,%hi(g_MpBodies) /* f17c724: 263177bc */ addiu $s1,$s1,%lo(g_MpBodies) /* f17c728: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) .L0f17c72c: /* f17c72c: 0fc67244 */ jal mpIsFeatureUnlocked /* f17c730: 92040006 */ lbu $a0,0x6($s0) /* f17c734: 10400002 */ beqz $v0,.L0f17c740 /* f17c738: 26100008 */ addiu $s0,$s0,0x8 /* f17c73c: 26520001 */ addiu $s2,$s2,0x1 .L0f17c740: /* f17c740: 1611fffa */ bne $s0,$s1,.L0f17c72c /* f17c744: 00000000 */ nop /* f17c748: 100000b4 */ b .L0f17ca1c /* f17c74c: ae920000 */ sw $s2,0x0($s4) /* f17c750: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17c754: 3c118008 */ lui $s1,%hi(g_MpBodies) /* f17c758: 263177bc */ addiu $s1,$s1,%lo(g_MpBodies) /* f17c75c: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) .L0f17c760: /* f17c760: 0fc67244 */ jal mpIsFeatureUnlocked /* f17c764: 92040006 */ lbu $a0,0x6($s0) /* f17c768: 5040000a */ beqzl $v0,.L0f17c794 /* f17c76c: 26100008 */ addiu $s0,$s0,0x8 /* f17c770: 8e890000 */ lw $t1,0x0($s4) /* f17c774: 56490006 */ bnel $s2,$t1,.L0f17c790 /* f17c778: 26520001 */ addiu $s2,$s2,0x1 /* f17c77c: 0fc5b9f1 */ jal langGet /* f17c780: 86040002 */ lh $a0,0x2($s0) /* f17c784: 100000a7 */ b .L0f17ca24 /* f17c788: 8fbf002c */ lw $ra,0x2c($sp) /* f17c78c: 26520001 */ addiu $s2,$s2,0x1 .L0f17c790: /* f17c790: 26100008 */ addiu $s0,$s0,0x8 .L0f17c794: /* f17c794: 1611fff2 */ bne $s0,$s1,.L0f17c760 /* f17c798: 00000000 */ nop /* f17c79c: 100000a0 */ b .L0f17ca20 /* f17c7a0: 00001025 */ or $v0,$zero,$zero /* f17c7a4: 3c0a8007 */ lui $t2,%hi(g_MpPlayerNum) /* f17c7a8: 8d4a1448 */ lw $t2,%lo(g_MpPlayerNum)($t2) /* f17c7ac: 3c0c800a */ lui $t4,%hi(g_Menus+0xe1c) /* f17c7b0: afa00038 */ sw $zero,0x38($sp) /* f17c7b4: 000a58c0 */ sll $t3,$t2,0x3 /* f17c7b8: 016a5823 */ subu $t3,$t3,$t2 /* f17c7bc: 000b5880 */ sll $t3,$t3,0x2 /* f17c7c0: 016a5821 */ addu $t3,$t3,$t2 /* f17c7c4: 000b58c0 */ sll $t3,$t3,0x3 /* f17c7c8: 016a5823 */ subu $t3,$t3,$t2 /* f17c7cc: 000b5900 */ sll $t3,$t3,0x4 /* f17c7d0: 018b6021 */ addu $t4,$t4,$t3 /* f17c7d4: 8d8cee1c */ lw $t4,%lo(g_Menus+0xe1c)($t4) /* f17c7d8: 3c18800b */ lui $t8,%hi(g_MpSetup+0x16) /* f17c7dc: 05810007 */ bgez $t4,.L0f17c7fc /* f17c7e0: afac003c */ sw $t4,0x3c($sp) /* f17c7e4: 0fc632ee */ jal mpGetNumSimulants /* f17c7e8: 00000000 */ nop /* f17c7ec: 240d0001 */ addiu $t5,$zero,0x1 /* f17c7f0: afa2003c */ sw $v0,0x3c($sp) /* f17c7f4: 1000000a */ b .L0f17c820 /* f17c7f8: afad0038 */ sw $t5,0x38($sp) .L0f17c7fc: /* f17c7fc: 8faf003c */ lw $t7,0x3c($sp) /* f17c800: 9718cb9e */ lhu $t8,%lo(g_MpSetup+0x16)($t8) /* f17c804: 24190001 */ addiu $t9,$zero,0x1 /* f17c808: 25ee0004 */ addiu $t6,$t7,0x4 /* f17c80c: 01d94004 */ sllv $t0,$t9,$t6 /* f17c810: 03084824 */ and $t1,$t8,$t0 /* f17c814: 15200002 */ bnez $t1,.L0f17c820 /* f17c818: 240a0001 */ addiu $t2,$zero,0x1 /* f17c81c: afaa0038 */ sw $t2,0x38($sp) .L0f17c820: /* f17c820: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17c824: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) /* f17c828: 00008825 */ or $s1,$zero,$zero /* f17c82c: 24130012 */ addiu $s3,$zero,0x12 .L0f17c830: /* f17c830: 0fc67244 */ jal mpIsFeatureUnlocked /* f17c834: 92040006 */ lbu $a0,0x6($s0) /* f17c838: 50400005 */ beqzl $v0,.L0f17c850 /* f17c83c: 26310001 */ addiu $s1,$s1,0x1 /* f17c840: 8e8b0000 */ lw $t3,0x0($s4) /* f17c844: 124b0004 */ beq $s2,$t3,.L0f17c858 /* f17c848: 26520001 */ addiu $s2,$s2,0x1 /* f17c84c: 26310001 */ addiu $s1,$s1,0x1 .L0f17c850: /* f17c850: 1633fff7 */ bne $s1,$s3,.L0f17c830 /* f17c854: 26100008 */ addiu $s0,$s0,0x8 .L0f17c858: /* f17c858: 8fac0038 */ lw $t4,0x38($sp) /* f17c85c: 8fad003c */ lw $t5,0x3c($sp) /* f17c860: 3c19800b */ lui $t9,%hi(g_MpSimulants) /* f17c864: 11800006 */ beqz $t4,.L0f17c880 /* f17c868: 000d7880 */ sll $t7,$t5,0x2 /* f17c86c: 8fa4003c */ lw $a0,0x3c($sp) /* f17c870: 0fc63261 */ jal func0f18c984 /* f17c874: 322500ff */ andi $a1,$s1,0xff /* f17c878: 1000000e */ b .L0f17c8b4 /* f17c87c: 00000000 */ nop .L0f17c880: /* f17c880: 01ed7821 */ addu $t7,$t7,$t5 /* f17c884: 920e0000 */ lbu $t6,0x0($s0) /* f17c888: 000f7880 */ sll $t7,$t7,0x2 /* f17c88c: 01ed7823 */ subu $t7,$t7,$t5 /* f17c890: 000f7880 */ sll $t7,$t7,0x2 /* f17c894: 2739c538 */ addiu $t9,$t9,%lo(g_MpSimulants) /* f17c898: 01f91021 */ addu $v0,$t7,$t9 /* f17c89c: 31d800ff */ andi $t8,$t6,0xff /* f17c8a0: 17000004 */ bnez $t8,.L0f17c8b4 /* f17c8a4: a04e0047 */ sb $t6,0x47($v0) /* f17c8a8: 8fa4003c */ lw $a0,0x3c($sp) /* f17c8ac: 0fc632d8 */ jal func0f18cb60 /* f17c8b0: 92050001 */ lbu $a1,0x1($s0) .L0f17c8b4: /* f17c8b4: 0fc63377 */ jal func0f18cddc /* f17c8b8: 00000000 */ nop /* f17c8bc: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f17c8c0: 8d291448 */ lw $t1,%lo(g_MpPlayerNum)($t1) /* f17c8c4: 8e880000 */ lw $t0,0x0($s4) /* f17c8c8: 3c01800a */ lui $at,%hi(g_Menus+0xe20) /* f17c8cc: 000950c0 */ sll $t2,$t1,0x3 /* f17c8d0: 01495023 */ subu $t2,$t2,$t1 /* f17c8d4: 000a5080 */ sll $t2,$t2,0x2 /* f17c8d8: 01495021 */ addu $t2,$t2,$t1 /* f17c8dc: 000a50c0 */ sll $t2,$t2,0x3 /* f17c8e0: 01495023 */ subu $t2,$t2,$t1 /* f17c8e4: 000a5100 */ sll $t2,$t2,0x4 /* f17c8e8: 002a0821 */ addu $at,$at,$t2 /* f17c8ec: 1000004b */ b .L0f17ca1c /* f17c8f0: ac28ee20 */ sw $t0,%lo(g_Menus+0xe20)($at) /* f17c8f4: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17c8f8: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) /* f17c8fc: 00008825 */ or $s1,$zero,$zero /* f17c900: 24130012 */ addiu $s3,$zero,0x12 .L0f17c904: /* f17c904: 0fc67244 */ jal mpIsFeatureUnlocked /* f17c908: 92040006 */ lbu $a0,0x6($s0) /* f17c90c: 50400005 */ beqzl $v0,.L0f17c924 /* f17c910: 26310001 */ addiu $s1,$s1,0x1 /* f17c914: 8e8b0000 */ lw $t3,0x0($s4) /* f17c918: 124b0004 */ beq $s2,$t3,.L0f17c92c /* f17c91c: 26520001 */ addiu $s2,$s2,0x1 /* f17c920: 26310001 */ addiu $s1,$s1,0x1 .L0f17c924: /* f17c924: 1633fff7 */ bne $s1,$s3,.L0f17c904 /* f17c928: 26100008 */ addiu $s0,$s0,0x8 .L0f17c92c: /* f17c92c: 3c0c8007 */ lui $t4,%hi(g_MpPlayerNum) /* f17c930: 8d8c1448 */ lw $t4,%lo(g_MpPlayerNum)($t4) /* f17c934: 3c01800a */ lui $at,%hi(g_Menus+0xe24) /* f17c938: 000c68c0 */ sll $t5,$t4,0x3 /* f17c93c: 01ac6823 */ subu $t5,$t5,$t4 /* f17c940: 000d6880 */ sll $t5,$t5,0x2 /* f17c944: 01ac6821 */ addu $t5,$t5,$t4 /* f17c948: 000d68c0 */ sll $t5,$t5,0x3 /* f17c94c: 01ac6823 */ subu $t5,$t5,$t4 /* f17c950: 000d6900 */ sll $t5,$t5,0x4 /* f17c954: 002d0821 */ addu $at,$at,$t5 /* f17c958: ac31ee24 */ sw $s1,%lo(g_Menus+0xe24)($at) /* f17c95c: 3c0f8007 */ lui $t7,%hi(g_MpPlayerNum) /* f17c960: 8def1448 */ lw $t7,%lo(g_MpPlayerNum)($t7) /* f17c964: 3c0e800a */ lui $t6,%hi(g_Menus+0xe20) /* f17c968: 000fc8c0 */ sll $t9,$t7,0x3 /* f17c96c: 032fc823 */ subu $t9,$t9,$t7 /* f17c970: 0019c880 */ sll $t9,$t9,0x2 /* f17c974: 032fc821 */ addu $t9,$t9,$t7 /* f17c978: 0019c8c0 */ sll $t9,$t9,0x3 /* f17c97c: 032fc823 */ subu $t9,$t9,$t7 /* f17c980: 0019c900 */ sll $t9,$t9,0x4 /* f17c984: 01d97021 */ addu $t6,$t6,$t9 /* f17c988: 8dceee20 */ lw $t6,%lo(g_Menus+0xe20)($t6) /* f17c98c: 10000023 */ b .L0f17ca1c /* f17c990: ae8e0000 */ sw $t6,0x0($s4) /* f17c994: 24180002 */ addiu $t8,$zero,0x2 /* f17c998: 10000020 */ b .L0f17ca1c /* f17c99c: ae980000 */ sw $t8,0x0($s4) /* f17c9a0: 8e890000 */ lw $t1,0x0($s4) /* f17c9a4: 000940c0 */ sll $t0,$t1,0x3 /* f17c9a8: 02685021 */ addu $t2,$s3,$t0 /* f17c9ac: 0fc5b9f1 */ jal langGet /* f17c9b0: 95440004 */ lhu $a0,0x4($t2) /* f17c9b4: 1000001b */ b .L0f17ca24 /* f17c9b8: 8fbf002c */ lw $ra,0x2c($sp) /* f17c9bc: 8e8b0000 */ lw $t3,0x0($s4) /* f17c9c0: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17c9c4: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) /* f17c9c8: 000b60c0 */ sll $t4,$t3,0x3 /* f17c9cc: 026c6821 */ addu $t5,$s3,$t4 /* f17c9d0: 8daf0000 */ lw $t7,0x0($t5) /* f17c9d4: 00008825 */ or $s1,$zero,$zero /* f17c9d8: 59e00010 */ blezl $t7,.L0f17ca1c /* f17c9dc: ae920008 */ sw $s2,0x8($s4) .L0f17c9e0: /* f17c9e0: 0fc67244 */ jal mpIsFeatureUnlocked /* f17c9e4: 92040006 */ lbu $a0,0x6($s0) /* f17c9e8: 50400003 */ beqzl $v0,.L0f17c9f8 /* f17c9ec: 8e990000 */ lw $t9,0x0($s4) /* f17c9f0: 26520001 */ addiu $s2,$s2,0x1 /* f17c9f4: 8e990000 */ lw $t9,0x0($s4) .L0f17c9f8: /* f17c9f8: 26310001 */ addiu $s1,$s1,0x1 /* f17c9fc: 26100008 */ addiu $s0,$s0,0x8 /* f17ca00: 001970c0 */ sll $t6,$t9,0x3 /* f17ca04: 026ec021 */ addu $t8,$s3,$t6 /* f17ca08: 8f090000 */ lw $t1,0x0($t8) /* f17ca0c: 0229082a */ slt $at,$s1,$t1 /* f17ca10: 1420fff3 */ bnez $at,.L0f17c9e0 /* f17ca14: 00000000 */ nop /* f17ca18: ae920008 */ sw $s2,0x8($s4) .L0f17ca1c: /* f17ca1c: 00001025 */ or $v0,$zero,$zero .L0f17ca20: /* f17ca20: 8fbf002c */ lw $ra,0x2c($sp) .L0f17ca24: /* f17ca24: 8fb00018 */ lw $s0,0x18($sp) /* f17ca28: 8fb1001c */ lw $s1,0x1c($sp) /* f17ca2c: 8fb20020 */ lw $s2,0x20($sp) /* f17ca30: 8fb30024 */ lw $s3,0x24($sp) /* f17ca34: 8fb40028 */ lw $s4,0x28($sp) /* f17ca38: 03e00008 */ jr $ra /* f17ca3c: 27bd0058 */ addiu $sp,$sp,0x58 ); char *mpMenuTextSimulantDescription(struct menuitem *item) { return langGet(L_MISC_106 + g_Menus[g_MpPlayerNum].data.mpsetup.unke24); } s32 menuhandlerMpSimulantHead(s32 operation, struct menuitem *item, union handlerdata *data) { s32 start = 0; if (item->param2 == 1) { start = mpGetNumHeads(); } /** * Rare developers forgot to add a break statement to the first case, * and when they noticed a problem their fix was to add an additional * MENUOP_FOCUS check in the next case. */ switch (operation) { case MENUOP_SET: g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpheadnum = start + data->carousel.value; case MENUOP_FOCUS: if (operation == MENUOP_FOCUS && item->param2 == 1 && g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpheadnum < start) { g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpheadnum = start; } break; } return func0f17b4f8(operation, item, data, g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpheadnum, 0); } s32 menuhandlerMpSimulantBody(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpbodynum = data->carousel.value; } return func0f179da4(operation, item, data, g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpbodynum, g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.mpheadnum, 0); } s32 menudialog0017ccfc(s32 operation, struct menudialog *dialog, union handlerdata *data) { switch (operation) { case MENUOP_TICK: if (g_Menus[g_MpPlayerNum].curframe->dialog == dialog && g_Menus[g_MpPlayerNum].curframe->focuseditem != &dialog->items[0] && g_Menus[g_MpPlayerNum].curframe->focuseditem != &dialog->items[1]) { union handlerdata data; menuhandlerMpCharacterBody(MENUOP_11, &dialog->items[1], &data); } } return menudialogMpSimulant(operation, dialog, data); } #if VERSION >= VERSION_PAL_FINAL GLOBAL_ASM( glabel menuhandlerMpSimulantDifficulty /* f17cda0: 27bdffd0 */ addiu $sp,$sp,-48 /* f17cda4: afb40028 */ sw $s4,0x28($sp) /* f17cda8: afb20020 */ sw $s2,0x20($sp) /* f17cdac: 24010001 */ addiu $at,$zero,0x1 /* f17cdb0: 00c0a025 */ or $s4,$a2,$zero /* f17cdb4: afbf002c */ sw $ra,0x2c($sp) /* f17cdb8: afb30024 */ sw $s3,0x24($sp) /* f17cdbc: afb1001c */ sw $s1,0x1c($sp) /* f17cdc0: afb00018 */ sw $s0,0x18($sp) /* f17cdc4: afa50034 */ sw $a1,0x34($sp) /* f17cdc8: 10810038 */ beq $a0,$at,.L0f17ceac /* f17cdcc: 00009025 */ or $s2,$zero,$zero /* f17cdd0: 24010003 */ addiu $at,$zero,0x3 /* f17cdd4: 10810042 */ beq $a0,$at,.L0f17cee0 /* f17cdd8: 00008825 */ or $s1,$zero,$zero /* f17cddc: 24130006 */ addiu $s3,$zero,0x6 /* f17cde0: 10930006 */ beq $a0,$s3,.L0f17cdfc /* f17cde4: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17cde8: 24010007 */ addiu $at,$zero,0x7 /* f17cdec: 10810014 */ beq $a0,$at,.L0f17ce40 /* f17cdf0: 3c188007 */ lui $t8,%hi(g_MpPlayerNum) /* f17cdf4: 10000050 */ b .L0f17cf38 /* f17cdf8: 00001025 */ or $v0,$zero,$zero .L0f17cdfc: /* f17cdfc: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17ce00: 3c04800a */ lui $a0,%hi(g_Menus+0xe1c) /* f17ce04: 8e850000 */ lw $a1,0x0($s4) /* f17ce08: 000e78c0 */ sll $t7,$t6,0x3 /* f17ce0c: 01ee7823 */ subu $t7,$t7,$t6 /* f17ce10: 000f7880 */ sll $t7,$t7,0x2 /* f17ce14: 01ee7821 */ addu $t7,$t7,$t6 /* f17ce18: 000f78c0 */ sll $t7,$t7,0x3 /* f17ce1c: 01ee7823 */ subu $t7,$t7,$t6 /* f17ce20: 000f7900 */ sll $t7,$t7,0x4 /* f17ce24: 008f2021 */ addu $a0,$a0,$t7 /* f17ce28: 0fc632d8 */ jal func0f18cb60 /* f17ce2c: 8c84ee1c */ lw $a0,%lo(g_Menus+0xe1c)($a0) /* f17ce30: 0fc63377 */ jal func0f18cddc /* f17ce34: 00000000 */ nop /* f17ce38: 1000003f */ b .L0f17cf38 /* f17ce3c: 00001025 */ or $v0,$zero,$zero .L0f17ce40: /* f17ce40: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8) /* f17ce44: 3c08800a */ lui $t0,%hi(g_Menus+0xe1c) /* f17ce48: 3c02800b */ lui $v0,%hi(g_MpSimulants+0x48) /* f17ce4c: 0018c8c0 */ sll $t9,$t8,0x3 /* f17ce50: 0338c823 */ subu $t9,$t9,$t8 /* f17ce54: 0019c880 */ sll $t9,$t9,0x2 /* f17ce58: 0338c821 */ addu $t9,$t9,$t8 /* f17ce5c: 0019c8c0 */ sll $t9,$t9,0x3 /* f17ce60: 0338c823 */ subu $t9,$t9,$t8 /* f17ce64: 0019c900 */ sll $t9,$t9,0x4 /* f17ce68: 01194021 */ addu $t0,$t0,$t9 /* f17ce6c: 8d08ee1c */ lw $t0,%lo(g_Menus+0xe1c)($t0) /* f17ce70: 00084880 */ sll $t1,$t0,0x2 /* f17ce74: 01284821 */ addu $t1,$t1,$t0 /* f17ce78: 00094880 */ sll $t1,$t1,0x2 /* f17ce7c: 01284823 */ subu $t1,$t1,$t0 /* f17ce80: 00094880 */ sll $t1,$t1,0x2 /* f17ce84: 00491021 */ addu $v0,$v0,$t1 /* f17ce88: 9042c580 */ lbu $v0,%lo(g_MpSimulants+0x48)($v0) /* f17ce8c: 04400005 */ bltz $v0,.L0f17cea4 /* f17ce90: 28410006 */ slti $at,$v0,0x6 /* f17ce94: 10200003 */ beqz $at,.L0f17cea4 /* f17ce98: 00000000 */ nop /* f17ce9c: 10000025 */ b .L0f17cf34 /* f17cea0: ae820000 */ sw $v0,0x0($s4) .L0f17cea4: /* f17cea4: 10000023 */ b .L0f17cf34 /* f17cea8: ae800000 */ sw $zero,0x0($s4) .L0f17ceac: /* f17ceac: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17ceb0: 3c118008 */ lui $s1,%hi(g_MpSimulantTypes+0x30) /* f17ceb4: 2631775c */ addiu $s1,$s1,%lo(g_MpSimulantTypes+0x30) /* f17ceb8: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) .L0f17cebc: /* f17cebc: 0fc67244 */ jal mpIsFeatureUnlocked /* f17cec0: 92040006 */ lbu $a0,0x6($s0) /* f17cec4: 10400002 */ beqz $v0,.L0f17ced0 /* f17cec8: 26100008 */ addiu $s0,$s0,0x8 /* f17cecc: 26520001 */ addiu $s2,$s2,0x1 .L0f17ced0: /* f17ced0: 1611fffa */ bne $s0,$s1,.L0f17cebc /* f17ced4: 00000000 */ nop /* f17ced8: 10000016 */ b .L0f17cf34 /* f17cedc: ae920000 */ sw $s2,0x0($s4) .L0f17cee0: /* f17cee0: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17cee4: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) /* f17cee8: 24130006 */ addiu $s3,$zero,0x6 .L0f17ceec: /* f17ceec: 0fc67244 */ jal mpIsFeatureUnlocked /* f17cef0: 92040006 */ lbu $a0,0x6($s0) /* f17cef4: 5040000a */ beqzl $v0,.L0f17cf20 /* f17cef8: 26310001 */ addiu $s1,$s1,0x1 /* f17cefc: 8e8a0000 */ lw $t2,0x0($s4) /* f17cf00: 564a0006 */ bnel $s2,$t2,.L0f17cf1c /* f17cf04: 26520001 */ addiu $s2,$s2,0x1 /* f17cf08: 0fc5b9f1 */ jal langGet /* f17cf0c: 26245852 */ addiu $a0,$s1,0x5815 /* f17cf10: 1000000a */ b .L0f17cf3c /* f17cf14: 8fbf002c */ lw $ra,0x2c($sp) /* f17cf18: 26520001 */ addiu $s2,$s2,0x1 .L0f17cf1c: /* f17cf1c: 26310001 */ addiu $s1,$s1,0x1 .L0f17cf20: /* f17cf20: 1633fff2 */ bne $s1,$s3,.L0f17ceec /* f17cf24: 26100008 */ addiu $s0,$s0,0x8 /* f17cf28: 3c027f1c */ lui $v0,%hi(var7f1b8028) /* f17cf2c: 10000002 */ b .L0f17cf38 /* f17cf30: 24428028 */ addiu $v0,$v0,%lo(var7f1b8028) .L0f17cf34: /* f17cf34: 00001025 */ or $v0,$zero,$zero .L0f17cf38: /* f17cf38: 8fbf002c */ lw $ra,0x2c($sp) .L0f17cf3c: /* f17cf3c: 8fb00018 */ lw $s0,0x18($sp) /* f17cf40: 8fb1001c */ lw $s1,0x1c($sp) /* f17cf44: 8fb20020 */ lw $s2,0x20($sp) /* f17cf48: 8fb30024 */ lw $s3,0x24($sp) /* f17cf4c: 8fb40028 */ lw $s4,0x28($sp) /* f17cf50: 03e00008 */ jr $ra /* f17cf54: 27bd0030 */ addiu $sp,$sp,0x30 ); #else GLOBAL_ASM( glabel menuhandlerMpSimulantDifficulty /* f17cda0: 27bdffd0 */ addiu $sp,$sp,-48 /* f17cda4: afb40028 */ sw $s4,0x28($sp) /* f17cda8: afb20020 */ sw $s2,0x20($sp) /* f17cdac: 24010001 */ addiu $at,$zero,0x1 /* f17cdb0: 00c0a025 */ or $s4,$a2,$zero /* f17cdb4: afbf002c */ sw $ra,0x2c($sp) /* f17cdb8: afb30024 */ sw $s3,0x24($sp) /* f17cdbc: afb1001c */ sw $s1,0x1c($sp) /* f17cdc0: afb00018 */ sw $s0,0x18($sp) /* f17cdc4: afa50034 */ sw $a1,0x34($sp) /* f17cdc8: 10810038 */ beq $a0,$at,.L0f17ceac /* f17cdcc: 00009025 */ or $s2,$zero,$zero /* f17cdd0: 24010003 */ addiu $at,$zero,0x3 /* f17cdd4: 10810042 */ beq $a0,$at,.L0f17cee0 /* f17cdd8: 00008825 */ or $s1,$zero,$zero /* f17cddc: 24130006 */ addiu $s3,$zero,0x6 /* f17cde0: 10930006 */ beq $a0,$s3,.L0f17cdfc /* f17cde4: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f17cde8: 24010007 */ addiu $at,$zero,0x7 /* f17cdec: 10810014 */ beq $a0,$at,.L0f17ce40 /* f17cdf0: 3c188007 */ lui $t8,%hi(g_MpPlayerNum) /* f17cdf4: 10000050 */ b .L0f17cf38 /* f17cdf8: 00001025 */ or $v0,$zero,$zero .L0f17cdfc: /* f17cdfc: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f17ce00: 3c04800a */ lui $a0,%hi(g_Menus+0xe1c) /* f17ce04: 8e850000 */ lw $a1,0x0($s4) /* f17ce08: 000e78c0 */ sll $t7,$t6,0x3 /* f17ce0c: 01ee7823 */ subu $t7,$t7,$t6 /* f17ce10: 000f7880 */ sll $t7,$t7,0x2 /* f17ce14: 01ee7821 */ addu $t7,$t7,$t6 /* f17ce18: 000f78c0 */ sll $t7,$t7,0x3 /* f17ce1c: 01ee7823 */ subu $t7,$t7,$t6 /* f17ce20: 000f7900 */ sll $t7,$t7,0x4 /* f17ce24: 008f2021 */ addu $a0,$a0,$t7 /* f17ce28: 0fc632d8 */ jal func0f18cb60 /* f17ce2c: 8c84ee1c */ lw $a0,%lo(g_Menus+0xe1c)($a0) /* f17ce30: 0fc63377 */ jal func0f18cddc /* f17ce34: 00000000 */ nop /* f17ce38: 1000003f */ b .L0f17cf38 /* f17ce3c: 00001025 */ or $v0,$zero,$zero .L0f17ce40: /* f17ce40: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8) /* f17ce44: 3c08800a */ lui $t0,%hi(g_Menus+0xe1c) /* f17ce48: 3c02800b */ lui $v0,%hi(g_MpSimulants+0x48) /* f17ce4c: 0018c8c0 */ sll $t9,$t8,0x3 /* f17ce50: 0338c823 */ subu $t9,$t9,$t8 /* f17ce54: 0019c880 */ sll $t9,$t9,0x2 /* f17ce58: 0338c821 */ addu $t9,$t9,$t8 /* f17ce5c: 0019c8c0 */ sll $t9,$t9,0x3 /* f17ce60: 0338c823 */ subu $t9,$t9,$t8 /* f17ce64: 0019c900 */ sll $t9,$t9,0x4 /* f17ce68: 01194021 */ addu $t0,$t0,$t9 /* f17ce6c: 8d08ee1c */ lw $t0,%lo(g_Menus+0xe1c)($t0) /* f17ce70: 00084880 */ sll $t1,$t0,0x2 /* f17ce74: 01284821 */ addu $t1,$t1,$t0 /* f17ce78: 00094880 */ sll $t1,$t1,0x2 /* f17ce7c: 01284823 */ subu $t1,$t1,$t0 /* f17ce80: 00094880 */ sll $t1,$t1,0x2 /* f17ce84: 00491021 */ addu $v0,$v0,$t1 /* f17ce88: 9042c580 */ lbu $v0,%lo(g_MpSimulants+0x48)($v0) /* f17ce8c: 04400005 */ bltz $v0,.L0f17cea4 /* f17ce90: 28410006 */ slti $at,$v0,0x6 /* f17ce94: 10200003 */ beqz $at,.L0f17cea4 /* f17ce98: 00000000 */ nop /* f17ce9c: 10000025 */ b .L0f17cf34 /* f17cea0: ae820000 */ sw $v0,0x0($s4) .L0f17cea4: /* f17cea4: 10000023 */ b .L0f17cf34 /* f17cea8: ae800000 */ sw $zero,0x0($s4) .L0f17ceac: /* f17ceac: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17ceb0: 3c118008 */ lui $s1,%hi(g_MpSimulantTypes+0x30) /* f17ceb4: 2631775c */ addiu $s1,$s1,%lo(g_MpSimulantTypes+0x30) /* f17ceb8: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) .L0f17cebc: /* f17cebc: 0fc67244 */ jal mpIsFeatureUnlocked /* f17cec0: 92040006 */ lbu $a0,0x6($s0) /* f17cec4: 10400002 */ beqz $v0,.L0f17ced0 /* f17cec8: 26100008 */ addiu $s0,$s0,0x8 /* f17cecc: 26520001 */ addiu $s2,$s2,0x1 .L0f17ced0: /* f17ced0: 1611fffa */ bne $s0,$s1,.L0f17cebc /* f17ced4: 00000000 */ nop /* f17ced8: 10000016 */ b .L0f17cf34 /* f17cedc: ae920000 */ sw $s2,0x0($s4) .L0f17cee0: /* f17cee0: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes) /* f17cee4: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes) /* f17cee8: 24130006 */ addiu $s3,$zero,0x6 .L0f17ceec: /* f17ceec: 0fc67244 */ jal mpIsFeatureUnlocked /* f17cef0: 92040006 */ lbu $a0,0x6($s0) /* f17cef4: 5040000a */ beqzl $v0,.L0f17cf20 /* f17cef8: 26310001 */ addiu $s1,$s1,0x1 /* f17cefc: 8e8a0000 */ lw $t2,0x0($s4) /* f17cf00: 564a0006 */ bnel $s2,$t2,.L0f17cf1c /* f17cf04: 26520001 */ addiu $s2,$s2,0x1 /* f17cf08: 0fc5b9f1 */ jal langGet /* f17cf0c: 26245852 */ addiu $a0,$s1,0x5852 /* f17cf10: 1000000a */ b .L0f17cf3c /* f17cf14: 8fbf002c */ lw $ra,0x2c($sp) /* f17cf18: 26520001 */ addiu $s2,$s2,0x1 .L0f17cf1c: /* f17cf1c: 26310001 */ addiu $s1,$s1,0x1 .L0f17cf20: /* f17cf20: 1633fff2 */ bne $s1,$s3,.L0f17ceec /* f17cf24: 26100008 */ addiu $s0,$s0,0x8 /* f17cf28: 3c027f1c */ lui $v0,%hi(var7f1b8028) /* f17cf2c: 10000002 */ b .L0f17cf38 /* f17cf30: 24428028 */ addiu $v0,$v0,%lo(var7f1b8028) .L0f17cf34: /* f17cf34: 00001025 */ or $v0,$zero,$zero .L0f17cf38: /* f17cf38: 8fbf002c */ lw $ra,0x2c($sp) .L0f17cf3c: /* f17cf3c: 8fb00018 */ lw $s0,0x18($sp) /* f17cf40: 8fb1001c */ lw $s1,0x1c($sp) /* f17cf44: 8fb20020 */ lw $s2,0x20($sp) /* f17cf48: 8fb30024 */ lw $s3,0x24($sp) /* f17cf4c: 8fb40028 */ lw $s4,0x28($sp) /* f17cf50: 03e00008 */ jr $ra /* f17cf54: 27bd0030 */ addiu $sp,$sp,0x30 ); #endif s32 menuhandlerMpDeleteSimulant(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { mpRemoveSimulant(g_Menus[g_MpPlayerNum].data.mpsetup.slotindex); menuPopDialog(); } return 0; } char *mpMenuTitleEditSimulant(struct menudialog *dialog) { sprintf(g_StringPointer, "%s", &g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.name); return g_StringPointer; } s32 menuhandlerMpChangeSimulantType(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { s32 i; s32 count = 0; s32 simtypeindex = mpGetSimTypeIndex( g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.simtype, g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].difficulty); for (i = 0; i < simtypeindex; i++) { if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) { count++; } } g_Menus[g_MpPlayerNum].data.mpsetup.slotcount = count; menuPushDialog(&g_MpChangeSimulantMenuDialog); } return 0; } s32 menuhandlerMpClearAllSimulants(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { s32 i; for (i = 0; i < MAX_SIMULANTS; i++) { mpRemoveSimulant(i); } } return 0; } s32 menuhandlerMpAddSimulant(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_SET: g_Menus[g_MpPlayerNum].data.mpsetup.slotindex = -1; menuPushDialog(&g_MpAddSimulantMenuDialog); break; case MENUOP_CHECKDISABLED: if (func0f18cc8c() == 0) { return true; } } return 0; } s32 menuhandlerMpSimulantSlot(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_SET: g_Menus[g_MpPlayerNum].data.mpsetup.slotindex = item->param; if ((g_MpSetup.chrslots & (1 << (item->param + 4))) == 0) { menuPushDialog(&g_MpAddSimulantMenuDialog); } else if (IS4MB()) { menuPushDialog(&g_MpEditSimulant4MbMenuDialog); } else { menuPushDialog(&g_MpEditSimulantMenuDialog); } break; case MENUOP_CHECKHIDDEN: if (item->param >= 4 && !mpIsFeatureUnlocked(MPFEATURE_8BOTS)) { return true; } break; case MENUOP_CHECKDISABLED: if (!mpIsSimSlotEnabled(item->param)) { return true; } } return 0; } char *mpMenuTextSimulantName(struct menuitem *item) { s32 index = item->param; if (g_MpSimulants[index].base.name[0] == '\0' || (g_MpSetup.chrslots & 1 << (index + 4)) == 0) { return ""; } return g_MpSimulants[index].base.name; } char *func0f17d3dc(struct menuitem *item) { s32 index = item->param; if (g_MpSimulants[index].base.name[0] == '\0' || ((g_MpSetup.chrslots & 1 << (index + 4)) == 0)) { return ""; } sprintf(g_StringPointer, "%d:\n", index + 1); return g_StringPointer; } s32 menudialogMpSimulants(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { g_Menus[g_MpPlayerNum].data.mpsetup.slotcount = 0; } return false; } struct menuitem g_MpAddChangeSimulantMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00020000, 0x00000078, 0x00000042, menuhandler0017c6a4 }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32)&mpMenuTextSimulantDescription, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpAddSimulantMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_101, // "Add Simulant" g_MpAddChangeSimulantMenuItems, NULL, 0x00000011, NULL, }; struct menudialog g_MpChangeSimulantMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_102, // "Change Simulant" g_MpAddChangeSimulantMenuItems, menudialogMpSimulant, 0x00000011, NULL, }; struct menuitem g_MpSimulantCharacterMenuItems[] = { { MENUITEMTYPE_CAROUSEL, 0, 0x00020000, 0x00000000, 0x00000025, menuhandlerMpSimulantHead }, { MENUITEMTYPE_CAROUSEL, 0, 0x00020000, 0x00000000, 0x0000001b, menuhandlerMpSimulantBody }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSimulantCharacterMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_100, // "Simulant Character" g_MpSimulantCharacterMenuItems, menudialog0017ccfc, 0x00000012, NULL, }; struct menuitem g_MpEditSimulantMenuItems[] = { { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, L_MPMENU_095, 0x00000000, menuhandlerMpSimulantDifficulty }, // "Difficulty:" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_096, 0x00000000, menuhandlerMpChangeSimulantType }, // "Change Type..." { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_097, 0x00000000, (void *)&g_MpSimulantCharacterMenuDialog }, // "Character..." { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_098, 0x00000000, menuhandlerMpDeleteSimulant }, // "Delete Simulant" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_099, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpEditSimulantMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&mpMenuTitleEditSimulant, g_MpEditSimulantMenuItems, menudialogMpSimulant, 0x00000010, NULL, }; struct menuitem g_MpSimulantsMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_084, 0x00000000, menuhandlerMpAddSimulant }, // "Add Simulant..." { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_085, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "1:" { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_MPMENU_086, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "2:" { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_MPMENU_087, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "3:" { MENUITEMTYPE_SELECTABLE, 3, 0x00000000, L_MPMENU_088, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "4:" { MENUITEMTYPE_SELECTABLE, 4, 0x00000000, L_MPMENU_089, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "5:" { MENUITEMTYPE_SELECTABLE, 5, 0x00000000, L_MPMENU_090, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "6:" { MENUITEMTYPE_SELECTABLE, 6, 0x00000000, L_MPMENU_091, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "7:" { MENUITEMTYPE_SELECTABLE, 7, 0x00000000, L_MPMENU_092, (u32)&mpMenuTextSimulantName, menuhandlerMpSimulantSlot }, // "8:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_093, 0x00000000, menuhandlerMpClearAllSimulants }, // "Clear All" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_094, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSimulantsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_083, // "Simulants" g_MpSimulantsMenuItems, menudialogMpSimulants, 0x00000010, NULL, }; #if VERSION >= VERSION_NTSC_1_0 s32 menuhandlerMpNTeams(s32 operation, struct menuitem *item, union handlerdata *data, s32 numteams) { if (operation == MENUOP_SET) { s32 numchrs = mpGetNumChrs(); s32 array[] = {0, 0, 0, 0}; s32 somevalue = (numchrs + numteams - 1) / numteams; s32 teamsremaining = numteams; s32 chrsremaining = numchrs; s32 start = random() % numchrs; s32 i; s32 teamnum; if (!numchrs) { return 0; } i = (start + 1) % numchrs; do { struct mpchr *mpchr = func0f18c794(i); if (teamsremaining); if (teamsremaining >= chrsremaining) { teamnum = random() % numteams; while (true) { if (array[teamnum] == 0) { mpchr->team = teamnum; array[teamnum]++; teamsremaining--; chrsremaining--; break; } else { teamnum = (teamnum + 1) % numteams; } } } else { teamnum = random() % numteams; while (true) { if (array[teamnum] < somevalue) { mpchr->team = teamnum; if (array[teamnum] == 0) { teamsremaining--; } array[teamnum]++; chrsremaining--; break; } else { teamnum = (teamnum + 1) % numteams; } } } if (i == start) { break; } i = (i + 1) % numchrs; } while (true); menuPopDialog(); } return 0; } #else GLOBAL_ASM( glabel menuhandlerMpNTeams /* f177bd0: 27bdff88 */ addiu $sp,$sp,-120 /* f177bd4: afb00018 */ sw $s0,0x18($sp) /* f177bd8: 24010006 */ addiu $at,$zero,0x6 /* f177bdc: 00e08025 */ or $s0,$a3,$zero /* f177be0: afbf003c */ sw $ra,0x3c($sp) /* f177be4: afbe0038 */ sw $s8,0x38($sp) /* f177be8: afb70034 */ sw $s7,0x34($sp) /* f177bec: afb60030 */ sw $s6,0x30($sp) /* f177bf0: afb5002c */ sw $s5,0x2c($sp) /* f177bf4: afb40028 */ sw $s4,0x28($sp) /* f177bf8: afb30024 */ sw $s3,0x24($sp) /* f177bfc: afb20020 */ sw $s2,0x20($sp) /* f177c00: afb1001c */ sw $s1,0x1c($sp) /* f177c04: afa5007c */ sw $a1,0x7c($sp) /* f177c08: 1481008c */ bne $a0,$at,.NB0f177e3c /* f177c0c: afa60080 */ sw $a2,0x80($sp) /* f177c10: 0fc61aa0 */ jal mpGetNumChrs /* f177c14: 00000000 */ sll $zero,$zero,0x0 /* f177c18: 0050c821 */ addu $t9,$v0,$s0 /* f177c1c: 2728ffff */ addiu $t0,$t9,-1 /* f177c20: 0110001a */ div $zero,$t0,$s0 /* f177c24: 3c0e8009 */ lui $t6,0x8009 /* f177c28: 25ce81f0 */ addiu $t6,$t6,-32272 /* f177c2c: 8dc10000 */ lw $at,0x0($t6) /* f177c30: 27b10064 */ addiu $s1,$sp,0x64 /* f177c34: 00009012 */ mflo $s2 /* f177c38: ae210000 */ sw $at,0x0($s1) /* f177c3c: 8dd80004 */ lw $t8,0x4($t6) /* f177c40: 0040f025 */ or $s8,$v0,$zero /* f177c44: 02009825 */ or $s3,$s0,$zero /* f177c48: ae380004 */ sw $t8,0x4($s1) /* f177c4c: 8dc10008 */ lw $at,0x8($t6) /* f177c50: 0040a025 */ or $s4,$v0,$zero /* f177c54: ae210008 */ sw $at,0x8($s1) /* f177c58: 8dd8000c */ lw $t8,0xc($t6) /* f177c5c: ae38000c */ sw $t8,0xc($s1) /* f177c60: 16000002 */ bnez $s0,.NB0f177c6c /* f177c64: 00000000 */ sll $zero,$zero,0x0 /* f177c68: 0007000d */ break 0x7 .NB0f177c6c: /* f177c6c: 2401ffff */ addiu $at,$zero,-1 /* f177c70: 16010004 */ bne $s0,$at,.NB0f177c84 /* f177c74: 3c018000 */ lui $at,0x8000 /* f177c78: 15010002 */ bne $t0,$at,.NB0f177c84 /* f177c7c: 00000000 */ sll $zero,$zero,0x0 /* f177c80: 0006000d */ break 0x6 .NB0f177c84: /* f177c84: 0c004d84 */ jal random /* f177c88: 00000000 */ sll $zero,$zero,0x0 /* f177c8c: 005e001b */ divu $zero,$v0,$s8 /* f177c90: 00001810 */ mfhi $v1 /* f177c94: 24690001 */ addiu $t1,$v1,0x1 /* f177c98: 0060b825 */ or $s7,$v1,$zero /* f177c9c: 013e001a */ div $zero,$t1,$s8 /* f177ca0: 0000a810 */ mfhi $s5 /* f177ca4: 17c00002 */ bnez $s8,.NB0f177cb0 /* f177ca8: 00000000 */ sll $zero,$zero,0x0 /* f177cac: 0007000d */ break 0x7 .NB0f177cb0: /* f177cb0: 17c00002 */ bnez $s8,.NB0f177cbc /* f177cb4: 00000000 */ sll $zero,$zero,0x0 /* f177cb8: 0007000d */ break 0x7 .NB0f177cbc: /* f177cbc: 2401ffff */ addiu $at,$zero,-1 /* f177cc0: 17c10004 */ bne $s8,$at,.NB0f177cd4 /* f177cc4: 3c018000 */ lui $at,0x8000 /* f177cc8: 15210002 */ bne $t1,$at,.NB0f177cd4 /* f177ccc: 00000000 */ sll $zero,$zero,0x0 /* f177cd0: 0006000d */ break 0x6 .NB0f177cd4: /* f177cd4: 0fc61a7b */ jal func0f18c794 /* f177cd8: 02a02025 */ or $a0,$s5,$zero /* f177cdc: 0274082a */ slt $at,$s3,$s4 /* f177ce0: 14200022 */ bnez $at,.NB0f177d6c /* f177ce4: 0040b025 */ or $s6,$v0,$zero /* f177ce8: 0c004d84 */ jal random /* f177cec: 00000000 */ sll $zero,$zero,0x0 /* f177cf0: 0050001b */ divu $zero,$v0,$s0 /* f177cf4: 00001810 */ mfhi $v1 /* f177cf8: 16000002 */ bnez $s0,.NB0f177d04 /* f177cfc: 00000000 */ sll $zero,$zero,0x0 /* f177d00: 0007000d */ break 0x7 .NB0f177d04: /* f177d04: 00035080 */ sll $t2,$v1,0x2 .NB0f177d08: /* f177d08: 022a1021 */ addu $v0,$s1,$t2 /* f177d0c: 8c4b0000 */ lw $t3,0x0($v0) /* f177d10: 55600009 */ bnezl $t3,.NB0f177d38 /* f177d14: 246f0001 */ addiu $t7,$v1,0x1 /* f177d18: a2c30011 */ sb $v1,0x11($s6) /* f177d1c: 8c4c0000 */ lw $t4,0x0($v0) /* f177d20: 2673ffff */ addiu $s3,$s3,-1 /* f177d24: 2694ffff */ addiu $s4,$s4,-1 /* f177d28: 258d0001 */ addiu $t5,$t4,0x1 /* f177d2c: 10000032 */ beqz $zero,.NB0f177df8 /* f177d30: ac4d0000 */ sw $t5,0x0($v0) /* f177d34: 246f0001 */ addiu $t7,$v1,0x1 .NB0f177d38: /* f177d38: 01f0001a */ div $zero,$t7,$s0 /* f177d3c: 00001810 */ mfhi $v1 /* f177d40: 16000002 */ bnez $s0,.NB0f177d4c /* f177d44: 00000000 */ sll $zero,$zero,0x0 /* f177d48: 0007000d */ break 0x7 .NB0f177d4c: /* f177d4c: 2401ffff */ addiu $at,$zero,-1 /* f177d50: 16010004 */ bne $s0,$at,.NB0f177d64 /* f177d54: 3c018000 */ lui $at,0x8000 /* f177d58: 15e10002 */ bne $t7,$at,.NB0f177d64 /* f177d5c: 00000000 */ sll $zero,$zero,0x0 /* f177d60: 0006000d */ break 0x6 .NB0f177d64: /* f177d64: 1000ffe8 */ beqz $zero,.NB0f177d08 /* f177d68: 00035080 */ sll $t2,$v1,0x2 .NB0f177d6c: /* f177d6c: 0c004d84 */ jal random /* f177d70: 00000000 */ sll $zero,$zero,0x0 /* f177d74: 0050001b */ divu $zero,$v0,$s0 /* f177d78: 00001810 */ mfhi $v1 /* f177d7c: 16000002 */ bnez $s0,.NB0f177d88 /* f177d80: 00000000 */ sll $zero,$zero,0x0 /* f177d84: 0007000d */ break 0x7 .NB0f177d88: /* f177d88: 00037080 */ sll $t6,$v1,0x2 .NB0f177d8c: /* f177d8c: 022e1021 */ addu $v0,$s1,$t6 /* f177d90: 8c580000 */ lw $t8,0x0($v0) /* f177d94: 0312082a */ slt $at,$t8,$s2 /* f177d98: 5020000a */ beqzl $at,.NB0f177dc4 /* f177d9c: 24680001 */ addiu $t0,$v1,0x1 /* f177da0: a2c30011 */ sb $v1,0x11($s6) /* f177da4: 8c440000 */ lw $a0,0x0($v0) /* f177da8: 2694ffff */ addiu $s4,$s4,-1 /* f177dac: 14800002 */ bnez $a0,.NB0f177db8 /* f177db0: 24990001 */ addiu $t9,$a0,0x1 /* f177db4: 2673ffff */ addiu $s3,$s3,-1 .NB0f177db8: /* f177db8: 1000000f */ beqz $zero,.NB0f177df8 /* f177dbc: ac590000 */ sw $t9,0x0($v0) /* f177dc0: 24680001 */ addiu $t0,$v1,0x1 .NB0f177dc4: /* f177dc4: 0110001a */ div $zero,$t0,$s0 /* f177dc8: 00001810 */ mfhi $v1 /* f177dcc: 16000002 */ bnez $s0,.NB0f177dd8 /* f177dd0: 00000000 */ sll $zero,$zero,0x0 /* f177dd4: 0007000d */ break 0x7 .NB0f177dd8: /* f177dd8: 2401ffff */ addiu $at,$zero,-1 /* f177ddc: 16010004 */ bne $s0,$at,.NB0f177df0 /* f177de0: 3c018000 */ lui $at,0x8000 /* f177de4: 15010002 */ bne $t0,$at,.NB0f177df0 /* f177de8: 00000000 */ sll $zero,$zero,0x0 /* f177dec: 0006000d */ break 0x6 .NB0f177df0: /* f177df0: 1000ffe6 */ beqz $zero,.NB0f177d8c /* f177df4: 00037080 */ sll $t6,$v1,0x2 .NB0f177df8: /* f177df8: 12b7000e */ beq $s5,$s7,.NB0f177e34 /* f177dfc: 26a90001 */ addiu $t1,$s5,0x1 /* f177e00: 013e001a */ div $zero,$t1,$s8 /* f177e04: 0000a810 */ mfhi $s5 /* f177e08: 17c00002 */ bnez $s8,.NB0f177e14 /* f177e0c: 00000000 */ sll $zero,$zero,0x0 /* f177e10: 0007000d */ break 0x7 .NB0f177e14: /* f177e14: 2401ffff */ addiu $at,$zero,-1 /* f177e18: 17c10004 */ bne $s8,$at,.NB0f177e2c /* f177e1c: 3c018000 */ lui $at,0x8000 /* f177e20: 15210002 */ bne $t1,$at,.NB0f177e2c /* f177e24: 00000000 */ sll $zero,$zero,0x0 /* f177e28: 0006000d */ break 0x6 .NB0f177e2c: /* f177e2c: 1000ffa9 */ beqz $zero,.NB0f177cd4 /* f177e30: 00000000 */ sll $zero,$zero,0x0 .NB0f177e34: /* f177e34: 0fc3c088 */ jal menuPopDialog /* f177e38: 00000000 */ sll $zero,$zero,0x0 .NB0f177e3c: /* f177e3c: 8fbf003c */ lw $ra,0x3c($sp) /* f177e40: 8fb00018 */ lw $s0,0x18($sp) /* f177e44: 8fb1001c */ lw $s1,0x1c($sp) /* f177e48: 8fb20020 */ lw $s2,0x20($sp) /* f177e4c: 8fb30024 */ lw $s3,0x24($sp) /* f177e50: 8fb40028 */ lw $s4,0x28($sp) /* f177e54: 8fb5002c */ lw $s5,0x2c($sp) /* f177e58: 8fb60030 */ lw $s6,0x30($sp) /* f177e5c: 8fb70034 */ lw $s7,0x34($sp) /* f177e60: 8fbe0038 */ lw $s8,0x38($sp) /* f177e64: 27bd0078 */ addiu $sp,$sp,0x78 /* f177e68: 03e00008 */ jr $ra /* f177e6c: 00001025 */ or $v0,$zero,$zero ); #endif s32 menuhandlerMpTwoTeams(s32 operation, struct menuitem *item, union handlerdata *data) { return menuhandlerMpNTeams(operation, item, data, 2); } s32 menuhandlerMpThreeTeams(s32 operation, struct menuitem *item, union handlerdata *data) { return menuhandlerMpNTeams(operation, item, data, 3); } s32 menuhandlerMpFourTeams(s32 operation, struct menuitem *item, union handlerdata *data) { return menuhandlerMpNTeams(operation, item, data, 4); } s32 menuhandlerMpMaximumTeams(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { s32 i; u8 team = 0; for (i = 0; i != MAX_MPCHRS; i++) { if (g_MpSetup.chrslots & (1 << i)) { struct mpchr *mpchr; if (i < 4) { mpchr = &g_MpPlayers[i].base; } else { mpchr = &g_MpSimulants[i - 4].base; } mpchr->team = team++; if (team >= scenarioGetMaxTeams()) { team = 0; } } } menuPopDialog(); } return 0; } s32 menuhandlerMpHumansVsSimulants(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { s32 i; for (i = 0; i != MAX_MPCHRS; i++) { if (g_MpSetup.chrslots & (1 << i)) { struct mpchr *mpchr; if (i < 4) { mpchr = &g_MpPlayers[i].base; } else { mpchr = &g_MpSimulants[i - 4].base; } mpchr->team = i < 4 ? 0 : 1; } } menuPopDialog(); } return 0; } s32 menuhandlerMpHumanSimulantPairs(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { u8 team_ids[4] = {0, 1, 2, 3}; s32 i; s32 playerindex = 0; s32 simindex = 0; for (i = 0; i != MAX_MPCHRS; i++) { if (g_MpSetup.chrslots & (1 << i)) { struct mpchr *mpchr; if (i < 4) { mpchr = &g_MpPlayers[i].base; } else { mpchr = &g_MpSimulants[i - 4].base; } if (i < 4) { mpchr->team = team_ids[playerindex++]; } else { mpchr->team = team_ids[simindex++]; if (simindex >= playerindex) { simindex = 0; } } } } menuPopDialog(); } return 0; } char *mpMenuTextChrNameForTeamSetup(struct menuitem *item) { struct mpchr *mpchr = func0f18c794(item->param); if (mpchr) { return mpchr->name; } return ""; } s32 func0f17dac4(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->list.value = scenarioGetMaxTeams(); break; case MENUOP_GETOPTIONTEXT: if ((g_MpSetup.options & MPOPTION_TEAMSENABLED) == 0) { return (s32) "\n"; } return (s32) g_MpSetupSaveFile.teamnames[data->list.value]; } return menuhandlerMpTeamsLabel(operation, item, data); } s32 menuhandlerMpTeamSlot(s32 operation, struct menuitem *item, union handlerdata *data) { struct mpchr *mpchr; switch (operation) { case MENUOP_SET: mpchr = func0f18c794(item->param); mpchr->team = data->dropdown.value; break; case MENUOP_GETOPTIONVALUE: mpchr = func0f18c794(item->param); if (!mpchr) { data->dropdown.value = 0xff; } else { data->dropdown.value = mpchr->team; } break; case MENUOP_CHECKDISABLED: mpchr = func0f18c794(item->param); if (!mpchr) { return 1; } return menuhandlerMpTeamsLabel(operation, item, data); } return func0f17dac4(operation, item, data); } char *mpMenuTextSelectTuneOrTunes(struct menuitem *item) { if (mpGetUsingMultipleTunes()) { return langGet(L_MPMENU_069); // "Select Tune" } return langGet(L_MPMENU_068); // "Select Tunes" } struct menuitem g_MpAutoTeamMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_076, 0x00000000, menuhandlerMpTwoTeams }, // "Two Teams" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_077, 0x00000000, menuhandlerMpThreeTeams }, // "Three Teams" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_078, 0x00000000, menuhandlerMpFourTeams }, // "Four Teams" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_079, 0x00000000, menuhandlerMpMaximumTeams }, // "Maximum Teams" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_080, 0x00000000, menuhandlerMpHumansVsSimulants }, // "Humans vs. Simulants" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_MPMENU_081, 0x00000000, menuhandlerMpHumanSimulantPairs }, // "Human-Simulant Pairs" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_082, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpAutoTeamMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_075, // "Auto Team" g_MpAutoTeamMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpTeamsMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 0, 0x00020000, L_MPMENU_071, 0x00000002, menuhandlerMpTeamsEnabled }, // "Teams Enabled" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, PAL ? 0x85 : 0, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_072, 0x00000000, menuhandlerMpTeamsLabel }, // "Teams:" { MENUITEMTYPE_DROPDOWN, 0, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 1, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 2, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 3, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 4, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 5, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 6, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 7, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 8, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 9, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 10, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_DROPDOWN, 11, PAL ? 0x00021000 : 0x00020000, (u32)&mpMenuTextChrNameForTeamSetup, 0x00000000, menuhandlerMpTeamSlot }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_073, 0x00000000, (void *)&g_MpAutoTeamMenuDialog }, // "Auto Team..." { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_074, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpTeamsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_070, // "Team Control" g_MpTeamsMenuItems, NULL, 0x00000010, NULL, }; u32 var80085ce8[] = { L_MISC_166, // "Random" L_MISC_167, // "Select All" L_MISC_168, // "Select None" L_MISC_169, // "Randomize" }; /** * List handler for the select tune dialog. * * If multiple tracks are disabled, the listing contains the track listing plus * one item for Randomize. * * If multiple tracks are disabled, the listing contains the track listing plus * 3 items for Select All, Select None and Randomize. */ s32 mpSelectTuneListHandler(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->list.value = mpGetNumUnlockedTracks(); if (mpGetUsingMultipleTunes()) { data->list.value += 3; } else { data->list.value++; } break; case MENUOP_GETOPTIONTEXT: { s32 numtracks = mpGetNumUnlockedTracks(); if (data->list.value < numtracks) { return (s32) mpGetTrackName(data->list.value); } if (mpGetUsingMultipleTunes()) { return (s32) langGet(var80085ce8[1 + data->list.value - numtracks]); } return (s32) langGet(var80085ce8[data->list.value - numtracks]); } case MENUOP_SET: { s32 numtracks = mpGetNumUnlockedTracks(); if (data->list.value < numtracks) { if (data->list.unk04 == 0) { mpSetTrackSlotEnabled(data->list.value); } g_Vars.modifiedfiles |= MODFILE_MPSETUP; } else if (mpGetUsingMultipleTunes()) { s32 index = data->list.value - numtracks; switch (index) { case 0: mpEnableAllMultiTracks(); g_Vars.modifiedfiles |= MODFILE_MPSETUP; break; case 1: mpDisableAllMultiTracks(); g_Vars.modifiedfiles |= MODFILE_MPSETUP; break; case 2: mpRandomiseMultiTracks(); g_Vars.modifiedfiles |= MODFILE_MPSETUP; break; } } else { mpSetTrackToRandom(); g_Vars.modifiedfiles |= MODFILE_MPSETUP; } } break; case MENUOP_GETOPTIONVALUE: if (mpGetUsingMultipleTunes()) { data->list.value = 0x000fffff; } else { s32 slotnum = mpGetCurrentTrackSlotNum(); if (slotnum < 0) { data->list.value = mpGetNumUnlockedTracks(); } else { data->list.value = slotnum; } } break; case MENUOP_LISTITEMFOCUS: if (data->list.value < mpGetNumUnlockedTracks()) { musicStartMenu2(mpGetTrackMusicNum(data->list.value)); } break; case MENUOP_GETLISTITEMCHECKBOX: { s32 numtracks = mpGetNumUnlockedTracks(); if (mpGetUsingMultipleTunes() && data->list.value < numtracks) { data->list.unk04 = mpIsMultiTrackSlotEnabled(data->list.value); } } break; } return 0; } s32 menudialogMpSelectTune(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { var800840e0 = 80; } if (operation == MENUOP_CLOSE) { var800840e0 = 15; } return false; } char *mpMenuTextCurrentTrack(struct menuitem *item) { s32 slotnum; if (mpGetUsingMultipleTunes()) { return langGet(L_MPMENU_066); // "Multiple Tunes" } slotnum = mpGetCurrentTrackSlotNum(); if (slotnum >= 0) { return mpGetTrackName(slotnum); } return langGet(L_MPMENU_067); // "Random" } s32 menuhandlerMpMultipleTunes(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GET: return mpGetUsingMultipleTunes(); case MENUOP_SET: mpSetUsingMultipleTunes(data->checkbox.value); g_Vars.modifiedfiles |= MODFILE_MPSETUP; } return 0; } GLOBAL_ASM( glabel menuhandler0017e06c /* f17e06c: afa50004 */ sw $a1,0x4($sp) /* f17e070: 24010011 */ addiu $at,$zero,0x11 /* f17e074: 10810006 */ beq $a0,$at,.L0f17e090 /* f17e078: 8cc20000 */ lw $v0,0x0($a2) /* f17e07c: 24010012 */ addiu $at,$zero,0x12 /* f17e080: 1081003f */ beq $a0,$at,.L0f17e180 /* f17e084: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f17e088: 03e00008 */ jr $ra /* f17e08c: 00001025 */ or $v0,$zero,$zero .L0f17e090: /* f17e090: 3c098007 */ lui $t1,%hi(g_MpPlayerNum) /* f17e094: 25291448 */ addiu $t1,$t1,%lo(g_MpPlayerNum) /* f17e098: 8d2e0000 */ lw $t6,0x0($t1) /* f17e09c: 240a0e70 */ addiu $t2,$zero,0xe70 /* f17e0a0: 3c08800a */ lui $t0,%hi(g_Menus) /* f17e0a4: 01ca0019 */ multu $t6,$t2 /* f17e0a8: 2508e000 */ addiu $t0,$t0,%lo(g_Menus) /* f17e0ac: 3c07800b */ lui $a3,%hi(g_MpSetup+0x28) /* f17e0b0: 24e7cbb0 */ addiu $a3,$a3,%lo(g_MpSetup+0x28) /* f17e0b4: 240b000a */ addiu $t3,$zero,0xa /* f17e0b8: 00001825 */ or $v1,$zero,$zero /* f17e0bc: 00007812 */ mflo $t7 /* f17e0c0: 010fc021 */ addu $t8,$t0,$t7 /* f17e0c4: 8f040e1c */ lw $a0,0xe1c($t8) /* f17e0c8: 0004c880 */ sll $t9,$a0,0x2 /* f17e0cc: 0324c823 */ subu $t9,$t9,$a0 /* f17e0d0: 0019c880 */ sll $t9,$t9,0x2 /* f17e0d4: 00f96821 */ addu $t5,$a3,$t9 /* f17e0d8: 91ae0000 */ lbu $t6,0x0($t5) /* f17e0dc: 00047880 */ sll $t7,$a0,0x2 /* f17e0e0: 01e47823 */ subu $t7,$t7,$a0 /* f17e0e4: 116e001c */ beq $t3,$t6,.L0f17e158 /* f17e0e8: 000f7880 */ sll $t7,$t7,0x2 /* f17e0ec: 00ef2821 */ addu $a1,$a3,$t7 /* f17e0f0: 90b80000 */ lbu $t8,0x0($a1) /* f17e0f4: 00403021 */ addu $a2,$v0,$zero /* f17e0f8: 240c000b */ addiu $t4,$zero,0xb /* f17e0fc: 53000017 */ beqzl $t8,.L0f17e15c /* f17e100: 2861000b */ slti $at,$v1,0xb /* f17e104: 90a40000 */ lbu $a0,0x0($a1) /* f17e108: a0c40000 */ sb $a0,0x0($a2) .L0f17e10c: /* f17e10c: 8d2d0000 */ lw $t5,0x0($t1) /* f17e110: 24630001 */ addiu $v1,$v1,0x1 /* f17e114: 24c60001 */ addiu $a2,$a2,0x1 /* f17e118: 01aa0019 */ multu $t5,$t2 /* f17e11c: 00007012 */ mflo $t6 /* f17e120: 010e7821 */ addu $t7,$t0,$t6 /* f17e124: 8df80e1c */ lw $t8,0xe1c($t7) /* f17e128: 0018c880 */ sll $t9,$t8,0x2 /* f17e12c: 0338c823 */ subu $t9,$t9,$t8 /* f17e130: 0019c880 */ sll $t9,$t9,0x2 /* f17e134: 00f96821 */ addu $t5,$a3,$t9 /* f17e138: 01a37021 */ addu $t6,$t5,$v1 /* f17e13c: 91c40000 */ lbu $a0,0x0($t6) /* f17e140: 51640006 */ beql $t3,$a0,.L0f17e15c /* f17e144: 2861000b */ slti $at,$v1,0xb /* f17e148: 50800004 */ beqzl $a0,.L0f17e15c /* f17e14c: 2861000b */ slti $at,$v1,0xb /* f17e150: 546cffee */ bnel $v1,$t4,.L0f17e10c /* f17e154: a0c40000 */ sb $a0,0x0($a2) .L0f17e158: /* f17e158: 2861000b */ slti $at,$v1,0xb .L0f17e15c: /* f17e15c: 10200048 */ beqz $at,.L0f17e280 /* f17e160: 00433021 */ addu $a2,$v0,$v1 .L0f17e164: /* f17e164: 24630001 */ addiu $v1,$v1,0x1 /* f17e168: 2861000b */ slti $at,$v1,0xb /* f17e16c: a0c00000 */ sb $zero,0x0($a2) /* f17e170: 1420fffc */ bnez $at,.L0f17e164 /* f17e174: 24c60001 */ addiu $a2,$a2,0x1 /* f17e178: 03e00008 */ jr $ra /* f17e17c: 00001025 */ or $v0,$zero,$zero .L0f17e180: /* f17e180: 904f0000 */ lbu $t7,0x0($v0) /* f17e184: 00001825 */ or $v1,$zero,$zero /* f17e188: 3c188007 */ lui $t8,%hi(g_MpPlayerNum) /* f17e18c: 11e0001d */ beqz $t7,.L0f17e204 /* f17e190: 25291448 */ addiu $t1,$t1,%lo(g_MpPlayerNum) /* f17e194: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8) /* f17e198: 3c0d800a */ lui $t5,%hi(g_Menus+0xe1c) /* f17e19c: 00403021 */ addu $a2,$v0,$zero /* f17e1a0: 0018c8c0 */ sll $t9,$t8,0x3 /* f17e1a4: 0338c823 */ subu $t9,$t9,$t8 /* f17e1a8: 0019c880 */ sll $t9,$t9,0x2 /* f17e1ac: 0338c821 */ addu $t9,$t9,$t8 /* f17e1b0: 0019c8c0 */ sll $t9,$t9,0x3 /* f17e1b4: 0338c823 */ subu $t9,$t9,$t8 /* f17e1b8: 0019c900 */ sll $t9,$t9,0x4 /* f17e1bc: 01b96821 */ addu $t5,$t5,$t9 /* f17e1c0: 8dadee1c */ lw $t5,%lo(g_Menus+0xe1c)($t5) /* f17e1c4: 3c18800b */ lui $t8,%hi(g_MpSetup+0x28) /* f17e1c8: 2718cbb0 */ addiu $t8,$t8,%lo(g_MpSetup+0x28) /* f17e1cc: 000d7080 */ sll $t6,$t5,0x2 /* f17e1d0: 01cd7023 */ subu $t6,$t6,$t5 /* f17e1d4: 000e7080 */ sll $t6,$t6,0x2 /* f17e1d8: 01d82021 */ addu $a0,$t6,$t8 /* f17e1dc: 90450000 */ lbu $a1,0x0($v0) /* f17e1e0: 24630001 */ addiu $v1,$v1,0x1 .L0f17e1e4: /* f17e1e4: 2861000b */ slti $at,$v1,0xb /* f17e1e8: a0850000 */ sb $a1,0x0($a0) /* f17e1ec: 24840001 */ addiu $a0,$a0,0x1 /* f17e1f0: 10200004 */ beqz $at,.L0f17e204 /* f17e1f4: 24c60001 */ addiu $a2,$a2,0x1 /* f17e1f8: 90c50000 */ lbu $a1,0x0($a2) /* f17e1fc: 54a0fff9 */ bnezl $a1,.L0f17e1e4 /* f17e200: 24630001 */ addiu $v1,$v1,0x1 .L0f17e204: /* f17e204: 8d390000 */ lw $t9,0x0($t1) /* f17e208: 240a0e70 */ addiu $t2,$zero,0xe70 /* f17e20c: 3c08800a */ lui $t0,%hi(g_Menus) /* f17e210: 032a0019 */ multu $t9,$t2 /* f17e214: 2508e000 */ addiu $t0,$t0,%lo(g_Menus) /* f17e218: 3c07800b */ lui $a3,%hi(g_MpSetup+0x28) /* f17e21c: 24e7cbb0 */ addiu $a3,$a3,%lo(g_MpSetup+0x28) /* f17e220: 3c02800a */ lui $v0,%hi(g_Vars) /* f17e224: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) /* f17e228: 00006812 */ mflo $t5 /* f17e22c: 010d7021 */ addu $t6,$t0,$t5 /* f17e230: 8dcf0e1c */ lw $t7,0xe1c($t6) /* f17e234: 240d000a */ addiu $t5,$zero,0xa /* f17e238: 000fc080 */ sll $t8,$t7,0x2 /* f17e23c: 030fc023 */ subu $t8,$t8,$t7 /* f17e240: 0018c080 */ sll $t8,$t8,0x2 /* f17e244: 00f8c821 */ addu $t9,$a3,$t8 /* f17e248: 03232021 */ addu $a0,$t9,$v1 /* f17e24c: 24630001 */ addiu $v1,$v1,0x1 /* f17e250: 2861000b */ slti $at,$v1,0xb /* f17e254: a08d0000 */ sb $t5,0x0($a0) /* f17e258: 10200006 */ beqz $at,.L0f17e274 /* f17e25c: 24840001 */ addiu $a0,$a0,0x1 .L0f17e260: /* f17e260: 24630001 */ addiu $v1,$v1,0x1 /* f17e264: 2861000b */ slti $at,$v1,0xb /* f17e268: a0800000 */ sb $zero,0x0($a0) /* f17e26c: 1420fffc */ bnez $at,.L0f17e260 /* f17e270: 24840001 */ addiu $a0,$a0,0x1 .L0f17e274: /* f17e274: 8c4e0458 */ lw $t6,0x458($v0) /* f17e278: 35cf0002 */ ori $t7,$t6,0x2 /* f17e27c: ac4f0458 */ sw $t7,0x458($v0) .L0f17e280: /* f17e280: 03e00008 */ jr $ra /* f17e284: 00001025 */ or $v0,$zero,$zero ); /** * item->param2 is a text ID for that team's colour. The text IDs for team * colours are consecutive, so the index of the team is determined by * subtracting the first team's colour text ID. */ char *mpMenuTextTeamName(struct menuitem *item) { s32 index = item->param2; index -= L_OPTIONS_008; return g_MpSetupSaveFile.teamnames[index]; } s32 menuhandlerMpTeamNameSlot(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { g_Menus[g_MpPlayerNum].data.mpsetup.slotindex = item->param2 - 0x5608; menuPushDialog(&g_MpChangeTeamNameMenuDialog); } return 0; } char *func0f17e318(struct menudialog *dialog) { sprintf(g_StringPointer, langGet(L_MPMENU_056), mpGetChallengeNameBySlot(g_Menus[g_MpPlayerNum].data.mpsetup.slotindex)); return g_StringPointer; } /** * An "Accept" item somewhere. Probably accepting a challenge. */ s32 menuhandler0017e38c(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { #if VERSION >= VERSION_NTSC_1_0 mpClearCurrentChallenge(); #endif menuPopDialog(); mpSetCurrentChallenge(g_Menus[g_MpPlayerNum].data.mpsetup.slotindex); } return 0; } s32 menudialog0017e3fc(s32 operation, struct menudialog *dialog, union handlerdata *data) { switch (operation) { case MENUOP_OPEN: g_Menus[g_MpPlayerNum].unk850 = 0; g_Menus[g_MpPlayerNum].data.train.mpconfig = mpGetNthAvailableChallengeSomething( g_Menus[g_MpPlayerNum].data.train.unke1c, g_Menus[g_MpPlayerNum].mpconfigbuffer, g_Menus[g_MpPlayerNum].mpconfigbufferlen); break; case MENUOP_CLOSE: break; case MENUOP_TICK: if (g_MpSetupSaveFile.locktype == MPLOCKTYPE_CHALLENGE) { menuPopDialog(); } break; } return 0; } #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel menuhandler0017e4d4 .late_rodata glabel var7f1b822c .word menuhandler0017e4d4+0x6c # f17e540 glabel var7f1b8230 .word menuhandler0017e4d4+0x12c # f17e600 glabel var7f1b8234 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8238 .word menuhandler0017e4d4+0x134 # f17e608 glabel var7f1b823c .word menuhandler0017e4d4+0x13c # f17e610 glabel var7f1b8240 .word menuhandler0017e4d4+0x7c # f17e550 glabel var7f1b8244 .word menuhandler0017e4d4+0x11c # f17e5f0 glabel var7f1b8248 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b824c .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8250 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8254 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8258 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b825c .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8260 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8264 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8268 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b826c .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8270 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8274 .word menuhandler0017e4d4+0x144 # f17e618 glabel var7f1b8278 .word menuhandler0017e4d4+0x4cc # f17e9a0 glabel var7f1b827c .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8280 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8284 .word menuhandler0017e4d4+0x4d4 # f17e9a8 glabel var7f1b8288 .word menuhandler0017e4d4+0x50 # f17e524 .text /* f17e4d4: 27bdff48 */ addiu $sp,$sp,-184 /* f17e4d8: 248effff */ addiu $t6,$a0,-1 /* f17e4dc: afb6004c */ sw $s6,0x4c($sp) /* f17e4e0: 2dc10018 */ sltiu $at,$t6,0x18 /* f17e4e4: 00c0b025 */ or $s6,$a2,$zero /* f17e4e8: afbf0054 */ sw $ra,0x54($sp) /* f17e4ec: afb70050 */ sw $s7,0x50($sp) /* f17e4f0: afb50048 */ sw $s5,0x48($sp) /* f17e4f4: afb40044 */ sw $s4,0x44($sp) /* f17e4f8: afb30040 */ sw $s3,0x40($sp) /* f17e4fc: afb2003c */ sw $s2,0x3c($sp) /* f17e500: afb10038 */ sw $s1,0x38($sp) /* f17e504: 10200128 */ beqz $at,.L0f17e9a8 /* f17e508: afb00034 */ sw $s0,0x34($sp) /* f17e50c: 000e7080 */ sll $t6,$t6,0x2 /* f17e510: 3c017f1c */ lui $at,%hi(var7f1b822c) /* f17e514: 002e0821 */ addu $at,$at,$t6 /* f17e518: 8c2e822c */ lw $t6,%lo(var7f1b822c)($at) /* f17e51c: 01c00008 */ jr $t6 /* f17e520: 00000000 */ nop /* f17e524: 3c0f800b */ lui $t7,%hi(g_MpSetup+0x88) /* f17e528: 91efcc10 */ lbu $t7,%lo(g_MpSetup+0x88)($t7) /* f17e52c: 24010005 */ addiu $at,$zero,0x5 /* f17e530: 55e1011e */ bnel $t7,$at,.L0f17e9ac /* f17e534: 00001025 */ or $v0,$zero,$zero /* f17e538: 1000011c */ b .L0f17e9ac /* f17e53c: 24020001 */ addiu $v0,$zero,0x1 /* f17e540: 0fc66d99 */ jal mpGetNumAvailableChallenges /* f17e544: 00000000 */ nop /* f17e548: 10000117 */ b .L0f17e9a8 /* f17e54c: aec20000 */ sw $v0,0x0($s6) /* f17e550: 8ed80004 */ lw $t8,0x4($s6) /* f17e554: 24190002 */ addiu $t9,$zero,0x2 /* f17e558: 3c0c8007 */ lui $t4,%hi(g_MpPlayerNum) /* f17e55c: 13000002 */ beqz $t8,.L0f17e568 /* f17e560: 3c0f8009 */ lui $t7,%hi(g_Is4Mb) /* f17e564: aed90004 */ sw $t9,0x4($s6) .L0f17e568: /* f17e568: 8d8c1448 */ lw $t4,%lo(g_MpPlayerNum)($t4) /* f17e56c: 8ecb0000 */ lw $t3,0x0($s6) /* f17e570: 3c01800a */ lui $at,%hi(g_Menus+0xe1c) /* f17e574: 000c68c0 */ sll $t5,$t4,0x3 /* f17e578: 01ac6823 */ subu $t5,$t5,$t4 /* f17e57c: 000d6880 */ sll $t5,$t5,0x2 /* f17e580: 01ac6821 */ addu $t5,$t5,$t4 /* f17e584: 000d68c0 */ sll $t5,$t5,0x3 /* f17e588: 01ac6823 */ subu $t5,$t5,$t4 /* f17e58c: 000d6900 */ sll $t5,$t5,0x4 /* f17e590: 002d0821 */ addu $at,$at,$t5 /* f17e594: ac2bee1c */ sw $t3,%lo(g_Menus+0xe1c)($at) /* f17e598: 90ae0001 */ lbu $t6,0x1($a1) /* f17e59c: 3c048008 */ lui $a0,%hi(g_MpConfirmChallengeViaListOrDetailsMenuDialog) /* f17e5a0: 15c00005 */ bnez $t6,.L0f17e5b8 /* f17e5a4: 00000000 */ nop /* f17e5a8: 0fc3cbd3 */ jal menuPushDialog /* f17e5ac: 24845f88 */ addiu $a0,$a0,%lo(g_MpConfirmChallengeViaListOrDetailsMenuDialog) /* f17e5b0: 100000fe */ b .L0f17e9ac /* f17e5b4: 00001025 */ or $v0,$zero,$zero .L0f17e5b8: /* f17e5b8: 91ef0af0 */ lbu $t7,%lo(g_Is4Mb)($t7) /* f17e5bc: 24010001 */ addiu $at,$zero,0x1 /* f17e5c0: 3c048008 */ lui $a0,%hi(g_MpConfirmChallengeMenuDialog) /* f17e5c4: 15e10006 */ bne $t7,$at,.L0f17e5e0 /* f17e5c8: 00000000 */ nop /* f17e5cc: 3c048007 */ lui $a0,%hi(g_MpConfirmChallenge4MbMenuDialog) /* f17e5d0: 0fc3cbd3 */ jal menuPushDialog /* f17e5d4: 2484519c */ addiu $a0,$a0,%lo(g_MpConfirmChallenge4MbMenuDialog) /* f17e5d8: 100000f4 */ b .L0f17e9ac /* f17e5dc: 00001025 */ or $v0,$zero,$zero .L0f17e5e0: /* f17e5e0: 0fc3cbd3 */ jal menuPushDialog /* f17e5e4: 248460ac */ addiu $a0,$a0,%lo(g_MpConfirmChallengeMenuDialog) /* f17e5e8: 100000f0 */ b .L0f17e9ac /* f17e5ec: 00001025 */ or $v0,$zero,$zero /* f17e5f0: 3c18000f */ lui $t8,0xf /* f17e5f4: 3718ffff */ ori $t8,$t8,0xffff /* f17e5f8: 100000eb */ b .L0f17e9a8 /* f17e5fc: aed80000 */ sw $t8,0x0($s6) /* f17e600: 100000e9 */ b .L0f17e9a8 /* f17e604: aec00000 */ sw $zero,0x0($s6) /* f17e608: 100000e8 */ b .L0f17e9ac /* f17e60c: 00001025 */ or $v0,$zero,$zero /* f17e610: 100000e5 */ b .L0f17e9a8 /* f17e614: aec00008 */ sw $zero,0x8($s6) /* f17e618: 8ed90000 */ lw $t9,0x0($s6) /* f17e61c: 3c0c8009 */ lui $t4,%hi(g_Is4Mb) /* f17e620: 918c0af0 */ lbu $t4,%lo(g_Is4Mb)($t4) /* f17e624: 24010001 */ addiu $at,$zero,0x1 /* f17e628: afb900b4 */ sw $t9,0xb4($sp) /* f17e62c: 8ed00008 */ lw $s0,0x8($s6) /* f17e630: 2413000a */ addiu $s3,$zero,0xa /* f17e634: 15810002 */ bne $t4,$at,.L0f17e640 /* f17e638: 24170004 */ addiu $s7,$zero,0x4 /* f17e63c: 24170002 */ addiu $s7,$zero,0x2 .L0f17e640: /* f17e640: 8e0b0000 */ lw $t3,0x0($s0) /* f17e644: 8fa400b4 */ lw $a0,0xb4($sp) /* f17e648: 256d000a */ addiu $t5,$t3,0xa /* f17e64c: afad00ac */ sw $t5,0xac($sp) /* f17e650: 8e0e0004 */ lw $t6,0x4($s0) /* f17e654: 25cf0001 */ addiu $t7,$t6,0x1 /* f17e658: 0fc54d8a */ jal func0f153628 /* f17e65c: afaf00a8 */ sw $t7,0xa8($sp) /* f17e660: afa200b4 */ sw $v0,0xb4($sp) /* f17e664: 0fc66dbe */ jal mpGetChallengeNameBySlot /* f17e668: 8ec40004 */ lw $a0,0x4($s6) /* f17e66c: 0c002f02 */ jal viGetWidth /* f17e670: 00408825 */ or $s1,$v0,$zero /* f17e674: 00029400 */ sll $s2,$v0,0x10 /* f17e678: 0012c403 */ sra $t8,$s2,0x10 /* f17e67c: 0c002f06 */ jal viGetHeight /* f17e680: 03009025 */ or $s2,$t8,$zero /* f17e684: 3c198008 */ lui $t9,%hi(g_FontHandelGothicSm1) /* f17e688: 3c0c8008 */ lui $t4,%hi(g_FontHandelGothicSm2) /* f17e68c: 8d8cfb0c */ lw $t4,%lo(g_FontHandelGothicSm2)($t4) /* f17e690: 8f39fb10 */ lw $t9,%lo(g_FontHandelGothicSm1)($t9) /* f17e694: 8fa400b4 */ lw $a0,0xb4($sp) /* f17e698: afac0014 */ sw $t4,0x14($sp) /* f17e69c: afb90010 */ sw $t9,0x10($sp) /* f17e6a0: 8e0b000c */ lw $t3,0xc($s0) /* f17e6a4: afa00028 */ sw $zero,0x28($sp) /* f17e6a8: afa00024 */ sw $zero,0x24($sp) /* f17e6ac: afa20020 */ sw $v0,0x20($sp) /* f17e6b0: afb2001c */ sw $s2,0x1c($sp) /* f17e6b4: 27a500ac */ addiu $a1,$sp,0xac /* f17e6b8: 27a600a8 */ addiu $a2,$sp,0xa8 /* f17e6bc: 02203825 */ or $a3,$s1,$zero /* f17e6c0: 0fc5580f */ jal textRenderProjected /* f17e6c4: afab0018 */ sw $t3,0x18($sp) /* f17e6c8: afa200b4 */ sw $v0,0xb4($sp) /* f17e6cc: 0fc54de0 */ jal func0f153780 /* f17e6d0: 00402025 */ or $a0,$v0,$zero /* f17e6d4: 244d0008 */ addiu $t5,$v0,0x8 /* f17e6d8: afad00b4 */ sw $t5,0xb4($sp) /* f17e6dc: 3c0ee700 */ lui $t6,0xe700 /* f17e6e0: ac4e0000 */ sw $t6,0x0($v0) /* f17e6e4: ac400004 */ sw $zero,0x4($v0) /* f17e6e8: 8faf00b4 */ lw $t7,0xb4($sp) /* f17e6ec: 3c19ba00 */ lui $t9,0xba00 /* f17e6f0: 37391301 */ ori $t9,$t9,0x1301 /* f17e6f4: 25f80008 */ addiu $t8,$t7,0x8 /* f17e6f8: afb800b4 */ sw $t8,0xb4($sp) /* f17e6fc: ade00004 */ sw $zero,0x4($t7) /* f17e700: adf90000 */ sw $t9,0x0($t7) /* f17e704: 8fac00b4 */ lw $t4,0xb4($sp) /* f17e708: 3c0db900 */ lui $t5,0xb900 /* f17e70c: 35ad0002 */ ori $t5,$t5,0x2 /* f17e710: 258b0008 */ addiu $t3,$t4,0x8 /* f17e714: afab00b4 */ sw $t3,0xb4($sp) /* f17e718: ad800004 */ sw $zero,0x4($t4) /* f17e71c: ad8d0000 */ sw $t5,0x0($t4) /* f17e720: 8fae00b4 */ lw $t6,0xb4($sp) /* f17e724: 3c18ba00 */ lui $t8,0xba00 /* f17e728: 37181001 */ ori $t8,$t8,0x1001 /* f17e72c: 25cf0008 */ addiu $t7,$t6,0x8 /* f17e730: afaf00b4 */ sw $t7,0xb4($sp) /* f17e734: adc00004 */ sw $zero,0x4($t6) /* f17e738: add80000 */ sw $t8,0x0($t6) /* f17e73c: 8fb900b4 */ lw $t9,0xb4($sp) /* f17e740: 3c0bba00 */ lui $t3,0xba00 /* f17e744: 356b0903 */ ori $t3,$t3,0x903 /* f17e748: 272c0008 */ addiu $t4,$t9,0x8 /* f17e74c: afac00b4 */ sw $t4,0xb4($sp) /* f17e750: 240d0c00 */ addiu $t5,$zero,0xc00 /* f17e754: 3c05800b */ lui $a1,%hi(var800ab5a8) /* f17e758: af2d0004 */ sw $t5,0x4($t9) /* f17e75c: af2b0000 */ sw $t3,0x0($t9) /* f17e760: 8ca5b5a8 */ lw $a1,%lo(var800ab5a8)($a1) /* f17e764: 240e0002 */ addiu $t6,$zero,0x2 /* f17e768: 240f0001 */ addiu $t7,$zero,0x1 /* f17e76c: afaf0014 */ sw $t7,0x14($sp) /* f17e770: afae0010 */ sw $t6,0x10($sp) /* f17e774: afa00018 */ sw $zero,0x18($sp) /* f17e778: 27a400b4 */ addiu $a0,$sp,0xb4 /* f17e77c: 24060002 */ addiu $a2,$zero,0x2 /* f17e780: 00003825 */ or $a3,$zero,$zero /* f17e784: 0fc2ce70 */ jal func0f0b39c0 /* f17e788: 24a501a4 */ addiu $a1,$a1,0x01a4 /* f17e78c: 8fb800b4 */ lw $t8,0xb4($sp) /* f17e790: 3c0cba00 */ lui $t4,0xba00 /* f17e794: 358c1402 */ ori $t4,$t4,0x1402 /* f17e798: 27190008 */ addiu $t9,$t8,0x8 /* f17e79c: afb900b4 */ sw $t9,0xb4($sp) /* f17e7a0: af000004 */ sw $zero,0x4($t8) /* f17e7a4: af0c0000 */ sw $t4,0x0($t8) /* f17e7a8: 8fab00b4 */ lw $t3,0xb4($sp) /* f17e7ac: 3c0eba00 */ lui $t6,0xba00 /* f17e7b0: 35ce0c02 */ ori $t6,$t6,0xc02 /* f17e7b4: 256d0008 */ addiu $t5,$t3,0x8 /* f17e7b8: afad00b4 */ sw $t5,0xb4($sp) /* f17e7bc: 00001025 */ or $v0,$zero,$zero /* f17e7c0: ad600004 */ sw $zero,0x4($t3) /* f17e7c4: 1ae00074 */ blez $s7,.L0f17e998 /* f17e7c8: ad6e0000 */ sw $t6,0x0($t3) /* f17e7cc: 3c128008 */ lui $s2,%hi(g_ScaleX) /* f17e7d0: 2652fac0 */ addiu $s2,$s2,%lo(g_ScaleX) /* f17e7d4: 241500ff */ addiu $s5,$zero,0xff /* f17e7d8: 3c14fb00 */ lui $s4,0xfb00 /* f17e7dc: 24510001 */ addiu $s1,$v0,0x1 .L0f17e7e0: /* f17e7e0: 02202825 */ or $a1,$s1,$zero /* f17e7e4: 0fc66e00 */ jal mpIsChallengeCompletedByAnyChrWithNumPlayersBySlot /* f17e7e8: 8ec40004 */ lw $a0,0x4($s6) /* f17e7ec: 1040000f */ beqz $v0,.L0f17e82c /* f17e7f0: 8faf00b4 */ lw $t7,0xb4($sp) /* f17e7f4: 8faf00b4 */ lw $t7,0xb4($sp) /* f17e7f8: 3c01ffe5 */ lui $at,0xffe5 /* f17e7fc: 34216500 */ ori $at,$at,0x6500 /* f17e800: 25f80008 */ addiu $t8,$t7,0x8 /* f17e804: afb800b4 */ sw $t8,0xb4($sp) /* f17e808: adf40000 */ sw $s4,0x0($t7) /* f17e80c: 8e19000c */ lw $t9,0xc($s0) /* f17e810: 332c00ff */ andi $t4,$t9,0xff /* f17e814: 01950019 */ multu $t4,$s5 /* f17e818: 00005812 */ mflo $t3 /* f17e81c: 000b6a02 */ srl $t5,$t3,0x8 /* f17e820: 01a17025 */ or $t6,$t5,$at /* f17e824: 1000000c */ b .L0f17e858 /* f17e828: adee0004 */ sw $t6,0x4($t7) .L0f17e82c: /* f17e82c: 25f80008 */ addiu $t8,$t7,0x8 /* f17e830: afb800b4 */ sw $t8,0xb4($sp) /* f17e834: adf40000 */ sw $s4,0x0($t7) /* f17e838: 8e19000c */ lw $t9,0xc($s0) /* f17e83c: 3c014343 */ lui $at,0x4343 /* f17e840: 332c00ff */ andi $t4,$t9,0xff /* f17e844: 01950019 */ multu $t4,$s5 /* f17e848: 00005812 */ mflo $t3 /* f17e84c: 000b6a02 */ srl $t5,$t3,0x8 /* f17e850: 01a17025 */ or $t6,$t5,$at /* f17e854: adee0004 */ sw $t6,0x4($t7) .L0f17e858: /* f17e858: 8faf00b4 */ lw $t7,0xb4($sp) /* f17e85c: 3c19fc12 */ lui $t9,0xfc12 /* f17e860: 3c0cff37 */ lui $t4,0xff37 /* f17e864: 25f80008 */ addiu $t8,$t7,0x8 /* f17e868: afb800b4 */ sw $t8,0xb4($sp) /* f17e86c: 358cffff */ ori $t4,$t4,0xffff /* f17e870: 37399a25 */ ori $t9,$t9,0x9a25 /* f17e874: adf90000 */ sw $t9,0x0($t7) /* f17e878: adec0004 */ sw $t4,0x4($t7) /* f17e87c: 8fab00b4 */ lw $t3,0xb4($sp) /* f17e880: 01e01025 */ or $v0,$t7,$zero /* f17e884: 8e4c0000 */ lw $t4,0x0($s2) /* f17e888: 256d0008 */ addiu $t5,$t3,0x8 /* f17e88c: afad00b4 */ sw $t5,0xb4($sp) /* f17e890: 8e0e0000 */ lw $t6,0x0($s0) /* f17e894: 01601825 */ or $v1,$t3,$zero /* f17e898: 3c01e400 */ lui $at,0xe400 /* f17e89c: 01d37821 */ addu $t7,$t6,$s3 /* f17e8a0: 25f8000b */ addiu $t8,$t7,0xb /* f17e8a4: 0018c880 */ sll $t9,$t8,0x2 /* f17e8a8: 032c0019 */ multu $t9,$t4 /* f17e8ac: 8e180004 */ lw $t8,0x4($s0) /* f17e8b0: 02201025 */ or $v0,$s1,$zero /* f17e8b4: 27190016 */ addiu $t9,$t8,0x16 /* f17e8b8: 00196080 */ sll $t4,$t9,0x2 /* f17e8bc: 00005812 */ mflo $t3 /* f17e8c0: 316d0fff */ andi $t5,$t3,0xfff /* f17e8c4: 000d7300 */ sll $t6,$t5,0xc /* f17e8c8: 01c17825 */ or $t7,$t6,$at /* f17e8cc: 318b0fff */ andi $t3,$t4,0xfff /* f17e8d0: 01eb6825 */ or $t5,$t7,$t3 /* f17e8d4: ac6d0000 */ sw $t5,0x0($v1) /* f17e8d8: 8e0e0000 */ lw $t6,0x0($s0) /* f17e8dc: 8e4c0000 */ lw $t4,0x0($s2) /* f17e8e0: 01d3c021 */ addu $t8,$t6,$s3 /* f17e8e4: 0018c880 */ sll $t9,$t8,0x2 /* f17e8e8: 032c0019 */ multu $t9,$t4 /* f17e8ec: 8e0e0004 */ lw $t6,0x4($s0) /* f17e8f0: 2673000d */ addiu $s3,$s3,0xd /* f17e8f4: 25d8000b */ addiu $t8,$t6,0xb /* f17e8f8: 0018c880 */ sll $t9,$t8,0x2 /* f17e8fc: 332c0fff */ andi $t4,$t9,0xfff /* f17e900: 24190160 */ addiu $t9,$zero,0x160 /* f17e904: 3c18b400 */ lui $t8,0xb400 /* f17e908: 00007812 */ mflo $t7 /* f17e90c: 31eb0fff */ andi $t3,$t7,0xfff /* f17e910: 000b6b00 */ sll $t5,$t3,0xc /* f17e914: 01ac7825 */ or $t7,$t5,$t4 /* f17e918: ac6f0004 */ sw $t7,0x4($v1) /* f17e91c: 8fab00b4 */ lw $t3,0xb4($sp) /* f17e920: 3c0fb300 */ lui $t7,0xb300 /* f17e924: 256e0008 */ addiu $t6,$t3,0x8 /* f17e928: afae00b4 */ sw $t6,0xb4($sp) /* f17e92c: ad790004 */ sw $t9,0x4($t3) /* f17e930: ad780000 */ sw $t8,0x0($t3) /* f17e934: 8fad00b4 */ lw $t5,0xb4($sp) /* f17e938: 01602025 */ or $a0,$t3,$zero /* f17e93c: 240e0400 */ addiu $t6,$zero,0x400 /* f17e940: 25ac0008 */ addiu $t4,$t5,0x8 /* f17e944: afac00b4 */ sw $t4,0xb4($sp) /* f17e948: adaf0000 */ sw $t7,0x0($t5) /* f17e94c: 8e4b0000 */ lw $t3,0x0($s2) /* f17e950: 01a02825 */ or $a1,$t5,$zero /* f17e954: 01cb001a */ div $zero,$t6,$t3 /* f17e958: 0000c012 */ mflo $t8 /* f17e95c: 3319ffff */ andi $t9,$t8,0xffff /* f17e960: 00196c00 */ sll $t5,$t9,0x10 /* f17e964: 35acfc00 */ ori $t4,$t5,0xfc00 /* f17e968: 15600002 */ bnez $t3,.L0f17e974 /* f17e96c: 00000000 */ nop /* f17e970: 0007000d */ break 0x7 .L0f17e974: /* f17e974: 2401ffff */ addiu $at,$zero,-1 /* f17e978: 15610004 */ bne $t3,$at,.L0f17e98c /* f17e97c: 3c018000 */ lui $at,0x8000 /* f17e980: 15c10002 */ bne $t6,$at,.L0f17e98c /* f17e984: 00000000 */ nop /* f17e988: 0006000d */ break 0x6 .L0f17e98c: /* f17e98c: acac0004 */ sw $t4,0x4($a1) /* f17e990: 5637ff93 */ bnel $s1,$s7,.L0f17e7e0 /* f17e994: 24510001 */ addiu $s1,$v0,0x1 .L0f17e998: /* f17e998: 10000004 */ b .L0f17e9ac /* f17e99c: 8fa200b4 */ lw $v0,0xb4($sp) /* f17e9a0: 240f001a */ addiu $t7,$zero,0x1a /* f17e9a4: aecf0000 */ sw $t7,0x0($s6) .L0f17e9a8: /* f17e9a8: 00001025 */ or $v0,$zero,$zero .L0f17e9ac: /* f17e9ac: 8fbf0054 */ lw $ra,0x54($sp) /* f17e9b0: 8fb00034 */ lw $s0,0x34($sp) /* f17e9b4: 8fb10038 */ lw $s1,0x38($sp) /* f17e9b8: 8fb2003c */ lw $s2,0x3c($sp) /* f17e9bc: 8fb30040 */ lw $s3,0x40($sp) /* f17e9c0: 8fb40044 */ lw $s4,0x44($sp) /* f17e9c4: 8fb50048 */ lw $s5,0x48($sp) /* f17e9c8: 8fb6004c */ lw $s6,0x4c($sp) /* f17e9cc: 8fb70050 */ lw $s7,0x50($sp) /* f17e9d0: 03e00008 */ jr $ra /* f17e9d4: 27bd00b8 */ addiu $sp,$sp,0xb8 ); #else GLOBAL_ASM( glabel menuhandler0017e4d4 .late_rodata glabel var7f1b2b20nb .word menuhandler0017e4d4+0x068 glabel var7f1b2b24nb .word menuhandler0017e4d4+0x128 glabel var7f1b2b28nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b2cnb .word menuhandler0017e4d4+0x130 glabel var7f1b2b30nb .word menuhandler0017e4d4+0x138 glabel var7f1b2b34nb .word menuhandler0017e4d4+0x078 glabel var7f1b2b38nb .word menuhandler0017e4d4+0x118 glabel var7f1b2b3cnb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b40nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b44nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b48nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b4cnb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b50nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b54nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b58nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b5cnb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b60nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b64nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b68nb .word menuhandler0017e4d4+0x140 glabel var7f1b2b6cnb .word menuhandler0017e4d4+0x498 glabel var7f1b2b70nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b74nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b78nb .word menuhandler0017e4d4+0x4a0 glabel var7f1b2b7cnb .word menuhandler0017e4d4+0x04c .text /* f178bdc: 27bdff48 */ addiu $sp,$sp,-184 /* f178be0: 248effff */ addiu $t6,$a0,-1 /* f178be4: afb5004c */ sw $s5,0x4c($sp) /* f178be8: 2dc10018 */ sltiu $at,$t6,0x18 /* f178bec: 00c0a825 */ or $s5,$a2,$zero /* f178bf0: afbf0054 */ sw $ra,0x54($sp) /* f178bf4: afb60050 */ sw $s6,0x50($sp) /* f178bf8: afb40048 */ sw $s4,0x48($sp) /* f178bfc: afb30044 */ sw $s3,0x44($sp) /* f178c00: afb20040 */ sw $s2,0x40($sp) /* f178c04: afb1003c */ sw $s1,0x3c($sp) /* f178c08: 1020011c */ beqz $at,.NB0f17907c /* f178c0c: afb00038 */ sw $s0,0x38($sp) /* f178c10: 000e7080 */ sll $t6,$t6,0x2 /* f178c14: 3c017f1b */ lui $at,0x7f1b /* f178c18: 002e0821 */ addu $at,$at,$t6 /* f178c1c: 8c2e2b20 */ lw $t6,0x2b20($at) /* f178c20: 01c00008 */ jr $t6 /* f178c24: 00000000 */ sll $zero,$zero,0x0 /* f178c28: 3c0f800b */ lui $t7,0x800b /* f178c2c: 91ef14c0 */ lbu $t7,0x14c0($t7) /* f178c30: 24010005 */ addiu $at,$zero,0x5 /* f178c34: 55e10112 */ bnel $t7,$at,.NB0f179080 /* f178c38: 00001025 */ or $v0,$zero,$zero /* f178c3c: 10000110 */ beqz $zero,.NB0f179080 /* f178c40: 24020001 */ addiu $v0,$zero,0x1 /* f178c44: 0fc655bf */ jal mpGetNumAvailableChallenges /* f178c48: 00000000 */ sll $zero,$zero,0x0 /* f178c4c: 1000010b */ beqz $zero,.NB0f17907c /* f178c50: aea20000 */ sw $v0,0x0($s5) /* f178c54: 8eb80004 */ lw $t8,0x4($s5) /* f178c58: 24190002 */ addiu $t9,$zero,0x2 /* f178c5c: 3c0c8007 */ lui $t4,0x8007 /* f178c60: 13000002 */ beqz $t8,.NB0f178c6c /* f178c64: 3c0f8009 */ lui $t7,0x8009 /* f178c68: aeb90004 */ sw $t9,0x4($s5) .NB0f178c6c: /* f178c6c: 8d8c3af0 */ lw $t4,0x3af0($t4) /* f178c70: 8eab0000 */ lw $t3,0x0($s5) /* f178c74: 3c01800a */ lui $at,0x800a /* f178c78: 000c68c0 */ sll $t5,$t4,0x3 /* f178c7c: 01ac6823 */ subu $t5,$t5,$t4 /* f178c80: 000d68c0 */ sll $t5,$t5,0x3 /* f178c84: 01ac6823 */ subu $t5,$t5,$t4 /* f178c88: 000d6900 */ sll $t5,$t5,0x4 /* f178c8c: 01ac6823 */ subu $t5,$t5,$t4 /* f178c90: 000d6880 */ sll $t5,$t5,0x2 /* f178c94: 002d0821 */ addu $at,$at,$t5 /* f178c98: ac2b3538 */ sw $t3,0x3538($at) /* f178c9c: 90ae0001 */ lbu $t6,0x1($a1) /* f178ca0: 3c048009 */ lui $a0,0x8009 /* f178ca4: 15c00005 */ bnez $t6,.NB0f178cbc /* f178ca8: 00000000 */ sll $zero,$zero,0x0 /* f178cac: 0fc3beda */ jal menuPushDialog /* f178cb0: 24848704 */ addiu $a0,$a0,-30972 /* f178cb4: 100000f2 */ beqz $zero,.NB0f179080 /* f178cb8: 00001025 */ or $v0,$zero,$zero .NB0f178cbc: /* f178cbc: 91ef30e0 */ lbu $t7,0x30e0($t7) /* f178cc0: 24010001 */ addiu $at,$zero,0x1 /* f178cc4: 3c048009 */ lui $a0,0x8009 /* f178cc8: 15e10006 */ bne $t7,$at,.NB0f178ce4 /* f178ccc: 00000000 */ sll $zero,$zero,0x0 /* f178cd0: 3c048007 */ lui $a0,0x8007 /* f178cd4: 0fc3beda */ jal menuPushDialog /* f178cd8: 248475f8 */ addiu $a0,$a0,0x75f8 /* f178cdc: 100000e8 */ beqz $zero,.NB0f179080 /* f178ce0: 00001025 */ or $v0,$zero,$zero .NB0f178ce4: /* f178ce4: 0fc3beda */ jal menuPushDialog /* f178ce8: 2484883c */ addiu $a0,$a0,-30660 /* f178cec: 100000e4 */ beqz $zero,.NB0f179080 /* f178cf0: 00001025 */ or $v0,$zero,$zero /* f178cf4: 3c18000f */ lui $t8,0xf /* f178cf8: 3718ffff */ ori $t8,$t8,0xffff /* f178cfc: 100000df */ beqz $zero,.NB0f17907c /* f178d00: aeb80000 */ sw $t8,0x0($s5) /* f178d04: 100000dd */ beqz $zero,.NB0f17907c /* f178d08: aea00000 */ sw $zero,0x0($s5) /* f178d0c: 100000dc */ beqz $zero,.NB0f179080 /* f178d10: 00001025 */ or $v0,$zero,$zero /* f178d14: 100000d9 */ beqz $zero,.NB0f17907c /* f178d18: aea00008 */ sw $zero,0x8($s5) /* f178d1c: 8eb90000 */ lw $t9,0x0($s5) /* f178d20: 3c0c8009 */ lui $t4,0x8009 /* f178d24: 918c30e0 */ lbu $t4,0x30e0($t4) /* f178d28: 24010001 */ addiu $at,$zero,0x1 /* f178d2c: afb900b4 */ sw $t9,0xb4($sp) /* f178d30: 8eb20008 */ lw $s2,0x8($s5) /* f178d34: 2413000a */ addiu $s3,$zero,0xa /* f178d38: 15810002 */ bne $t4,$at,.NB0f178d44 /* f178d3c: 24160004 */ addiu $s6,$zero,0x4 /* f178d40: 24160002 */ addiu $s6,$zero,0x2 .NB0f178d44: /* f178d44: 8e4b0000 */ lw $t3,0x0($s2) /* f178d48: 8fa400b4 */ lw $a0,0xb4($sp) /* f178d4c: 256d000a */ addiu $t5,$t3,0xa /* f178d50: afad00ac */ sw $t5,0xac($sp) /* f178d54: 8e4e0004 */ lw $t6,0x4($s2) /* f178d58: 25cf0001 */ addiu $t7,$t6,0x1 /* f178d5c: 0fc5374a */ jal func0f153628 /* f178d60: afaf00a8 */ sw $t7,0xa8($sp) /* f178d64: afa200b4 */ sw $v0,0xb4($sp) /* f178d68: 0fc655e4 */ jal mpGetChallengeNameBySlot /* f178d6c: 8ea40004 */ lw $a0,0x4($s5) /* f178d70: 0c002f77 */ jal viGetWidth /* f178d74: 00408025 */ or $s0,$v0,$zero /* f178d78: 00028c00 */ sll $s1,$v0,0x10 /* f178d7c: 0011c403 */ sra $t8,$s1,0x10 /* f178d80: 0c002f7b */ jal viGetHeight /* f178d84: 03008825 */ or $s1,$t8,$zero /* f178d88: 3c198008 */ lui $t9,0x8008 /* f178d8c: 3c0c8008 */ lui $t4,0x8008 /* f178d90: 8d8c236c */ lw $t4,0x236c($t4) /* f178d94: 8f392370 */ lw $t9,0x2370($t9) /* f178d98: 8fa400b4 */ lw $a0,0xb4($sp) /* f178d9c: afac0014 */ sw $t4,0x14($sp) /* f178da0: afb90010 */ sw $t9,0x10($sp) /* f178da4: 8e4b000c */ lw $t3,0xc($s2) /* f178da8: afa00028 */ sw $zero,0x28($sp) /* f178dac: afa00024 */ sw $zero,0x24($sp) /* f178db0: afa20020 */ sw $v0,0x20($sp) /* f178db4: afb1001c */ sw $s1,0x1c($sp) /* f178db8: 27a500ac */ addiu $a1,$sp,0xac /* f178dbc: 27a600a8 */ addiu $a2,$sp,0xa8 /* f178dc0: 02003825 */ or $a3,$s0,$zero /* f178dc4: 0fc541a6 */ jal textRenderProjected /* f178dc8: afab0018 */ sw $t3,0x18($sp) /* f178dcc: afa200b4 */ sw $v0,0xb4($sp) /* f178dd0: 0fc537a0 */ jal func0f153780 /* f178dd4: 00402025 */ or $a0,$v0,$zero /* f178dd8: 244d0008 */ addiu $t5,$v0,0x8 /* f178ddc: afad00b4 */ sw $t5,0xb4($sp) /* f178de0: 3c0ee700 */ lui $t6,0xe700 /* f178de4: ac4e0000 */ sw $t6,0x0($v0) /* f178de8: ac400004 */ sw $zero,0x4($v0) /* f178dec: 8faf00b4 */ lw $t7,0xb4($sp) /* f178df0: 3c19ba00 */ lui $t9,0xba00 /* f178df4: 37391301 */ ori $t9,$t9,0x1301 /* f178df8: 25f80008 */ addiu $t8,$t7,0x8 /* f178dfc: afb800b4 */ sw $t8,0xb4($sp) /* f178e00: ade00004 */ sw $zero,0x4($t7) /* f178e04: adf90000 */ sw $t9,0x0($t7) /* f178e08: 8fac00b4 */ lw $t4,0xb4($sp) /* f178e0c: 3c0db900 */ lui $t5,0xb900 /* f178e10: 35ad0002 */ ori $t5,$t5,0x2 /* f178e14: 258b0008 */ addiu $t3,$t4,0x8 /* f178e18: afab00b4 */ sw $t3,0xb4($sp) /* f178e1c: ad800004 */ sw $zero,0x4($t4) /* f178e20: ad8d0000 */ sw $t5,0x0($t4) /* f178e24: 8fae00b4 */ lw $t6,0xb4($sp) /* f178e28: 3c18ba00 */ lui $t8,0xba00 /* f178e2c: 37181001 */ ori $t8,$t8,0x1001 /* f178e30: 25cf0008 */ addiu $t7,$t6,0x8 /* f178e34: afaf00b4 */ sw $t7,0xb4($sp) /* f178e38: adc00004 */ sw $zero,0x4($t6) /* f178e3c: add80000 */ sw $t8,0x0($t6) /* f178e40: 8fb900b4 */ lw $t9,0xb4($sp) /* f178e44: 3c0bba00 */ lui $t3,0xba00 /* f178e48: 356b0903 */ ori $t3,$t3,0x903 /* f178e4c: 272c0008 */ addiu $t4,$t9,0x8 /* f178e50: afac00b4 */ sw $t4,0xb4($sp) /* f178e54: 240d0c00 */ addiu $t5,$zero,0xc00 /* f178e58: 3c05800b */ lui $a1,0x800b /* f178e5c: af2d0004 */ sw $t5,0x4($t9) /* f178e60: af2b0000 */ sw $t3,0x0($t9) /* f178e64: 8ca5fe58 */ lw $a1,-0x1a8($a1) /* f178e68: 240e0002 */ addiu $t6,$zero,0x2 /* f178e6c: 240f0001 */ addiu $t7,$zero,0x1 /* f178e70: afaf0014 */ sw $t7,0x14($sp) /* f178e74: afae0010 */ sw $t6,0x10($sp) /* f178e78: afa00018 */ sw $zero,0x18($sp) /* f178e7c: 27a400b4 */ addiu $a0,$sp,0xb4 /* f178e80: 24060002 */ addiu $a2,$zero,0x2 /* f178e84: 00003825 */ or $a3,$zero,$zero /* f178e88: 0fc2c5c8 */ jal func0f0b39c0 /* f178e8c: 24a501a4 */ addiu $a1,$a1,0x1a4 /* f178e90: 8fb800b4 */ lw $t8,0xb4($sp) /* f178e94: 3c0cba00 */ lui $t4,0xba00 /* f178e98: 358c1402 */ ori $t4,$t4,0x1402 /* f178e9c: 27190008 */ addiu $t9,$t8,0x8 /* f178ea0: afb900b4 */ sw $t9,0xb4($sp) /* f178ea4: af000004 */ sw $zero,0x4($t8) /* f178ea8: af0c0000 */ sw $t4,0x0($t8) /* f178eac: 8fab00b4 */ lw $t3,0xb4($sp) /* f178eb0: 3c0eba00 */ lui $t6,0xba00 /* f178eb4: 35ce0c02 */ ori $t6,$t6,0xc02 /* f178eb8: 256d0008 */ addiu $t5,$t3,0x8 /* f178ebc: afad00b4 */ sw $t5,0xb4($sp) /* f178ec0: 00001025 */ or $v0,$zero,$zero /* f178ec4: ad600004 */ sw $zero,0x4($t3) /* f178ec8: 1ac00068 */ blez $s6,.NB0f17906c /* f178ecc: ad6e0000 */ sw $t6,0x0($t3) /* f178ed0: 3c118008 */ lui $s1,0x8008 /* f178ed4: 26312320 */ addiu $s1,$s1,0x2320 /* f178ed8: 3c14fb00 */ lui $s4,0xfb00 /* f178edc: 24500001 */ addiu $s0,$v0,0x1 .NB0f178ee0: /* f178ee0: 02002825 */ or $a1,$s0,$zero /* f178ee4: 0fc65626 */ jal mpIsChallengeCompletedByAnyChrWithNumPlayersBySlot /* f178ee8: 8ea40004 */ lw $a0,0x4($s5) /* f178eec: 10400009 */ beqz $v0,.NB0f178f14 /* f178ef0: 8fac00b4 */ lw $t4,0xb4($sp) /* f178ef4: 8faf00b4 */ lw $t7,0xb4($sp) /* f178ef8: 3c19ffe5 */ lui $t9,0xffe5 /* f178efc: 373965ff */ ori $t9,$t9,0x65ff /* f178f00: 25f80008 */ addiu $t8,$t7,0x8 /* f178f04: afb800b4 */ sw $t8,0xb4($sp) /* f178f08: adf90004 */ sw $t9,0x4($t7) /* f178f0c: 10000007 */ beqz $zero,.NB0f178f2c /* f178f10: adf40000 */ sw $s4,0x0($t7) .NB0f178f14: /* f178f14: 258b0008 */ addiu $t3,$t4,0x8 /* f178f18: afab00b4 */ sw $t3,0xb4($sp) /* f178f1c: 3c0d4343 */ lui $t5,0x4343 /* f178f20: 35ad00ff */ ori $t5,$t5,0xff /* f178f24: ad8d0004 */ sw $t5,0x4($t4) /* f178f28: ad940000 */ sw $s4,0x0($t4) .NB0f178f2c: /* f178f2c: 8fae00b4 */ lw $t6,0xb4($sp) /* f178f30: 3c18fc12 */ lui $t8,0xfc12 /* f178f34: 3c19ff37 */ lui $t9,0xff37 /* f178f38: 25cf0008 */ addiu $t7,$t6,0x8 /* f178f3c: afaf00b4 */ sw $t7,0xb4($sp) /* f178f40: 3739ffff */ ori $t9,$t9,0xffff /* f178f44: 37189a25 */ ori $t8,$t8,0x9a25 /* f178f48: add80000 */ sw $t8,0x0($t6) /* f178f4c: add90004 */ sw $t9,0x4($t6) /* f178f50: 8fac00b4 */ lw $t4,0xb4($sp) /* f178f54: 01c01025 */ or $v0,$t6,$zero /* f178f58: 8e390000 */ lw $t9,0x0($s1) /* f178f5c: 258b0008 */ addiu $t3,$t4,0x8 /* f178f60: afab00b4 */ sw $t3,0xb4($sp) /* f178f64: 8e4d0000 */ lw $t5,0x0($s2) /* f178f68: 01801825 */ or $v1,$t4,$zero /* f178f6c: 3c01e400 */ lui $at,0xe400 /* f178f70: 01b37021 */ addu $t6,$t5,$s3 /* f178f74: 25cf000b */ addiu $t7,$t6,0xb /* f178f78: 000fc080 */ sll $t8,$t7,0x2 /* f178f7c: 03190019 */ multu $t8,$t9 /* f178f80: 8e4f0004 */ lw $t7,0x4($s2) /* f178f84: 02001025 */ or $v0,$s0,$zero /* f178f88: 25f80016 */ addiu $t8,$t7,0x16 /* f178f8c: 0018c880 */ sll $t9,$t8,0x2 /* f178f90: 00006012 */ mflo $t4 /* f178f94: 318b0fff */ andi $t3,$t4,0xfff /* f178f98: 000b6b00 */ sll $t5,$t3,0xc /* f178f9c: 01a17025 */ or $t6,$t5,$at /* f178fa0: 332c0fff */ andi $t4,$t9,0xfff /* f178fa4: 01cc5825 */ or $t3,$t6,$t4 /* f178fa8: ac6b0000 */ sw $t3,0x0($v1) /* f178fac: 8e4d0000 */ lw $t5,0x0($s2) /* f178fb0: 8e390000 */ lw $t9,0x0($s1) /* f178fb4: 01b37821 */ addu $t7,$t5,$s3 /* f178fb8: 000fc080 */ sll $t8,$t7,0x2 /* f178fbc: 03190019 */ multu $t8,$t9 /* f178fc0: 8e4d0004 */ lw $t5,0x4($s2) /* f178fc4: 2673000d */ addiu $s3,$s3,0xd /* f178fc8: 25af000b */ addiu $t7,$t5,0xb /* f178fcc: 000fc080 */ sll $t8,$t7,0x2 /* f178fd0: 33190fff */ andi $t9,$t8,0xfff /* f178fd4: 24180160 */ addiu $t8,$zero,0x160 /* f178fd8: 3c0fb400 */ lui $t7,0xb400 /* f178fdc: 00007012 */ mflo $t6 /* f178fe0: 31cc0fff */ andi $t4,$t6,0xfff /* f178fe4: 000c5b00 */ sll $t3,$t4,0xc /* f178fe8: 01797025 */ or $t6,$t3,$t9 /* f178fec: ac6e0004 */ sw $t6,0x4($v1) /* f178ff0: 8fac00b4 */ lw $t4,0xb4($sp) /* f178ff4: 3c0eb300 */ lui $t6,0xb300 /* f178ff8: 258d0008 */ addiu $t5,$t4,0x8 /* f178ffc: afad00b4 */ sw $t5,0xb4($sp) /* f179000: ad980004 */ sw $t8,0x4($t4) /* f179004: ad8f0000 */ sw $t7,0x0($t4) /* f179008: 8fab00b4 */ lw $t3,0xb4($sp) /* f17900c: 01802025 */ or $a0,$t4,$zero /* f179010: 240d0400 */ addiu $t5,$zero,0x400 /* f179014: 25790008 */ addiu $t9,$t3,0x8 /* f179018: afb900b4 */ sw $t9,0xb4($sp) /* f17901c: ad6e0000 */ sw $t6,0x0($t3) /* f179020: 8e2c0000 */ lw $t4,0x0($s1) /* f179024: 01602825 */ or $a1,$t3,$zero /* f179028: 01ac001a */ div $zero,$t5,$t4 /* f17902c: 00007812 */ mflo $t7 /* f179030: 31f8ffff */ andi $t8,$t7,0xffff /* f179034: 00185c00 */ sll $t3,$t8,0x10 /* f179038: 3579fc00 */ ori $t9,$t3,0xfc00 /* f17903c: 15800002 */ bnez $t4,.NB0f179048 /* f179040: 00000000 */ sll $zero,$zero,0x0 /* f179044: 0007000d */ break 0x7 .NB0f179048: /* f179048: 2401ffff */ addiu $at,$zero,-1 /* f17904c: 15810004 */ bne $t4,$at,.NB0f179060 /* f179050: 3c018000 */ lui $at,0x8000 /* f179054: 15a10002 */ bne $t5,$at,.NB0f179060 /* f179058: 00000000 */ sll $zero,$zero,0x0 /* f17905c: 0006000d */ break 0x6 .NB0f179060: /* f179060: acb90004 */ sw $t9,0x4($a1) /* f179064: 5616ff9e */ bnel $s0,$s6,.NB0f178ee0 /* f179068: 24500001 */ addiu $s0,$v0,0x1 .NB0f17906c: /* f17906c: 10000004 */ beqz $zero,.NB0f179080 /* f179070: 8fa200b4 */ lw $v0,0xb4($sp) /* f179074: 240e001a */ addiu $t6,$zero,0x1a /* f179078: aeae0000 */ sw $t6,0x0($s5) .NB0f17907c: /* f17907c: 00001025 */ or $v0,$zero,$zero .NB0f179080: /* f179080: 8fbf0054 */ lw $ra,0x54($sp) /* f179084: 8fb00038 */ lw $s0,0x38($sp) /* f179088: 8fb1003c */ lw $s1,0x3c($sp) /* f17908c: 8fb20040 */ lw $s2,0x40($sp) /* f179090: 8fb30044 */ lw $s3,0x44($sp) /* f179094: 8fb40048 */ lw $s4,0x48($sp) /* f179098: 8fb5004c */ lw $s5,0x4c($sp) /* f17909c: 8fb60050 */ lw $s6,0x50($sp) /* f1790a0: 03e00008 */ jr $ra /* f1790a4: 27bd00b8 */ addiu $sp,$sp,0xb8 ); #endif /** * This is for a separator and fixed height thing in the dialog at: * Combat Simulator > Advanced Setup > Challenges > pick one > Accept */ s32 menuhandler0017e9d8(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { if (g_MpSetupSaveFile.locktype != MPLOCKTYPE_CHALLENGE) { return true; } } return 0; } s32 menuhandlerMpAbortChallenge(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { if (g_MpSetupSaveFile.locktype != MPLOCKTYPE_CHALLENGE) { return true; } } if (operation == MENUOP_SET) { mpRemoveLock(); } return 0; } s32 menuhandlerMpStartChallenge(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { if (g_MpSetupSaveFile.locktype != MPLOCKTYPE_CHALLENGE) { return true; } } if (operation == MENUOP_SET) { menuPushDialog(&g_MpReadyMenuDialog); } return 0; } char *mpMenuTextChallengeName(struct menuitem *item) { #if VERSION >= VERSION_NTSC_1_0 if (g_MpSetupSaveFile.locktype != MPLOCKTYPE_CHALLENGE) { return langGet(L_MPMENU_050); // "Combat Challenges" } #endif sprintf(g_StringPointer, "%s:\n", mpChallengeGetName(mpGetCurrentChallengeIndex())); return g_StringPointer; } s32 mpCombatChallengesMenuDialog(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_TICK) { if (g_MpSetupSaveFile.locktype == MPLOCKTYPE_CHALLENGE && g_Menus[g_MpPlayerNum].curframe && g_Menus[g_MpPlayerNum].curframe->dialog == dialog && !mpIsChallengeLoaded()) { g_Menus[g_MpPlayerNum].unk850 = 0x4fac5ace; mpLoadAndStoreCurrentChallenge( g_Menus[g_MpPlayerNum].mpconfigbuffer, g_Menus[g_MpPlayerNum].mpconfigbufferlen); } } if (operation == MENUOP_CLOSE) { if (g_Menus[g_MpPlayerNum].unk850 == 0x4fac5ace) { mpClearCurrentChallenge(); } } return 0; } s32 menuhandler0017ec64(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { mpSetCurrentChallenge(g_Menus[g_MpPlayerNum].data.mpsetup.slotindex); func0f0f820c(&g_MpQuickGoMenuDialog, 3); } return 0; } struct menuitem g_MpSelectTunesMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00020000, 0x00000078, 0x0000004d, mpSelectTuneListHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSelectTunesMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&mpMenuTextSelectTuneOrTunes, g_MpSelectTunesMenuItems, menudialogMpSelectTune, 0x00000010, NULL, }; struct menuitem g_MpSoundtrackMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_063, 0x00000000, NULL }, // "Current:" { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_003, (u32)&mpMenuTextCurrentTrack, NULL }, // "" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, (u32)&mpMenuTextSelectTuneOrTunes, 0x00000000, (void *)&g_MpSelectTunesMenuDialog }, { MENUITEMTYPE_CHECKBOX, 0, 0x00020000, L_MPMENU_064, 0x00000000, menuhandlerMpMultipleTunes }, // "Multiple Tunes" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_065, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpSoundtrackMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_062, // "Soundtrack" g_MpSoundtrackMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpChangeTeamNameMenuItems[] = { { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, menuhandler0017e06c }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpChangeTeamNameMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_061, // "Change Team Name" g_MpChangeTeamNameMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpTeamNamesMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_008, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Red" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_009, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Yellow" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_010, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Blue" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_011, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Magenta" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_012, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Cyan" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_013, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Orange" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_014, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Pink" { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, L_OPTIONS_015, (u32)&mpMenuTextTeamName, menuhandlerMpTeamNameSlot }, // "Brown" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_060, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpTeamNamesMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_059, // "Team Names" g_MpTeamNamesMenuItems, NULL, 0x00000010, NULL, }; struct menuitem g_MpConfirmChallengeViaListOrDetailsMenuItems[] = { { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MPCONFIG, 0x00000000, 0x0000007c, PAL ? 0x41 : 0x37, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, L_MPMENU_057, 0x00000000, menuhandler0017e38c }, // "Accept" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_058, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpConfirmChallengeViaListOrDetailsMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&func0f17e318, g_MpConfirmChallengeViaListOrDetailsMenuItems, menudialog0017e3fc, 0x00000014, NULL, }; struct menuitem g_MpChallengesListOrDetailsMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00200000, 0x00000078, 0x0000004d, menuhandler0017e4d4 }, { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MPCHALLENGE, 0x00000000, 0x0000007c, PAL ? 0x41 : 0x37, menuhandler0017e9d8 }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, menuhandler0017e9d8 }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS_171, 0x00000000, menuhandlerMpStartChallenge }, // "Start Challenge" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_051, 0x00000000, menuhandlerMpAbortChallenge }, // "Abort Challenge" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpChallengeListOrDetailsMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&mpMenuTextChallengeName, g_MpChallengesListOrDetailsMenuItems, mpCombatChallengesMenuDialog, 0x00000808, NULL, }; struct menudialog g_MpAdvancedSetupViaAdvChallengeMenuDialog; struct menudialog g_MpChallengeListOrDetailsViaAdvChallengeMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&mpMenuTextChallengeName, g_MpChallengesListOrDetailsMenuItems, mpCombatChallengesMenuDialog, 0x00000808, &g_MpAdvancedSetupViaAdvChallengeMenuDialog, }; struct menuitem g_MpConfirmChallengeMenuItems[] = { { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MPCONFIG, 0x00000000, 0x0000007c, PAL ? 0x41 : 0x37, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_057, 0x00000000, menuhandler0017ec64 }, // "Accept" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_058, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpConfirmChallengeMenuDialog = { MENUDIALOGTYPE_DEFAULT, (u32)&func0f17e318, g_MpConfirmChallengeMenuItems, menudialog0017e3fc, 0x00000004, NULL, }; struct menuitem g_MpChallengesMenuItems[] = { { MENUITEMTYPE_LIST, 1, 0x00200000, 0x00000078, 0x0000004d, menuhandler0017e4d4 }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpChallengesMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_050, // "Combat Challenges" g_MpChallengesMenuItems, mpCombatChallengesMenuDialog, 0x00000000, NULL, }; s32 menuhandlerMpLock(s32 operation, struct menuitem *item, union handlerdata *data) { u16 labels[] = { L_MPMENU_045, // "None" L_MPMENU_046, // "Last Winner" L_MPMENU_047, // "Last Loser" L_MPMENU_048, // "Random" }; switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = mpGetLockType() == MPLOCKTYPE_CHALLENGE ? 1 : 5; break; case MENUOP_GETOPTIONTEXT: if (mpGetLockType() == MPLOCKTYPE_CHALLENGE) { return (s32) langGet(L_MPMENU_049); // "Challenge" } if (data->dropdown.value <= 3) { return (s32) langGet(labels[data->dropdown.value]); } if (mpGetLockType() == MPLOCKTYPE_PLAYER) { return (s32) g_MpPlayers[mpGetLockPlayerNum()].base.name; } return (s32) mpGetCurrentPlayerName(item); case MENUOP_SET: if (mpGetLockType() != MPLOCKTYPE_CHALLENGE) { mpSetLock(data->dropdown.value, g_MpPlayerNum); } g_Vars.modifiedfiles |= MODFILE_MPSETUP; break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = mpGetLockType() == MPLOCKTYPE_CHALLENGE ? 0 : mpGetLockType(); break; } return 0; } s32 menuhandlerMpSavePlayer(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 == false) { filemgrPushSelectLocationDialog(6, 2); } else { menuPushDialog(&g_MpSavePlayerMenuDialog); } } return 0; } char *mpMenuTextSavePlayerOrCopy(struct menuitem *item) { if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 == false) { return langGet(L_MPMENU_038); // "Save Player" } return langGet(L_MPMENU_039); // "Save Copy of Player" } s32 menuhandler0017ef30(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { if (g_Vars.stagenum == STAGE_CITRAINING) { if (IS4MB()) { func0f0f820c(&g_CiMenuViaPauseMenuDialog, 2); } else { func0f0f820c(&g_CiMenuViaPcMenuDialog, 2); } } else { func0f0f820c(&g_SoloMissionPauseMenuDialog, 2); } } return 0; } s32 menuhandlerMpSaveSettings(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { if (g_MpSetup.unk20.unk00 == false) { menuPushDialog(&g_MpSaveSetupNameMenuDialog); } else { #if VERSION >= VERSION_NTSC_1_0 func0f108324(g_MpSetup.unk20.unk04); #endif menuPushDialog(&g_MpSaveSetupExistsMenuDialog); } } return 0; } char *mpMenuTextArenaName(struct menuitem *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"; } char *mpMenuTextWeaponSetName(struct menuitem *item) { return mpGetWeaponSetName(mpGetWeaponSet()); } s32 menudialogMpGameSetup(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { g_Vars.unk000490 = 1; g_Vars.unk00049c = 1; } return false; } s32 menudialogMpQuickGo(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { g_Vars.unk000490 = 3; } return false; } void mpConfigureQuickTeamPlayers(void) { s32 i; if (g_Vars.mpquickteam != MPQUICKTEAM_NONE) { for (i = 0; i < 8; i++) { mpRemoveSimulant(i); } switch (g_Vars.mpquickteam) { case MPQUICKTEAM_PLAYERSONLY: g_MpSetup.options &= ~MPOPTION_TEAMSENABLED; break; case MPQUICKTEAM_PLAYERSANDSIMS: g_MpSetup.options &= ~MPOPTION_TEAMSENABLED; break; case MPQUICKTEAM_PLAYERSTEAMS: g_MpSetup.options |= MPOPTION_TEAMSENABLED; for (i = 0; i < 4; i++) { g_MpPlayers[i].base.team = g_Vars.mpplayerteams[i]; } break; case MPQUICKTEAM_PLAYERSVSSIMS: g_MpSetup.options |= MPOPTION_TEAMSENABLED; for (i = 0; i < 4; i++) { g_MpPlayers[i].base.team = 0; } break; case MPQUICKTEAM_PLAYERSIMTEAMS: g_MpSetup.options |= MPOPTION_TEAMSENABLED; for (i = 0; i < 4; i++) { g_MpPlayers[i].base.team = i; } break; } } } void mpConfigureQuickTeamSimulants(void) { struct mpchr *mpchr; s32 numchrs; s32 numsims; s32 i; s32 j; if (g_Vars.mpquickteam != MPQUICKTEAM_NONE) { switch (g_Vars.mpquickteam) { case MPQUICKTEAM_PLAYERSANDSIMS: for (i = 0; i < g_Vars.mpquickteamnumsims; i++) { numsims = mpGetNumSimulants(); if (numsims >= 0) { func0f18c984(numsims, g_Vars.mpsimdifficulty); } } func0f18cddc(); break; case MPQUICKTEAM_PLAYERSVSSIMS: for (i = 0; i < g_Vars.mpquickteamnumsims; i++) { numsims = mpGetNumSimulants(); if (numsims >= 0) { func0f18c984(numsims, g_Vars.mpsimdifficulty); } } func0f18cddc(); for (i = 0; i < ARRAYCOUNT(g_MpSimulants); i++) { g_MpSimulants[i].base.team = 1; } break; case MPQUICKTEAM_PLAYERSIMTEAMS: for (i = mpGetNumChrs() - 1; i >= 0; i--) { mpchr = func0f18c794(i); for (j = 0; j < g_Vars.unk0004a0; j++) { numsims = mpGetNumSimulants(); if (numsims >= 0) { func0f18c984(numsims, g_Vars.mpsimdifficulty); g_MpSimulants[numsims].base.team = mpchr->team; } } } func0f18cddc(); break; case MPQUICKTEAM_PLAYERSONLY: case MPQUICKTEAM_PLAYERSTEAMS: break; } } } void func0f17f428(void) { mpConfigureQuickTeamPlayers(); if (IS4MB()) { func0f0f820c(&g_MpQuickGo4MbMenuDialog, MENUROOT_4MBMAINMENU); } else { func0f0f820c(&g_MpQuickGoMenuDialog, MENUROOT_MPSETUP); } } s32 menuhandlerMpFinishedSetup(s32 operation, struct menuitem *item, union handlerdata *data) { #if VERSION >= VERSION_NTSC_1_0 if (operation == MENUOP_CHECKPREFOCUSED) { return true; } #endif if (operation == MENUOP_SET) { func0f17f428(); } return 0; } s32 menuhandlerQuickTeamSeparator(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { if (g_Vars.mpquickteam == MPQUICKTEAM_PLAYERSONLY) { return true; } } return 0; } s32 menuhandlerPlayerTeam(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = 8; break; case MENUOP_GETOPTIONTEXT: return (s32) &g_MpSetupSaveFile.teamnames[data->dropdown.value]; case MENUOP_SET: g_Vars.mpplayerteams[item->param] = data->dropdown.value; break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = g_Vars.mpplayerteams[item->param]; break; case MENUOP_CHECKHIDDEN: if (g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSTEAMS) { return true; } break; } return 0; } s32 menuhandlerMpNumberOfSimulants(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = !mpIsFeatureUnlocked(MPFEATURE_8BOTS) ? 4 : 8; break; case MENUOP_GETOPTIONTEXT: sprintf(g_StringPointer, "%d\n", data->dropdown.value + 1); return (s32) g_StringPointer; case MENUOP_SET: g_Vars.mpquickteamnumsims = data->dropdown.value + 1; break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = g_Vars.mpquickteamnumsims - 1; break; case MENUOP_CHECKHIDDEN: if (g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSANDSIMS && g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSVSSIMS) { return true; } break; } return 0; } s32 menuhandlerMpSimulantsPerTeam(s32 operation, struct menuitem *item, union handlerdata *data) { switch (operation) { case MENUOP_GETOPTIONCOUNT: data->dropdown.value = 2; break; case MENUOP_GETOPTIONTEXT: sprintf(g_StringPointer, "%d\n", data->dropdown.value + 1); return (s32) g_StringPointer; case MENUOP_SET: g_Vars.unk0004a0 = data->dropdown.value + 1; break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = g_Vars.unk0004a0 - 1; break; case MENUOP_CHECKHIDDEN: if (g_Vars.mpquickteam != MPQUICKTEAM_PLAYERSIMTEAMS) { return true; } break; } return 0; } s32 mpQuickTeamSimulantDifficultyHandler(s32 operation, struct menuitem *item, union handlerdata *data) { s32 count = 0; s32 i; switch (operation) { case MENUOP_GETOPTIONCOUNT: for (i = 0; i < 6; i++) { if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) { count++; } } data->dropdown.value = count; break; case MENUOP_GETOPTIONTEXT: for (i = 0; i < 6; i++) { if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) { if (count == data->dropdown.value) { return (s32) langGet(i + L_MISC_082); } count++; } } break; case MENUOP_SET: g_Vars.mpsimdifficulty = data->dropdown.value; break; case MENUOP_GETOPTIONVALUE: data->dropdown.value = g_Vars.mpsimdifficulty; break; case MENUOP_CHECKHIDDEN: if (g_Vars.mpquickteam != 1 && g_Vars.mpquickteam != 3 && g_Vars.mpquickteam != 4) { return true; } } return 0; } s32 menuhandlerMpQuickTeamOption(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { g_Vars.mpquickteam = item->param; if (mpGetWeaponSet() >= func0f189058(0)) { mpSetWeaponSet(0); } if (g_Vars.mpquickteam == MPQUICKTEAM_PLAYERSONLY || g_Vars.mpquickteam == MPQUICKTEAM_PLAYERSANDSIMS) { if (g_MpSetup.scenario == MPSCENARIO_KINGOFTHEHILL || g_MpSetup.scenario == MPSCENARIO_CAPTURETHECASE) { g_MpSetup.scenario = MPSCENARIO_COMBAT; } } menuPushDialog(&g_MpQuickTeamGameSetupMenuDialog); } return 0; } s32 menudialogCombatSimulator(s32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { g_Vars.unk000494[0] = 0; g_Vars.unk000494[1] = 0; g_Vars.unk000494[2] = 0; g_Vars.unk000494[3] = 0; } if (g_Menus[g_MpPlayerNum].curframe && g_Menus[g_MpPlayerNum].curframe->dialog == &g_CombatSimulatorMenuDialog && operation == MENUOP_TICK) { g_Vars.unk000490 = 2; g_Vars.mpquickteam = MPQUICKTEAM_NONE; g_Vars.unk00049c = 0; mpClearCurrentChallenge(); mpRemoveLock(); } return false; } s32 menuhandlerMpAdvancedSetup(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { func0f0f820c(&g_MpAdvancedSetupMenuDialog, 3); } return 0; } GLOBAL_ASM( glabel func0f17fa28 /* f17fa28: 27bdffb8 */ addiu $sp,$sp,-72 /* f17fa2c: afbf003c */ sw $ra,0x3c($sp) /* f17fa30: 3c1f8007 */ lui $ra,%hi(g_MpPlayerNum) /* f17fa34: 27ff1448 */ addiu $ra,$ra,%lo(g_MpPlayerNum) /* f17fa38: 8fee0000 */ lw $t6,0x0($ra) /* f17fa3c: afbe0038 */ sw $s8,0x38($sp) /* f17fa40: afb70034 */ sw $s7,0x34($sp) /* f17fa44: afb60030 */ sw $s6,0x30($sp) /* f17fa48: afb5002c */ sw $s5,0x2c($sp) /* f17fa4c: afb40028 */ sw $s4,0x28($sp) /* f17fa50: afb30024 */ sw $s3,0x24($sp) /* f17fa54: afb20020 */ sw $s2,0x20($sp) /* f17fa58: afb1001c */ sw $s1,0x1c($sp) /* f17fa5c: 3c118008 */ lui $s1,%hi(g_MpSaveSetupNameMenuDialog) /* f17fa60: 3c128008 */ lui $s2,%hi(g_MpSaveSetupExistsMenuDialog) /* f17fa64: 3c138008 */ lui $s3,%hi(g_MpAddSimulantMenuDialog) /* f17fa68: 3c148008 */ lui $s4,%hi(g_MpChangeSimulantMenuDialog) /* f17fa6c: 3c158008 */ lui $s5,%hi(g_MpEditSimulantMenuDialog) /* f17fa70: 3c168008 */ lui $s6,%hi(g_MpCombatOptionsMenuDialog) /* f17fa74: 3c178008 */ lui $s7,%hi(g_MpBriefcaseOptionsMenuDialog) /* f17fa78: 3c1e8008 */ lui $s8,%hi(g_MpCaptureOptionsMenuDialog) /* f17fa7c: 3c098008 */ lui $t1,%hi(g_MpPopacapOptionsMenuDialog) /* f17fa80: 3c088008 */ lui $t0,%hi(g_MpHackerOptionsMenuDialog) /* f17fa84: 3c078008 */ lui $a3,%hi(g_MpHillOptionsMenuDialog) /* f17fa88: afb00018 */ sw $s0,0x18($sp) /* f17fa8c: 24e76ce0 */ addiu $a3,$a3,%lo(g_MpHillOptionsMenuDialog) /* f17fa90: 25086dfc */ addiu $t0,$t0,%lo(g_MpHackerOptionsMenuDialog) /* f17fa94: 25296f80 */ addiu $t1,$t1,%lo(g_MpPopacapOptionsMenuDialog) /* f17fa98: 27de6b48 */ addiu $s8,$s8,%lo(g_MpCaptureOptionsMenuDialog) /* f17fa9c: 26f769d4 */ addiu $s7,$s7,%lo(g_MpBriefcaseOptionsMenuDialog) /* f17faa0: 26d668b8 */ addiu $s6,$s6,%lo(g_MpCombatOptionsMenuDialog) /* f17faa4: 26b5592c */ addiu $s5,$s5,%lo(g_MpEditSimulantMenuDialog) /* f17faa8: 26945834 */ addiu $s4,$s4,%lo(g_MpChangeSimulantMenuDialog) /* f17faac: 2673581c */ addiu $s3,$s3,%lo(g_MpAddSimulantMenuDialog) /* f17fab0: 26524d80 */ addiu $s2,$s2,%lo(g_MpSaveSetupExistsMenuDialog) /* f17fab4: 26314cdc */ addiu $s1,$s1,%lo(g_MpSaveSetupNameMenuDialog) /* f17fab8: 00001025 */ or $v0,$zero,$zero /* f17fabc: afae0040 */ sw $t6,0x40($sp) /* f17fac0: 0002c0c0 */ sll $t8,$v0,0x3 .L0f17fac4: /* f17fac4: 0302c023 */ subu $t8,$t8,$v0 /* f17fac8: 0018c080 */ sll $t8,$t8,0x2 /* f17facc: 0302c021 */ addu $t8,$t8,$v0 /* f17fad0: 0018c0c0 */ sll $t8,$t8,0x3 /* f17fad4: 0302c023 */ subu $t8,$t8,$v0 /* f17fad8: 0018c100 */ sll $t8,$t8,0x4 /* f17fadc: 3c19800a */ lui $t9,%hi(g_Menus+0x4f8) /* f17fae0: afe20000 */ sw $v0,0x0($ra) /* f17fae4: 0338c821 */ addu $t9,$t9,$t8 /* f17fae8: 8f39e4f8 */ lw $t9,%lo(g_Menus+0x4f8)($t9) /* f17faec: 5320005f */ beqzl $t9,.L0f17fc6c /* f17faf0: 24420001 */ addiu $v0,$v0,0x1 /* f17faf4: afa20044 */ sw $v0,0x44($sp) /* f17faf8: 8fe20000 */ lw $v0,0x0($ra) .L0f17fafc: /* f17fafc: 3c0f800a */ lui $t7,%hi(g_Menus) /* f17fb00: 25efe000 */ addiu $t7,$t7,%lo(g_Menus) /* f17fb04: 000270c0 */ sll $t6,$v0,0x3 /* f17fb08: 01c27023 */ subu $t6,$t6,$v0 /* f17fb0c: 000e7080 */ sll $t6,$t6,0x2 /* f17fb10: 01c27021 */ addu $t6,$t6,$v0 /* f17fb14: 000e70c0 */ sll $t6,$t6,0x3 /* f17fb18: 01c27023 */ subu $t6,$t6,$v0 /* f17fb1c: 000e7100 */ sll $t6,$t6,0x4 /* f17fb20: 01cfc021 */ addu $t8,$t6,$t7 /* f17fb24: 870d04f4 */ lh $t5,0x4f4($t8) /* f17fb28: 24100001 */ addiu $s0,$zero,0x1 /* f17fb2c: 00005025 */ or $t2,$zero,$zero /* f17fb30: 19a0003e */ blez $t5,.L0f17fc2c /* f17fb34: 0002c8c0 */ sll $t9,$v0,0x3 /* f17fb38: 0322c823 */ subu $t9,$t9,$v0 /* f17fb3c: 0019c880 */ sll $t9,$t9,0x2 /* f17fb40: 0322c821 */ addu $t9,$t9,$v0 /* f17fb44: 0019c8c0 */ sll $t9,$t9,0x3 /* f17fb48: 0322c823 */ subu $t9,$t9,$v0 /* f17fb4c: 0019c900 */ sll $t9,$t9,0x4 /* f17fb50: 032f6021 */ addu $t4,$t9,$t7 /* f17fb54: 01805825 */ or $t3,$t4,$zero .L0f17fb58: /* f17fb58: 81620478 */ lb $v0,0x478($t3) /* f17fb5c: 000a7080 */ sll $t6,$t2,0x2 /* f17fb60: 01ca7023 */ subu $t6,$t6,$t2 /* f17fb64: 1840002d */ blez $v0,.L0f17fc1c /* f17fb68: 00002025 */ or $a0,$zero,$zero /* f17fb6c: 000e70c0 */ sll $t6,$t6,0x3 /* f17fb70: 018e2821 */ addu $a1,$t4,$t6 /* f17fb74: 00023080 */ sll $a2,$v0,0x2 .L0f17fb78: /* f17fb78: 8ca30464 */ lw $v1,0x464($a1) /* f17fb7c: 24840004 */ addiu $a0,$a0,0x4 /* f17fb80: 0086082a */ slt $at,$a0,$a2 /* f17fb84: 10600023 */ beqz $v1,.L0f17fc14 /* f17fb88: 00000000 */ nop /* f17fb8c: 8c620000 */ lw $v0,0x0($v1) /* f17fb90: 14510002 */ bne $v0,$s1,.L0f17fb9c /* f17fb94: 00000000 */ nop /* f17fb98: 00008025 */ or $s0,$zero,$zero .L0f17fb9c: /* f17fb9c: 14520002 */ bne $v0,$s2,.L0f17fba8 /* f17fba0: 00000000 */ nop /* f17fba4: 00008025 */ or $s0,$zero,$zero .L0f17fba8: /* f17fba8: 14530002 */ bne $v0,$s3,.L0f17fbb4 /* f17fbac: 00000000 */ nop /* f17fbb0: 00008025 */ or $s0,$zero,$zero .L0f17fbb4: /* f17fbb4: 14540002 */ bne $v0,$s4,.L0f17fbc0 /* f17fbb8: 00000000 */ nop /* f17fbbc: 00008025 */ or $s0,$zero,$zero .L0f17fbc0: /* f17fbc0: 14550002 */ bne $v0,$s5,.L0f17fbcc /* f17fbc4: 00000000 */ nop /* f17fbc8: 00008025 */ or $s0,$zero,$zero .L0f17fbcc: /* f17fbcc: 14560002 */ bne $v0,$s6,.L0f17fbd8 /* f17fbd0: 00000000 */ nop /* f17fbd4: 00008025 */ or $s0,$zero,$zero .L0f17fbd8: /* f17fbd8: 14570002 */ bne $v0,$s7,.L0f17fbe4 /* f17fbdc: 00000000 */ nop /* f17fbe0: 00008025 */ or $s0,$zero,$zero .L0f17fbe4: /* f17fbe4: 145e0002 */ bne $v0,$s8,.L0f17fbf0 /* f17fbe8: 00000000 */ nop /* f17fbec: 00008025 */ or $s0,$zero,$zero .L0f17fbf0: /* f17fbf0: 14470002 */ bne $v0,$a3,.L0f17fbfc /* f17fbf4: 00000000 */ nop /* f17fbf8: 00008025 */ or $s0,$zero,$zero .L0f17fbfc: /* f17fbfc: 14480002 */ bne $v0,$t0,.L0f17fc08 /* f17fc00: 00000000 */ nop /* f17fc04: 00008025 */ or $s0,$zero,$zero .L0f17fc08: /* f17fc08: 14490002 */ bne $v0,$t1,.L0f17fc14 /* f17fc0c: 00000000 */ nop /* f17fc10: 00008025 */ or $s0,$zero,$zero .L0f17fc14: /* f17fc14: 1420ffd8 */ bnez $at,.L0f17fb78 /* f17fc18: 24a50004 */ addiu $a1,$a1,0x4 .L0f17fc1c: /* f17fc1c: 254a0001 */ addiu $t2,$t2,0x1 /* f17fc20: 014d082a */ slt $at,$t2,$t5 /* f17fc24: 1420ffcc */ bnez $at,.L0f17fb58 /* f17fc28: 256b0018 */ addiu $t3,$t3,0x18 .L0f17fc2c: /* f17fc2c: 1600000b */ bnez $s0,.L0f17fc5c /* f17fc30: 00000000 */ nop /* f17fc34: 0fc3cdb7 */ jal menuPopDialog /* f17fc38: 00000000 */ nop /* f17fc3c: 3c078008 */ lui $a3,%hi(g_MpHillOptionsMenuDialog) /* f17fc40: 3c088008 */ lui $t0,%hi(g_MpHackerOptionsMenuDialog) /* f17fc44: 3c098008 */ lui $t1,%hi(g_MpPopacapOptionsMenuDialog) /* f17fc48: 3c1f8007 */ lui $ra,%hi(g_MpPlayerNum) /* f17fc4c: 27ff1448 */ addiu $ra,$ra,%lo(g_MpPlayerNum) /* f17fc50: 25296f80 */ addiu $t1,$t1,%lo(g_MpPopacapOptionsMenuDialog) /* f17fc54: 25086dfc */ addiu $t0,$t0,%lo(g_MpHackerOptionsMenuDialog) /* f17fc58: 24e76ce0 */ addiu $a3,$a3,%lo(g_MpHillOptionsMenuDialog) .L0f17fc5c: /* f17fc5c: 5200ffa7 */ beqzl $s0,.L0f17fafc /* f17fc60: 8fe20000 */ lw $v0,0x0($ra) /* f17fc64: 8fa20044 */ lw $v0,0x44($sp) /* f17fc68: 24420001 */ addiu $v0,$v0,0x1 .L0f17fc6c: /* f17fc6c: 24010004 */ addiu $at,$zero,0x4 /* f17fc70: 5441ff94 */ bnel $v0,$at,.L0f17fac4 /* f17fc74: 0002c0c0 */ sll $t8,$v0,0x3 /* f17fc78: 8fb80040 */ lw $t8,0x40($sp) /* f17fc7c: 8fb00018 */ lw $s0,0x18($sp) /* f17fc80: 8fb1001c */ lw $s1,0x1c($sp) /* f17fc84: aff80000 */ sw $t8,0x0($ra) /* f17fc88: 8fbf003c */ lw $ra,0x3c($sp) /* f17fc8c: 8fb20020 */ lw $s2,0x20($sp) /* f17fc90: 8fb30024 */ lw $s3,0x24($sp) /* f17fc94: 8fb40028 */ lw $s4,0x28($sp) /* f17fc98: 8fb5002c */ lw $s5,0x2c($sp) /* f17fc9c: 8fb60030 */ lw $s6,0x30($sp) /* f17fca0: 8fb70034 */ lw $s7,0x34($sp) /* f17fca4: 8fbe0038 */ lw $s8,0x38($sp) /* f17fca8: 03e00008 */ jr $ra /* f17fcac: 27bd0048 */ addiu $sp,$sp,0x48 ); struct menudialog g_MpAbortMenuDialog; struct menuitem g_MpStuffMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_041, 0x00000000, (void *)&g_MpSoundtrackMenuDialog }, // "Soundtrack" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_042, 0x00000000, (void *)&g_MpTeamNamesMenuDialog }, // "Team Names" { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, L_MPMENU_044, 0x00000000, menuhandlerMpLock }, // "Lock" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS_216, 0x00000000, menuhandlerScreenRatio }, // "Ratio" { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS_154, 0x00000000, menuhandlerScreenSplit }, // "Split" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_036, 0x00000000, (void *)&g_MpReadyMenuDialog }, // "Start Game" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_037, 0x00000000, (void *)&g_MpDropOutMenuDialog }, // "Drop Out" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_027, 0x00000000, (void *)&g_MpAbortMenuDialog }, // "Abort Game" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpStuffMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_040, // "Stuff" g_MpStuffMenuItems, NULL, 0x00000810, &g_MpChallengeListOrDetailsMenuDialog, }; struct menudialog g_MpStuffViaAdvChallengeMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_040, // "Stuff" g_MpStuffMenuItems, NULL, 0x00000810, NULL, }; struct menuitem g_MpPlayerSetup234MenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_030, (u32)&mpGetCurrentPlayerName, (void *)&g_MpPlayerNameMenuDialog }, // "Name" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_031, 0x00000000, (void *)&g_MpCharacterMenuDialog }, // "Character" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_033, 0x00000000, (void *)&g_MpControlMenuDialog }, // "Control" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_034, 0x00000000, (void *)&g_MpPlayerOptionsMenuDialog }, // "Player Options" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_035, 0x00000000, (void *)&g_MpPlayerStatsMenuDialog }, // "Statistics" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_029, 0x00000000, (void *)&g_MpLoadPlayerMenuDialog }, // "Load Player" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, (u32)&mpMenuTextSavePlayerOrCopy, 0x00000000, menuhandlerMpSavePlayer }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpPlayerSetupViaAdvMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_028, // "Player Setup" g_MpPlayerSetup234MenuItems, NULL, 0x00000800, &g_MpStuffMenuDialog, }; struct menudialog g_MpPlayerSetupViaAdvChallengeMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_028, // "Player Setup" g_MpPlayerSetup234MenuItems, NULL, 0x00000800, &g_MpStuffViaAdvChallengeMenuDialog, }; struct menudialog g_MpPlayerSetupViaQuickGoMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_028, // "Player Setup" g_MpPlayerSetup234MenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpAbortMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_053, 0x00000000, NULL }, // "Are you sure you want to abort the game?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_054, 0x00000000, menuhandler0017ef30 }, // "Abort" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_055, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpAbortMenuDialog = { MENUDIALOGTYPE_DANGER, L_MPMENU_052, // "Abort" g_MpAbortMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpAdvancedSetupMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, L_MPMENU_019, (u32)&mpMenuTextScenarioShortName, (void *)&g_MpScenarioMenuDialog }, // "Scenario" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_021, 0x00000000, menuhandlerMpOpenOptions }, // "Options" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_020, (u32)&mpMenuTextArenaName, (void *)&g_MpArenaMenuDialog }, // "Arena" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_023, 0x00000000, (void *)&g_MpWeaponsMenuDialog }, // "Weapons" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_024, 0x00000000, (void *)&g_MpLimitsMenuDialog }, // "Limits" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPWEAPONS_184, 0x00000000, (void *)&g_MpHandicapsMenuDialog }, // "Player Handicaps" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_025, 0x00000000, (void *)&g_MpSimulantsMenuDialog }, // "Simulants" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_022, 0x00000000, (void *)&g_MpTeamsMenuDialog }, // "Teams" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00060004, L_MPMENU_018, 0x00000000, (void *)&g_MpLoadSettingsMenuDialog }, // "Load Settings" { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, L_MPMENU_026, 0x00000000, menuhandlerMpSaveSettings }, // "Save Settings" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpAdvancedSetupMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_017, // "Game Setup" g_MpAdvancedSetupMenuItems, menudialogMpGameSetup, 0x00000810, &g_MpPlayerSetupViaAdvMenuDialog, }; struct menudialog g_MpAdvancedSetupViaAdvChallengeMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_017, // "Game Setup" g_MpAdvancedSetupMenuItems, menudialogMpGameSetup, 0x00000810, &g_MpPlayerSetupViaAdvChallengeMenuDialog, }; struct menuitem g_MpQuickGoMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_456, 0x00000000, (void *)&g_MpReadyMenuDialog }, // "Start Game" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_029, 0x00000000, (void *)&g_MpLoadPlayerMenuDialog }, // "Load Player" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_458, 0x00000000, (void *)&g_MpPlayerSetupViaQuickGoMenuDialog }, // "Player Settings" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_457, 0x00000000, (void *)&g_MpDropOutMenuDialog }, // "Drop Out" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpQuickGoMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MISC_460, // "Quick Go" g_MpQuickGoMenuItems, menudialogMpQuickGo, 0x00000000, NULL, }; struct menuitem g_MpQuickTeamGameSetupMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, L_MPMENU_019, (u32)&mpMenuTextScenarioShortName, (void *)&g_MpQuickTeamScenarioMenuDialog }, // "Scenario" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_021, 0x00000000, menuhandlerMpOpenOptions }, // "Options" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_020, (u32)&mpMenuTextArenaName, (void *)&g_MpArenaMenuDialog }, // "Arena" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_023, (u32)&mpMenuTextWeaponSetName, (void *)&g_MpQuickTeamWeaponsMenuDialog }, // "Weapons" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_024, 0x00000000, (void *)&g_MpLimitsMenuDialog }, // "Limits" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, menuhandlerQuickTeamSeparator }, { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MISC_449, 0x00000000, menuhandlerPlayerTeam }, // "Player 1 Team" { MENUITEMTYPE_DROPDOWN, 1, 0x00000000, L_MISC_450, 0x00000000, menuhandlerPlayerTeam }, // "Player 2 Team" { MENUITEMTYPE_DROPDOWN, 2, 0x00000000, L_MISC_451, 0x00000000, menuhandlerPlayerTeam }, // "Player 3 Team" { MENUITEMTYPE_DROPDOWN, 3, 0x00000000, L_MISC_452, 0x00000000, menuhandlerPlayerTeam }, // "Player 4 Team" { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MISC_453, 0x00000000, menuhandlerMpNumberOfSimulants }, // "Number Of Simulants" { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MISC_454, 0x00000000, menuhandlerMpSimulantsPerTeam }, // "Simulants Per Team" { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MISC_455, 0x00000000, mpQuickTeamSimulantDifficultyHandler }, // "Simulant Difficulty" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MISC_448, 0x00000000, menuhandlerMpFinishedSetup }, // "Finished Setup" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, L_MPMENU_026, 0x00000000, menuhandlerMpSaveSettings }, // "Save Settings" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpQuickTeamGameSetupMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPMENU_017, // "Game Setup" g_MpQuickTeamGameSetupMenuItems, NULL, 0x00000000, NULL, }; struct menuitem g_MpQuickTeamMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00400000, L_MISC_463, 0x00000000, menuhandlerMpQuickTeamOption }, // "Players Only" { MENUITEMTYPE_SELECTABLE, 1, 0x00400000, L_MISC_464, 0x00000000, menuhandlerMpQuickTeamOption }, // "Players and Simulants" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 2, 0x00400000, L_MISC_465, 0x00000000, menuhandlerMpQuickTeamOption }, // "Player Teams" { MENUITEMTYPE_SELECTABLE, 3, 0x00400000, L_MISC_466, 0x00000000, menuhandlerMpQuickTeamOption }, // "Players vs. Simulants" { MENUITEMTYPE_SELECTABLE, 4, 0x00400000, L_MISC_467, 0x00000000, menuhandlerMpQuickTeamOption }, // "Player-Simulant Teams" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_MpQuickTeamMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MISC_462, // "Quick Team" g_MpQuickTeamMenuItems, NULL, 0x00000004, NULL, }; struct menuitem g_CombatSimulatorMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, L_MISC_441, 0x00000000, (void *)&g_MpChallengesMenuDialog }, // "Challenges" { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, L_MISC_442, 0x00000001, (void *)&g_MpLoadPresetMenuDialog }, // "Load/Preset Games" { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, L_MISC_443, 0x00000002, (void *)&g_MpQuickTeamMenuDialog }, // "Quick Start" { MENUITEMTYPE_SELECTABLE, 0, 0x00400000, L_MISC_444, 0x00000003, menuhandlerMpAdvancedSetup }, // "Advanced Setup" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialog g_CombatSimulatorMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MISC_445, // "Combat Simulator" g_CombatSimulatorMenuItems, menudialogCombatSimulator, 0x00000004, NULL, }; void func0f17fcb0(s32 silent) { g_Menus[g_MpPlayerNum].playernum = g_MpPlayerNum; if (IS4MB()) { menuPushRootDialog(&g_AdvancedSetup4MbMenuDialog, MENUROOT_4MBMAINMENU); func0f0f8300(); } else { if (g_MpSetupSaveFile.locktype == MPLOCKTYPE_CHALLENGE) { menuPushRootDialog(&g_MpChallengeListOrDetailsViaAdvChallengeMenuDialog, MENUROOT_MPSETUP); } else { menuPushRootDialog(&g_MpAdvancedSetupMenuDialog, MENUROOT_MPSETUP); } func0f0f8300(); } if (!silent) { // Explosion sound sndStart(var80095200, SFX_EXPLOSION_809A, NULL, -1, -1, -1, -1, -1); } }