diff --git a/src/game/game_01bea0.c b/src/game/game_01bea0.c index 7e0b6aa84..7ff627cf2 100644 --- a/src/game/game_01bea0.c +++ b/src/game/game_01bea0.c @@ -2083,7 +2083,7 @@ glabel var7f1a863c // g_Menus[2].unk83c = 0; // g_Menus[3].unk83c = 0; // g_Vars.currentplayer->pausemode = PAUSEMODE_UNPAUSED; -// currentPlayerPause(MENUROOT_FILESELECT); +// currentPlayerPause(MENUROOT_FILEMGR); // var80062940 = 1; // } // } @@ -2562,7 +2562,7 @@ glabel var7f1a863c // case MENUROOT_MAINMENU: // case MENUROOT_MPSETUP: // case MENUROOT_MPENDSCREEN: -// case MENUROOT_FILESELECT: +// case MENUROOT_FILEMGR: // case MENUROOT_BOOTPAKMGR: // case MENUROOT_10: // case MENUROOT_4MBMAINMENU: diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index a10b600ab..81e594639 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -10811,7 +10811,7 @@ void func0f0fa6ac(void) switch (g_MenuData.root) { case MENUROOT_MAINMENU: case MENUROOT_MPSETUP: - case MENUROOT_FILESELECT: + case MENUROOT_FILEMGR: case MENUROOT_4MBMAINMENU: case MENUROOT_TRAINING: func0f0baf38(); @@ -13387,7 +13387,7 @@ u32 menuChooseMusic(void) } } - if (g_MenuData.root == MENUROOT_FILESELECT) { + if (g_MenuData.root == MENUROOT_FILEMGR) { return MUSIC_MAINMENU; } diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index 353f16feb..46c05853e 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -379,7 +379,7 @@ void func0f10898c(void) case 104: case 105: case 106: - func00012cb4(g_Menus[g_MpPlayerNum].unke44, align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.pak.unke1c - 1])); + func00012cb4(g_Menus[g_MpPlayerNum].unke44, align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1])); break; case 100: case 101: @@ -404,7 +404,7 @@ void func0f108a80(void) case 7: case 8: func00012cb4(g_Menus[g_MpPlayerNum].unke44, - align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.pak.unke1c - 1])); + align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1])); break; case 100: g_Vars.unk00047c = g_Menus[g_MpPlayerNum].unke48; @@ -1009,15 +1009,15 @@ void func0f1097d0(s32 device) var800a21e8.unk00 = g_SaveLocations.locations[0]->unk2d8[device].unk00; var800a21e8.unk04 = g_SaveLocations.locations[0]->unk2d8[device].unk04; - thing = func00012ab0(align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.pak.unke1c - 1])); + thing = func00012ab0(align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1])); if (thing) { - func0f1094e4(&var800a21e0, g_Menus[g_MpPlayerNum].data.pak.unke1c + 0x67, thing); + func0f1094e4(&var800a21e0, g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone + 103, thing); } else { filemanPushErrorDialog(FILEERROR_OUTOFMEMORY); } - g_SaveLocations.unk10[g_Menus[g_MpPlayerNum].data.pak.unke1c - 1] = 1; + g_SaveLocations.unk10[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1] = 1; } } @@ -1482,18 +1482,6 @@ const char var7f1b3480[] = "item: %x\n"; const char var7f1b348c[] = "Switched Wads Back\n"; const char var7f1b34a0[] = "MenuClosed\n"; const char var7f1b34ac[] = "Deleting files, wad %d\n"; -const char var7f1b34c4[] = "%d:\n"; -const char var7f1b34cc[] = "%s\n"; -const char var7f1b34d0[] = "%s\n"; -const char var7f1b34d4[] = "%d\n"; -const char var7f1b34d8[] = ""; -const char var7f1b34dc[] = "GOT OKed!\n"; -const char var7f1b34e8[] = "Try to find last opened file...\n"; -const char var7f1b350c[] = "%s %s"; -const char var7f1b3514[] = "\n"; -const char var7f1b3518[] = "%s %d:%02d:%02d"; -const char var7f1b3528[] = "%s %02d:%02d"; -const char var7f1b3538[] = ".%02d"; s32 filemanSelectLocationMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { @@ -1528,7 +1516,7 @@ s32 filemanDeleteFilesForSaveMenuHandler(u32 operation, struct menuitem *item, u { if (operation == MENUOP_SET) { filemanPushDeleteFileDialog(g_Menus[g_MpPlayerNum].unke3f); - g_Menus[g_MpPlayerNum].data.filesel.unke28 = 1; + g_Menus[g_MpPlayerNum].data.fileman.unke28 = 1; } return 0; @@ -1623,7 +1611,7 @@ bool func0f10a97c(struct savelocation000 *arg0) return false; } - if (g_MenuData.root == MENUROOT_FILESELECT) { + if (g_MenuData.root == MENUROOT_FILEMGR) { return false; } @@ -1675,7 +1663,7 @@ s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *ite struct menuitemrenderdata *renderdata = data->type19.renderdata2; struct savelocation000 *location000 = &location->unk000[data->list.unk04]; - if (g_Menus[g_MpPlayerNum].data.filesel.filetypeplusone == 4) { + if (g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone == 4) { gdl = filemanRenderPerfectHeadThumbnail(gdl, renderdata, location000->unk00, location000->unk04); } else { u32 colour = renderdata->colour; @@ -1691,7 +1679,7 @@ s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *ite gdl = func0f153628(gdl); if (location000) { - func0f1080d0(text, location000, g_Menus[g_MpPlayerNum].data.filesel.filetypeplusone - 1); + func0f1080d0(text, location000, g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1); gdl = textRenderProjected(gdl, &x, &y, text, var8007fb10, var8007fb0c, colour, viGetX(), viGetY(), 0, 1); y = renderdata->y + 12; @@ -1760,7 +1748,7 @@ s32 filemanFileToCopyListMenuHandler(u32 operation, struct menuitem *item, union var800a21e0.unk04 = thing->unk04; func0f1099a8(g_Menus[g_MpPlayerNum].unke53, thing); - func0f10a51c(g_Menus[g_MpPlayerNum].data.pak.unke1c, g_Menus[g_MpPlayerNum].data.pak.unke1c - 1); + func0f10a51c(g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone, g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1); } } @@ -1770,11 +1758,11 @@ s32 filemanFileToCopyListMenuHandler(u32 operation, struct menuitem *item, union s32 filemanCopyOrDeleteListMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_CLOSE) { - if (g_Menus[g_MpPlayerNum].data.pak.unke28 == 1) { - g_Menus[g_MpPlayerNum].data.pak.unke28 = 0; + if (g_Menus[g_MpPlayerNum].data.fileman.unke28 == 1) { + g_Menus[g_MpPlayerNum].data.fileman.unke28 = 0; } else { func0f110c5c(0, FILETYPE_SOLO); - g_Menus[g_MpPlayerNum].data.pak.unke1c = 0; + g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = 0; } } @@ -1786,13 +1774,13 @@ void filemanPushDeleteFileDialog(u32 arg0) struct savelocation *location; g_Menus[g_MpPlayerNum].unke3f = arg0; - g_Menus[g_MpPlayerNum].data.pak.unke28 = 0; - g_Menus[g_MpPlayerNum].data.pak.unke1c = 1; + g_Menus[g_MpPlayerNum].data.fileman.unke28 = 0; + g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = 1; location = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]; if (location) { - g_Menus[g_MpPlayerNum].data.pak.unke1c = location->filetype + 1; + g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = location->filetype + 1; } menuPushDialog(&g_FilemanDeleteFileMenuDialog); @@ -1801,7 +1789,7 @@ void filemanPushDeleteFileDialog(u32 arg0) s32 pakDeleteGameNoteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - OSPfsState *file = &g_EditingPak->filestates[g_Menus[g_MpPlayerNum].data.pak.unke28]; + OSPfsState *note = &g_EditingPak->notes[g_Menus[g_MpPlayerNum].data.pak.noteindex]; s32 result; g_Menus[g_MpPlayerNum].data.pak.unke24 = g_Menus[g_MpPlayerNum].data.pak.unke24 | (1 << g_Menus[g_MpPlayerNum].data.pak.device); @@ -1809,7 +1797,7 @@ s32 pakDeleteGameNoteMenuHandler(u32 operation, struct menuitem *item, union han menuPopDialog(); result = pakDeleteGameNote(g_Menus[g_MpPlayerNum].data.pak.device, - file->company_code, file->game_code, file->game_name, file->ext_name); + note->company_code, note->game_code, note->game_name, note->ext_name); g_Menus[g_MpPlayerNum].unke3c = g_Menus[g_MpPlayerNum].data.pak.device; @@ -1821,315 +1809,102 @@ s32 pakDeleteGameNoteMenuHandler(u32 operation, struct menuitem *item, union han return 0; } -GLOBAL_ASM( -glabel pakGameNoteListMenuHandler -.late_rodata -glabel var7f1b37ac -.word pakGameNoteListMenuHandler+0x5c # f10b2c8 -glabel var7f1b37b0 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37b4 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37b8 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37bc -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37c0 -.word pakGameNoteListMenuHandler+0x398 # f10b604 -glabel var7f1b37c4 -.word pakGameNoteListMenuHandler+0x4c # f10b2b8 -glabel var7f1b37c8 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37cc -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37d0 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37d4 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37d8 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37dc -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37e0 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37e4 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37e8 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37ec -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37f0 -.word pakGameNoteListMenuHandler+0x3f0 # f10b65c -glabel var7f1b37f4 -.word pakGameNoteListMenuHandler+0x68 # f10b2d4 -glabel var7f1b37f8 -.word pakGameNoteListMenuHandler+0x38c # f10b5f8 -.text -/* f10b26c: 3c038007 */ lui $v1,%hi(g_EditingPak) -/* f10b270: 8c634a4c */ lw $v1,%lo(g_EditingPak)($v1) -/* f10b274: 27bdfea8 */ addiu $sp,$sp,-344 -/* f10b278: afbf003c */ sw $ra,0x3c($sp) -/* f10b27c: afb00038 */ sw $s0,0x38($sp) -/* f10b280: afa5015c */ sw $a1,0x15c($sp) -/* f10b284: 14600003 */ bnez $v1,.L0f10b294 -/* f10b288: 00c03825 */ or $a3,$a2,$zero -/* f10b28c: 100000f4 */ b .L0f10b660 -/* f10b290: 00001025 */ or $v0,$zero,$zero -.L0f10b294: -/* f10b294: 248effff */ addiu $t6,$a0,-1 -/* f10b298: 2dc10014 */ sltiu $at,$t6,0x14 -/* f10b29c: 102000ef */ beqz $at,.L0f10b65c -/* f10b2a0: 000e7080 */ sll $t6,$t6,0x2 -/* f10b2a4: 3c017f1b */ lui $at,%hi(var7f1b37ac) -/* f10b2a8: 002e0821 */ addu $at,$at,$t6 -/* f10b2ac: 8c2e37ac */ lw $t6,%lo(var7f1b37ac)($at) -/* f10b2b0: 01c00008 */ jr $t6 -/* f10b2b4: 00000000 */ nop -/* f10b2b8: 3c0f000f */ lui $t7,0xf -/* f10b2bc: 35efffff */ ori $t7,$t7,0xffff -/* f10b2c0: 100000e6 */ b .L0f10b65c -/* f10b2c4: acef0000 */ sw $t7,0x0($a3) -/* f10b2c8: 24180010 */ addiu $t8,$zero,0x10 -/* f10b2cc: 100000e3 */ b .L0f10b65c -/* f10b2d0: acf80000 */ sw $t8,0x0($a3) -/* f10b2d4: 8cf90000 */ lw $t9,0x0($a3) -/* f10b2d8: 3c057f1b */ lui $a1,%hi(var7f1b34c4) -/* f10b2dc: 24a534c4 */ addiu $a1,$a1,%lo(var7f1b34c4) -/* f10b2e0: afb9014c */ sw $t9,0x14c($sp) -/* f10b2e4: 8ce20004 */ lw $v0,0x4($a3) -/* f10b2e8: 8cf00008 */ lw $s0,0x8($a3) -/* f10b2ec: afa70160 */ sw $a3,0x160($sp) -/* f10b2f0: 00024140 */ sll $t0,$v0,0x5 -/* f10b2f4: 00684821 */ addu $t1,$v1,$t0 -/* f10b2f8: afa90144 */ sw $t1,0x144($sp) -/* f10b2fc: 27a400d4 */ addiu $a0,$sp,0xd4 -/* f10b300: 0c004dad */ jal sprintf -/* f10b304: 24460001 */ addiu $a2,$v0,0x1 -/* f10b308: 8e0a0000 */ lw $t2,0x0($s0) -/* f10b30c: 254b0004 */ addiu $t3,$t2,0x4 -/* f10b310: afab0154 */ sw $t3,0x154($sp) -/* f10b314: 8e0c0004 */ lw $t4,0x4($s0) -/* f10b318: 258d0001 */ addiu $t5,$t4,0x1 -/* f10b31c: 0c002f02 */ jal viGetX -/* f10b320: afad0150 */ sw $t5,0x150($sp) -/* f10b324: 0c002f06 */ jal viGetY -/* f10b328: a7a20050 */ sh $v0,0x50($sp) -/* f10b32c: 3c0e8008 */ lui $t6,%hi(var8007fb10) -/* f10b330: 3c0f8008 */ lui $t7,%hi(var8007fb0c) -/* f10b334: 8deffb0c */ lw $t7,%lo(var8007fb0c)($t7) -/* f10b338: 8dcefb10 */ lw $t6,%lo(var8007fb10)($t6) -/* f10b33c: 87b90050 */ lh $t9,0x50($sp) -/* f10b340: afaf0014 */ sw $t7,0x14($sp) -/* f10b344: afae0010 */ sw $t6,0x10($sp) -/* f10b348: 8e18000c */ lw $t8,0xc($s0) -/* f10b34c: 24080001 */ addiu $t0,$zero,0x1 -/* f10b350: afa80028 */ sw $t0,0x28($sp) -/* f10b354: afa00024 */ sw $zero,0x24($sp) -/* f10b358: afa20020 */ sw $v0,0x20($sp) -/* f10b35c: 8fa4014c */ lw $a0,0x14c($sp) -/* f10b360: 27a50154 */ addiu $a1,$sp,0x154 -/* f10b364: 27a60150 */ addiu $a2,$sp,0x150 -/* f10b368: 27a700d4 */ addiu $a3,$sp,0xd4 -/* f10b36c: afb9001c */ sw $t9,0x1c($sp) -/* f10b370: 0fc5580f */ jal textRenderProjected -/* f10b374: afb80018 */ sw $t8,0x18($sp) -/* f10b378: 8faa0160 */ lw $t2,0x160($sp) -/* f10b37c: afa2014c */ sw $v0,0x14c($sp) -/* f10b380: 3c098007 */ lui $t1,%hi(g_EditingPak) -/* f10b384: 8d4b0004 */ lw $t3,0x4($t2) -/* f10b388: 8d294a4c */ lw $t1,%lo(g_EditingPak)($t1) -/* f10b38c: 24010001 */ addiu $at,$zero,0x1 -/* f10b390: 000b6080 */ sll $t4,$t3,0x2 -/* f10b394: 012c6821 */ addu $t5,$t1,$t4 -/* f10b398: 8dae0200 */ lw $t6,0x200($t5) -/* f10b39c: 15c10020 */ bne $t6,$at,.L0f10b420 -/* f10b3a0: 00000000 */ nop -/* f10b3a4: 8fa40144 */ lw $a0,0x144($sp) -/* f10b3a8: 27a5011c */ addiu $a1,$sp,0x11c -/* f10b3ac: 24060010 */ addiu $a2,$zero,0x10 -/* f10b3b0: 0fc47986 */ jal func0f11e618 -/* f10b3b4: 2484000e */ addiu $a0,$a0,0xe -/* f10b3b8: 8fa40144 */ lw $a0,0x144($sp) -/* f10b3bc: 27a50110 */ addiu $a1,$sp,0x110 -/* f10b3c0: 24060004 */ addiu $a2,$zero,0x4 -/* f10b3c4: 0fc47986 */ jal func0f11e618 -/* f10b3c8: 2484000a */ addiu $a0,$a0,0xa -/* f10b3cc: 3c057f1b */ lui $a1,%hi(var7f1b34cc) -/* f10b3d0: a3a00111 */ sb $zero,0x111($sp) -/* f10b3d4: 24a534cc */ addiu $a1,$a1,%lo(var7f1b34cc) -/* f10b3d8: 27a400d4 */ addiu $a0,$sp,0xd4 -/* f10b3dc: 0c004dad */ jal sprintf -/* f10b3e0: 27a6011c */ addiu $a2,$sp,0x11c -/* f10b3e4: 3c057f1b */ lui $a1,%hi(var7f1b34d0) -/* f10b3e8: 24a534d0 */ addiu $a1,$a1,%lo(var7f1b34d0) -/* f10b3ec: 27a40098 */ addiu $a0,$sp,0x98 -/* f10b3f0: 0c004dad */ jal sprintf -/* f10b3f4: 27a60110 */ addiu $a2,$sp,0x110 -/* f10b3f8: 8faf0144 */ lw $t7,0x144($sp) -/* f10b3fc: 3c057f1b */ lui $a1,%hi(var7f1b34d4) -/* f10b400: 24a534d4 */ addiu $a1,$a1,%lo(var7f1b34d4) -/* f10b404: 8de60000 */ lw $a2,0x0($t7) -/* f10b408: 27a4005c */ addiu $a0,$sp,0x5c -/* f10b40c: 0006c202 */ srl $t8,$a2,0x8 -/* f10b410: 0c004dad */ jal sprintf -/* f10b414: 03003025 */ or $a2,$t8,$zero -/* f10b418: 10000012 */ b .L0f10b464 -/* f10b41c: 8e190000 */ lw $t9,0x0($s0) -.L0f10b420: -/* f10b420: 0fc5b9f1 */ jal langGet -/* f10b424: 24045788 */ addiu $a0,$zero,0x5788 -/* f10b428: 27a400d4 */ addiu $a0,$sp,0xd4 -/* f10b42c: 0c004dad */ jal sprintf -/* f10b430: 00402825 */ or $a1,$v0,$zero -/* f10b434: 0fc5b9f1 */ jal langGet -/* f10b438: 24045789 */ addiu $a0,$zero,0x5789 -/* f10b43c: 27a4005c */ addiu $a0,$sp,0x5c -/* f10b440: 0c004dad */ jal sprintf -/* f10b444: 00402825 */ or $a1,$v0,$zero -/* f10b448: 3c057f1b */ lui $a1,%hi(var7f1b34d8) -/* f10b44c: 24a534d8 */ addiu $a1,$a1,%lo(var7f1b34d8) -/* f10b450: 27a40098 */ addiu $a0,$sp,0x98 -/* f10b454: 27a6011c */ addiu $a2,$sp,0x11c -/* f10b458: 0c004dad */ jal sprintf -/* f10b45c: 27a70110 */ addiu $a3,$sp,0x110 -/* f10b460: 8e190000 */ lw $t9,0x0($s0) -.L0f10b464: -/* f10b464: 27280014 */ addiu $t0,$t9,0x14 -/* f10b468: afa80154 */ sw $t0,0x154($sp) -/* f10b46c: 8e0a0004 */ lw $t2,0x4($s0) -/* f10b470: 254b0001 */ addiu $t3,$t2,0x1 -/* f10b474: 0c002f02 */ jal viGetX -/* f10b478: afab0150 */ sw $t3,0x150($sp) -/* f10b47c: 0c002f06 */ jal viGetY -/* f10b480: a7a20050 */ sh $v0,0x50($sp) -/* f10b484: 3c098008 */ lui $t1,%hi(var8007fb10) -/* f10b488: 3c0c8008 */ lui $t4,%hi(var8007fb0c) -/* f10b48c: 8d8cfb0c */ lw $t4,%lo(var8007fb0c)($t4) -/* f10b490: 8d29fb10 */ lw $t1,%lo(var8007fb10)($t1) -/* f10b494: 87ae0050 */ lh $t6,0x50($sp) -/* f10b498: afac0014 */ sw $t4,0x14($sp) -/* f10b49c: afa90010 */ sw $t1,0x10($sp) -/* f10b4a0: 8e0d000c */ lw $t5,0xc($s0) -/* f10b4a4: 240f0001 */ addiu $t7,$zero,0x1 -/* f10b4a8: afaf0028 */ sw $t7,0x28($sp) -/* f10b4ac: afa00024 */ sw $zero,0x24($sp) -/* f10b4b0: afa20020 */ sw $v0,0x20($sp) -/* f10b4b4: 8fa4014c */ lw $a0,0x14c($sp) -/* f10b4b8: 27a50154 */ addiu $a1,$sp,0x154 -/* f10b4bc: 27a60150 */ addiu $a2,$sp,0x150 -/* f10b4c0: 27a700d4 */ addiu $a3,$sp,0xd4 -/* f10b4c4: afae001c */ sw $t6,0x1c($sp) -/* f10b4c8: 0fc5580f */ jal textRenderProjected -/* f10b4cc: afad0018 */ sw $t5,0x18($sp) -/* f10b4d0: afa2014c */ sw $v0,0x14c($sp) -/* f10b4d4: 8e180000 */ lw $t8,0x0($s0) -/* f10b4d8: 271900be */ addiu $t9,$t8,0xbe -/* f10b4dc: afb90154 */ sw $t9,0x154($sp) -/* f10b4e0: 8e080004 */ lw $t0,0x4($s0) -/* f10b4e4: 250a0001 */ addiu $t2,$t0,0x1 -/* f10b4e8: 0c002f02 */ jal viGetX -/* f10b4ec: afaa0150 */ sw $t2,0x150($sp) -/* f10b4f0: 0c002f06 */ jal viGetY -/* f10b4f4: a7a20050 */ sh $v0,0x50($sp) -/* f10b4f8: 3c0b8008 */ lui $t3,%hi(var8007fb10) -/* f10b4fc: 3c098008 */ lui $t1,%hi(var8007fb0c) -/* f10b500: 8d29fb0c */ lw $t1,%lo(var8007fb0c)($t1) -/* f10b504: 8d6bfb10 */ lw $t3,%lo(var8007fb10)($t3) -/* f10b508: 87ad0050 */ lh $t5,0x50($sp) -/* f10b50c: afa90014 */ sw $t1,0x14($sp) -/* f10b510: afab0010 */ sw $t3,0x10($sp) -/* f10b514: 8e0c000c */ lw $t4,0xc($s0) -/* f10b518: 240e0001 */ addiu $t6,$zero,0x1 -/* f10b51c: afae0028 */ sw $t6,0x28($sp) -/* f10b520: afa00024 */ sw $zero,0x24($sp) -/* f10b524: afa20020 */ sw $v0,0x20($sp) -/* f10b528: 8fa4014c */ lw $a0,0x14c($sp) -/* f10b52c: 27a50154 */ addiu $a1,$sp,0x154 -/* f10b530: 27a60150 */ addiu $a2,$sp,0x150 -/* f10b534: 27a70098 */ addiu $a3,$sp,0x98 -/* f10b538: afad001c */ sw $t5,0x1c($sp) -/* f10b53c: 0fc5580f */ jal textRenderProjected -/* f10b540: afac0018 */ sw $t4,0x18($sp) -/* f10b544: 3c0f8008 */ lui $t7,%hi(var8007fb0c) -/* f10b548: 8deffb0c */ lw $t7,%lo(var8007fb0c)($t7) -/* f10b54c: 3c078008 */ lui $a3,%hi(var8007fb10) -/* f10b550: afa2014c */ sw $v0,0x14c($sp) -/* f10b554: 8ce7fb10 */ lw $a3,%lo(var8007fb10)($a3) -/* f10b558: 27a40054 */ addiu $a0,$sp,0x54 -/* f10b55c: 27a50058 */ addiu $a1,$sp,0x58 -/* f10b560: 27a6005c */ addiu $a2,$sp,0x5c -/* f10b564: afa00014 */ sw $zero,0x14($sp) -/* f10b568: 0fc55cbe */ jal textMeasure -/* f10b56c: afaf0010 */ sw $t7,0x10($sp) -/* f10b570: 8e180000 */ lw $t8,0x0($s0) -/* f10b574: 8e190008 */ lw $t9,0x8($s0) -/* f10b578: 8faa0058 */ lw $t2,0x58($sp) -/* f10b57c: 03194021 */ addu $t0,$t8,$t9 -/* f10b580: 010a5823 */ subu $t3,$t0,$t2 -/* f10b584: 2569fffa */ addiu $t1,$t3,-6 -/* f10b588: afa90154 */ sw $t1,0x154($sp) -/* f10b58c: 8e0c0004 */ lw $t4,0x4($s0) -/* f10b590: 258d0001 */ addiu $t5,$t4,0x1 -/* f10b594: 0c002f02 */ jal viGetX -/* f10b598: afad0150 */ sw $t5,0x150($sp) -/* f10b59c: 0c002f06 */ jal viGetY -/* f10b5a0: a7a20050 */ sh $v0,0x50($sp) -/* f10b5a4: 3c0e8008 */ lui $t6,%hi(var8007fb10) -/* f10b5a8: 3c0f8008 */ lui $t7,%hi(var8007fb0c) -/* f10b5ac: 8deffb0c */ lw $t7,%lo(var8007fb0c)($t7) -/* f10b5b0: 8dcefb10 */ lw $t6,%lo(var8007fb10)($t6) -/* f10b5b4: 87b90050 */ lh $t9,0x50($sp) -/* f10b5b8: afaf0014 */ sw $t7,0x14($sp) -/* f10b5bc: afae0010 */ sw $t6,0x10($sp) -/* f10b5c0: 8e18000c */ lw $t8,0xc($s0) -/* f10b5c4: 24080001 */ addiu $t0,$zero,0x1 -/* f10b5c8: afa80028 */ sw $t0,0x28($sp) -/* f10b5cc: afa00024 */ sw $zero,0x24($sp) -/* f10b5d0: afa20020 */ sw $v0,0x20($sp) -/* f10b5d4: 8fa4014c */ lw $a0,0x14c($sp) -/* f10b5d8: 27a50154 */ addiu $a1,$sp,0x154 -/* f10b5dc: 27a60150 */ addiu $a2,$sp,0x150 -/* f10b5e0: 27a7005c */ addiu $a3,$sp,0x5c -/* f10b5e4: afb9001c */ sw $t9,0x1c($sp) -/* f10b5e8: 0fc5580f */ jal textRenderProjected -/* f10b5ec: afb80018 */ sw $t8,0x18($sp) -/* f10b5f0: 1000001c */ b .L0f10b664 -/* f10b5f4: 8fbf003c */ lw $ra,0x3c($sp) -/* f10b5f8: 240a000b */ addiu $t2,$zero,0xb -/* f10b5fc: 10000017 */ b .L0f10b65c -/* f10b600: acea0000 */ sw $t2,0x0($a3) -/* f10b604: 8ce20000 */ lw $v0,0x0($a3) -/* f10b608: 24010001 */ addiu $at,$zero,0x1 -/* f10b60c: 3c0d8007 */ lui $t5,%hi(g_MpPlayerNum) -/* f10b610: 00025880 */ sll $t3,$v0,0x2 -/* f10b614: 006b4821 */ addu $t1,$v1,$t3 -/* f10b618: 8d2c0200 */ lw $t4,0x200($t1) -/* f10b61c: 3c048007 */ lui $a0,%hi(g_PakDeleteGameNoteMenuDialog) -/* f10b620: 5581000f */ bnel $t4,$at,.L0f10b660 -/* f10b624: 00001025 */ or $v0,$zero,$zero -/* f10b628: 8dad1448 */ lw $t5,%lo(g_MpPlayerNum)($t5) -/* f10b62c: 3c01800a */ lui $at,%hi(g_Menus+0xe28) -/* f10b630: 24844aa0 */ addiu $a0,$a0,%lo(g_PakDeleteGameNoteMenuDialog) -/* f10b634: 000d70c0 */ sll $t6,$t5,0x3 -/* f10b638: 01cd7023 */ subu $t6,$t6,$t5 -/* f10b63c: 000e7080 */ sll $t6,$t6,0x2 -/* f10b640: 01cd7021 */ addu $t6,$t6,$t5 -/* f10b644: 000e70c0 */ sll $t6,$t6,0x3 -/* f10b648: 01cd7023 */ subu $t6,$t6,$t5 -/* f10b64c: 000e7100 */ sll $t6,$t6,0x4 -/* f10b650: 002e0821 */ addu $at,$at,$t6 -/* f10b654: 0fc3cbd3 */ jal menuPushDialog -/* f10b658: ac22ee28 */ sw $v0,%lo(g_Menus+0xe28)($at) -.L0f10b65c: -/* f10b65c: 00001025 */ or $v0,$zero,$zero -.L0f10b660: -/* f10b660: 8fbf003c */ lw $ra,0x3c($sp) -.L0f10b664: -/* f10b664: 8fb00038 */ lw $s0,0x38($sp) -/* f10b668: 27bd0158 */ addiu $sp,$sp,0x158 -/* f10b66c: 03e00008 */ jr $ra -/* f10b670: 00000000 */ nop -); +s32 pakGameNoteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +{ + s32 x; + s32 y; + Gfx *gdl; + struct menuitemrenderdata *renderdata; + OSPfsState *note; + char tmpname[40]; + char tmpext[12]; + char generalbuffer[60]; + char extbuffer[60]; + char pagesbuffer[60]; + s32 textwidth; + s32 textheight; + + if (g_EditingPak == NULL) { + return 0; + } + + switch (operation) { + case MENUOP_GETOPTIONVALUE: + data->list.value = 0x0fffff; + break; + case MENUOP_GETOPTIONCOUNT: + data->list.value = 16; + break; + case MENUOP_RENDER: + gdl = data->type19.gdl; + renderdata = data->type19.renderdata2; + note = &g_EditingPak->notes[data->list.unk04]; + + // Render note number (1-16) + sprintf(generalbuffer, "%d:\n", data->list.unk04 + 1); + x = renderdata->x + 4; + y = renderdata->y + 1; + gdl = textRenderProjected(gdl, &x, &y, generalbuffer, var8007fb10, var8007fb0c, + renderdata->colour, viGetX(), viGetY(), 0, 1); + + // Prepare buffers for remaining text + if (g_EditingPak->notesinuse[data->list.unk04] == 1) { + func0f11e618(note->game_name, tmpname, 16); + func0f11e618(note->ext_name, tmpext, 4); + + tmpext[1] = '\0'; + + sprintf(generalbuffer, "%s\n", tmpname); + sprintf(extbuffer, "%s\n", tmpext); + sprintf(pagesbuffer, "%d\n", note->file_size / 256); + } else { + sprintf(generalbuffer, langGet(L_OPTIONS(392))); // "Empty" + sprintf(pagesbuffer, langGet(L_OPTIONS(393))); // "--" + sprintf(extbuffer, "", tmpname, tmpext); + } + + // Render note name + x = renderdata->x + 20; + y = renderdata->y + 1; + gdl = textRenderProjected(gdl, &x, &y, generalbuffer, var8007fb10, var8007fb0c, + renderdata->colour, viGetX(), viGetY(), 0, 1); + + // Render ext character (for when a game has multiple notes) + x = renderdata->x + 190; + y = renderdata->y + 1; + gdl = textRenderProjected(gdl, &x, &y, extbuffer, var8007fb10, var8007fb0c, + renderdata->colour, viGetX(), viGetY(), 0, 1); + + // Render number of pages + textMeasure(&textheight, &textwidth, pagesbuffer, var8007fb10, var8007fb0c, 0); + + x = ((renderdata->x + renderdata->width) - textwidth) - 6; + y = renderdata->y + 1; + gdl = textRenderProjected(gdl, &x, &y, pagesbuffer, var8007fb10, var8007fb0c, + renderdata->colour, viGetX(), viGetY(), 0, 1); + + return (u32)gdl; + case MENUOP_GETOPTIONHEIGHT: + data->list.value = 11; + break; + case MENUOP_SET: + if (g_EditingPak->notesinuse[data->list.value] == true) { + g_Menus[g_MpPlayerNum].data.pak.noteindex = data->list.value; + menuPushDialog(&g_PakDeleteGameNoteMenuDialog); + } + break; + } + + return 0; +} + +const char var7f1b34dc[] = "GOT OKed!\n"; +const char var7f1b34e8[] = "Try to find last opened file...\n"; +const char var7f1b350c[] = "%s %s"; +const char var7f1b3514[] = "\n"; +const char var7f1b3518[] = "%s %d:%02d:%02d"; +const char var7f1b3528[] = "%s %02d:%02d"; +const char var7f1b3538[] = ".%02d"; s32 pakGameNotesMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) { @@ -2187,10 +1962,10 @@ char *pakMenuTextStatusMessage(struct menuitem *item) return langGet(L_OPTIONS(398)); // "Perfect Dark note already exists on this Controller Pak." } - for (i = 0; i < ARRAYCOUNT(g_EditingPak->filestates); i++) { - if (g_EditingPak->filesinuse[i] == true) { - if (g_EditingPak->filestates[i].company_code == ROM_COMPANYCODE - && g_EditingPak->filestates[i].game_code == ROM_GAMECODE) { + for (i = 0; i < ARRAYCOUNT(g_EditingPak->notes); i++) { + if (g_EditingPak->notesinuse[i] == true) { + if (g_EditingPak->notes[i].company_code == ROM_COMPANYCODE + && g_EditingPak->notes[i].game_code == ROM_GAMECODE) { haspdfile = true; } } else { @@ -2223,7 +1998,7 @@ s32 pakSelectionMenuHandler(u32 operation, struct menuitem *item, union handlerd } if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].data.filesel.slotcount = item->param; + g_Menus[g_MpPlayerNum].data.pak.device = item->param; menuPushDialog(&g_PakGameNotesMenuDialog); } @@ -2262,10 +2037,10 @@ s32 pakChoosePakMenuDialog(u32 operation, struct menudialog *dialog, union handl s32 filemanOpenCopyFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].data.filesel.filetypeplusone = item->param + 1; + g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = item->param + 1; func0f110c5c(0, item->param); g_Menus[g_MpPlayerNum].unke3f = 0; - g_Menus[g_MpPlayerNum].data.filesel.unke28 = 0; + g_Menus[g_MpPlayerNum].data.fileman.unke28 = 0; menuPushDialog(&g_FilemanCopyListMenuDialog); } @@ -2275,7 +2050,7 @@ s32 filemanOpenCopyFileMenuHandler(u32 operation, struct menuitem *item, union h s32 filemanOpenDeleteFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].data.filesel.filetypeplusone = item->param + 1; + g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = item->param + 1; func0f110c5c(0, item->param); g_Menus[g_MpPlayerNum].unke3e = -1; filemanPushDeleteFileDialog(0); @@ -2301,7 +2076,7 @@ s32 filemanAgentNameKeyboardMenuHandler(u32 operation, struct menuitem *item, un break; case MENUOP_SET: func0f10a51c(0, 0); - g_Menus[g_MpPlayerNum].data.filesel.unke2c = 1; + g_Menus[g_MpPlayerNum].data.fileman.unke2c = 1; break; } @@ -3079,7 +2854,7 @@ s32 filemanMainMenuDialog(u32 operation, struct menudialog *dialog, union handle switch (operation) { case MENUOP_OPEN: - g_Menus[g_MpPlayerNum].data.filesel.filetypeplusone = 0; + g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = 0; func0f110c5c(0, FILETYPE_SOLO); func0f188210(); @@ -3103,7 +2878,7 @@ bool filemanConsiderPushingFileSelectDialog(void) { if (g_Menus[g_MpPlayerNum].unk83c == 0) { g_Menus[g_MpPlayerNum].playernum = 0; - menuPushRootDialog(&g_FilemanMainMenuDialog, MENUROOT_FILESELECT); + menuPushRootDialog(&g_FilemanMainMenuDialog, MENUROOT_FILEMGR); return true; } diff --git a/src/include/constants.h b/src/include/constants.h index 54b32d9d1..0f8c23be4 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -1138,7 +1138,7 @@ #define MENUROOT_MPSETUP 3 #define MENUROOT_MPPAUSE 4 #define MENUROOT_MPENDSCREEN 5 -#define MENUROOT_FILESELECT 6 +#define MENUROOT_FILEMGR 6 #define MENUROOT_BOOTPAKMGR 7 #define MENUROOT_9 9 #define MENUROOT_10 10 diff --git a/src/include/game/pak/pak.h b/src/include/game/pak/pak.h index 334c6b028..c3cc7026b 100644 --- a/src/include/game/pak/pak.h +++ b/src/include/game/pak/pak.h @@ -128,7 +128,7 @@ u32 func0f11e4d4(void); void bitSetByIndex(u32 value, u32 *flags, bool set); u32 bitGetByIndex(u32 value, u32 *flags); void func0f11e5bc(u32 *flags); -u32 func0f11e618(void); +void func0f11e618(char *src, char *dst, u32 len); s8 func0f11e6b0(s32 arg0); u32 func0f11e750(void); u32 func0f11e78c(void); diff --git a/src/include/types.h b/src/include/types.h index 1a05f51cc..7cedad874 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3863,9 +3863,10 @@ struct menudata_mpend { u32 unke1c; }; -struct menudata_filesel { +// Not sure if fileman and pak are the same struct +struct menudata_fileman { u32 filetypeplusone; - u32 slotcount; + u32 device; u32 unke24; u32 unke28; u32 unke2c; @@ -3875,7 +3876,7 @@ struct menudata_pak { u32 unke1c; u32 device; u32 unke24; - u32 unke28; + u32 noteindex; }; struct menudata_main4mb { @@ -4492,7 +4493,7 @@ struct menu { struct menudata_mpsetup mpsetup; struct menudata_mppause mppause; struct menudata_mpend mpend; - struct menudata_filesel filesel; + struct menudata_fileman fileman; struct menudata_pak pak; struct menudata_main4mb main4mb; struct menudata_train train; @@ -7149,8 +7150,8 @@ struct remoteminething { }; struct pakdata { - /*0x000*/ OSPfsState filestates[16]; - /*0x200*/ bool filesinuse[16]; + /*0x000*/ OSPfsState notes[16]; + /*0x200*/ bool notesinuse[16]; /*0x240*/ u16 pagesused; /*0x242*/ u16 pagesfree; };