Decompile pakGameNoteListMenuHandler

This commit is contained in:
Ryan Dwyer 2020-11-10 17:15:17 +10:00
parent b3233cf00b
commit 15072ce5fb
6 changed files with 138 additions and 362 deletions

View File

@ -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:

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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);

View File

@ -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;
};