From 52c332dd5b16e440df10fe6865fc9244183cca13 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 12 Nov 2020 22:06:48 +1000 Subject: [PATCH] Rename more filemgr symbols --- src/game/camdraw.c | 4 +- src/game/data/data_01a3a0.c | 16 +- src/game/data/data_02a0e0.c | 2 +- src/game/endscreen.c | 10 +- src/game/game_0b63b0.c | 2 +- src/game/game_0f09f0.c | 6 +- src/game/game_102240.c | 4 +- src/game/game_107fb0.c | 758 ++++++++++++++-------------- src/game/game_177e00.c | 2 +- src/game/game_179060.c | 58 +-- src/game/gamefile.c | 63 +-- src/game/mplayer.c | 8 +- src/game/pak/pak.c | 8 +- src/game/training.c | 6 +- src/gvars/gvars.c | 6 +- src/include/constants.h | 1 + src/include/game/data/data_01a3a0.h | 34 +- src/include/game/game_0f09f0.h | 2 +- src/include/game/game_107fb0.h | 106 ++-- src/include/game/gamefile.h | 2 +- src/include/game/pak/pak.h | 4 +- src/include/gvars/gvars.h | 6 +- src/include/types.h | 207 +------- 23 files changed, 570 insertions(+), 745 deletions(-) diff --git a/src/game/camdraw.c b/src/game/camdraw.c index 2a28f7d54..0cf0124b7 100644 --- a/src/game/camdraw.c +++ b/src/game/camdraw.c @@ -8033,10 +8033,10 @@ glabel func0f15015c /* f1506d4: a078009d */ sb $t8,0x9d($v1) /* f1506d8: 00102600 */ sll $a0,$s0,0x18 /* f1506dc: 24090001 */ addiu $t1,$zero,0x1 -/* f1506e0: 3c018007 */ lui $at,%hi(g_SaveLocations+0x1c) +/* f1506e0: 3c018007 */ lui $at,%hi(g_FileLists+0x1c) /* f1506e4: 00047603 */ sra $t6,$a0,0x18 /* f1506e8: 27aa1044 */ addiu $t2,$sp,0x1044 -/* f1506ec: ac295bdc */ sw $t1,%lo(g_SaveLocations+0x1c)($at) +/* f1506ec: ac295bdc */ sw $t1,%lo(g_FileLists+0x1c)($at) /* f1506f0: afaa0010 */ sw $t2,0x10($sp) /* f1506f4: 01c02025 */ or $a0,$t6,$zero /* f1506f8: 02402825 */ or $a1,$s2,$zero diff --git a/src/game/data/data_01a3a0.c b/src/game/data/data_01a3a0.c index 6c0de6cf5..112f95a62 100644 --- a/src/game/data/data_01a3a0.c +++ b/src/game/data/data_01a3a0.c @@ -23,14 +23,14 @@ // 1ae10 struct menuitem menuitems_gamefiles2[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(100), 0x00000000, NULL }, // "Copy:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(103), 0x00000000, filemanOpenCopyFileMenuHandler }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(104), 0x00000000, filemanOpenCopyFileMenuHandler }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(105), 0x00000000, filemanOpenCopyFileMenuHandler }, // "Combat Simulator Player File" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(103), 0x00000000, filemgrOpenCopyFileMenuHandler }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(104), 0x00000000, filemgrOpenCopyFileMenuHandler }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(105), 0x00000000, filemgrOpenCopyFileMenuHandler }, // "Combat Simulator Player File" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(101), 0x00000000, NULL }, // "Delete:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(103), 0x00000000, filemanOpenDeleteFileMenuHandler }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(104), 0x00000000, filemanOpenDeleteFileMenuHandler }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(105), 0x00000000, filemanOpenDeleteFileMenuHandler }, // "Combat Simulator Player File" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(103), 0x00000000, filemgrOpenDeleteFileMenuHandler }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(104), 0x00000000, filemgrOpenDeleteFileMenuHandler }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(105), 0x00000000, filemgrOpenDeleteFileMenuHandler }, // "Combat Simulator Player File" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_OPTIONS(102), 0x00000000, (void *)&g_PakChoosePakMenuDialog }, // "Delete Game Notes..." { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -49,7 +49,7 @@ struct menudialog menudialog_gamefiles2 = { // 1af18 struct menuitem menuitems_fileselect2[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(96), 0x00000000, NULL }, // "Choose Your Reality" - { MENUITEMTYPE_LIST, 0, 0x00200000, 0x000000f5, 0x00000000, filemanChooseAgentListMenuHandler }, + { MENUITEMTYPE_LIST, 0, 0x00200000, 0x000000f5, 0x00000000, filemgrChooseAgentListMenuHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -58,7 +58,7 @@ struct menudialog menudialog_fileselect2 = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(95), // "Perfect Dark" menuitems_fileselect2, - filemanMainMenuDialog, + filemgrMainMenuDialog, 0x00000020, &menudialog_gamefiles2, }; diff --git a/src/game/data/data_02a0e0.c b/src/game/data/data_02a0e0.c index 0ca175bbc..db9c01213 100644 --- a/src/game/data/data_02a0e0.c +++ b/src/game/data/data_02a0e0.c @@ -815,7 +815,7 @@ struct menudialog menudialog_mpsavesetupname = { // 2ad14 struct menuitem menuitems_mpsavesetup[] = { { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPWEAPONS(230), (u32)&mpMenuTextSetupName, NULL }, // "Name:" - { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemanMenuTextDeviceName, 0x00000000, NULL }, + { 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" diff --git a/src/game/endscreen.c b/src/game/endscreen.c index 24f0b09f8..f7714355e 100644 --- a/src/game/endscreen.c +++ b/src/game/endscreen.c @@ -1313,8 +1313,8 @@ glabel endscreenPrepare /* f10ec5c: 0fc44270 */ jal func0f1109c0 /* f10ec60: a02e232c */ sb $t6,%lo(g_AltTitle)($at) .L0f10ec64: -/* f10ec64: 3c04800a */ lui $a0,%hi(var800a22c0) -/* f10ec68: 248422c0 */ addiu $a0,$a0,%lo(var800a22c0) +/* f10ec64: 3c04800a */ lui $a0,%hi(g_FilemgrLoadedMainFile) +/* f10ec68: 248422c0 */ addiu $a0,$a0,%lo(g_FilemgrLoadedMainFile) /* f10ec6c: 00002825 */ or $a1,$zero,$zero /* f10ec70: 0fc42539 */ jal func0f1094e4 /* f10ec74: 00003025 */ or $a2,$zero,$zero @@ -1494,7 +1494,7 @@ glabel endscreenPrepare // } // } // -// func0f1094e4(&var800a22c0, 0, 0); +// func0f1094e4(&g_FilemgrLoadedMainFile, 0, 0); // } // // if (g_MenuData.root == MENUROOT_ENDSCREEN) { @@ -1574,7 +1574,7 @@ void soloPushCoopModeEndscreen(void) } if (g_Vars.currentplayer == g_Vars.bond) { - func0f1094e4(&var800a22c0, 0, NULL); + func0f1094e4(&g_FilemgrLoadedMainFile, 0, NULL); } g_MpPlayerNum = prevplayernum; @@ -1640,7 +1640,7 @@ void soloPushAntiModeEndscreen(void) } } - func0f1094e4(&var800a22c0, 0, 0); + func0f1094e4(&g_FilemgrLoadedMainFile, 0, 0); } else { if (g_Vars.anti->aborted == 0 && (g_Vars.bond->isdead || g_Vars.bond->aborted || objectiveIsAllComplete() == false)) { diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index be61f77a8..7607323ea 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -5107,7 +5107,7 @@ glabel var7f1ad630 /* f0bade4: 00000000 */ nop /* f0bade8: 10000006 */ b .L0f0bae04 /* f0badec: 00402025 */ or $a0,$v0,$zero -/* f0badf0: 0fc43240 */ jal filemanConsiderPushingFileSelectDialog +/* f0badf0: 0fc43240 */ jal filemgrConsiderPushingFileSelectDialog /* f0badf4: 00000000 */ nop /* f0badf8: 10000002 */ b .L0f0bae04 /* f0badfc: 00402025 */ or $a0,$v0,$zero diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 81e594639..3fd9e4c89 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -2832,8 +2832,8 @@ glabel func0f0f3220 /* f0f32fc: 24080001 */ addiu $t0,$zero,0x1 .L0f0f3300: /* f0f3300: 11000009 */ beqz $t0,.L0f0f3328 -/* f0f3304: 3c04800a */ lui $a0,%hi(var800a22c0) -/* f0f3308: 248422c0 */ addiu $a0,$a0,%lo(var800a22c0) +/* f0f3304: 3c04800a */ lui $a0,%hi(g_FilemgrLoadedMainFile) +/* f0f3308: 248422c0 */ addiu $a0,$a0,%lo(g_FilemgrLoadedMainFile) /* f0f330c: afa80024 */ sw $t0,0x24($sp) /* f0f3310: 0fc42539 */ jal func0f1094e4 /* f0f3314: afa9001c */ sw $t1,0x1c($sp) @@ -13944,7 +13944,7 @@ void func0f0fd548(s32 arg0) } GLOBAL_ASM( -glabel func0f0fd570 +glabel menuIsDialogOpen /* f0fd570: 3c028007 */ lui $v0,%hi(g_MpPlayerNum) /* f0fd574: 8c421448 */ lw $v0,%lo(g_MpPlayerNum)($v0) /* f0fd578: 3c0f800a */ lui $t7,%hi(g_Menus) diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 244642c61..df41eedce 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -2652,7 +2652,7 @@ s32 menudialog0010559c(u32 operation, struct menudialog *dialog, union handlerda break; case MENUOP_CLOSE: if ((g_Vars.unk000458 & 1) && g_Vars.coopplayernum < 0 && g_Vars.antiplayernum < 0) { - if (func0f1094e4(&var800a22c0, 1, 0) == 0) { + if (func0f1094e4(&g_FilemgrLoadedMainFile, 1, 0) == 0) { data->dialog1.preventclose = true; } @@ -2753,7 +2753,7 @@ s32 menuhandlerControlStyle(u32 operation, struct menuitem *item, union handlerd s32 menuhandler001057ec(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - func0f1094e4(&var800a22c0, 2, 0); + func0f1094e4(&g_FilemgrLoadedMainFile, 2, 0); } return 0; diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index da60c4587..d7860e4d4 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -24,7 +24,7 @@ #include "lib/lib_13900.h" #include "types.h" -char *filemanGetDeviceName(s32 index) +char *filemgrGetDeviceName(s32 index) { u16 names[] = { L_OPTIONS(112), // "Controller Pak 1" @@ -42,10 +42,10 @@ char *filemanGetDeviceName(s32 index) return NULL; } -s32 filemanDeviceNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrDeviceNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { - if ((g_Menus[g_MpPlayerNum].unke3c & 0x7f) > 4) { + if ((g_Menus[g_MpPlayerNum].unke3c & 0x7f) >= SAVEDEVICE_INVALID) { return true; } } @@ -53,19 +53,12 @@ s32 filemanDeviceNameMenuHandler(u32 operation, struct menuitem *item, union han return 0; } -char *filemanMenuTextDeviceName(struct menuitem *item) +char *filemgrMenuTextDeviceName(struct menuitem *item) { - return filemanGetDeviceName(g_Menus[g_MpPlayerNum].unke3c & 0x7f); + return filemgrGetDeviceName(g_Menus[g_MpPlayerNum].unke3c & 0x7f); } -/** - * Concatenates an MP player name with the amount of time played - * for displaying in the copy/delete MP player menus. - * - * Suspected that arg2 is a save file type (solo, MP game, MP player) - * and that this builds the title for whatever the file type is. - */ -void func0f1080d0(char *buffer, struct savelocation000 *arg1, u32 arg2) +void filemgrGetFileName(char *buffer, struct savelocation000 *arg1, u32 filetype) { s32 days; char tmpbuffer1[28]; @@ -77,12 +70,13 @@ void func0f1080d0(char *buffer, struct savelocation000 *arg1, u32 arg2) s32 seconds; s32 totalinhours; - switch (arg2) { - case 0: - case 1: + switch (filetype) { + case FILETYPE_SOLO: + case FILETYPE_MPSETUP: func0f0d564c(arg1->unk06, tmpbuffer1, 0); break; - case 2: + case FILETYPE_MPPLAYER: + // MP Player filenames have the play duration appended to the name func0f18d9a4(arg1->unk06, namebuffer, &totalinseconds); pos = sprintf(tmpbuffer1, "%s-", namebuffer); @@ -113,7 +107,7 @@ const char var7f1b2f28[] = "Setup: item = %x\n"; const u32 var7f1b2f3c[] = {0xa0, 0x31, 0x4e, 0x4a0}; -s32 filemanFileNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrFileNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { if (g_Menus[g_MpPlayerNum].unke38 == 0) { @@ -124,10 +118,10 @@ s32 filemanFileNameMenuHandler(u32 operation, struct menuitem *item, union handl return 0; } -char *filemanMenuTextDeleteFileName(struct menuitem *item) +char *filemgrMenuTextDeleteFileName(struct menuitem *item) { if (g_Menus[g_MpPlayerNum].unke38) { - func0f1080d0(g_StringPointer, + filemgrGetFileName(g_StringPointer, g_Menus[g_MpPlayerNum].unke38, g_Menus[g_MpPlayerNum].unke3d); return g_StringPointer; @@ -138,12 +132,12 @@ char *filemanMenuTextDeleteFileName(struct menuitem *item) void func0f108324(s32 arg0) { - s32 value = func0f11e6b0(arg0); + s32 index = pakSearch(arg0); - if (value >= 0) { - g_Menus[g_MpPlayerNum].unke3c = value; + if (index >= 0) { + g_Menus[g_MpPlayerNum].unke3c = index; } else { - g_Menus[g_MpPlayerNum].unke3c = 5; + g_Menus[g_MpPlayerNum].unke3c = SAVEDEVICE_INVALID; } } @@ -171,7 +165,7 @@ u16 g_PakFailReasons[] = { L_OPTIONS(330), // "Game note delete failed." }; -char *filemanMenuTextFailReason(struct menuitem *item) +char *filemgrMenuTextFailReason(struct menuitem *item) { return langGet(g_PakFailReasons[g_Menus[g_MpPlayerNum].errno]); } @@ -185,11 +179,11 @@ char *func0f108484(struct menuitem *item) return g_StringPointer; } -s32 filemanDeviceNameForErrorMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrDeviceNameForErrorMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKHIDDEN) { - if ((g_Menus[g_MpPlayerNum].unke3c & 0x7f) > 4) { - return 1; + if ((g_Menus[g_MpPlayerNum].unke3c & 0x7f) >= SAVEDEVICE_INVALID) { + return true; } switch (g_Menus[g_MpPlayerNum].errno) { @@ -210,9 +204,9 @@ s32 filemanDeviceNameForErrorMenuHandler(u32 operation, struct menuitem *item, u return false; } -char *filemanMenuTextDeviceNameForError(struct menuitem *item) +char *filemgrMenuTextDeviceNameForError(struct menuitem *item) { - sprintf(g_StringPointer, "%s", filemanGetDeviceName(g_Menus[g_MpPlayerNum].unke3c & 0x7f)); + sprintf(g_StringPointer, "%s", filemgrGetDeviceName(g_Menus[g_MpPlayerNum].unke3c & 0x7f)); if (g_Menus[g_MpPlayerNum].errno != FILEERROR_PAKREMOVED) { s32 i = 0; @@ -239,34 +233,30 @@ const char var7f1b3010[] = "DELETING: %x-%x\n"; const char var7f1b3024[] = "MyResult: %d\n"; const char var7f1b3034[] = "PakOperationSearch>> Search for pak: %x = %d\n"; -void filemanPushErrorDialog(u16 errno) +void filemgrPushErrorDialog(u16 errno) { g_Menus[g_MpPlayerNum].errno = errno; - menuPushDialog(&g_FilemanErrorMenuDialog); + menuPushDialog(&g_FilemgrErrorMenuDialog); } -struct menuitem g_FilemanErrorMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemanMenuTextDeviceNameForError, 0x00000000, filemanDeviceNameForErrorMenuHandler }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemanMenuTextFailReason, 0x00000000, NULL }, +struct menuitem g_FilemgrErrorMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextDeviceNameForError, 0x00000000, filemgrDeviceNameForErrorMenuHandler }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextFailReason, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(321), 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanErrorMenuDialog = { +struct menudialog g_FilemgrErrorMenuDialog = { MENUDIALOGTYPE_DANGER, L_OPTIONS(320), // "Error" - g_FilemanErrorMenuItems, + g_FilemgrErrorMenuItems, NULL, 0x00000080, NULL, }; -/** - * This function is a bit weird. It can return a pointer to a string - * or return a regular s8 (ie. not a pointer). - */ -s32 func0f1086b8(s32 arg0, s32 arg1, s32 arg2) +s32 filemgrGetDeviceNameOrStartIndex(s32 listnum, s32 operation, s32 optionindex) { u16 names[] = { L_OPTIONS(111), // "Game Pak" @@ -277,16 +267,16 @@ s32 func0f1086b8(s32 arg0, s32 arg1, s32 arg2) }; s32 i; - s32 remaining = arg2; + s32 remaining = optionindex; for (i = 0; i < ARRAYCOUNT(names); i++) { - if (g_SaveLocations.locations[arg0]->unk300[i] != -1) { + if (g_FileLists[listnum]->devicestartindexes[i] != -1) { if (remaining == 0) { - if (arg1 == 4) { + if (operation == MENUOP_GETOPTGROUPTEXT) { return (s32)langGet(names[i]); } - return g_SaveLocations.locations[arg0]->unk300[i]; + return g_FileLists[listnum]->devicestartindexes[i]; } remaining--; @@ -296,7 +286,7 @@ s32 func0f1086b8(s32 arg0, s32 arg1, s32 arg2) return 0; } -char *filemanMenuTextErrorTitle(struct menuitem *item) +char *filemgrMenuTextErrorTitle(struct menuitem *item) { u16 messages[] = { L_OPTIONS(331), // "Error Loading Game" @@ -336,7 +326,7 @@ char *filemanMenuTextErrorTitle(struct menuitem *item) return langGet(messages[8]); } -char *filemanMenuTextFileType(struct menuitem *item) +char *filemgrMenuTextFileType(struct menuitem *item) { u16 names[] = { L_OPTIONS(103), // "Single Player Agent File" @@ -379,7 +369,7 @@ void func0f10898c(void) case 104: case 105: case 106: - func00012cb4(g_Menus[g_MpPlayerNum].unke44, align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1])); + func00012cb4(g_Menus[g_MpPlayerNum].unke44, align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1])); break; case 100: case 101: @@ -404,7 +394,7 @@ void func0f108a80(void) case 7: case 8: func00012cb4(g_Menus[g_MpPlayerNum].unke44, - align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1])); + align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1])); break; case 100: g_Vars.unk00047c = g_Menus[g_MpPlayerNum].unke48; @@ -437,16 +427,16 @@ void func0f108a80(void) } } -s32 filemanRetrySaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrRetrySaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - func0f109038(2); + filemgrRetrySave(2); } return 0; } -s32 filemanSaveElsewhereYesMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrSaveElsewhereYesMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { s32 sp1c; @@ -470,13 +460,13 @@ s32 filemanSaveElsewhereYesMenuHandler(u32 operation, struct menuitem *item, uni break; } - func0f10a51c(g_Menus[g_MpPlayerNum].unke42 + 9, sp1c); + filemgrPushSelectLocationDialog(g_Menus[g_MpPlayerNum].unke42 + 9, sp1c); } return 0; } -s32 filemanCancelSave2MenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrCancelSave2MenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuCloseDialog(); @@ -493,13 +483,13 @@ s32 filemanCancelSave2MenuHandler(u32 operation, struct menuitem *item, union ha s32 func0f108d14(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - func0f109038(2); + filemgrRetrySave(2); } return 0; } -s32 filemanAcknowledgeFileLostMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrAcknowledgeFileLostMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuCloseDialog(); @@ -510,53 +500,53 @@ s32 filemanAcknowledgeFileLostMenuHandler(u32 operation, struct menuitem *item, return 0; } -void filemanEraseCorruptFile(void) +void filemgrEraseCorruptFile(void) { s32 value; s32 i; - value = func0f11e6b0(g_Menus[g_MpPlayerNum].unke4c); + value = pakSearch(g_Menus[g_MpPlayerNum].unke4c); if (value >= 0) { - func0f116860(value, g_Menus[g_MpPlayerNum].unke48); + filemgrDeleteFile(value, g_Menus[g_MpPlayerNum].unke48); } for (i = 0; i < 4; i++) { - if (g_SaveLocations.locations[i]) { - g_SaveLocations.locations[i]->unk30c = 1; + if (g_FileLists[i]) { + g_FileLists[i]->outdated = true; } } - menuPushDialog(&g_FilemanFileLostMenuDialog); + menuPushDialog(&g_FilemgrFileLostMenuDialog); } -s32 filemanInsertOriginalPakMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) +s32 filemgrInsertOriginalPakMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_TICK) { if (g_Menus[g_MpPlayerNum].curframe && g_Menus[g_MpPlayerNum].curframe->dialog == dialog) { - func0f109038(0); + filemgrRetrySave(0); } } return false; } -s32 filemanReinsertedOkMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrReinsertedOkMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { func0f11c7a0(); - func0f109038(1); + filemgrRetrySave(1); } return 0; } -s32 filemanReinsertedCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrReinsertedCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { if (g_Menus[g_MpPlayerNum].unke42 < 100 && g_Menus[g_MpPlayerNum].unke42 != 1) { - func0f0f3704(&g_FilemanSaveElsewhereMenuDialog); + func0f0f3704(&g_FilemgrSaveElsewhereMenuDialog); } else { menuPopDialog(); } @@ -565,13 +555,13 @@ s32 filemanReinsertedCancelMenuHandler(u32 operation, struct menuitem *item, uni return 0; } -char *filemanMenuTextInsertOriginalPak(struct menuitem *item) +char *filemgrMenuTextInsertOriginalPak(struct menuitem *item) { char fullbuffer[100]; char namebuffer[100]; s32 i; - sprintf(namebuffer, filemanMenuTextFileType(item)); + sprintf(namebuffer, filemgrMenuTextFileType(item)); // Replace first line break in namebuffer with a terminator i = 0; @@ -592,34 +582,40 @@ char *filemanMenuTextInsertOriginalPak(struct menuitem *item) return g_StringPointer; } -void func0f109038(s32 arg0) +/** + * Context is: + * 0 on tick while reinsert dialog is open + * 1 when user selects OK on reinsert dialog + * 2 when user selects Retry Save on error dialog + */ +void filemgrRetrySave(s32 context) { - s32 value = func0f11e6b0(g_Menus[g_MpPlayerNum].unke4c); + s32 index = pakSearch(g_Menus[g_MpPlayerNum].unke4c); - if (value == -1) { - if (arg0 == 1) { - filemanPushErrorDialog(FILEERROR_NOPAK); + if (index == -1) { + if (context == 1) { + filemgrPushErrorDialog(FILEERROR_NOPAK); } - if (arg0 == 2) { - func0f0f3704(&g_FilemanInsertOriginalPakMenuDialog); + if (context == 2) { + func0f0f3704(&g_FilemgrInsertOriginalPakMenuDialog); } - } else if (fileSave(value, true)) { - if (arg0 == 2) { - g_Menus[g_MpPlayerNum].unke3c = value; + } else if (fileSave(index, true)) { + if (context == 2) { + g_Menus[g_MpPlayerNum].unke3c = index; if (g_Menus[g_MpPlayerNum].unke42 < 100) { - filemanPushErrorDialog(FILEERROR_SAVEFAILED); + filemgrPushErrorDialog(FILEERROR_SAVEFAILED); } else { - filemanPushErrorDialog(FILEERROR_LOADFAILED); + filemgrPushErrorDialog(FILEERROR_LOADFAILED); } } else { func0f108324(g_Menus[g_MpPlayerNum].unke4c); if (g_Menus[g_MpPlayerNum].unke42 < 100) { - func0f0f3704(&g_FilemanSaveErrorMenuDialog); + func0f0f3704(&g_FilemgrSaveErrorMenuDialog); } else { - filemanEraseCorruptFile(); + filemgrEraseCorruptFile(); } } } @@ -628,7 +624,7 @@ void func0f109038(s32 arg0) bool fileSave(s32 arg0, bool arg1) { s32 errno = 0; - u32 sp40 = (g_Menus[g_MpPlayerNum].unke50 & 1) != 0; + u32 sp40 = (g_Menus[g_MpPlayerNum].isretryingsave & 1) != 0; const s32 sp30[] = {0x80, 0x40, 0x20, 0x08}; s32 sp2c; @@ -658,15 +654,13 @@ bool fileSave(s32 arg0, bool arg1) case 6: case 7: case 8: - { - sp2c = 0; - func0f0d5690(g_Menus[g_MpPlayerNum].unke44, g_Menus[g_MpPlayerNum].unke53); - errno = func0f116828(arg0, - g_Menus[g_MpPlayerNum].unke48, - sp30[g_Menus[g_MpPlayerNum].unke42 - 6], - g_Menus[g_MpPlayerNum].unke44, &sp2c, 0); - g_SaveLocations.unk10[g_Menus[g_MpPlayerNum].unke42 - 6] = 1; - } + sp2c = 0; + func0f0d5690(g_Menus[g_MpPlayerNum].unke44, g_Menus[g_MpPlayerNum].unke53); + errno = func0f116828(arg0, + g_Menus[g_MpPlayerNum].unke48, + sp30[g_Menus[g_MpPlayerNum].unke42 - 6], + g_Menus[g_MpPlayerNum].unke44, &sp2c, 0); + var80075bd0[g_Menus[g_MpPlayerNum].unke42 - 6] = 1; break; case 100: errno = func0f10fac8(arg0); @@ -702,7 +696,7 @@ bool fileSave(s32 arg0, bool arg1) } if (sp40 && errno == 0) { - menuPushDialog(&g_FilemanFileSavedMenuDialog); + menuPushDialog(&g_FilemgrFileSavedMenuDialog); } } else { if (errno == 0) { @@ -737,7 +731,7 @@ bool func0f1094e4(struct savelocation_2d8 *arg0, s32 arg1, void *arg2) if (arg1 != -1) { g_Menus[g_MpPlayerNum].unke42 = arg1; g_Menus[g_MpPlayerNum].unke44 = arg2; - g_Menus[g_MpPlayerNum].unke50 = 0; + g_Menus[g_MpPlayerNum].isretryingsave = 0; var800a21f8.unk00 = 0; } @@ -748,22 +742,22 @@ bool func0f1094e4(struct savelocation_2d8 *arg0, s32 arg1, void *arg2) // empty } - value = func0f11e6b0(g_Menus[g_MpPlayerNum].unke4c); + value = pakSearch(g_Menus[g_MpPlayerNum].unke4c); if (value == -1) { - g_Menus[g_MpPlayerNum].unke50 |= 1; - menuPushDialog(&g_FilemanInsertOriginalPakMenuDialog); + g_Menus[g_MpPlayerNum].isretryingsave |= 1; + menuPushDialog(&g_FilemgrInsertOriginalPakMenuDialog); return false; } - if (fileSave(value, false)) { - g_Menus[g_MpPlayerNum].unke50 |= 1; + if (fileSave(value, false) != 0) { + g_Menus[g_MpPlayerNum].isretryingsave |= 1; func0f108324(g_Menus[g_MpPlayerNum].unke4c); if (g_Menus[g_MpPlayerNum].unke42 < 100) { - menuPushDialog(&g_FilemanSaveErrorMenuDialog); + menuPushDialog(&g_FilemgrSaveErrorMenuDialog); } else { - filemanEraseCorruptFile(); + filemgrEraseCorruptFile(); } return false; @@ -772,112 +766,112 @@ bool func0f1094e4(struct savelocation_2d8 *arg0, s32 arg1, void *arg2) return true; } -void filemanDeleteFile(void) +void filemgrDeleteCurrentFile(void) { bool error = false; - s8 value = func0f11e6b0(var800a21f0.unk04); + s8 index = pakSearch(g_FilemgrFileToDelete.unk04); s32 i; - if (value >= 0) { - if (func0f116860(value, var800a21f0.unk00)) { + if (index >= 0) { + if (filemgrDeleteFile(index, g_FilemgrFileToDelete.unk00)) { error = true; } } else { error = true; } - g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk30c = true; + g_FileLists[g_Menus[g_MpPlayerNum].listnum]->outdated = true; if (error) { - g_Menus[g_MpPlayerNum].unke3c = value; - filemanPushErrorDialog(FILEERROR_DELETEFAILED); + g_Menus[g_MpPlayerNum].unke3c = index; + filemgrPushErrorDialog(FILEERROR_DELETEFAILED); } else { for (i = 0; i < 4; i++) { - if (var800a21f0.unk00 == g_MpPlayers[i].unk4c.unk00 - && var800a21f0.unk04 == g_MpPlayers[i].unk4c.unk04) { + if (g_FilemgrFileToDelete.unk00 == g_MpPlayers[i].unk4c.unk00 + && g_FilemgrFileToDelete.unk04 == g_MpPlayers[i].unk4c.unk04) { func0f18800c(i, true); } } } } -struct menuitem g_FilemanFileSavedMenuItems[] = { +struct menuitem g_FilemgrFileSavedMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS(346), 0x00000000, NULL }, // "File Saved." { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(347), 0x00000000, NULL }, // "OK" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanFileSavedMenuDialog = { +struct menudialog g_FilemgrFileSavedMenuDialog = { MENUDIALOGTYPE_SUCCESS, L_OPTIONS(345), // "Cool!" - g_FilemanFileSavedMenuItems, + g_FilemgrFileSavedMenuItems, NULL, 0x00000080, NULL, }; -struct menuitem g_FilemanSaveErrorMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemanMenuTextDeviceName, 0x00000000, filemanDeviceNameMenuHandler }, +struct menuitem g_FilemgrSaveErrorMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextDeviceName, 0x00000000, filemgrDeviceNameMenuHandler }, { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS(348), 0x00000000, NULL }, // "An error occurred while trying to save" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(349), 0x00000000, filemanRetrySaveMenuHandler }, // "Try Again" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(350), 0x00000000, filemanSaveElsewhereYesMenuHandler }, // "Save Elsewhere" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(351), 0x00000000, filemanCancelSave2MenuHandler }, // "Cancel" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(349), 0x00000000, filemgrRetrySaveMenuHandler }, // "Try Again" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(350), 0x00000000, filemgrSaveElsewhereYesMenuHandler }, // "Save Elsewhere" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(351), 0x00000000, filemgrCancelSave2MenuHandler }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanSaveErrorMenuDialog = { +struct menudialog g_FilemgrSaveErrorMenuDialog = { MENUDIALOGTYPE_DANGER, - (u32)&filemanMenuTextErrorTitle, - g_FilemanSaveErrorMenuItems, + (u32)&filemgrMenuTextErrorTitle, + g_FilemgrSaveErrorMenuItems, NULL, 0x000000a0, NULL, }; -struct menuitem g_FilemanFileLostMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemanMenuTextDeviceName, 0x00000000, filemanDeviceNameMenuHandler }, +struct menuitem g_FilemgrFileLostMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextDeviceName, 0x00000000, filemgrDeviceNameMenuHandler }, { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPWEAPONS(251), 0x00000000, NULL }, // "The saved file has been erased due to corruption or damage." - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(354), 0x00000000, filemanAcknowledgeFileLostMenuHandler }, // "Cancel" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(354), 0x00000000, filemgrAcknowledgeFileLostMenuHandler }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanFileLostMenuDialog = { +struct menudialog g_FilemgrFileLostMenuDialog = { MENUDIALOGTYPE_DANGER, - (u32)&filemanMenuTextErrorTitle, - g_FilemanFileLostMenuItems, + (u32)&filemgrMenuTextErrorTitle, + g_FilemgrFileLostMenuItems, NULL, 0x000000a0, NULL, }; -struct menuitem g_FilemanSaveElsewhereMenuItems[] = { +struct menuitem g_FilemgrSaveElsewhereMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS(360), 0x00000000, NULL }, // "Would you like to save your file elsewhere?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(361), 0x00000000, filemanSaveElsewhereYesMenuHandler }, // "Yes" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(362), 0x00000000, filemanCancelSave2MenuHandler }, // "No" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(361), 0x00000000, filemgrSaveElsewhereYesMenuHandler }, // "Yes" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(362), 0x00000000, filemgrCancelSave2MenuHandler }, // "No" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanSaveElsewhereMenuDialog = { +struct menudialog g_FilemgrSaveElsewhereMenuDialog = { MENUDIALOGTYPE_DANGER, L_OPTIONS(359), // "Save" - g_FilemanSaveElsewhereMenuItems, + g_FilemgrSaveElsewhereMenuItems, NULL, 0x000000a0, NULL, }; -struct menuitem g_FilemanInsertOriginalPakMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemanMenuTextInsertOriginalPak, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(365), 0x00000000, filemanReinsertedOkMenuHandler }, // "OK" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(366), 0x00000000, filemanReinsertedCancelMenuHandler }, // "Cancel" +struct menuitem g_FilemgrInsertOriginalPakMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextInsertOriginalPak, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(365), 0x00000000, filemgrReinsertedOkMenuHandler }, // "OK" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(366), 0x00000000, filemgrReinsertedCancelMenuHandler }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanInsertOriginalPakMenuDialog = { +struct menudialog g_FilemgrInsertOriginalPakMenuDialog = { MENUDIALOGTYPE_DANGER, - (u32)&filemanMenuTextErrorTitle, - g_FilemanInsertOriginalPakMenuItems, - filemanInsertOriginalPakMenuDialog, + (u32)&filemgrMenuTextErrorTitle, + g_FilemgrInsertOriginalPakMenuItems, + filemgrInsertOriginalPakMenuDialog, 0x000000a0, NULL, }; @@ -888,19 +882,19 @@ void func0f1097d0(s32 device) const u32 sizes[] = {0x80, 0x40, 0x20, 0x08}; void *thing; - if (g_SaveLocations.locations[0]) { - var800a21e8.unk00 = g_SaveLocations.locations[0]->unk2d8[device].unk00; - var800a21e8.unk04 = g_SaveLocations.locations[0]->unk2d8[device].unk04; + if (g_FileLists[0]) { + var800a21e8.unk00 = g_FileLists[0]->unk2d8[device].unk00; + var800a21e8.unk04 = g_FileLists[0]->unk2d8[device].unk04; - thing = func00012ab0(align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1])); + thing = func00012ab0(align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1])); if (thing) { - func0f1094e4(&var800a21e0, g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone + 103, thing); + func0f1094e4(&g_FilemgrFileToCopy, g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone + 103, thing); } else { - filemanPushErrorDialog(FILEERROR_OUTOFMEMORY); + filemgrPushErrorDialog(FILEERROR_OUTOFMEMORY); } - g_SaveLocations.unk10[g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1] = 1; + var80075bd0[g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1] = 1; } } @@ -914,11 +908,11 @@ u32 var80074660 = 0x00000000; void func0f109954(s32 arg0) { - if (g_SaveLocations.locations[0]) { - var800a22c0.unk00 = g_SaveLocations.locations[0]->unk2d8[arg0].unk00; - var800a22c0.unk04 = g_SaveLocations.locations[0]->unk2d8[arg0].unk04; + if (g_FileLists[0]) { + g_FilemgrLoadedMainFile.unk00 = g_FileLists[0]->unk2d8[arg0].unk00; + g_FilemgrLoadedMainFile.unk04 = g_FileLists[0]->unk2d8[arg0].unk04; - func0f1094e4(&var800a22c0, 0, NULL); + func0f1094e4(&g_FilemgrLoadedMainFile, 0, NULL); } } @@ -929,12 +923,12 @@ void func0f1099a8(char *buffer, struct savelocation000 *arg1) localbuffer[0] = '\0'; - switch (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->filetype) { - case 0: - case 1: + switch (g_FileLists[g_Menus[g_MpPlayerNum].listnum]->filetype) { + case FILETYPE_SOLO: + case FILETYPE_MPSETUP: func0f0d564c(arg1->unk06, localbuffer, 0); break; - case 2: + case FILETYPE_MPPLAYER: func0f18d9a4(arg1->unk06, localbuffer, &sp20); break; } @@ -944,7 +938,7 @@ void func0f1099a8(char *buffer, struct savelocation000 *arg1) const char var7f1b3294[] = "GETFileNameForThePurposesOfTheFileRenamingChecker: Unknown type %d\n"; -void func0f109a68(char *buffer) +void filemgrGetRenameName(char *buffer) { s32 i; s32 j; @@ -988,7 +982,7 @@ void func0f109a68(char *buffer) } } -void func0f109bb4(char *name) +void filemgrSetRenameName(char *name) { switch (g_Menus[g_MpPlayerNum].unke3e) { case 0: @@ -1027,7 +1021,7 @@ const char var7f1b33c0[] = "Write Attempt Made...\n"; const char var7f1b33d8[] = "decided location: %d\n"; GLOBAL_ASM( -glabel func0f109c8c +glabel filemgrIsNameAvailable /* f109c8c: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) /* f109c90: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6) /* f109c94: 3c18800a */ lui $t8,%hi(g_Menus+0xe3f) @@ -1041,11 +1035,11 @@ glabel func0f109c8c /* f109cb4: 000f7900 */ sll $t7,$t7,0x4 /* f109cb8: 030fc021 */ addu $t8,$t8,$t7 /* f109cbc: 9318ee3f */ lbu $t8,%lo(g_Menus+0xe3f)($t8) -/* f109cc0: 3c038007 */ lui $v1,%hi(g_SaveLocations) +/* f109cc0: 3c038007 */ lui $v1,%hi(g_FileLists) /* f109cc4: 3c058007 */ lui $a1,%hi(var8007465c) /* f109cc8: 0018c880 */ sll $t9,$t8,0x2 /* f109ccc: 00791821 */ addu $v1,$v1,$t9 -/* f109cd0: 8c635bc0 */ lw $v1,%lo(g_SaveLocations)($v1) +/* f109cd0: 8c635bc0 */ lw $v1,%lo(g_FileLists)($v1) /* f109cd4: 00a42821 */ addu $a1,$a1,$a0 /* f109cd8: afbf002c */ sw $ra,0x2c($sp) /* f109cdc: afb50028 */ sw $s5,0x28($sp) @@ -1083,7 +1077,7 @@ glabel func0f109c8c .L0f109d4c: /* f109d4c: 27b40064 */ addiu $s4,$sp,0x64 /* f109d50: a3a00064 */ sb $zero,0x64($sp) -/* f109d54: 0fc4269a */ jal func0f109a68 +/* f109d54: 0fc4269a */ jal filemgrGetRenameName /* f109d58: 02802025 */ or $a0,$s4,$zero /* f109d5c: 93a90064 */ lbu $t1,0x64($sp) /* f109d60: 27a30064 */ addiu $v1,$sp,0x64 @@ -1121,7 +1115,7 @@ glabel func0f109c8c /* f109dcc: 3c0c8007 */ lui $t4,%hi(g_MpPlayerNum) /* f109dd0: 8d8c1448 */ lw $t4,%lo(g_MpPlayerNum)($t4) /* f109dd4: 3c0e800a */ lui $t6,%hi(g_Menus+0xe3f) -/* f109dd8: 3c188007 */ lui $t8,%hi(g_SaveLocations) +/* f109dd8: 3c188007 */ lui $t8,%hi(g_FileLists) /* f109ddc: 000c68c0 */ sll $t5,$t4,0x3 /* f109de0: 01ac6823 */ subu $t5,$t5,$t4 /* f109de4: 000d6880 */ sll $t5,$t5,0x2 @@ -1135,7 +1129,7 @@ glabel func0f109c8c /* f109e04: 00001025 */ or $v0,$zero,$zero /* f109e08: 000e7880 */ sll $t7,$t6,0x2 /* f109e0c: 030fc021 */ addu $t8,$t8,$t7 -/* f109e10: 8f185bc0 */ lw $t8,%lo(g_SaveLocations)($t8) +/* f109e10: 8f185bc0 */ lw $t8,%lo(g_FileLists)($t8) /* f109e14: 0fc4266a */ jal func0f1099a8 /* f109e18: 03122821 */ addu $a1,$t8,$s2 /* f109e1c: 93b90040 */ lbu $t9,0x40($sp) @@ -1191,48 +1185,48 @@ glabel func0f109c8c void func0f109ec4(void) { - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->spacesfree[g_Menus[g_MpPlayerNum].unke52] > 0) { - if (func0f109c8c(g_Menus[g_MpPlayerNum].unke52) == 0) { - menuPushDialog(&g_FilemanDuplicateFileNameMenuDialog); + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum]->spacesfree[g_Menus[g_MpPlayerNum].device] > 0) { + if (!filemgrIsNameAvailable(g_Menus[g_MpPlayerNum].device)) { + menuPushDialog(&g_FilemgrDuplicateFileNameMenuDialog); } else { menuPopDialog(); if (g_Menus[g_MpPlayerNum].unke3e == 0) { - func0f109954(g_Menus[g_MpPlayerNum].unke52); + func0f109954(g_Menus[g_MpPlayerNum].device); } else if (g_Menus[g_MpPlayerNum].unke3e == 5) { // empty } else if (g_Menus[g_MpPlayerNum].unke3e == 6) { struct savelocation_2d8 thing; - thing.unk00 = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk2d8[g_Menus[g_MpPlayerNum].unke52].unk00; - thing.unk04 = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk2d8[g_Menus[g_MpPlayerNum].unke52].unk04; + thing.unk00 = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk2d8[g_Menus[g_MpPlayerNum].device].unk00; + thing.unk04 = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk2d8[g_Menus[g_MpPlayerNum].device].unk04; func0f1094e4(&thing, 3, (void *)g_MpPlayerNum); } else if (g_Menus[g_MpPlayerNum].unke3e == 7) { struct savelocation_2d8 thing; - thing.unk00 = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk2d8[g_Menus[g_MpPlayerNum].unke52].unk00; - thing.unk04 = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk2d8[g_Menus[g_MpPlayerNum].unke52].unk04; + thing.unk00 = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk2d8[g_Menus[g_MpPlayerNum].device].unk00; + thing.unk04 = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk2d8[g_Menus[g_MpPlayerNum].device].unk04; func0f1094e4(&thing, 4, NULL); } else if (g_Menus[g_MpPlayerNum].unke3e >= 9) { struct savelocation_2d8 thing; - thing.unk00 = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk2d8[g_Menus[g_MpPlayerNum].unke52].unk00; - thing.unk04 = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk2d8[g_Menus[g_MpPlayerNum].unke52].unk04; + thing.unk00 = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk2d8[g_Menus[g_MpPlayerNum].device].unk00; + thing.unk04 = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk2d8[g_Menus[g_MpPlayerNum].device].unk04; func0f1094e4(&thing, -1, NULL); } else { - func0f1097d0(g_Menus[g_MpPlayerNum].unke52); + func0f1097d0(g_Menus[g_MpPlayerNum].device); } } } } -s32 filemanConfirmRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrConfirmRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { char *name = data->keyboard.string; switch (operation) { case MENUOP_GETTEXT: - func0f109a68(name); + filemgrGetRenameName(name); break; case MENUOP_SETTEXT: - func0f109bb4(name); + filemgrSetRenameName(name); break; case MENUOP_SET: func0f109ec4(); @@ -1242,17 +1236,17 @@ s32 filemanConfirmRenameMenuHandler(u32 operation, struct menuitem *item, union return 0; } -s32 filemanDuplicateRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrDuplicateRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); - menuPushDialog(&g_FilemanChangeFileNameMenuDialog); + menuPushDialog(&g_FilemgrChangeFileNameMenuDialog); } return 0; } -s32 filemanDuplicateCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrDuplicateCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); @@ -1262,57 +1256,57 @@ s32 filemanDuplicateCancelMenuHandler(u32 operation, struct menuitem *item, unio return 0; } -char *filemanMenuTextDeviceNameContainingDuplicateFile(struct menuitem *item) +char *filemgrMenuTextDeviceNameContainingDuplicateFile(struct menuitem *item) { - return filemanGetDeviceName(g_Menus[g_MpPlayerNum].unke52); + return filemgrGetDeviceName(g_Menus[g_MpPlayerNum].device); } -char *filemanMenuTextDuplicateFileName(struct menuitem *item) +char *filemgrMenuTextDuplicateFileName(struct menuitem *item) { char buffer[32]; - func0f109a68(buffer); + filemgrGetRenameName(buffer); sprintf(g_StringPointer, "%s\n", buffer); return g_StringPointer; } -struct menuitem g_FilemanChangeFileNameMenuItems[] = { +struct menuitem g_FilemgrChangeFileNameMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPWEAPONS(239), 0x00000000, NULL }, // "Enter new file name:" - { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, filemanConfirmRenameMenuHandler }, + { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, filemgrConfirmRenameMenuHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanChangeFileNameMenuDialog = { +struct menudialog g_FilemgrChangeFileNameMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPWEAPONS(238), // "Change File Name" - g_FilemanChangeFileNameMenuItems, + g_FilemgrChangeFileNameMenuItems, NULL, 0x00000080, NULL, }; -struct menuitem g_FilemanDuplicateFileNameMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemanMenuTextDeviceNameContainingDuplicateFile, 0x00000000, NULL }, +struct menuitem g_FilemgrDuplicateFileNameMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemgrMenuTextDeviceNameContainingDuplicateFile, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x02000030, L_MPWEAPONS(233), 0x00000000, NULL }, // "already contains" { MENUITEMTYPE_LABEL, 0, 0x02000030, L_MPWEAPONS(234), 0x00000000, NULL }, // "a file named" - { MENUITEMTYPE_LABEL, 0, 0x02000030, (u32)&filemanMenuTextDuplicateFileName, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(235), 0x00000000, filemanDuplicateRenameMenuHandler }, // "Rename File" + { MENUITEMTYPE_LABEL, 0, 0x02000030, (u32)&filemgrMenuTextDuplicateFileName, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(235), 0x00000000, filemgrDuplicateRenameMenuHandler }, // "Rename File" { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPWEAPONS(236), 0x00000000, NULL }, // "Change Location" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(237), 0x00000000, filemanDuplicateCancelMenuHandler }, // "Cancel" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(237), 0x00000000, filemgrDuplicateCancelMenuHandler }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanDuplicateFileNameMenuDialog = { +struct menudialog g_FilemgrDuplicateFileNameMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_MPWEAPONS(232), // "Duplicate File Name" - g_FilemanDuplicateFileNameMenuItems, + g_FilemgrDuplicateFileNameMenuItems, NULL, 0x00000080, NULL, }; -char *filemanMenuTextLocationName2(struct menuitem *item) +char *filemgrMenuTextLocationName2(struct menuitem *item) { u16 names[] = { L_OPTIONS(112), // "Controller Pak 1" @@ -1323,26 +1317,26 @@ char *filemanMenuTextLocationName2(struct menuitem *item) L_OPTIONS(4), // "" }; - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f] == NULL) { + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum] == NULL) { return NULL; } - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->spacesfree[item->param] < 0) { + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum]->spacesfree[item->param] < 0) { return langGet(names[5]); } return langGet(names[item->param]); } -char *filemanMenuTextSaveLocationSpaces(struct menuitem *item) +char *filemgrMenuTextSaveLocationSpaces(struct menuitem *item) { s32 spacesfree; - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f] == NULL) { + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum] == NULL) { return NULL; } - spacesfree = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->spacesfree[item->param]; + spacesfree = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->spacesfree[item->param]; if (spacesfree < 0) { return "\n"; @@ -1366,27 +1360,30 @@ const char var7f1b348c[] = "Switched Wads Back\n"; const char var7f1b34a0[] = "MenuClosed\n"; const char var7f1b34ac[] = "Deleting files, wad %d\n"; -s32 filemanSelectLocationMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +/** + * item->param is a SAVEDEVICE constant. + */ +s32 filemgrSelectLocationMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f] == NULL) { + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum] == NULL) { return 0; } if (operation == MENUOP_CHECKDISABLED) { - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->spacesfree[item->param] < 1) { + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum]->spacesfree[item->param] < 1) { return true; } } if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].unke52 = item->param; + g_Menus[g_MpPlayerNum].device = item->param; func0f109ec4(); } return 0; } -s32 filemanCancelSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrCancelSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); @@ -1395,46 +1392,46 @@ s32 filemanCancelSaveMenuHandler(u32 operation, struct menuitem *item, union han return 0; } -s32 filemanDeleteFilesForSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrDeleteFilesForSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - filemanPushDeleteFileDialog(g_Menus[g_MpPlayerNum].unke3f); - g_Menus[g_MpPlayerNum].data.fileman.unke28 = 1; + filemgrPushDeleteFileDialog(g_Menus[g_MpPlayerNum].listnum); + g_Menus[g_MpPlayerNum].data.filemgr.isdeletingforsave = true; } return 0; } -void func0f10a51c(s32 arg0, u32 arg1) +void filemgrPushSelectLocationDialog(s32 arg0, u32 arg1) { g_Menus[g_MpPlayerNum].unke3e = arg0; - g_Menus[g_MpPlayerNum].unke3f = func0f110cf8(arg1); + g_Menus[g_MpPlayerNum].listnum = func0f110cf8(arg1); func0f110da8(); - menuPushDialog(&g_FilemanSelectLocationMenuDialog); + menuPushDialog(&g_FilemgrSelectLocationMenuDialog); } -s32 filemanConfirmDeleteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrConfirmDeleteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { menuPopDialog(); - filemanDeleteFile(); + filemgrDeleteCurrentFile(); } return 0; } -char *filemanMenuTextFileInUseDescription(struct menuitem *item) +char *filemgrMenuTextFileInUseDescription(struct menuitem *item) { - if (func0f0fd570(&g_FilemanCopyListMenuDialog)) { + if (menuIsDialogOpen(&g_FilemgrCopyListMenuDialog)) { return langGet(L_MPWEAPONS(240)); // "The file you are copying cannot be deleted." } return langGet(L_MPWEAPONS(160)); // "Cannot delete file as it is being used." } -Gfx *filemanRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, u32 arg2, u32 arg3) +Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, u32 arg2, u32 arg3) { struct var800ab5a8 *texture = func0f111460(g_MpPlayerNum, arg2, arg3 & 0xffff); @@ -1480,17 +1477,17 @@ Gfx *filemanRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *rend return gdl; } -bool func0f10a97c(struct savelocation000 *arg0) +bool filemgrIsFileInUse(struct savelocation000 *arg0) { s32 i; - if (func0f0fd570(&g_FilemanCopyListMenuDialog) - && arg0->unk00 == var800a21e0.unk00 - && arg0->unk04 == var800a21e0.unk04) { + if (menuIsDialogOpen(&g_FilemgrCopyListMenuDialog) + && arg0->unk00 == g_FilemgrFileToCopy.unk00 + && arg0->unk04 == g_FilemgrFileToCopy.unk04) { return true; } - if (func0f0fd570(&menudialog_fileselect2)) { + if (menuIsDialogOpen(&menudialog_fileselect2)) { return false; } @@ -1498,7 +1495,7 @@ bool func0f10a97c(struct savelocation000 *arg0) return false; } - if (arg0->unk00 == var800a22c0.unk00 && arg0->unk04 == var800a22c0.unk04) { + if (arg0->unk00 == g_FilemgrLoadedMainFile.unk00 && arg0->unk04 == g_FilemgrLoadedMainFile.unk04) { return true; } @@ -1517,19 +1514,22 @@ bool func0f10a97c(struct savelocation000 *arg0) return false; } -s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data, bool isdelete) +/** + * item->param is 0 if copying, 1 if deleting. + */ +s32 filemgrFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data, bool isdelete) { s32 x; s32 y; - struct savelocation *location = g_SaveLocations.locations[0]; - s32 unke3f = 0; + struct filelist *list = g_FileLists[0]; + s32 listnum = 0; if (item->param == 1) { - unke3f = g_Menus[g_MpPlayerNum].unke3f; - location = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]; + listnum = g_Menus[g_MpPlayerNum].listnum; + list = g_FileLists[g_Menus[g_MpPlayerNum].listnum]; } - if (location == NULL) { + if (list == NULL) { return 0; } @@ -1538,21 +1538,21 @@ s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *ite data->list.value = 0x0fffff; break; case MENUOP_GETOPTIONCOUNT: - data->list.value = location->unk2d0; + data->list.value = list->numfiles; break; case MENUOP_RENDER: { Gfx *gdl = data->type19.gdl; struct menuitemrenderdata *renderdata = data->type19.renderdata2; - struct savelocation000 *location000 = &location->unk000[data->list.unk04]; + struct savelocation000 *location000 = &list->unk000[data->list.unk04]; - if (g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone == 4) { - gdl = filemanRenderPerfectHeadThumbnail(gdl, renderdata, location000->unk00, location000->unk04); + if (g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone == 4) { + gdl = filemgrRenderPerfectHeadThumbnail(gdl, renderdata, location000->unk00, location000->unk04); } else { u32 colour = renderdata->colour; char text[32]; - if (isdelete && func0f10a97c(location000)) { + if (isdelete && filemgrIsFileInUse(location000)) { colour = 0xff333300 | (colour & 0xff); } @@ -1562,7 +1562,7 @@ s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *ite gdl = func0f153628(gdl); if (location000) { - func0f1080d0(text, location000, g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1); + filemgrGetFileName(text, location000, g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1); gdl = textRenderProjected(gdl, &x, &y, text, var8007fb10, var8007fb0c, colour, viGetX(), viGetY(), 0, 1); y = renderdata->y + 12; @@ -1578,95 +1578,95 @@ s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *ite data->list.value = 11; break; case MENUOP_GETOPTGROUPCOUNT: - data->list.value = location->unk30a; + data->list.value = list->unk30a; break; case MENUOP_GETOPTGROUPTEXT: - return func0f1086b8(unke3f, operation, data->list.value); + return filemgrGetDeviceNameOrStartIndex(listnum, operation, data->list.value); case MENUOP_GETGROUPSTARTINDEX: - data->list.groupstartindex = func0f1086b8(unke3f, operation, data->list.value); + data->list.groupstartindex = filemgrGetDeviceNameOrStartIndex(listnum, operation, data->list.value); return 0; } return 0; } -s32 filemanFileToDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrFileToDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { - if (g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f] == NULL) { + if (g_FileLists[g_Menus[g_MpPlayerNum].listnum] == NULL) { return 0; } if (operation == MENUOP_SET) { - struct savelocation000 *thing = &g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->unk000[data->list.value]; + struct savelocation000 *thing = &g_FileLists[g_Menus[g_MpPlayerNum].listnum]->unk000[data->list.value]; if (thing) { - if (func0f10a97c(thing)) { - func0f1083d0(thing, g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->filetype); - menuPushDialog(&g_FilemanFileInUseMenuDialog); + if (filemgrIsFileInUse(thing)) { + func0f1083d0(thing, g_FileLists[g_Menus[g_MpPlayerNum].listnum]->filetype); + menuPushDialog(&g_FilemgrFileInUseMenuDialog); } else { - func0f1083d0(thing, g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]->filetype); - var800a21f0.unk00 = thing->unk00; - var800a21f0.unk04 = thing->unk04; - menuPushDialog(&g_FilemanConfirmDeleteMenuDialog); + func0f1083d0(thing, g_FileLists[g_Menus[g_MpPlayerNum].listnum]->filetype); + g_FilemgrFileToDelete.unk00 = thing->unk00; + g_FilemgrFileToDelete.unk04 = thing->unk04; + menuPushDialog(&g_FilemgrConfirmDeleteMenuDialog); } } } - return filemanFileToCopyOrDeleteListMenuHandler(operation, item, data, true); + return filemgrFileToCopyOrDeleteListMenuHandler(operation, item, data, true); } -s32 filemanFileToCopyListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrFileToCopyListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { - struct savelocation *location = g_SaveLocations.locations[0]; + struct filelist *list = g_FileLists[0]; - if (location == NULL) { + if (list == NULL) { return 0; } if (operation == MENUOP_SET) { - struct savelocation000 *thing = &location->unk000[data->list.value]; + struct savelocation000 *thing = &list->unk000[data->list.value]; if (thing) { - var800a21e0.unk00 = thing->unk00; - var800a21e0.unk04 = thing->unk04; + g_FilemgrFileToCopy.unk00 = thing->unk00; + g_FilemgrFileToCopy.unk04 = thing->unk04; func0f1099a8(g_Menus[g_MpPlayerNum].unke53, thing); - func0f10a51c(g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone, g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone - 1); + filemgrPushSelectLocationDialog(g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone, g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1); } } - return filemanFileToCopyOrDeleteListMenuHandler(operation, item, data, false); + return filemgrFileToCopyOrDeleteListMenuHandler(operation, item, data, false); } -s32 filemanCopyOrDeleteListMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) +s32 filemgrCopyOrDeleteListMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_CLOSE) { - if (g_Menus[g_MpPlayerNum].data.fileman.unke28 == 1) { - g_Menus[g_MpPlayerNum].data.fileman.unke28 = 0; + if (g_Menus[g_MpPlayerNum].data.filemgr.isdeletingforsave == true) { + g_Menus[g_MpPlayerNum].data.filemgr.isdeletingforsave = false; } else { func0f110c5c(0, FILETYPE_SOLO); - g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = 0; + g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone = 0; } } return 0; } -void filemanPushDeleteFileDialog(u32 arg0) +void filemgrPushDeleteFileDialog(s32 listnum) { - struct savelocation *location; + struct filelist *list; - g_Menus[g_MpPlayerNum].unke3f = arg0; - g_Menus[g_MpPlayerNum].data.fileman.unke28 = 0; - g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = 1; + g_Menus[g_MpPlayerNum].listnum = listnum; + g_Menus[g_MpPlayerNum].data.filemgr.isdeletingforsave = false; + g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone = 1; - location = g_SaveLocations.locations[g_Menus[g_MpPlayerNum].unke3f]; + list = g_FileLists[g_Menus[g_MpPlayerNum].listnum]; - if (location) { - g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = location->filetype + 1; + if (list) { + g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone = list->filetype + 1; } - menuPushDialog(&g_FilemanDeleteFileMenuDialog); + menuPushDialog(&g_FilemgrDeleteFileMenuDialog); } s32 pakDeleteGameNoteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) @@ -1685,7 +1685,7 @@ s32 pakDeleteGameNoteMenuHandler(u32 operation, struct menuitem *item, union han g_Menus[g_MpPlayerNum].unke3c = g_Menus[g_MpPlayerNum].data.pak.device; if (result) { - filemanPushErrorDialog(FILEERROR_DELETENOTEFAILED); + filemgrPushErrorDialog(FILEERROR_DELETENOTEFAILED); } } @@ -1761,7 +1761,7 @@ s32 pakGameNoteListMenuHandler(u32 operation, struct menuitem *item, union handl // Render number of pages textMeasure(&textheight, &textwidth, pagesbuffer, var8007fb10, var8007fb0c, 0); - x = ((renderdata->x + renderdata->width) - textwidth) - 6; + 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); @@ -1797,7 +1797,7 @@ s32 pakGameNotesMenuDialog(u32 operation, struct menudialog *dialog, union handl g_Menus[g_MpPlayerNum].unke3c = g_Menus[g_MpPlayerNum].data.pak.device; if (value == 1) { - filemanPushErrorDialog(FILEERROR_PAKREMOVED); + filemgrPushErrorDialog(FILEERROR_PAKREMOVED); } menuUpdateCurFrame(); @@ -1832,8 +1832,8 @@ char *pakMenuTextPagesUsed(struct menuitem *item) char *pakMenuTextStatusMessage(struct menuitem *item) { - s32 haspdfile = false; - s32 hasemptyfile = false; + s32 haspdnote = false; + s32 hasemptynote = false; s32 i; if (g_EditingPak == NULL) { @@ -1844,18 +1844,18 @@ char *pakMenuTextStatusMessage(struct menuitem *item) 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; + haspdnote = true; } } else { - hasemptyfile = true; + hasemptynote = true; } } - if (haspdfile) { + if (haspdnote) { return langGet(L_OPTIONS(398)); // "Perfect Dark note already exists on this Controller Pak." } - if (g_EditingPak->pagesfree < 28 || !hasemptyfile) { + if (g_EditingPak->pagesfree < 28 || !hasemptynote) { return langGet(L_OPTIONS(400)); // "Controller Pak is too full to save note- 1 note and 28 pages required to save to Controller Pak." } @@ -1864,13 +1864,13 @@ char *pakMenuTextStatusMessage(struct menuitem *item) char *pakMenuTextEditingPakName(struct menuitem *item) { - return filemanGetDeviceName(g_Menus[g_MpPlayerNum].data.pak.device); + return filemgrGetDeviceName(g_Menus[g_MpPlayerNum].data.pak.device); } s32 pakSelectionMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_CHECKDISABLED) { - if (pakIsConnected((s8)item->param) == 0) { + if (!pakIsConnected((s8)item->param)) { return true; } } @@ -1912,36 +1912,36 @@ s32 pakChoosePakMenuDialog(u32 operation, struct menudialog *dialog, union handl return 0; } -s32 filemanOpenCopyFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrOpenCopyFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = item->param + 1; + g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone = item->param + 1; func0f110c5c(0, item->param); - g_Menus[g_MpPlayerNum].unke3f = 0; - g_Menus[g_MpPlayerNum].data.fileman.unke28 = 0; - menuPushDialog(&g_FilemanCopyListMenuDialog); + g_Menus[g_MpPlayerNum].listnum = 0; + g_Menus[g_MpPlayerNum].data.filemgr.isdeletingforsave = false; + menuPushDialog(&g_FilemgrCopyListMenuDialog); } return 0; } -s32 filemanOpenDeleteFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrOpenDeleteFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = item->param + 1; + g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone = item->param + 1; func0f110c5c(0, item->param); g_Menus[g_MpPlayerNum].unke3e = -1; - filemanPushDeleteFileDialog(0); + filemgrPushDeleteFileDialog(0); } return 0; } -s32 filemanAgentNameKeyboardMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrAgentNameKeyboardMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { char *name = data->keyboard.string; - if (!g_SaveLocations.locations[0]) { + if (!g_FileLists[0]) { return 0; } @@ -1953,15 +1953,15 @@ s32 filemanAgentNameKeyboardMenuHandler(u32 operation, struct menuitem *item, un strcpy(g_SoloSaveFile.name, name); break; case MENUOP_SET: - func0f10a51c(0, 0); - g_Menus[g_MpPlayerNum].data.fileman.unke2c = 1; + filemgrPushSelectLocationDialog(0, 0); + g_Menus[g_MpPlayerNum].data.filemgr.unke2c = 1; break; } return 0; } -s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) +s32 filemgrChooseAgentListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) { s32 x; s32 y; @@ -1984,7 +1984,7 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio s32 textwidth; s32 textheight; - if (g_SaveLocations.locations[0] == NULL) { + if (g_FileLists[0] == NULL) { return 0; } @@ -1996,29 +1996,29 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio pass = false; if (data->list.unk04 == 1) { - if (data->list.groupstartindex == 1 && g_Menus[g_MpPlayerNum].data.fileman.unke2c == 1) { - for (i = 0; i < g_SaveLocations.locations[0]->unk2d0; i++) { - if (var800a22c0.unk00 == g_SaveLocations.locations[0]->unk000[i].unk00 - && var800a22c0.unk04 == g_SaveLocations.locations[0]->unk000[i].unk04) { + if (data->list.groupstartindex == 1 && g_Menus[g_MpPlayerNum].data.filemgr.unke2c == 1) { + for (i = 0; i < g_FileLists[0]->numfiles; i++) { + if (g_FilemgrLoadedMainFile.unk00 == g_FileLists[0]->unk000[i].unk00 + && g_FilemgrLoadedMainFile.unk04 == g_FileLists[0]->unk000[i].unk04) { data->list.value = i; } } - g_Menus[g_MpPlayerNum].data.fileman.unke2c = 0; + g_Menus[g_MpPlayerNum].data.filemgr.unke2c = 0; } - if (g_SaveLocations.locations[0]->unk30e) { + if (g_FileLists[0]->unk30e) { pass = true; } } else { pass = true; - g_Menus[g_MpPlayerNum].data.fileman.unke2c = 0; + g_Menus[g_MpPlayerNum].data.filemgr.unke2c = 0; } if (pass && g_Vars.unk00047c) { - for (j = 0; j < g_SaveLocations.locations[0]->unk2d0; j++) { - if (g_Vars.unk00047c == g_SaveLocations.locations[0]->unk000[j].unk00 - && g_Vars.unk000480 == g_SaveLocations.locations[0]->unk000[j].unk04) { + for (j = 0; j < g_FileLists[0]->numfiles; j++) { + if (g_Vars.unk00047c == g_FileLists[0]->unk000[j].unk00 + && g_Vars.unk000480 == g_FileLists[0]->unk000[j].unk04) { data->list.value = j; g_Vars.unk00047c = 0; } @@ -2026,7 +2026,7 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio } break; case MENUOP_GETOPTIONCOUNT: - data->list.value = g_SaveLocations.locations[0]->unk2d0 + 1; + data->list.value = g_FileLists[0]->numfiles + 1; break; case MENUOP_RENDER: gdl = data->type19.gdl; @@ -2038,8 +2038,8 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio hours = 0; days = 0; - if (data->list.unk04 != g_SaveLocations.locations[0]->unk2d0) { - location000 = &g_SaveLocations.locations[0]->unk000[data->list.unk04]; + if (data->list.unk04 != g_FileLists[0]->numfiles) { + location000 = &g_FileLists[0]->unk000[data->list.unk04]; if (location000) { savefileGetOverview(location000->unk06, name, &stage, &difficulty, &time); @@ -2094,7 +2094,7 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio y = renderdata->y + 4; gdl = func0f153628(gdl); - if (data->list.unk04 == g_SaveLocations.locations[0]->unk2d0) { + if (data->list.unk04 == g_FileLists[0]->numfiles) { // "New Agent..." gdl = textRenderProjected(gdl, &x, &y, langGet(L_OPTIONS(403)), var8007fb18, var8007fb14, renderdata->colour, viGetX(), viGetY(), 0, 0); @@ -2153,32 +2153,32 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio data->list.value = 40; break; case MENUOP_SET: - if (data->list.value == g_SaveLocations.locations[0]->unk2d0) { + if (data->list.value == g_FileLists[0]->numfiles) { savefileLoadDefaults(&g_SoloSaveFile); - menuPushDialog(&g_FilemanEnterAgentNameMenuDialog); + menuPushDialog(&g_FilemgrEnterAgentNameMenuDialog); } else { - struct savelocation000 *file = &g_SaveLocations.locations[0]->unk000[data->list.value]; + struct savelocation000 *file = &g_FileLists[0]->unk000[data->list.value]; if (file) { - var800a22c0.unk00 = file->unk00; - var800a22c0.unk04 = file->unk04; - func0f1094e4(&var800a22c0, 100, 0); + g_FilemgrLoadedMainFile.unk00 = file->unk00; + g_FilemgrLoadedMainFile.unk04 = file->unk04; + func0f1094e4(&g_FilemgrLoadedMainFile, 100, 0); } } break; case MENUOP_GETOPTGROUPCOUNT: - data->list.value = g_SaveLocations.locations[0]->unk30a + 1; + data->list.value = g_FileLists[0]->unk30a + 1; break; case MENUOP_GETOPTGROUPTEXT: - if (data->list.value >= g_SaveLocations.locations[0]->unk30a) { + if (data->list.value >= g_FileLists[0]->unk30a) { return (u32) langGet(L_OPTIONS(402)); // "New..." } - return func0f1086b8(0, operation, data->list.value); + return filemgrGetDeviceNameOrStartIndex(0, operation, data->list.value); case MENUOP_GETGROUPSTARTINDEX: - if (data->list.value >= g_SaveLocations.locations[0]->unk30a) { - data->list.groupstartindex = g_SaveLocations.locations[0]->unk2d0; + if (data->list.value >= g_FileLists[0]->unk30a) { + data->list.groupstartindex = g_FileLists[0]->numfiles; } else { - data->list.groupstartindex = func0f1086b8(0, operation, data->list.value); + data->list.groupstartindex = filemgrGetDeviceNameOrStartIndex(0, operation, data->list.value); } return 0; } @@ -2186,13 +2186,13 @@ s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, unio return 0; } -s32 filemanMainMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) +s32 filemgrMainMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data) { s32 i; switch (operation) { case MENUOP_OPEN: - g_Menus[g_MpPlayerNum].data.fileman.filetypeplusone = 0; + g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone = 0; func0f110c5c(0, FILETYPE_SOLO); func0f188210(); @@ -2212,11 +2212,11 @@ s32 filemanMainMenuDialog(u32 operation, struct menudialog *dialog, union handle return 0; } -bool filemanConsiderPushingFileSelectDialog(void) +bool filemgrConsiderPushingFileSelectDialog(void) { if (g_Menus[g_MpPlayerNum].unk83c == 0) { g_Menus[g_MpPlayerNum].playernum = 0; - menuPushRootDialog(&g_FilemanMainMenuDialog, MENUROOT_FILEMGR); + menuPushRootDialog(&g_FilemgrMainMenuDialog, MENUROOT_FILEMGR); return true; } @@ -2231,92 +2231,92 @@ void pakPushPakMenuDialog(void) g_MpPlayerNum = prevplayernum; } -struct menuitem g_FilemanSelectLocationMenuItems[] = { +struct menuitem g_FilemgrSelectLocationMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS(368), L_OPTIONS(369), NULL }, // "Where", "Spaces" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_GAMEPAK, 0x00000000, (u32)&filemanMenuTextLocationName2, (u32)&filemanMenuTextSaveLocationSpaces, filemanSelectLocationMenuHandler }, - { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK1, 0x00000000, (u32)&filemanMenuTextLocationName2, (u32)&filemanMenuTextSaveLocationSpaces, filemanSelectLocationMenuHandler }, - { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK2, 0x00000000, (u32)&filemanMenuTextLocationName2, (u32)&filemanMenuTextSaveLocationSpaces, filemanSelectLocationMenuHandler }, - { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK3, 0x00000000, (u32)&filemanMenuTextLocationName2, (u32)&filemanMenuTextSaveLocationSpaces, filemanSelectLocationMenuHandler }, - { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK4, 0x00000000, (u32)&filemanMenuTextLocationName2, (u32)&filemanMenuTextSaveLocationSpaces, filemanSelectLocationMenuHandler }, + { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_GAMEPAK, 0x00000000, (u32)&filemgrMenuTextLocationName2, (u32)&filemgrMenuTextSaveLocationSpaces, filemgrSelectLocationMenuHandler }, + { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK1, 0x00000000, (u32)&filemgrMenuTextLocationName2, (u32)&filemgrMenuTextSaveLocationSpaces, filemgrSelectLocationMenuHandler }, + { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK2, 0x00000000, (u32)&filemgrMenuTextLocationName2, (u32)&filemgrMenuTextSaveLocationSpaces, filemgrSelectLocationMenuHandler }, + { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK3, 0x00000000, (u32)&filemgrMenuTextLocationName2, (u32)&filemgrMenuTextSaveLocationSpaces, filemgrSelectLocationMenuHandler }, + { MENUITEMTYPE_SELECTABLE, SAVEDEVICE_CONTROLLERPAK4, 0x00000000, (u32)&filemgrMenuTextLocationName2, (u32)&filemgrMenuTextSaveLocationSpaces, filemgrSelectLocationMenuHandler }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(370), 0x00000000, filemanDeleteFilesForSaveMenuHandler }, // "Delete Files..." - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(371), 0x00000000, filemanCancelSaveMenuHandler }, // "Cancel" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(370), 0x00000000, filemgrDeleteFilesForSaveMenuHandler }, // "Delete Files..." + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(371), 0x00000000, filemgrCancelSaveMenuHandler }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanSelectLocationMenuDialog = { +struct menudialog g_FilemgrSelectLocationMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(367), // "Select Location" - g_FilemanSelectLocationMenuItems, + g_FilemgrSelectLocationMenuItems, NULL, 0x00000080, NULL, }; -struct menuitem g_FilemanConfirmDeleteMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemanMenuTextDeleteFileName, 0x00000000, filemanFileNameMenuHandler }, - { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemanMenuTextDeviceName, 0x00000000, filemanDeviceNameMenuHandler }, +struct menuitem g_FilemgrConfirmDeleteMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemgrMenuTextDeleteFileName, 0x00000000, filemgrFileNameMenuHandler }, + { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemgrMenuTextDeviceName, 0x00000000, filemgrDeviceNameMenuHandler }, { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS(380), 0x00000000, NULL }, // "Are you sure you want to delete this file?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(381), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(382), 0x00000000, filemanConfirmDeleteMenuHandler }, // "OK" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(382), 0x00000000, filemgrConfirmDeleteMenuHandler }, // "OK" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanConfirmDeleteMenuDialog = { +struct menudialog g_FilemgrConfirmDeleteMenuDialog = { MENUDIALOGTYPE_DANGER, L_OPTIONS(379), // "Warning" - g_FilemanConfirmDeleteMenuItems, + g_FilemgrConfirmDeleteMenuItems, NULL, 0x00000080, NULL, }; -struct menuitem g_FilemanFileInUseMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemanMenuTextDeleteFileName, 0x00000000, filemanFileNameMenuHandler }, - { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemanMenuTextDeviceName, 0x00000000, filemanDeviceNameMenuHandler }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemanMenuTextFileInUseDescription, 0x00000000, NULL }, +struct menuitem g_FilemgrFileInUseMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemgrMenuTextDeleteFileName, 0x00000000, filemgrFileNameMenuHandler }, + { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemgrMenuTextDeviceName, 0x00000000, filemgrDeviceNameMenuHandler }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextFileInUseDescription, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPWEAPONS(161), 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanFileInUseMenuDialog = { +struct menudialog g_FilemgrFileInUseMenuDialog = { MENUDIALOGTYPE_DANGER, L_MPWEAPONS(159), // "Error" - g_FilemanFileInUseMenuItems, + g_FilemgrFileInUseMenuItems, NULL, 0x00000080, NULL, }; -struct menuitem g_FilemanDeleteFileMenuItems[] = { +struct menuitem g_FilemgrDeleteFileMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(377), 0x00000000, NULL }, // "Select a file to delete:" - { MENUITEMTYPE_LIST, 1, 0x00200000, 0x00000000, 0x00000000, filemanFileToDeleteListMenuHandler }, + { MENUITEMTYPE_LIST, 1, 0x00200000, 0x00000000, 0x00000000, filemgrFileToDeleteListMenuHandler }, { MENUITEMTYPE_LABEL, 0, 0x00004030, L_OPTIONS(378), 0x00000000, NULL }, // "Press B Button to exit." { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanDeleteFileMenuDialog = { +struct menudialog g_FilemgrDeleteFileMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(376), // "Delete File" - g_FilemanDeleteFileMenuItems, - filemanCopyOrDeleteListMenuDialog, + g_FilemgrDeleteFileMenuItems, + filemgrCopyOrDeleteListMenuDialog, 0x00000000, NULL, }; -struct menuitem g_FilemanCopyListMenuItems[] = { +struct menuitem g_FilemgrCopyListMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(374), 0x00000000, NULL }, // "Select a file to copy:" - { MENUITEMTYPE_LIST, 0, 0x00200000, 0x00000000, 0x00000000, filemanFileToCopyListMenuHandler }, + { MENUITEMTYPE_LIST, 0, 0x00200000, 0x00000000, 0x00000000, filemgrFileToCopyListMenuHandler }, { MENUITEMTYPE_LABEL, 0, 0x00004030, L_OPTIONS(375), 0x00000000, NULL }, // "Press B Button to exit." { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanCopyListMenuDialog = { +struct menudialog g_FilemgrCopyListMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(373), // "Copy File" - g_FilemanCopyListMenuItems, - filemanCopyOrDeleteListMenuDialog, + g_FilemgrCopyListMenuItems, + filemgrCopyOrDeleteListMenuDialog, 0x00000000, NULL, }; @@ -2381,55 +2381,55 @@ struct menudialog g_PakChoosePakMenuDialog = { NULL, }; -struct menuitem g_FilemanOperationsMenuItems[] = { +struct menuitem g_FilemgrOperationsMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(100), 0x00000000, NULL }, // "Copy:" - { MENUITEMTYPE_SELECTABLE, FILETYPE_SOLO, 0x00000000, L_OPTIONS(103), 0x00000000, filemanOpenCopyFileMenuHandler }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, FILETYPE_MPSETUP , 0x00000000, L_OPTIONS(104), 0x00000000, filemanOpenCopyFileMenuHandler }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, FILETYPE_MPPLAYER, 0x00000000, L_OPTIONS(105), 0x00000000, filemanOpenCopyFileMenuHandler }, // "Combat Simulator Player File" + { MENUITEMTYPE_SELECTABLE, FILETYPE_SOLO, 0x00000000, L_OPTIONS(103), 0x00000000, filemgrOpenCopyFileMenuHandler }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, FILETYPE_MPSETUP , 0x00000000, L_OPTIONS(104), 0x00000000, filemgrOpenCopyFileMenuHandler }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, FILETYPE_MPPLAYER, 0x00000000, L_OPTIONS(105), 0x00000000, filemgrOpenCopyFileMenuHandler }, // "Combat Simulator Player File" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(101), 0x00000000, NULL }, // "Delete:" - { MENUITEMTYPE_SELECTABLE, FILETYPE_SOLO, 0x00000000, L_OPTIONS(103), 0x00000000, filemanOpenDeleteFileMenuHandler }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, FILETYPE_MPSETUP, 0x00000000, L_OPTIONS(104), 0x00000000, filemanOpenDeleteFileMenuHandler }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, FILETYPE_MPPLAYER, 0x00000000, L_OPTIONS(105), 0x00000000, filemanOpenDeleteFileMenuHandler }, // "Combat Simulator Player File" + { MENUITEMTYPE_SELECTABLE, FILETYPE_SOLO, 0x00000000, L_OPTIONS(103), 0x00000000, filemgrOpenDeleteFileMenuHandler }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, FILETYPE_MPSETUP, 0x00000000, L_OPTIONS(104), 0x00000000, filemgrOpenDeleteFileMenuHandler }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, FILETYPE_MPPLAYER, 0x00000000, L_OPTIONS(105), 0x00000000, filemgrOpenDeleteFileMenuHandler }, // "Combat Simulator Player File" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_OPTIONS(102), 0x00000000, (void *)&g_PakChoosePakMenuDialog }, // "Delete Game Notes..." { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanOperationsMenuDialog = { +struct menudialog g_FilemgrOperationsMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(99), // "Game Files" - g_FilemanOperationsMenuItems, + g_FilemgrOperationsMenuItems, NULL, 0x00000020, NULL, }; -struct menuitem g_FilemanEnterAgentNameMenuItems[] = { - { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000001, filemanAgentNameKeyboardMenuHandler }, +struct menuitem g_FilemgrEnterAgentNameMenuItems[] = { + { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000001, filemgrAgentNameKeyboardMenuHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanEnterAgentNameMenuDialog = { +struct menudialog g_FilemgrEnterAgentNameMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(401), // "Enter Agent Name" - g_FilemanEnterAgentNameMenuItems, + g_FilemgrEnterAgentNameMenuItems, NULL, 0x00000000, NULL, }; -struct menuitem g_FilemanMainMenuItems[] = { +struct menuitem g_FilemgrMainMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS(96), 0x00000000, NULL }, // "Choose Your Reality" - { MENUITEMTYPE_LIST, 0, 0x00200000, 0x000000f5, 0x00000000, filemanChooseAgentListMenuHandler }, + { MENUITEMTYPE_LIST, 0, 0x00200000, 0x000000f5, 0x00000000, filemgrChooseAgentListMenuHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menudialog g_FilemanMainMenuDialog = { +struct menudialog g_FilemgrMainMenuDialog = { MENUDIALOGTYPE_DEFAULT, L_OPTIONS(95), // "Perfect Dark" - g_FilemanMainMenuItems, - filemanMainMenuDialog, + g_FilemgrMainMenuItems, + filemgrMainMenuDialog, 0x00000020, - &g_FilemanOperationsMenuDialog, + &g_FilemgrOperationsMenuDialog, }; diff --git a/src/game/game_177e00.c b/src/game/game_177e00.c index d58c16b88..2ed2305d5 100644 --- a/src/game/game_177e00.c +++ b/src/game/game_177e00.c @@ -882,7 +882,7 @@ glabel menuhandler00178bf4 /* f178d98: 8fbf0014 */ lw $ra,0x14($sp) .L0f178d9c: /* f178d9c: 24040006 */ addiu $a0,$zero,0x6 -/* f178da0: 0fc42947 */ jal func0f10a51c +/* f178da0: 0fc42947 */ jal filemgrPushSelectLocationDialog /* f178da4: 24050002 */ addiu $a1,$zero,0x2 .L0f178da8: /* f178da8: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/game/game_179060.c b/src/game/game_179060.c index 0c63b62fc..73fb0b375 100644 --- a/src/game/game_179060.c +++ b/src/game/game_179060.c @@ -546,7 +546,7 @@ s32 menuhandlerMpConfirmSaveChr(u32 operation, struct menuitem *item, union hand { if (operation == MENUOP_SET) { menuPopDialog(); - func0f10a51c(6, 2); + filemgrPushSelectLocationDialog(6, 2); } return 0; @@ -564,7 +564,7 @@ s32 menuhandlerMpPlayerName(u32 operation, struct menuitem *item, union handlerd strcpy(g_MpSetup.name, name); break; case MENUOP_SET: - func0f10a51c(7, 1); + filemgrPushSelectLocationDialog(7, 1); break; } @@ -2846,9 +2846,9 @@ glabel var7f1b818c /* f17baec: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17baf0: afa70038 */ sw $a3,0x38($sp) /* f17baf4: 8fa70038 */ lw $a3,0x38($sp) -/* f17baf8: 3c038007 */ lui $v1,%hi(g_SaveLocations+0x4) +/* f17baf8: 3c038007 */ lui $v1,%hi(g_FileLists+0x4) /* f17bafc: ace20000 */ sw $v0,0x0($a3) -/* f17bb00: 8c635bc4 */ lw $v1,%lo(g_SaveLocations+0x4)($v1) +/* 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) @@ -2858,7 +2858,7 @@ glabel var7f1b818c /* f17bb1c: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bb20: afa70038 */ sw $a3,0x38($sp) /* f17bb24: 8fa70038 */ lw $a3,0x38($sp) -/* f17bb28: 3c098007 */ lui $t1,%hi(g_SaveLocations+0x4) +/* 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 @@ -2868,14 +2868,14 @@ glabel var7f1b818c /* f17bb44: 100000b6 */ b .L0f17be20 /* f17bb48: 8fbf0014 */ lw $ra,0x14($sp) .L0f17bb4c: -/* f17bb4c: 8d295bc4 */ lw $t1,%lo(g_SaveLocations+0x4)($t1) +/* 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_SaveLocations+0x4) -/* f17bb68: 8d4a5bc4 */ lw $t2,%lo(g_SaveLocations+0x4)($t2) +/* 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 @@ -2899,7 +2899,7 @@ glabel var7f1b818c /* f17bbbc: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bbc0: 00000000 */ nop /* f17bbc4: 8fa70038 */ lw $a3,0x38($sp) -/* f17bbc8: 3c188007 */ lui $t8,%hi(g_SaveLocations+0x4) +/* 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 @@ -2909,14 +2909,14 @@ glabel var7f1b818c /* f17bbe4: 1000001c */ b .L0f17bc58 /* f17bbe8: 8faf0034 */ lw $t7,0x34($sp) .L0f17bbec: -/* f17bbec: 8f185bc4 */ lw $t8,%lo(g_SaveLocations+0x4)($t8) +/* 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_SaveLocations+0x4) -/* f17bc08: 8f395bc4 */ lw $t9,%lo(g_SaveLocations+0x4)($t9) +/* 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 @@ -2963,8 +2963,8 @@ glabel var7f1b818c /* f17bcb0: acf90000 */ sw $t9,0x0($a3) /* f17bcb4: 24090001 */ addiu $t1,$zero,0x1 /* f17bcb8: ace90000 */ sw $t1,0x0($a3) -/* f17bcbc: 3c038007 */ lui $v1,%hi(g_SaveLocations+0x4) -/* f17bcc0: 8c635bc4 */ lw $v1,%lo(g_SaveLocations+0x4)($v1) +/* 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) @@ -2972,7 +2972,7 @@ glabel var7f1b818c /* f17bcd4: 10000050 */ b .L0f17be18 /* f17bcd8: acec0000 */ sw $t4,0x0($a3) /* f17bcdc: 8ce30000 */ lw $v1,0x0($a3) -/* f17bce0: 3c0e8007 */ lui $t6,%hi(g_SaveLocations+0x4) +/* f17bce0: 3c0e8007 */ lui $t6,%hi(g_FileLists+0x4) /* f17bce4: 14600005 */ bnez $v1,.L0f17bcfc /* f17bce8: 00000000 */ nop /* f17bcec: 0fc5b9f1 */ jal langGet @@ -2980,12 +2980,12 @@ glabel var7f1b818c /* f17bcf4: 1000004a */ b .L0f17be20 /* f17bcf8: 8fbf0014 */ lw $ra,0x14($sp) .L0f17bcfc: -/* f17bcfc: 8dce5bc4 */ lw $t6,%lo(g_SaveLocations+0x4)($t6) +/* 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 func0f1086b8 +/* f17bd10: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17bd14: 2466ffff */ addiu $a2,$v1,-1 /* f17bd18: 10000041 */ b .L0f17be20 /* f17bd1c: 8fbf0014 */ lw $ra,0x14($sp) @@ -2998,16 +2998,16 @@ glabel var7f1b818c /* f17bd34: 0fc63703 */ jal mpGetNumUnlockedPresets /* f17bd38: afa70038 */ sw $a3,0x38($sp) /* f17bd3c: 8fa70038 */ lw $a3,0x38($sp) -/* f17bd40: 3c0f8007 */ lui $t7,%hi(g_SaveLocations+0x4) +/* 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_SaveLocations+0x4)($t7) +/* 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 func0f1086b8 +/* f17bd64: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17bd68: 24c6ffff */ addiu $a2,$a2,-1 /* f17bd6c: 8fa70038 */ lw $a3,0x38($sp) /* f17bd70: 8cf80008 */ lw $t8,0x8($a3) @@ -3083,8 +3083,8 @@ glabel func0f17be2c /* f17be68: 0041082b */ sltu $at,$v0,$at /* f17be6c: 1020004e */ beqz $at,.L0f17bfa8 /* f17be70: afa40058 */ sw $a0,0x58($sp) -/* f17be74: 3c038007 */ lui $v1,%hi(g_SaveLocations+0x4) -/* f17be78: 8c635bc4 */ lw $v1,%lo(g_SaveLocations+0x4)($v1) +/* f17be74: 3c038007 */ lui $v1,%hi(g_FileLists+0x4) +/* f17be78: 8c635bc4 */ lw $v1,%lo(g_FileLists+0x4)($v1) /* f17be7c: 0002c080 */ sll $t8,$v0,0x2 /* f17be80: 2408ffff */ addiu $t0,$zero,-1 /* f17be84: 10600048 */ beqz $v1,.L0f17bfa8 @@ -3193,8 +3193,8 @@ glabel var7f1b81a8 .word menuhandler0017bfc0+0x174 # f17c134 .text /* f17bfc0: 27bdffb0 */ addiu $sp,$sp,-80 -/* f17bfc4: 3c028007 */ lui $v0,%hi(g_SaveLocations) -/* f17bfc8: 8c425bc0 */ lw $v0,%lo(g_SaveLocations)($v0) +/* 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 @@ -3230,7 +3230,7 @@ glabel var7f1b81a8 /* f17c048: 0019c8c0 */ sll $t9,$t9,0x3 /* f17c04c: 00592821 */ addu $a1,$v0,$t9 /* f17c050: 8e040000 */ lw $a0,0x0($s0) -/* f17c054: 0fc42034 */ jal func0f1080d0 +/* f17c054: 0fc42034 */ jal filemgrGetFileName /* f17c058: 24060002 */ addiu $a2,$zero,0x2 /* f17c05c: 10000048 */ b .L0f17c180 /* f17c060: 8e020000 */ lw $v0,0x0($s0) @@ -3286,7 +3286,7 @@ glabel var7f1b81a8 /* f17c11c: 10000018 */ b .L0f17c180 /* f17c120: 00001025 */ or $v0,$zero,$zero .L0f17c124: -/* f17c124: 0fc42197 */ jal filemanPushErrorDialog +/* f17c124: 0fc42197 */ jal filemgrPushErrorDialog /* f17c128: 24040005 */ addiu $a0,$zero,0x5 /* f17c12c: 10000014 */ b .L0f17c180 /* f17c130: 00001025 */ or $v0,$zero,$zero @@ -3298,12 +3298,12 @@ glabel var7f1b81a8 /* f17c148: 1000000c */ b .L0f17c17c /* f17c14c: ae6b0000 */ sw $t3,0x0($s3) /* f17c150: 00002025 */ or $a0,$zero,$zero -/* f17c154: 0fc421ae */ jal func0f1086b8 +/* 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 func0f1086b8 +/* f17c168: 0fc421ae */ jal filemgrGetDeviceNameOrStartIndex /* f17c16c: 8e660000 */ lw $a2,0x0($s3) /* f17c170: ae620008 */ sw $v0,0x8($s3) /* f17c174: 10000002 */ b .L0f17c180 @@ -5603,7 +5603,7 @@ s32 menuhandlerMpSavePlayer(u32 operation, struct menuitem *item, union handlerd { if (operation == MENUOP_SET) { if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 == false) { - func0f10a51c(6, 2); + filemgrPushSelectLocationDialog(6, 2); } else { menuPushDialog(&g_MpSaveChrMenuDialog); } diff --git a/src/game/gamefile.c b/src/game/gamefile.c index bd3e32a8b..442a8aa69 100644 --- a/src/game/gamefile.c +++ b/src/game/gamefile.c @@ -29,10 +29,8 @@ #include "lib/lib_4b170.h" #include "types.h" -struct var80075bc0 g_SaveLocations = { - NULL, NULL, NULL, NULL, - true, true, true, true, -}; +struct filelist *g_FileLists[] = { NULL, NULL, NULL, NULL }; +bool var80075bd0[] = { true, true, true, true }; u32 var80075be0 = 0; u32 var80075be4 = 0; @@ -300,8 +298,8 @@ glabel func0f10fac8 /* f10fb3c: 02802025 */ or $a0,$s4,$zero /* f10fb40: 00102600 */ sll $a0,$s0,0x18 /* f10fb44: 0004c603 */ sra $t8,$a0,0x18 -/* f10fb48: 3c05800a */ lui $a1,%hi(var800a22c0) -/* f10fb4c: 8ca522c0 */ lw $a1,%lo(var800a22c0)($a1) +/* f10fb48: 3c05800a */ lui $a1,%hi(g_FilemgrLoadedMainFile) +/* f10fb4c: 8ca522c0 */ lw $a1,%lo(g_FilemgrLoadedMainFile)($a1) /* f10fb50: 03002025 */ or $a0,$t8,$zero /* f10fb54: 27a60050 */ addiu $a2,$sp,0x50 /* f10fb58: 0fc45a00 */ jal func0f116800 @@ -570,8 +568,8 @@ glabel func0f10feac /* f10ff18: 10000001 */ b .L0f10ff20 /* f10ff1c: 24110001 */ addiu $s1,$zero,0x1 .L0f10ff20: -/* f10ff20: 3c018007 */ lui $at,%hi(g_SaveLocations+0x10) -/* f10ff24: ac325bd0 */ sw $s2,%lo(g_SaveLocations+0x10)($at) +/* f10ff20: 3c018007 */ lui $at,%hi(g_FileLists+0x10) +/* f10ff24: ac325bd0 */ sw $s2,%lo(g_FileLists+0x10)($at) /* f10ff28: 0fc549e0 */ jal optionsGetForwardPitch /* f10ff2c: 02602025 */ or $a0,$s3,$zero /* f10ff30: 3c10800a */ lui $s0,%hi(g_SoloSaveFile+0x14) @@ -1004,8 +1002,8 @@ glabel func0f10feac /* f1105ac: ac2221f8 */ sw $v0,%lo(var800a21f8)($at) /* f1105b0: 8fa80140 */ lw $t0,0x140($sp) /* f1105b4: 97a90152 */ lhu $t1,0x152($sp) -/* f1105b8: 3c03800a */ lui $v1,%hi(var800a22c0) -/* f1105bc: 246322c0 */ addiu $v1,$v1,%lo(var800a22c0) +/* f1105b8: 3c03800a */ lui $v1,%hi(g_FilemgrLoadedMainFile) +/* f1105bc: 246322c0 */ addiu $v1,$v1,%lo(g_FilemgrLoadedMainFile) /* f1105c0: 00001025 */ or $v0,$zero,$zero /* f1105c4: ac680000 */ sw $t0,0x0($v1) /* f1105c8: 10000003 */ b .L0f1105d8 @@ -1415,11 +1413,11 @@ glabel func0f110bf8 /* f110bf8: 27bdffe0 */ addiu $sp,$sp,-32 /* f110bfc: afb10018 */ sw $s1,0x18($sp) /* f110c00: afb00014 */ sw $s0,0x14($sp) -/* f110c04: 3c108007 */ lui $s0,%hi(g_SaveLocations) -/* f110c08: 3c118007 */ lui $s1,%hi(g_SaveLocations+0x10) +/* f110c04: 3c108007 */ lui $s0,%hi(g_FileLists) +/* f110c08: 3c118007 */ lui $s1,%hi(g_FileLists+0x10) /* f110c0c: afbf001c */ sw $ra,0x1c($sp) -/* f110c10: 26315bd0 */ addiu $s1,$s1,%lo(g_SaveLocations+0x10) -/* f110c14: 26105bc0 */ addiu $s0,$s0,%lo(g_SaveLocations) +/* f110c10: 26315bd0 */ addiu $s1,$s1,%lo(g_FileLists+0x10) +/* f110c14: 26105bc0 */ addiu $s0,$s0,%lo(g_FileLists) /* f110c18: 8e0e0000 */ lw $t6,0x0($s0) .L0f110c1c: /* f110c1c: 51c00008 */ beqzl $t6,.L0f110c40 @@ -1441,15 +1439,18 @@ glabel func0f110bf8 /* f110c58: 27bd0020 */ addiu $sp,$sp,0x20 ); -void func0f110c5c(s32 locationindex, u8 filetype) +/** + * Allocate and build a file list. + */ +void func0f110c5c(s32 listnum, u8 filetype) { - if (g_SaveLocations.locations[locationindex] == NULL) { - func0f15e5b8(align16(sizeof(struct savelocation)), 1); - g_SaveLocations.locations[locationindex] = func00012ab0(align16(sizeof(struct savelocation))); + if (g_FileLists[listnum] == NULL) { + func0f15e5b8(align16(sizeof(struct filelist)), 1); + g_FileLists[listnum] = func00012ab0(align16(sizeof(struct filelist))); } - g_SaveLocations.locations[locationindex]->unk30c = 1; - g_SaveLocations.locations[locationindex]->filetype = filetype; + g_FileLists[listnum]->outdated = true; + g_FileLists[listnum]->filetype = filetype; if (var80062944 == 0) { func0001398c(3); @@ -1464,10 +1465,10 @@ glabel func0f110cf8 /* f110cfc: afb00018 */ sw $s0,0x18($sp) /* f110d00: 309000ff */ andi $s0,$a0,0xff /* f110d04: afa40028 */ sw $a0,0x28($sp) -/* f110d08: 3c058007 */ lui $a1,%hi(g_SaveLocations) +/* f110d08: 3c058007 */ lui $a1,%hi(g_FileLists) /* f110d0c: afbf001c */ sw $ra,0x1c($sp) /* f110d10: 2406ffff */ addiu $a2,$zero,-1 -/* f110d14: 24a55bc0 */ addiu $a1,$a1,%lo(g_SaveLocations) +/* f110d14: 24a55bc0 */ addiu $a1,$a1,%lo(g_FileLists) /* f110d18: 24040004 */ addiu $a0,$zero,0x4 /* f110d1c: 00001825 */ or $v1,$zero,$zero /* f110d20: 2407ffff */ addiu $a3,$zero,-1 @@ -1571,12 +1572,12 @@ glabel func0f110da8 /* f110e68: 2a410005 */ slti $at,$s2,0x5 /* f110e6c: 5420ffe6 */ bnezl $at,.L0f110e08 /* f110e70: 00128e00 */ sll $s1,$s2,0x18 -/* f110e74: 3c108007 */ lui $s0,%hi(g_SaveLocations) -/* f110e78: 3c148007 */ lui $s4,%hi(g_SaveLocations+0x10) -/* f110e7c: 3c118007 */ lui $s1,%hi(g_SaveLocations+0x10) -/* f110e80: 26315bd0 */ addiu $s1,$s1,%lo(g_SaveLocations+0x10) -/* f110e84: 26945bd0 */ addiu $s4,$s4,%lo(g_SaveLocations+0x10) -/* f110e88: 26105bc0 */ addiu $s0,$s0,%lo(g_SaveLocations) +/* f110e74: 3c108007 */ lui $s0,%hi(g_FileLists) +/* f110e78: 3c148007 */ lui $s4,%hi(g_FileLists+0x10) +/* f110e7c: 3c118007 */ lui $s1,%hi(g_FileLists+0x10) +/* f110e80: 26315bd0 */ addiu $s1,$s1,%lo(g_FileLists+0x10) +/* f110e84: 26945bd0 */ addiu $s4,$s4,%lo(g_FileLists+0x10) +/* f110e88: 26105bc0 */ addiu $s0,$s0,%lo(g_FileLists) /* f110e8c: 24120001 */ addiu $s2,$zero,0x1 /* f110e90: 8e040000 */ lw $a0,0x0($s0) .L0f110e94: @@ -1615,10 +1616,10 @@ glabel func0f110da8 /* f110f04: 0214082b */ sltu $at,$s0,$s4 /* f110f08: 5420ffe2 */ bnezl $at,.L0f110e94 /* f110f0c: 8e040000 */ lw $a0,0x0($s0) -/* f110f10: 3c028007 */ lui $v0,%hi(g_SaveLocations+0x10) +/* f110f10: 3c028007 */ lui $v0,%hi(g_FileLists+0x10) /* f110f14: 3c038007 */ lui $v1,%hi(var80075be0) /* f110f18: 24635be0 */ addiu $v1,$v1,%lo(var80075be0) -/* f110f1c: 24425bd0 */ addiu $v0,$v0,%lo(g_SaveLocations+0x10) +/* f110f1c: 24425bd0 */ addiu $v0,$v0,%lo(g_FileLists+0x10) .L0f110f20: /* f110f20: 24420004 */ addiu $v0,$v0,0x4 /* f110f24: 1443fffe */ bne $v0,$v1,.L0f110f20 @@ -2029,7 +2030,7 @@ glabel func0f111460 /* f1114fc: 02002025 */ or $a0,$s0,$zero /* f111500: afa5003c */ sw $a1,0x3c($sp) /* f111504: afa80030 */ sw $t0,0x30($sp) -/* f111508: 0fc479ac */ jal func0f11e6b0 +/* f111508: 0fc479ac */ jal pakSearch /* f11150c: afaa0024 */ sw $t2,0x24($sp) /* f111510: 00022600 */ sll $a0,$v0,0x18 /* f111514: 00045e03 */ sra $t3,$a0,0x18 diff --git a/src/game/mplayer.c b/src/game/mplayer.c index 35daf4b8f..bf8bbe51e 100644 --- a/src/game/mplayer.c +++ b/src/game/mplayer.c @@ -6754,9 +6754,9 @@ glabel func0f18d9fc /* f18da2c: 0fc35531 */ jal func0f0d54c4 /* f18da30: 27a40020 */ addiu $a0,$sp,0x20 /* f18da34: 240f0001 */ addiu $t7,$zero,0x1 -/* f18da38: 3c018007 */ lui $at,%hi(g_SaveLocations+0x18) +/* f18da38: 3c018007 */ lui $at,%hi(g_FileLists+0x18) /* f18da3c: 27b80100 */ addiu $t8,$sp,0x100 -/* f18da40: ac2f5bd8 */ sw $t7,%lo(g_SaveLocations+0x18)($at) +/* f18da40: ac2f5bd8 */ sw $t7,%lo(g_FileLists+0x18)($at) /* f18da44: afb80010 */ sw $t8,0x10($sp) /* f18da48: 83a4010f */ lb $a0,0x10f($sp) /* f18da4c: 8fa50110 */ lw $a1,0x110($sp) @@ -7439,10 +7439,10 @@ glabel func0f18e420 /* f18e468: 0fc45a0a */ jal func0f116828 /* f18e46c: afa00014 */ sw $zero,0x14($sp) /* f18e470: 24180001 */ addiu $t8,$zero,0x1 -/* f18e474: 3c018007 */ lui $at,%hi(g_SaveLocations+0x14) +/* f18e474: 3c018007 */ lui $at,%hi(g_FileLists+0x14) /* f18e478: 00401825 */ or $v1,$v0,$zero /* f18e47c: 14400009 */ bnez $v0,.L0f18e4a4 -/* f18e480: ac385bd4 */ sw $t8,%lo(g_SaveLocations+0x14)($at) +/* f18e480: ac385bd4 */ sw $t8,%lo(g_FileLists+0x14)($at) /* f18e484: 8fb90100 */ lw $t9,0x100($sp) /* f18e488: 97a80112 */ lhu $t0,0x112($sp) /* f18e48c: 3c03800b */ lui $v1,%hi(g_MpSetup) diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index 70572796a..6d1677512 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -527,7 +527,7 @@ glabel func0f116828 ); GLOBAL_ASM( -glabel func0f116860 +glabel filemgrDeleteFile /* f116860: 27bdffe8 */ addiu $sp,$sp,-24 /* f116864: afbf0014 */ sw $ra,0x14($sp) /* f116868: afa40018 */ sw $a0,0x18($sp) @@ -3301,8 +3301,8 @@ glabel func0f1189d8 /* f118aa4: 02002025 */ or $a0,$s0,$zero /* f118aa8: 0fc43c81 */ jal savefileApplyOptions /* f118aac: 02002025 */ or $a0,$s0,$zero -/* f118ab0: 3c01800a */ lui $at,%hi(var800a22c0+0x4) -/* f118ab4: a42022c4 */ sh $zero,%lo(var800a22c0+0x4)($at) +/* f118ab0: 3c01800a */ lui $at,%hi(g_FilemgrLoadedMainFile+0x4) +/* f118ab4: a42022c4 */ sh $zero,%lo(g_FilemgrLoadedMainFile+0x4)($at) /* f118ab8: 8fbf001c */ lw $ra,0x1c($sp) /* f118abc: 3c01800a */ lui $at,%hi(g_Vars+0x4e4) /* f118ac0: 240c00f5 */ addiu $t4,$zero,0xf5 @@ -11090,7 +11090,7 @@ glabel func0f11e618 ); GLOBAL_ASM( -glabel func0f11e6b0 +glabel pakSearch /* f11e6b0: 27bdffd0 */ addiu $sp,$sp,-48 /* f11e6b4: afb40028 */ sw $s4,0x28($sp) /* f11e6b8: afb30024 */ sw $s3,0x24($sp) diff --git a/src/game/training.c b/src/game/training.c index 29ed50a0c..b66f43a8d 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -2563,8 +2563,8 @@ glabel var7f1b94e4 /* f19fbc0: 2484907c */ addiu $a0,$a0,%lo(g_MenuDialogFrTrainingStatsCompleted) /* f19fbc4: 0fc3e178 */ jal func0f0f85e0 /* f19fbc8: 2405000d */ addiu $a1,$zero,0xd -/* f19fbcc: 3c04800a */ lui $a0,%hi(var800a22c0) -/* f19fbd0: 248422c0 */ addiu $a0,$a0,%lo(var800a22c0) +/* f19fbcc: 3c04800a */ lui $a0,%hi(g_FilemgrLoadedMainFile) +/* f19fbd0: 248422c0 */ addiu $a0,$a0,%lo(g_FilemgrLoadedMainFile) /* f19fbd4: 00002825 */ or $a1,$zero,$zero /* f19fbd8: 0fc42539 */ jal func0f1094e4 /* f19fbdc: 00003025 */ or $a2,$zero,$zero @@ -3572,7 +3572,7 @@ glabel var7f1b94e4 // case FRMENUTYPE_COMPLETED: // audioStart(var80095200, 0x5dc, NULL, -1, -1, -1, -1, -1); // func0f0f85e0(&g_MenuDialogFrTrainingStatsCompleted, MENUROOT_TRAINING); -// func0f1094e4(&var800a22c0, 0, 0); +// func0f1094e4(&g_FilemgrLoadedMainFile, 0, 0); // break; // } // } diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 9627134a3..b73fece06 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -14898,13 +14898,13 @@ u32 g_CheatsActiveBank0 = 0; u32 g_CheatsActiveBank1 = 0; u32 g_CheatsEnabledBank0 = 0; u32 g_CheatsEnabledBank1 = 0; -struct savelocation_2d8 var800a21e0 = {0}; +struct savelocation_2d8 g_FilemgrFileToCopy = {0}; struct savelocation_2d8 var800a21e8 = {0}; -struct savelocation_2d8 var800a21f0 = {0}; +struct savelocation_2d8 g_FilemgrFileToDelete = {0}; struct savelocation_2d8 var800a21f8 = {0}; struct savefile_solo g_SoloSaveFile = {0}; u32 var800a22bc = 0; -struct savelocation_2d8 var800a22c0 = {0}; +struct savelocation_2d8 g_FilemgrLoadedMainFile = {0}; u32 var800a22c8 = 0; u32 var800a22cc = 0; u32 var800a22d0 = 0; diff --git a/src/include/constants.h b/src/include/constants.h index 0f8c23be4..dd97b658e 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2504,6 +2504,7 @@ #define SAVEDEVICE_CONTROLLERPAK3 2 #define SAVEDEVICE_CONTROLLERPAK4 3 #define SAVEDEVICE_GAMEPAK 4 +#define SAVEDEVICE_INVALID 5 #define SAVEFILEFLAG_P1_FORWARDPITCH 0x00 #define SAVEFILEFLAG_P1_AUTOAIM 0x01 diff --git a/src/include/game/data/data_01a3a0.h b/src/include/game/data/data_01a3a0.h index 0f15e7e7d..d5c9f326d 100644 --- a/src/include/game/data/data_01a3a0.h +++ b/src/include/game/data/data_01a3a0.h @@ -2,30 +2,30 @@ #define IN_GAME_DATA_01A3A0_H #include -extern struct menudialog g_FilemanErrorMenuDialog; +extern struct menudialog g_FilemgrErrorMenuDialog; extern u16 savelocations2[]; extern u16 iomessages2[]; extern u16 filetypenames[]; -extern struct menudialog g_FilemanFileSavedMenuDialog; -extern struct menudialog g_FilemanSaveErrorMenuDialog; -extern struct menudialog g_FilemanFileLostMenuDialog; -extern struct menudialog g_FilemanSaveElsewhereMenuDialog; -extern struct menudialog g_FilemanInsertOriginalPakMenuDialog; +extern struct menudialog g_FilemgrFileSavedMenuDialog; +extern struct menudialog g_FilemgrSaveErrorMenuDialog; +extern struct menudialog g_FilemgrFileLostMenuDialog; +extern struct menudialog g_FilemgrSaveElsewhereMenuDialog; +extern struct menudialog g_FilemgrInsertOriginalPakMenuDialog; extern u32 var8007464c; -extern struct menudialog g_FilemanChangeFileNameMenuDialog; -extern struct menudialog g_FilemanDuplicateFileNameMenuDialog; +extern struct menudialog g_FilemgrChangeFileNameMenuDialog; +extern struct menudialog g_FilemgrDuplicateFileNameMenuDialog; extern u16 savelocations3[]; -extern struct menudialog g_FilemanSelectLocationMenuDialog; -extern struct menudialog g_FilemanConfirmDeleteMenuDialog; -extern struct menudialog g_FilemanFileInUseMenuDialog; -extern struct menudialog g_FilemanDeleteFileMenuDialog; -extern struct menudialog g_FilemanCopyListMenuDialog; +extern struct menudialog g_FilemgrSelectLocationMenuDialog; +extern struct menudialog g_FilemgrConfirmDeleteMenuDialog; +extern struct menudialog g_FilemgrFileInUseMenuDialog; +extern struct menudialog g_FilemgrDeleteFileMenuDialog; +extern struct menudialog g_FilemgrCopyListMenuDialog; extern struct pakdata *g_EditingPak; extern struct menudialog g_PakDeleteGameNoteMenuDialog; extern struct menudialog g_PakGameNotesMenuDialog; extern struct menudialog g_PakChoosePakMenuDialog; -extern struct menudialog g_FilemanEnterAgentNameMenuDialog; -extern struct menudialog g_FilemanMainMenuDialog; +extern struct menudialog g_FilemgrEnterAgentNameMenuDialog; +extern struct menudialog g_FilemgrMainMenuDialog; extern struct menudialog menudialog_fileselect2; extern struct menudialog menudialog_mpquickgo2; extern struct menudialog menudialog_1b1bc; @@ -33,8 +33,8 @@ extern struct menudialog g_4MbMainMenu; extern struct menudialog menudialog_mpdropout; extern struct menudialog g_MpEditSimulant4MbMenuDialog; extern struct menudialog g_4MbAdvancedSetupMenuDialog; -extern struct var80075bc0 g_SaveLocations; -extern u32 var80075bd0; +extern struct filelist *g_FileLists[4]; +extern bool var80075bd0[4]; extern u32 var80075be0; extern struct var80075c00 var80075c00[]; extern u32 var80075c30; diff --git a/src/include/game/game_0f09f0.h b/src/include/game/game_0f09f0.h index a4600d3c8..0d84874bf 100644 --- a/src/include/game/game_0f09f0.h +++ b/src/include/game/game_0f09f0.h @@ -81,7 +81,7 @@ bool func0f0fd1f4(u32 arg0, u32 arg1); u32 func0f0fd320(void); void func0f0fd494(struct coord *pos); void func0f0fd548(s32 arg0); -bool func0f0fd570(struct menudialog *dialog); +bool menuIsDialogOpen(struct menudialog *dialog); bool currentPlayerGetUnk1c04(void); extern const char var7f1b2658[]; diff --git a/src/include/game/game_107fb0.h b/src/include/game/game_107fb0.h index b82b690b0..45f71c2f1 100644 --- a/src/include/game/game_107fb0.h +++ b/src/include/game/game_107fb0.h @@ -3,80 +3,80 @@ #include #include "types.h" -char *filemanGetDeviceName(s32 index); -char *filemanMenuTextDeviceName(struct menuitem *item); -void func0f1080d0(char *buffer, struct savelocation000 *arg1, u32 arg2); -char *filemanMenuTextDeleteFileName(struct menuitem *item); +char *filemgrGetDeviceName(s32 index); +char *filemgrMenuTextDeviceName(struct menuitem *item); +void filemgrGetFileName(char *buffer, struct savelocation000 *arg1, u32 filetype); +char *filemgrMenuTextDeleteFileName(struct menuitem *item); void func0f108324(s32 arg0); void func0f1083b0(struct savelocation000 *arg0); void func0f1083d0(struct savelocation000 *arg0, s32 filetype); -char *filemanMenuTextFailReason(struct menuitem *item); -char *filemanMenuTextDeviceNameForError(struct menuitem *item); -void filemanPushErrorDialog(u16 errno); -s32 func0f1086b8(s32 arg0, s32 arg1, s32 arg2); -char *filemanMenuTextErrorTitle(struct menuitem *item); -char *filemanMenuTextFileType(struct menuitem *item); +char *filemgrMenuTextFailReason(struct menuitem *item); +char *filemgrMenuTextDeviceNameForError(struct menuitem *item); +void filemgrPushErrorDialog(u16 errno); +s32 filemgrGetDeviceNameOrStartIndex(s32 listnum, s32 operation, s32 optionindex); +char *filemgrMenuTextErrorTitle(struct menuitem *item); +char *filemgrMenuTextFileType(struct menuitem *item); void func0f10898c(void); void func0f108a80(void); -void filemanEraseCorruptFile(void); -char *filemanMenuTextInsertOriginalPak(struct menuitem *item); -void func0f109038(s32 arg0); +void filemgrEraseCorruptFile(void); +char *filemgrMenuTextInsertOriginalPak(struct menuitem *item); +void filemgrRetrySave(s32 arg0); bool fileSave(s32 arg0, bool arg1); bool func0f1094e4(struct savelocation_2d8 *arg0, s32 arg1, void *arg2); -void filemanDeleteFile(void); +void filemgrDeleteCurrentFile(void); void func0f1097d0(s32 device); void func0f109954(s32 arg0); void func0f1099a8(char *buffer, struct savelocation000 *arg1); -void func0f109a68(char *buffer); -void func0f109bb4(char *name); -bool func0f109c8c(s32 arg0); +void filemgrGetRenameName(char *buffer); +void filemgrSetRenameName(char *name); +bool filemgrIsNameAvailable(s32 arg0); void func0f109ec4(void); -char *filemanMenuTextDeviceNameContainingDuplicateFile(struct menuitem *item); -char *filemanMenuTextDuplicateFileName(struct menuitem *item); -char *filemanMenuTextLocationName2(struct menuitem *item); -char *filemanMenuTextSaveLocationSpaces(struct menuitem *item); -void func0f10a51c(s32 arg0, u32 arg1); -char *filemanMenuTextFileInUseDescription(struct menuitem *item); -Gfx *filemanRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, u32 arg2, u32 arg3); -bool func0f10a97c(struct savelocation000 *arg0); -s32 filemanFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data, bool isdelete); -void filemanPushDeleteFileDialog(u32 arg0); +char *filemgrMenuTextDeviceNameContainingDuplicateFile(struct menuitem *item); +char *filemgrMenuTextDuplicateFileName(struct menuitem *item); +char *filemgrMenuTextLocationName2(struct menuitem *item); +char *filemgrMenuTextSaveLocationSpaces(struct menuitem *item); +void filemgrPushSelectLocationDialog(s32 arg0, u32 arg1); +char *filemgrMenuTextFileInUseDescription(struct menuitem *item); +Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, u32 arg2, u32 arg3); +bool filemgrIsFileInUse(struct savelocation000 *arg0); +s32 filemgrFileToCopyOrDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data, bool isdelete); +void filemgrPushDeleteFileDialog(s32 listnum); char *pakMenuTextPagesFree(struct menuitem *item); char *pakMenuTextPagesUsed(struct menuitem *item); char *pakMenuTextStatusMessage(struct menuitem *item); char *pakMenuTextEditingPakName(struct menuitem *item); -bool filemanConsiderPushingFileSelectDialog(void); +bool filemgrConsiderPushingFileSelectDialog(void); void pakPushPakMenuDialog(void); -s32 filemanChooseAgentListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrChooseAgentListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); s32 pakGameNoteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanFileToCopyListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanFileToDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanInsertOriginalPakMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); -s32 filemanCopyOrDeleteListMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); +s32 filemgrFileToCopyListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrFileToDeleteListMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrInsertOriginalPakMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); +s32 filemgrCopyOrDeleteListMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); s32 pakGameNotesMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); s32 pakChoosePakMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); -s32 filemanMainMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); -s32 filemanDeviceNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanFileNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanDeviceNameForErrorMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanRetrySaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanCancelSave2MenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanAcknowledgeFileLostMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanReinsertedOkMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanReinsertedCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanDuplicateRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanDuplicateCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanCancelSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanDeleteFilesForSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanConfirmDeleteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrMainMenuDialog(u32 operation, struct menudialog *dialog, union handlerdata *data); +s32 filemgrDeviceNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrFileNameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrDeviceNameForErrorMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrRetrySaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrCancelSave2MenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrAcknowledgeFileLostMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrReinsertedOkMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrReinsertedCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrDuplicateRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrDuplicateCancelMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrCancelSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrDeleteFilesForSaveMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrConfirmDeleteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); s32 pakDeleteGameNoteMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); s32 pakSelectionMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanAgentNameKeyboardMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanOpenCopyFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanOpenDeleteFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanConfirmRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanSaveElsewhereYesMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); -s32 filemanSelectLocationMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrAgentNameKeyboardMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrOpenCopyFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrOpenDeleteFileMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrConfirmRenameMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrSaveElsewhereYesMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); +s32 filemgrSelectLocationMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data); extern const char var7f1b3214[]; extern const char var7f1b3218[]; diff --git a/src/include/game/gamefile.h b/src/include/game/gamefile.h index a40dc0535..0612d6fcb 100644 --- a/src/include/game/gamefile.h +++ b/src/include/game/gamefile.h @@ -19,7 +19,7 @@ void func0f1109c0(void); void func0f110b68(void); void func0f110bf0(void); void func0f110bf8(void); -void func0f110c5c(s32 locationindex, u8 filetype); +void func0f110c5c(s32 listnum, u8 filetype); u8 func0f110cf8(u8 arg0); u32 func0f110d90(void); void func0f110da8(void); diff --git a/src/include/game/pak/pak.h b/src/include/game/pak/pak.h index c3cc7026b..0a55f7e64 100644 --- a/src/include/game/pak/pak.h +++ b/src/include/game/pak/pak.h @@ -13,7 +13,7 @@ u32 func0f1167b0(void); u32 func0f1167d8(s8 arg0); s32 func0f116800(s8 arg0, s32 arg1, void *arg2, s32 arg3); s32 func0f116828(s8 arg0, s32 arg1, s32 arg2, void *arg3, s32 *arg4, s32 arg5); -bool func0f116860(s8 arg0, s32 arg1); +bool filemgrDeleteFile(s8 arg0, s32 arg1); s32 pakDeleteGameNote(s8 device, u16 company_code, u32 game_code, char *game_name, char *ext_name); s32 func0f1168c4(s8 device, struct pakdata **arg1); u32 func0f116914(void); @@ -129,7 +129,7 @@ void bitSetByIndex(u32 value, u32 *flags, bool set); u32 bitGetByIndex(u32 value, u32 *flags); void func0f11e5bc(u32 *flags); void func0f11e618(char *src, char *dst, u32 len); -s8 func0f11e6b0(s32 arg0); +s8 pakSearch(s32 arg0); u32 func0f11e750(void); u32 func0f11e78c(void); u32 func0f11e7f0(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 418f5e5e8..dcc99a071 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -659,12 +659,12 @@ extern u32 g_CheatsActiveBank0; extern u32 g_CheatsActiveBank1; extern u32 g_CheatsEnabledBank0; extern u32 g_CheatsEnabledBank1; -extern struct savelocation_2d8 var800a21e0; +extern struct savelocation_2d8 g_FilemgrFileToCopy; extern struct savelocation_2d8 var800a21e8; -extern struct savelocation_2d8 var800a21f0; +extern struct savelocation_2d8 g_FilemgrFileToDelete; extern struct savelocation_2d8 var800a21f8; extern struct savefile_solo g_SoloSaveFile; -extern struct savelocation_2d8 var800a22c0; +extern struct savelocation_2d8 g_FilemgrLoadedMainFile; extern u32 var800a22d0; extern u8 var800a2328[4]; extern u8 g_AltTitle; diff --git a/src/include/types.h b/src/include/types.h index 2b82c4eb3..ac21f4cdb 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3863,12 +3863,12 @@ struct menudata_mpend { u32 unke1c; }; -// Not sure if fileman and pak are the same struct -struct menudata_fileman { +// Not sure if filemgr and pak are the same struct +struct menudata_filemgr { u32 filetypeplusone; u32 device; u32 unke24; - u32 unke28; + u32 isdeletingforsave; u32 unke2c; }; @@ -4493,7 +4493,7 @@ struct menu { struct menudata_mpsetup mpsetup; struct menudata_mppause mppause; struct menudata_mpend mpend; - struct menudata_fileman fileman; + struct menudata_filemgr filemgr; struct menudata_pak pak; struct menudata_main4mb main4mb; struct menudata_train train; @@ -4505,15 +4505,15 @@ struct menu { /*0xe3c*/ u8 unke3c; /*0xe3d*/ u8 unke3d; /*0xe3e*/ u8 unke3e; - /*0xe3f*/ u8 unke3f; + /*0xe3f*/ u8 listnum; /*0xe40*/ u8 unke40; /*0xe41*/ u8 unke41; /*0xe42*/ u8 unke42; /*0xe44*/ void *unke44; /*0xe48*/ u32 unke48; /*0xe4c*/ u32 unke4c; - /*0xe50*/ u16 unke50; - /*0xe52*/ u8 unke52; + /*0xe50*/ u16 isretryingsave; + /*0xe52*/ u8 device; /*0xe53*/ char unke53[1]; /*0xe54*/ u32 unke54; /*0xe58*/ u32 unke58; @@ -4711,203 +4711,26 @@ struct savelocation000 { u32 unk14; }; -struct savelocation { - /*0x000*/ struct savelocation000 unk000[1]; - /*0x018*/ u32 unk018; - /*0x01c*/ u32 unk01c; - /*0x020*/ u32 unk020; - /*0x024*/ u32 unk024; - /*0x028*/ u32 unk028; - /*0x02c*/ u32 unk02c; - /*0x030*/ u32 unk030; - /*0x034*/ u32 unk034; - /*0x038*/ u32 unk038; - /*0x03c*/ u32 unk03c; - /*0x040*/ u32 unk040; - /*0x044*/ u32 unk044; - /*0x048*/ u32 unk048; - /*0x04c*/ u32 unk04c; - /*0x050*/ u32 unk050; - /*0x054*/ u32 unk054; - /*0x058*/ u32 unk058; - /*0x05c*/ u32 unk05c; - /*0x060*/ u32 unk060; - /*0x064*/ u32 unk064; - /*0x068*/ u32 unk068; - /*0x06c*/ u32 unk06c; - /*0x070*/ u32 unk070; - /*0x074*/ u32 unk074; - /*0x078*/ u32 unk078; - /*0x07c*/ u32 unk07c; - /*0x080*/ u32 unk080; - /*0x084*/ u32 unk084; - /*0x088*/ u32 unk088; - /*0x08c*/ u32 unk08c; - /*0x090*/ u32 unk090; - /*0x094*/ u32 unk094; - /*0x098*/ u32 unk098; - /*0x09c*/ u32 unk09c; - /*0x0a0*/ u32 unk0a0; - /*0x0a4*/ u32 unk0a4; - /*0x0a8*/ u32 unk0a8; - /*0x0ac*/ u32 unk0ac; - /*0x0b0*/ u32 unk0b0; - /*0x0b4*/ u32 unk0b4; - /*0x0b8*/ u32 unk0b8; - /*0x0bc*/ u32 unk0bc; - /*0x0c0*/ u32 unk0c0; - /*0x0c4*/ u32 unk0c4; - /*0x0c8*/ u32 unk0c8; - /*0x0cc*/ u32 unk0cc; - /*0x0d0*/ u32 unk0d0; - /*0x0d4*/ u32 unk0d4; - /*0x0d8*/ u32 unk0d8; - /*0x0dc*/ u32 unk0dc; - /*0x0e0*/ u32 unk0e0; - /*0x0e4*/ u32 unk0e4; - /*0x0e8*/ u32 unk0e8; - /*0x0ec*/ u32 unk0ec; - /*0x0f0*/ u32 unk0f0; - /*0x0f4*/ u32 unk0f4; - /*0x0f8*/ u32 unk0f8; - /*0x0fc*/ u32 unk0fc; - /*0x100*/ u32 unk100; - /*0x104*/ u32 unk104; - /*0x108*/ u32 unk108; - /*0x10c*/ u32 unk10c; - /*0x110*/ u32 unk110; - /*0x114*/ u32 unk114; - /*0x118*/ u32 unk118; - /*0x11c*/ u32 unk11c; - /*0x120*/ u32 unk120; - /*0x124*/ u32 unk124; - /*0x128*/ u32 unk128; - /*0x12c*/ u32 unk12c; - /*0x130*/ u32 unk130; - /*0x134*/ u32 unk134; - /*0x138*/ u32 unk138; - /*0x13c*/ u32 unk13c; - /*0x140*/ u32 unk140; - /*0x144*/ u32 unk144; - /*0x148*/ u32 unk148; - /*0x14c*/ u32 unk14c; - /*0x150*/ u32 unk150; - /*0x154*/ u32 unk154; - /*0x158*/ u32 unk158; - /*0x15c*/ u32 unk15c; - /*0x160*/ u32 unk160; - /*0x164*/ u32 unk164; - /*0x168*/ u32 unk168; - /*0x16c*/ u32 unk16c; - /*0x170*/ u32 unk170; - /*0x174*/ u32 unk174; - /*0x178*/ u32 unk178; - /*0x17c*/ u32 unk17c; - /*0x180*/ u32 unk180; - /*0x184*/ u32 unk184; - /*0x188*/ u32 unk188; - /*0x18c*/ u32 unk18c; - /*0x190*/ u32 unk190; - /*0x194*/ u32 unk194; - /*0x198*/ u32 unk198; - /*0x19c*/ u32 unk19c; - /*0x1a0*/ u32 unk1a0; - /*0x1a4*/ u32 unk1a4; - /*0x1a8*/ u32 unk1a8; - /*0x1ac*/ u32 unk1ac; - /*0x1b0*/ u32 unk1b0; - /*0x1b4*/ u32 unk1b4; - /*0x1b8*/ u32 unk1b8; - /*0x1bc*/ u32 unk1bc; - /*0x1c0*/ u32 unk1c0; - /*0x1c4*/ u32 unk1c4; - /*0x1c8*/ u32 unk1c8; - /*0x1cc*/ u32 unk1cc; - /*0x1d0*/ u32 unk1d0; - /*0x1d4*/ u32 unk1d4; - /*0x1d8*/ u32 unk1d8; - /*0x1dc*/ u32 unk1dc; - /*0x1e0*/ u32 unk1e0; - /*0x1e4*/ u32 unk1e4; - /*0x1e8*/ u32 unk1e8; - /*0x1ec*/ u32 unk1ec; - /*0x1f0*/ u32 unk1f0; - /*0x1f4*/ u32 unk1f4; - /*0x1f8*/ u32 unk1f8; - /*0x1fc*/ u32 unk1fc; - /*0x200*/ u32 unk200; - /*0x204*/ u32 unk204; - /*0x208*/ u32 unk208; - /*0x20c*/ u32 unk20c; - /*0x210*/ u32 unk210; - /*0x214*/ u32 unk214; - /*0x218*/ u32 unk218; - /*0x21c*/ u32 unk21c; - /*0x220*/ u32 unk220; - /*0x224*/ u32 unk224; - /*0x228*/ u32 unk228; - /*0x22c*/ u32 unk22c; - /*0x230*/ u32 unk230; - /*0x234*/ u32 unk234; - /*0x238*/ u32 unk238; - /*0x23c*/ u32 unk23c; - /*0x240*/ u32 unk240; - /*0x244*/ u32 unk244; - /*0x248*/ u32 unk248; - /*0x24c*/ u32 unk24c; - /*0x250*/ u32 unk250; - /*0x254*/ u32 unk254; - /*0x258*/ u32 unk258; - /*0x25c*/ u32 unk25c; - /*0x260*/ u32 unk260; - /*0x264*/ u32 unk264; - /*0x268*/ u32 unk268; - /*0x26c*/ u32 unk26c; - /*0x270*/ u32 unk270; - /*0x274*/ u32 unk274; - /*0x278*/ u32 unk278; - /*0x27c*/ u32 unk27c; - /*0x280*/ u32 unk280; - /*0x284*/ u32 unk284; - /*0x288*/ u32 unk288; - /*0x28c*/ u32 unk28c; - /*0x290*/ u32 unk290; - /*0x294*/ u32 unk294; - /*0x298*/ u32 unk298; - /*0x29c*/ u32 unk29c; - /*0x2a0*/ u32 unk2a0; - /*0x2a4*/ u32 unk2a4; - /*0x2a8*/ u32 unk2a8; - /*0x2ac*/ u32 unk2ac; - /*0x2b0*/ u32 unk2b0; - /*0x2b4*/ u32 unk2b4; - /*0x2b8*/ u32 unk2b8; - /*0x2bc*/ u32 unk2bc; - /*0x2c0*/ u32 unk2c0; - /*0x2c4*/ u32 unk2c4; - /*0x2c8*/ u32 unk2c8; - /*0x2cc*/ u32 unk2cc; - /*0x2d0*/ s16 unk2d0; +// This stores information about all files of a particular filetype across all +// devices. For example, the copy file dialog might list all MP player files +// from all devices in one listing, and that information is stored here. +struct filelist { + /*0x000*/ struct savelocation000 unk000[30]; + /*0x2d0*/ s16 numfiles; /*0x2d2*/ s8 spacesfree[4]; /*0x2d8*/ struct savelocation_2d8 unk2d8[4]; /*0x2f8*/ u32 unk2f8; /*0x2fc*/ u32 unk2fc; - /*0x300*/ s8 unk300[4]; - /*0x304*/ u32 unk304; + /*0x300*/ s8 devicestartindexes[8]; /*0x308*/ u8 unk308; /*0x309*/ u8 unk309; /*0x30a*/ u8 unk30a; /*0x30b*/ u8 filetype; - /*0x30c*/ u8 unk30c; // inuse? + /*0x30c*/ u8 outdated; /*0x30d*/ u8 unk30d; /*0x30e*/ u8 unk30e; }; -struct var80075bc0 { - struct savelocation *locations[4]; - bool unk10[4]; -}; - struct challenge { /*0x00*/ u16 name; /*0x02*/ s16 confignum;