mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-18 05:08:36 -04:00
Discover file GUIDs
This commit is contained in:
@@ -1365,7 +1365,7 @@ void endscreenPrepare(void)
|
||||
}
|
||||
}
|
||||
|
||||
func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_000, 0);
|
||||
func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_000, 0);
|
||||
}
|
||||
|
||||
if (g_MenuData.root == MENUROOT_ENDSCREEN) {
|
||||
@@ -1666,7 +1666,7 @@ void soloPushCoopModeEndscreen(void)
|
||||
}
|
||||
|
||||
if (g_Vars.currentplayer == g_Vars.bond) {
|
||||
func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_000, NULL);
|
||||
func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_000, NULL);
|
||||
}
|
||||
|
||||
g_MpPlayerNum = prevplayernum;
|
||||
@@ -1806,7 +1806,7 @@ void soloPushAntiModeEndscreen(void)
|
||||
}
|
||||
}
|
||||
|
||||
func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_000, 0);
|
||||
func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_000, 0);
|
||||
} else {
|
||||
if (g_Vars.anti->aborted == 0 &&
|
||||
(g_Vars.bond->isdead || g_Vars.bond->aborted || objectiveIsAllComplete() == false)) {
|
||||
|
||||
@@ -917,16 +917,16 @@ glabel func0f0d5690
|
||||
//}
|
||||
#endif
|
||||
|
||||
void func0f0d575c(struct savebuffer *buffer, struct maybesavelocation_2d8 *arg1)
|
||||
void savebufferWriteGuid(struct savebuffer *buffer, struct fileguid *guid)
|
||||
{
|
||||
savebufferOr(buffer, arg1->unk00, 7);
|
||||
savebufferOr(buffer, arg1->unk04, 13);
|
||||
savebufferOr(buffer, guid->filenum, 7);
|
||||
savebufferOr(buffer, guid->deviceserial, 13);
|
||||
}
|
||||
|
||||
void func0f0d579c(struct savebuffer *buffer, struct maybesavelocation_2d8 *arg1)
|
||||
void savebufferReadGuid(struct savebuffer *buffer, struct fileguid *guid)
|
||||
{
|
||||
arg1->unk00 = savebufferReadBits(buffer, 7);
|
||||
arg1->unk04 = savebufferReadBits(buffer, 13);
|
||||
guid->filenum = savebufferReadBits(buffer, 7);
|
||||
guid->deviceserial = savebufferReadBits(buffer, 13);
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
|
||||
@@ -4828,8 +4828,8 @@ glabel func0f0f3220
|
||||
/* f0f32fc: 24080001 */ addiu $t0,$zero,0x1
|
||||
.L0f0f3300:
|
||||
/* f0f3300: 11000009 */ beqz $t0,.L0f0f3328
|
||||
/* f0f3304: 3c04800a */ lui $a0,%hi(g_FilemgrLoadedMainFile)
|
||||
/* f0f3308: 248422c0 */ addiu $a0,$a0,%lo(g_FilemgrLoadedMainFile)
|
||||
/* f0f3304: 3c04800a */ lui $a0,%hi(g_GameFileGuid)
|
||||
/* f0f3308: 248422c0 */ addiu $a0,$a0,%lo(g_GameFileGuid)
|
||||
/* f0f330c: afa80024 */ sw $t0,0x24($sp)
|
||||
/* f0f3310: 0fc42539 */ jal func0f1094e4
|
||||
/* f0f3314: afa9001c */ sw $t1,0x1c($sp)
|
||||
|
||||
@@ -4147,7 +4147,7 @@ s32 menudialog0010559c(s32 operation, struct menudialog *dialog, union handlerda
|
||||
break;
|
||||
case MENUOP_CLOSE:
|
||||
if ((g_Vars.modifiedfiles & MODFILE_GAME) && g_Vars.coopplayernum < 0 && g_Vars.antiplayernum < 0) {
|
||||
if (func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_001, 0) == 0) {
|
||||
if (func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_001, 0) == 0) {
|
||||
data->dialog1.preventclose = true;
|
||||
}
|
||||
|
||||
@@ -4248,7 +4248,7 @@ s32 menuhandlerControlStyle(s32 operation, struct menuitem *item, union handlerd
|
||||
s32 menuhandler001057ec(s32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_002, 0);
|
||||
func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_002, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
+101
-100
@@ -19,13 +19,13 @@
|
||||
#include "types.h"
|
||||
|
||||
// bss
|
||||
struct savelocation_2d8 g_FilemgrFileToCopy;
|
||||
struct savelocation_2d8 var800a21e8;
|
||||
struct savelocation_2d8 g_FilemgrFileToDelete;
|
||||
struct savelocation_2d8 var800a21f8;
|
||||
struct fileguid g_FilemgrFileToCopy;
|
||||
struct fileguid var800a21e8;
|
||||
struct fileguid g_FilemgrFileToDelete;
|
||||
struct fileguid var800a21f8;
|
||||
struct gamefile g_GameFile;
|
||||
u32 var800a22bc;
|
||||
struct savelocation_2d8 g_FilemgrLoadedMainFile;
|
||||
struct fileguid g_GameFileGuid;
|
||||
|
||||
// These might be able to be removed by relocating their symbols
|
||||
struct menudialog g_FilemgrCopyMenuDialog;
|
||||
@@ -204,12 +204,12 @@ char *filemgrMenuTextDeleteFileName(struct menuitem *item)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void func0f108324(s32 arg0)
|
||||
void func0f108324(s32 deviceserial)
|
||||
{
|
||||
s32 index = pakSearch(arg0);
|
||||
s32 device = pakFindBySerial(deviceserial);
|
||||
|
||||
if (index >= 0) {
|
||||
g_Menus[g_MpPlayerNum].unke3c = index;
|
||||
if (device >= 0) {
|
||||
g_Menus[g_MpPlayerNum].unke3c = device;
|
||||
} else {
|
||||
g_Menus[g_MpPlayerNum].unke3c = SAVEDEVICE_INVALID;
|
||||
}
|
||||
@@ -217,7 +217,7 @@ void func0f108324(s32 arg0)
|
||||
|
||||
void func0f1083b0(struct filelistfile *file)
|
||||
{
|
||||
func0f108324(file->unk04);
|
||||
func0f108324(file->deviceserial);
|
||||
}
|
||||
|
||||
void func0f1083d0(struct filelistfile *file, s32 filetype)
|
||||
@@ -475,8 +475,8 @@ void filemgrHandleSuccess(void)
|
||||
align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1]));
|
||||
break;
|
||||
case FILEOP_LOAD_GAME:
|
||||
g_Vars.unk00047c = g_Menus[g_MpPlayerNum].unke48;
|
||||
g_Vars.unk000480 = g_Menus[g_MpPlayerNum].unke4c;
|
||||
g_Vars.bossfilenum = g_Menus[g_MpPlayerNum].filenum;
|
||||
g_Vars.bossdeviceserial = g_Menus[g_MpPlayerNum].deviceserial;
|
||||
bossfileSave();
|
||||
|
||||
if (IS4MB()) {
|
||||
@@ -581,13 +581,13 @@ s32 filemgrAcknowledgeFileLostMenuHandler(s32 operation, struct menuitem *item,
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
void filemgrEraseCorruptFile(void)
|
||||
{
|
||||
s32 value;
|
||||
s32 device;
|
||||
s32 i;
|
||||
|
||||
value = pakSearch(g_Menus[g_MpPlayerNum].unke4c);
|
||||
device = pakFindBySerial(g_Menus[g_MpPlayerNum].deviceserial);
|
||||
|
||||
if (value >= 0) {
|
||||
filemgrDeleteFile(value, g_Menus[g_MpPlayerNum].unke48);
|
||||
if (device >= 0) {
|
||||
filemgrDeleteFile(device, g_Menus[g_MpPlayerNum].filenum);
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
@@ -672,9 +672,9 @@ char *filemgrMenuTextInsertOriginalPak(struct menuitem *item)
|
||||
*/
|
||||
void filemgrRetrySave(s32 context)
|
||||
{
|
||||
s32 index = pakSearch(g_Menus[g_MpPlayerNum].unke4c);
|
||||
s32 device = pakFindBySerial(g_Menus[g_MpPlayerNum].deviceserial);
|
||||
|
||||
if (index == -1) {
|
||||
if (device == -1) {
|
||||
if (context == 1) {
|
||||
filemgrPushErrorDialog(FILEERROR_NOPAK);
|
||||
}
|
||||
@@ -682,9 +682,9 @@ void filemgrRetrySave(s32 context)
|
||||
if (context == 2) {
|
||||
func0f0f3704(&g_PakNotOriginalMenuDialog);
|
||||
}
|
||||
} else if (filemgrAttemptOperation(index, true)) {
|
||||
} else if (filemgrAttemptOperation(device, true)) {
|
||||
if (context == 2) {
|
||||
g_Menus[g_MpPlayerNum].unke3c = index;
|
||||
g_Menus[g_MpPlayerNum].unke3c = device;
|
||||
|
||||
if (FILEOP_IS_SAVE(g_Menus[g_MpPlayerNum].fileop)) {
|
||||
filemgrPushErrorDialog(FILEERROR_SAVEFAILED);
|
||||
@@ -692,7 +692,7 @@ void filemgrRetrySave(s32 context)
|
||||
filemgrPushErrorDialog(FILEERROR_LOADFAILED);
|
||||
}
|
||||
} else {
|
||||
func0f108324(g_Menus[g_MpPlayerNum].unke4c);
|
||||
func0f108324(g_Menus[g_MpPlayerNum].deviceserial);
|
||||
|
||||
if (FILEOP_IS_SAVE(g_Menus[g_MpPlayerNum].fileop)) {
|
||||
func0f0f3704(&g_FilemgrSaveErrorMenuDialog);
|
||||
@@ -709,7 +709,7 @@ void filemgrRetrySave(s32 context)
|
||||
}
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
bool filemgrAttemptOperation(s32 arg0, bool closeonsuccess)
|
||||
bool filemgrAttemptOperation(s32 device, bool closeonsuccess)
|
||||
{
|
||||
s32 errno = 0;
|
||||
bool showfilesaved = (g_Menus[g_MpPlayerNum].isretryingsave & 1) != 0;
|
||||
@@ -723,20 +723,20 @@ bool filemgrAttemptOperation(s32 arg0, bool closeonsuccess)
|
||||
// fall through
|
||||
case FILEOP_SAVE_GAME_000:
|
||||
case FILEOP_SAVE_GAME_001:
|
||||
errno = gamefileSave(arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
g_Menus[g_MpPlayerNum].unke4c);
|
||||
errno = gamefileSave(device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
g_Menus[g_MpPlayerNum].deviceserial);
|
||||
break;
|
||||
case FILEOP_SAVE_MPPLAYER:
|
||||
errno = mpplayerfileSave(
|
||||
(s32) g_Menus[g_MpPlayerNum].unke44, arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
g_Menus[g_MpPlayerNum].unke4c);
|
||||
(s32) g_Menus[g_MpPlayerNum].unke44, device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
g_Menus[g_MpPlayerNum].deviceserial);
|
||||
break;
|
||||
case FILEOP_SAVE_MPSETUP:
|
||||
errno = mpsetupfileSave(arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
g_Menus[g_MpPlayerNum].unke4c);
|
||||
errno = mpsetupfileSave(device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
g_Menus[g_MpPlayerNum].deviceserial);
|
||||
showfilesaved = true;
|
||||
break;
|
||||
case FILEOP_WRITE_GAME:
|
||||
@@ -744,32 +744,32 @@ bool filemgrAttemptOperation(s32 arg0, bool closeonsuccess)
|
||||
case FILEOP_WRITE_MPPLAYER:
|
||||
sp2c = 0;
|
||||
func0f0d5690(g_Menus[g_MpPlayerNum].unke44, g_Menus[g_MpPlayerNum].unke53);
|
||||
errno = func0f116828(arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
errno = func0f116828(device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
sp30[g_Menus[g_MpPlayerNum].fileop - 6],
|
||||
g_Menus[g_MpPlayerNum].unke44, &sp2c, 0);
|
||||
var80075bd0[g_Menus[g_MpPlayerNum].fileop - 6] = 1;
|
||||
break;
|
||||
case FILEOP_LOAD_GAME:
|
||||
errno = gamefileLoad(arg0);
|
||||
errno = gamefileLoad(device);
|
||||
break;
|
||||
case FILEOP_LOAD_MPPLAYER:
|
||||
errno = mpplayerfileLoad(
|
||||
(s32) g_Menus[g_MpPlayerNum].unke44,
|
||||
arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
g_Menus[g_MpPlayerNum].unke4c);
|
||||
device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
g_Menus[g_MpPlayerNum].deviceserial);
|
||||
break;
|
||||
case FILEOP_LOAD_MPSETUP:
|
||||
errno = mpsetupfileLoad(arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
g_Menus[g_MpPlayerNum].unke4c);
|
||||
errno = mpsetupfileLoad(device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
g_Menus[g_MpPlayerNum].deviceserial);
|
||||
break;
|
||||
case FILEOP_READ_GAME:
|
||||
case FILEOP_READ_MPSETUP:
|
||||
case FILEOP_READ_MPPLAYER:
|
||||
errno = func0f116800(arg0,
|
||||
g_Menus[g_MpPlayerNum].unke48,
|
||||
errno = func0f116800(device,
|
||||
g_Menus[g_MpPlayerNum].filenum,
|
||||
g_Menus[g_MpPlayerNum].unke44, 0);
|
||||
break;
|
||||
}
|
||||
@@ -1042,35 +1042,35 @@ const char var7f1b31d8[] = "COULD NOT DELETE\n";
|
||||
const char var7f1b31ec[] = "Multiplayer %d was using that file...\n";
|
||||
#endif
|
||||
|
||||
bool func0f1094e4(struct savelocation_2d8 *arg0, s32 fileop, void *arg2)
|
||||
bool func0f1094e4(struct fileguid *guid, s32 fileop, void *arg2)
|
||||
{
|
||||
s32 value;
|
||||
s32 device;
|
||||
|
||||
if (fileop != -1) {
|
||||
g_Menus[g_MpPlayerNum].fileop = fileop;
|
||||
g_Menus[g_MpPlayerNum].unke44 = arg2;
|
||||
g_Menus[g_MpPlayerNum].isretryingsave = 0;
|
||||
var800a21f8.unk00 = 0;
|
||||
var800a21f8.filenum = 0;
|
||||
}
|
||||
|
||||
g_Menus[g_MpPlayerNum].unke48 = arg0->unk00;
|
||||
g_Menus[g_MpPlayerNum].unke4c = arg0->unk04;
|
||||
g_Menus[g_MpPlayerNum].filenum = guid->filenum;
|
||||
g_Menus[g_MpPlayerNum].deviceserial = guid->deviceserial;
|
||||
|
||||
if (fileop != -1) {
|
||||
// empty
|
||||
}
|
||||
|
||||
value = pakSearch(g_Menus[g_MpPlayerNum].unke4c);
|
||||
device = pakFindBySerial(g_Menus[g_MpPlayerNum].deviceserial);
|
||||
|
||||
if (value == -1) {
|
||||
if (device == -1) {
|
||||
g_Menus[g_MpPlayerNum].isretryingsave |= 1;
|
||||
menuPushDialog(&g_PakNotOriginalMenuDialog);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (filemgrAttemptOperation(value, false) != 0) {
|
||||
if (filemgrAttemptOperation(device, false) != 0) {
|
||||
g_Menus[g_MpPlayerNum].isretryingsave |= 1;
|
||||
func0f108324(g_Menus[g_MpPlayerNum].unke4c);
|
||||
func0f108324(g_Menus[g_MpPlayerNum].deviceserial);
|
||||
|
||||
if (FILEOP_IS_SAVE(g_Menus[g_MpPlayerNum].fileop)) {
|
||||
menuPushDialog(&g_FilemgrSaveErrorMenuDialog);
|
||||
@@ -1092,11 +1092,11 @@ bool func0f1094e4(struct savelocation_2d8 *arg0, s32 fileop, void *arg2)
|
||||
void filemgrDeleteCurrentFile(void)
|
||||
{
|
||||
bool error = false;
|
||||
s8 index = pakSearch(g_FilemgrFileToDelete.unk04);
|
||||
s8 device = pakFindBySerial(g_FilemgrFileToDelete.deviceserial);
|
||||
s32 i;
|
||||
|
||||
if (index >= 0) {
|
||||
if (filemgrDeleteFile(index, g_FilemgrFileToDelete.unk00)) {
|
||||
if (device >= 0) {
|
||||
if (filemgrDeleteFile(device, g_FilemgrFileToDelete.filenum)) {
|
||||
error = true;
|
||||
}
|
||||
} else {
|
||||
@@ -1106,12 +1106,13 @@ void filemgrDeleteCurrentFile(void)
|
||||
g_FileLists[g_Menus[g_MpPlayerNum].listnum]->timeuntilupdate = 1;
|
||||
|
||||
if (error) {
|
||||
g_Menus[g_MpPlayerNum].unke3c = index;
|
||||
g_Menus[g_MpPlayerNum].unke3c = device;
|
||||
filemgrPushErrorDialog(FILEERROR_DELETEFAILED);
|
||||
} else {
|
||||
// If deleting a loaded MP player, reset them to default
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (g_FilemgrFileToDelete.unk00 == g_MpPlayers[i].unk4c.unk00
|
||||
&& g_FilemgrFileToDelete.unk04 == g_MpPlayers[i].unk4c.unk04) {
|
||||
if (g_FilemgrFileToDelete.filenum == g_MpPlayers[i].fileguid.filenum
|
||||
&& g_FilemgrFileToDelete.deviceserial == g_MpPlayers[i].fileguid.deviceserial) {
|
||||
mpPlayerSetDefaults(i, true);
|
||||
}
|
||||
}
|
||||
@@ -1210,8 +1211,8 @@ void func0f1097d0(s32 device)
|
||||
void *thing;
|
||||
|
||||
if (g_FileLists[0]) {
|
||||
var800a21e8.unk00 = g_FileLists[0]->unk2d8[device].unk00;
|
||||
var800a21e8.unk04 = g_FileLists[0]->unk2d8[device].unk04;
|
||||
var800a21e8.filenum = g_FileLists[0]->deviceguids[device].filenum;
|
||||
var800a21e8.deviceserial = g_FileLists[0]->deviceguids[device].deviceserial;
|
||||
|
||||
thing = func00012ab0(align16(var7f1b2f3c[g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone - 1]));
|
||||
|
||||
@@ -1235,10 +1236,10 @@ const char var7f1b3284[] = "Saving...\n";
|
||||
void func0f109954(s32 arg0)
|
||||
{
|
||||
if (g_FileLists[0]) {
|
||||
g_FilemgrLoadedMainFile.unk00 = g_FileLists[0]->unk2d8[arg0].unk00;
|
||||
g_FilemgrLoadedMainFile.unk04 = g_FileLists[0]->unk2d8[arg0].unk04;
|
||||
g_GameFileGuid.filenum = g_FileLists[0]->deviceguids[arg0].filenum;
|
||||
g_GameFileGuid.deviceserial = g_FileLists[0]->deviceguids[arg0].deviceserial;
|
||||
|
||||
func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_000, NULL);
|
||||
func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_000, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1452,20 +1453,20 @@ void func0f109ec4(void)
|
||||
} else if (g_Menus[g_MpPlayerNum].unke3e == 5) {
|
||||
// empty
|
||||
} else if (g_Menus[g_MpPlayerNum].unke3e == 6) {
|
||||
struct savelocation_2d8 thing;
|
||||
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, FILEOP_SAVE_MPPLAYER, (void *)g_MpPlayerNum);
|
||||
struct fileguid guid;
|
||||
guid.filenum = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->deviceguids[g_Menus[g_MpPlayerNum].device].filenum;
|
||||
guid.deviceserial = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->deviceguids[g_Menus[g_MpPlayerNum].device].deviceserial;
|
||||
func0f1094e4(&guid, FILEOP_SAVE_MPPLAYER, (void *)g_MpPlayerNum);
|
||||
} else if (g_Menus[g_MpPlayerNum].unke3e == 7) {
|
||||
struct savelocation_2d8 thing;
|
||||
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, FILEOP_SAVE_MPSETUP, NULL);
|
||||
struct fileguid guid;
|
||||
guid.filenum = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->deviceguids[g_Menus[g_MpPlayerNum].device].filenum;
|
||||
guid.deviceserial = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->deviceguids[g_Menus[g_MpPlayerNum].device].deviceserial;
|
||||
func0f1094e4(&guid, FILEOP_SAVE_MPSETUP, NULL);
|
||||
} else if (g_Menus[g_MpPlayerNum].unke3e >= 9) {
|
||||
struct savelocation_2d8 thing;
|
||||
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);
|
||||
struct fileguid guid;
|
||||
guid.filenum = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->deviceguids[g_Menus[g_MpPlayerNum].device].filenum;
|
||||
guid.deviceserial = g_FileLists[g_Menus[g_MpPlayerNum].listnum]->deviceguids[g_Menus[g_MpPlayerNum].device].deviceserial;
|
||||
func0f1094e4(&guid, -1, NULL);
|
||||
} else {
|
||||
func0f1097d0(g_Menus[g_MpPlayerNum].device);
|
||||
}
|
||||
@@ -1929,11 +1930,11 @@ char *filemgrMenuTextFileInUseDescription(struct menuitem *item)
|
||||
* but filemgrRenderPerfectHeadThumbnail will only match if
|
||||
* it's an s32 with a 0xffff mask.
|
||||
*/
|
||||
struct textureconfig *filelistGetPerfectHeadTexture(s32 playernum, s32 arg1, s32 arg2);
|
||||
struct textureconfig *filelistGetPerfectHeadTexture(s32 playernum, s32 filenum, s32 deviceserial);
|
||||
|
||||
Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, s32 arg2, s32 arg3)
|
||||
Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, s32 filenum, s32 deviceserial)
|
||||
{
|
||||
struct textureconfig *texture = filelistGetPerfectHeadTexture(g_MpPlayerNum, arg2, arg3 & 0xffff);
|
||||
struct textureconfig *texture = filelistGetPerfectHeadTexture(g_MpPlayerNum, filenum, deviceserial & 0xffff);
|
||||
|
||||
if (texture) {
|
||||
gSPDisplayList(gdl++, &var800613a0);
|
||||
@@ -1969,7 +1970,7 @@ Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *rend
|
||||
gDPTileSync(gdl++);
|
||||
gDPPipeSync(gdl++);
|
||||
|
||||
if (arg3) {
|
||||
if (deviceserial) {
|
||||
// empty
|
||||
}
|
||||
}
|
||||
@@ -1983,8 +1984,8 @@ bool filemgrIsFileInUse(struct filelistfile *file)
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
if (menuIsDialogOpen(&g_FilemgrCopyMenuDialog)
|
||||
&& file->unk00 == g_FilemgrFileToCopy.unk00
|
||||
&& file->unk04 == g_FilemgrFileToCopy.unk04) {
|
||||
&& file->filenum == g_FilemgrFileToCopy.filenum
|
||||
&& file->deviceserial == g_FilemgrFileToCopy.deviceserial) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1994,8 +1995,8 @@ bool filemgrIsFileInUse(struct filelistfile *file)
|
||||
#else
|
||||
if (g_MenuData.root == MENUROOT_FILEMGR
|
||||
&& menuIsDialogOpen(&g_FilemgrCopyMenuDialog)
|
||||
&& file->unk00 == g_FilemgrFileToCopy.unk00
|
||||
&& file->unk04 == g_FilemgrFileToCopy.unk04) {
|
||||
&& file->filenum == g_FilemgrFileToCopy.filenum
|
||||
&& file->deviceserial == g_FilemgrFileToCopy.deviceserial) {
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
@@ -2004,18 +2005,18 @@ bool filemgrIsFileInUse(struct filelistfile *file)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (file->unk00 == g_FilemgrLoadedMainFile.unk00 && file->unk04 == g_FilemgrLoadedMainFile.unk04) {
|
||||
if (file->filenum == g_GameFileGuid.filenum && file->deviceserial == g_GameFileGuid.deviceserial) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (file->unk00 == g_MpSetup.unk20.unk00 && file->unk04 == g_MpSetup.unk20.unk04) {
|
||||
if (file->filenum == g_MpSetup.fileguid.filenum && file->deviceserial == g_MpSetup.fileguid.deviceserial) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if ((g_MpSetup.chrslots & (1 << i))
|
||||
&& g_MpPlayers[i].unk4c.unk00 == file->unk00
|
||||
&& g_MpPlayers[i].unk4c.unk04 == file->unk04) {
|
||||
&& g_MpPlayers[i].fileguid.filenum == file->filenum
|
||||
&& g_MpPlayers[i].fileguid.deviceserial == file->deviceserial) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -2056,7 +2057,7 @@ s32 filemgrFileToCopyOrDeleteListMenuHandler(s32 operation, struct menuitem *ite
|
||||
struct filelistfile *file = &list->files[data->list.unk04];
|
||||
|
||||
if (g_Menus[g_MpPlayerNum].data.filemgr.filetypeplusone == 4) {
|
||||
gdl = filemgrRenderPerfectHeadThumbnail(gdl, renderdata, file->unk00, file->unk04);
|
||||
gdl = filemgrRenderPerfectHeadThumbnail(gdl, renderdata, file->filenum, file->deviceserial);
|
||||
} else {
|
||||
u32 colour = renderdata->colour;
|
||||
char text[32];
|
||||
@@ -2114,8 +2115,8 @@ s32 filemgrFileToDeleteListMenuHandler(s32 operation, struct menuitem *item, uni
|
||||
menuPushDialog(&g_FilemgrFileInUseMenuDialog);
|
||||
} else {
|
||||
func0f1083d0(file, g_FileLists[g_Menus[g_MpPlayerNum].listnum]->filetype);
|
||||
g_FilemgrFileToDelete.unk00 = file->unk00;
|
||||
g_FilemgrFileToDelete.unk04 = file->unk04;
|
||||
g_FilemgrFileToDelete.filenum = file->filenum;
|
||||
g_FilemgrFileToDelete.deviceserial = file->deviceserial;
|
||||
menuPushDialog(&g_FilemgrConfirmDeleteMenuDialog);
|
||||
}
|
||||
}
|
||||
@@ -2136,8 +2137,8 @@ s32 filemgrFileToCopyListMenuHandler(s32 operation, struct menuitem *item, union
|
||||
struct filelistfile *file = &list->files[data->list.value];
|
||||
|
||||
if (file) {
|
||||
g_FilemgrFileToCopy.unk00 = file->unk00;
|
||||
g_FilemgrFileToCopy.unk04 = file->unk04;
|
||||
g_FilemgrFileToCopy.filenum = file->filenum;
|
||||
g_FilemgrFileToCopy.deviceserial = file->deviceserial;
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
filemgrGetFileName(g_Menus[g_MpPlayerNum].unke53, file);
|
||||
@@ -2612,8 +2613,8 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
|
||||
if (data->list.unk04 == 1) {
|
||||
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]->files[i].unk00
|
||||
&& g_FilemgrLoadedMainFile.unk04 == g_FileLists[0]->files[i].unk04) {
|
||||
if (g_GameFileGuid.filenum == g_FileLists[0]->files[i].filenum
|
||||
&& g_GameFileGuid.deviceserial == g_FileLists[0]->files[i].deviceserial) {
|
||||
data->list.value = i;
|
||||
}
|
||||
}
|
||||
@@ -2629,12 +2630,12 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
|
||||
g_Menus[g_MpPlayerNum].data.filemgr.unke2c = 0;
|
||||
}
|
||||
|
||||
if (pass && g_Vars.unk00047c) {
|
||||
if (pass && g_Vars.bossfilenum) {
|
||||
for (j = 0; j < g_FileLists[0]->numfiles; j++) {
|
||||
if (g_Vars.unk00047c == g_FileLists[0]->files[j].unk00
|
||||
&& g_Vars.unk000480 == g_FileLists[0]->files[j].unk04) {
|
||||
if (g_Vars.bossfilenum == g_FileLists[0]->files[j].filenum
|
||||
&& g_Vars.bossdeviceserial == g_FileLists[0]->files[j].deviceserial) {
|
||||
data->list.value = j;
|
||||
g_Vars.unk00047c = 0;
|
||||
g_Vars.bossfilenum = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2772,9 +2773,9 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
|
||||
struct filelistfile *file = &g_FileLists[0]->files[data->list.value];
|
||||
|
||||
if (file) {
|
||||
g_FilemgrLoadedMainFile.unk00 = file->unk00;
|
||||
g_FilemgrLoadedMainFile.unk04 = file->unk04;
|
||||
func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_LOAD_GAME, 0);
|
||||
g_GameFileGuid.filenum = file->filenum;
|
||||
g_GameFileGuid.deviceserial = file->deviceserial;
|
||||
func0f1094e4(&g_GameFileGuid, FILEOP_LOAD_GAME, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
+32
-32
@@ -103,7 +103,7 @@ void bossfileLoad(void)
|
||||
struct savebuffer buffer;
|
||||
s32 i;
|
||||
s32 tmp;
|
||||
struct maybesavelocation_2d8 thing;
|
||||
struct fileguid guid;
|
||||
|
||||
tmp = func0f110720();
|
||||
|
||||
@@ -112,7 +112,7 @@ void bossfileLoad(void)
|
||||
} else {
|
||||
savebufferClear(&buffer);
|
||||
|
||||
if (func0f116800(4, tmp, buffer.bytes, 0)) {
|
||||
if (func0f116800(SAVEDEVICE_GAMEPAK, tmp, buffer.bytes, 0)) {
|
||||
failed = true;
|
||||
}
|
||||
}
|
||||
@@ -120,10 +120,10 @@ void bossfileLoad(void)
|
||||
if (!failed) {
|
||||
u8 tracknum;
|
||||
|
||||
func0f0d579c(&buffer, &thing);
|
||||
savebufferReadGuid(&buffer, &guid);
|
||||
|
||||
g_Vars.unk00047c = thing.unk00;
|
||||
g_Vars.unk000480 = thing.unk04;
|
||||
g_Vars.bossfilenum = guid.filenum;
|
||||
g_Vars.bossdeviceserial = guid.deviceserial;
|
||||
|
||||
g_BossFile.unk89 = savebufferReadBits(&buffer, 1);
|
||||
|
||||
@@ -162,17 +162,17 @@ void bossfileSave(void)
|
||||
{
|
||||
volatile bool sp12c = false;
|
||||
struct savebuffer buffer;
|
||||
struct maybesavelocation_2d8 thing;
|
||||
struct fileguid guid;
|
||||
u32 stack;
|
||||
s32 i;
|
||||
s32 tmp;
|
||||
|
||||
savebufferClear(&buffer);
|
||||
|
||||
thing.unk00 = g_Vars.unk00047c;
|
||||
thing.unk04 = g_Vars.unk000480;
|
||||
guid.filenum = g_Vars.bossfilenum;
|
||||
guid.deviceserial = g_Vars.bossdeviceserial;
|
||||
|
||||
func0f0d575c(&buffer, &thing);
|
||||
savebufferWriteGuid(&buffer, &guid);
|
||||
|
||||
savebufferOr(&buffer, g_BossFile.unk89, 1);
|
||||
savebufferOr(&buffer, g_Vars.unk000482, 4);
|
||||
@@ -203,7 +203,7 @@ void bossfileSave(void)
|
||||
func0000bfd0("fileGuid", "bossfile.c", PAL ? 377 : 375);
|
||||
}
|
||||
|
||||
if (func0f116828(4, tmp, 0x10, buffer.bytes, NULL, 0)) {
|
||||
if (func0f116828(SAVEDEVICE_GAMEPAK, tmp, 0x10, buffer.bytes, NULL, 0)) {
|
||||
sp12c = true;
|
||||
}
|
||||
}
|
||||
@@ -224,8 +224,8 @@ void bossfileSetDefaults(void)
|
||||
g_BossFile.usingmultipletunes = false;
|
||||
g_BossFile.unk89 = 0;
|
||||
g_BossFile.locktype = MPLOCKTYPE_NONE;
|
||||
g_Vars.unk00047c = 0;
|
||||
g_Vars.unk000480 = 0;
|
||||
g_Vars.bossfilenum = 0;
|
||||
g_Vars.bossdeviceserial = 0;
|
||||
g_Vars.unk000482 = (PAL ? 7 : 0);
|
||||
g_AltTitleUnlocked = 0;
|
||||
g_AltTitleEnabled = false;
|
||||
@@ -425,8 +425,8 @@ void filelistUpdate(struct filelist *list)
|
||||
list->spacesfree[dis2dev[i]] = func0f118148(dis2dev[i]);
|
||||
}
|
||||
|
||||
list->unk2d8[dis2dev[i]].unk00 = 0;
|
||||
list->unk2d8[dis2dev[i]].unk04 = func0f11693c(dis2dev[i]);
|
||||
list->deviceguids[dis2dev[i]].filenum = 0;
|
||||
list->deviceguids[dis2dev[i]].deviceserial = pakGetDeviceSerial(dis2dev[i]);
|
||||
} else {
|
||||
// PFS error?
|
||||
list->spacesfree[dis2dev[i]] = -1;
|
||||
@@ -455,8 +455,8 @@ void filelistUpdate(struct filelist *list)
|
||||
list->devicestartindexes[dev2dis[filedevices[i]]] = list->numfiles;
|
||||
}
|
||||
|
||||
file->unk04 = func0f11693c(filedevices[i]);
|
||||
file->unk00 = sp1288[i];
|
||||
file->deviceserial = pakGetDeviceSerial(filedevices[i]);
|
||||
file->filenum = sp1288[i];
|
||||
|
||||
list->numfiles++;
|
||||
} else if (maybepfserr == 10) {
|
||||
@@ -466,9 +466,9 @@ void filelistUpdate(struct filelist *list)
|
||||
if (list->unk305[filedevices[i]] >= 2) {
|
||||
list->spacesfree[filedevices[i]]++;
|
||||
|
||||
if (list->unk2d8[filedevices[i]].unk00 == 0) {
|
||||
list->unk2d8[filedevices[i]].unk00 = sp1288[i];
|
||||
list->unk2d8[filedevices[i]].unk04 = func0f11693c(filedevices[i]);
|
||||
if (list->deviceguids[filedevices[i]].filenum == 0) {
|
||||
list->deviceguids[filedevices[i]].filenum = sp1288[i];
|
||||
list->deviceguids[filedevices[i]].deviceserial = pakGetDeviceSerial(filedevices[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -617,34 +617,34 @@ glabel func0f111260
|
||||
/* f11145c: 00000000 */ nop
|
||||
);
|
||||
|
||||
struct textureconfig *filelistGetPerfectHeadTexture(s32 playernum, s32 arg1, u16 arg2)
|
||||
struct textureconfig *filelistGetPerfectHeadTexture(s32 playernum, s32 filenum, u16 deviceserial)
|
||||
{
|
||||
s32 i;
|
||||
s32 bestcandidate = -1;
|
||||
s32 freeslot = -1;
|
||||
s32 indextouse = -1;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
if (g_Menus[playernum].headtextures->unk800[i].unk00 == arg1
|
||||
&& g_Menus[playernum].headtextures->unk800[i].unk04 == arg2) {
|
||||
if (g_Menus[playernum].headtextures->fileguids[i].filenum == filenum
|
||||
&& g_Menus[playernum].headtextures->fileguids[i].deviceserial == deviceserial) {
|
||||
indextouse = i;
|
||||
break;
|
||||
}
|
||||
|
||||
if (g_Menus[playernum].headtextures->unk800[i].unk00 == 0) {
|
||||
if (g_Menus[playernum].headtextures->unk800[i].unk04 == 0) {
|
||||
bestcandidate = i;
|
||||
if (g_Menus[playernum].headtextures->fileguids[i].filenum == 0) {
|
||||
if (g_Menus[playernum].headtextures->fileguids[i].deviceserial == 0) {
|
||||
freeslot = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (indextouse == -1) {
|
||||
s8 device = pakSearch(arg2);
|
||||
s8 device = pakFindBySerial(deviceserial);
|
||||
|
||||
if (device < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (bestcandidate == -1) {
|
||||
if (freeslot == -1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -654,12 +654,12 @@ struct textureconfig *filelistGetPerfectHeadTexture(s32 playernum, s32 arg1, u16
|
||||
|
||||
g_Menus[playernum].headtextures->lastupdated240 = g_Vars.thisframe240;
|
||||
|
||||
func0f15015c(device, arg1, g_Menus[playernum].headtextures->unk000[bestcandidate]);
|
||||
func0f15015c(device, filenum, g_Menus[playernum].headtextures->unk000[freeslot]);
|
||||
|
||||
g_Menus[playernum].headtextures->unk800[bestcandidate].unk00 = arg1;
|
||||
g_Menus[playernum].headtextures->unk800[bestcandidate].unk04 = arg2;
|
||||
g_Menus[playernum].headtextures->fileguids[freeslot].filenum = filenum;
|
||||
g_Menus[playernum].headtextures->fileguids[freeslot].deviceserial = deviceserial;
|
||||
|
||||
indextouse = bestcandidate;
|
||||
indextouse = freeslot;
|
||||
}
|
||||
|
||||
if (indextouse == -1) {
|
||||
|
||||
+10
-10
@@ -892,7 +892,7 @@ const char var7f1b395c[] = "pdoptions.c";
|
||||
const char var7f1b3968[] = "MAX_FUDGE_DATA_SIZE>=sizeof(PakFileTypeGameSetup_s)";
|
||||
const char var7f1b399c[] = "pdoptions.c";
|
||||
|
||||
s32 gamefileLoad(s32 arg0)
|
||||
s32 gamefileLoad(s32 device)
|
||||
{
|
||||
s32 p1index;
|
||||
s32 p2index;
|
||||
@@ -906,10 +906,10 @@ s32 gamefileLoad(s32 arg0)
|
||||
p1index = g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0 ? 0 : 4;
|
||||
p2index = g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0 ? 1 : 5;
|
||||
|
||||
if (arg0 >= 0) {
|
||||
if (device >= 0) {
|
||||
savebufferClear(&buffer);
|
||||
tmp = func0f116800(arg0, g_FilemgrLoadedMainFile.unk00, buffer.bytes, 0);
|
||||
var800a21f8.unk00 = tmp;
|
||||
tmp = func0f116800(device, g_GameFileGuid.filenum, buffer.bytes, 0);
|
||||
var800a21f8.filenum = tmp;
|
||||
|
||||
if (tmp == 0) {
|
||||
cheatsDisableAll();
|
||||
@@ -998,7 +998,7 @@ s32 gamefileLoad(s32 arg0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 gamefileSave(s32 arg0, s32 arg1, u16 arg2)
|
||||
s32 gamefileSave(s32 device, s32 filenum, u16 deviceserial)
|
||||
{
|
||||
u32 stack;
|
||||
s32 sp140;
|
||||
@@ -1087,7 +1087,7 @@ s32 gamefileSave(s32 arg0, s32 arg1, u16 arg2)
|
||||
pakSetBitflag(GAMEFILEFLAG_46, g_GameFile.flags, (g_Vars.unk000482 & 0x04) == 0x04);
|
||||
#endif
|
||||
|
||||
if (arg0 >= 0) {
|
||||
if (device >= 0) {
|
||||
savebufferClear(&buffer);
|
||||
func0f0d55a4(&buffer, g_GameFile.name);
|
||||
|
||||
@@ -1133,12 +1133,12 @@ s32 gamefileSave(s32 arg0, s32 arg1, u16 arg2)
|
||||
|
||||
func0f0d54c4(&buffer);
|
||||
|
||||
tmp = func0f116828(arg0, arg1, 0x80, buffer.bytes, &sp140, 0);
|
||||
var800a21f8.unk00 = tmp;
|
||||
tmp = func0f116828(device, filenum, 0x80, buffer.bytes, &sp140, 0);
|
||||
var800a21f8.filenum = tmp;
|
||||
|
||||
if (tmp == 0) {
|
||||
g_FilemgrLoadedMainFile.unk00 = sp140;
|
||||
g_FilemgrLoadedMainFile.unk04 = arg2;
|
||||
g_GameFileGuid.filenum = sp140;
|
||||
g_GameFileGuid.deviceserial = deviceserial;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -601,8 +601,8 @@ void mpPushEndscreenDialog(u32 arg0, u32 playernum)
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
if ((g_MpPlayers[g_MpPlayerNum].options & OPTION_ASKEDSAVEPLAYER) == 0
|
||||
&& g_MpPlayers[g_MpPlayerNum].unk4c.unk00 == false
|
||||
&& g_MpPlayers[g_MpPlayerNum].unk4c.unk04 == 0) {
|
||||
&& g_MpPlayers[g_MpPlayerNum].fileguid.filenum == 0
|
||||
&& g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial == 0) {
|
||||
g_MpPlayers[g_MpPlayerNum].options |= OPTION_ASKEDSAVEPLAYER;
|
||||
menuPushDialog(&g_MpEndscreenSavePlayerMenuDialog);
|
||||
}
|
||||
|
||||
+42
-42
@@ -408,8 +408,8 @@ void mpPlayerSetDefaults(s32 playernum, bool autonames)
|
||||
|
||||
g_MpPlayers[playernum].base.mpheadnum = mpGetMpheadnumByMpbodynum(g_MpPlayers[playernum].base.mpbodynum);
|
||||
g_MpPlayers[playernum].base.displayoptions = MPDISPLAYOPTION_RADAR | MPDISPLAYOPTION_HIGHLIGHTTEAMS;
|
||||
g_MpPlayers[playernum].unk4c.unk00 = 0;
|
||||
g_MpPlayers[playernum].unk4c.unk04 = 0;
|
||||
g_MpPlayers[playernum].fileguid.filenum = 0;
|
||||
g_MpPlayers[playernum].fileguid.deviceserial = 0;
|
||||
|
||||
if (autonames) {
|
||||
// "Player 1" etc
|
||||
@@ -484,8 +484,8 @@ void mpSetDefaultSetup(void)
|
||||
|
||||
func0f187fec();
|
||||
|
||||
g_MpSetup.unk20.unk00 = 0;
|
||||
g_MpSetup.unk20.unk04 = 0;
|
||||
g_MpSetup.fileguid.filenum = 0;
|
||||
g_MpSetup.fileguid.deviceserial = 0;
|
||||
|
||||
strcpy(g_MpSetup.name, "");
|
||||
|
||||
@@ -8555,7 +8555,7 @@ void mpplayerfileSaveGunFuncs(struct savebuffer *buffer, s32 playernum)
|
||||
|
||||
void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2)
|
||||
{
|
||||
struct maybesavelocation_2d8 thing;
|
||||
struct fileguid guid;
|
||||
u32 stack;
|
||||
s32 i;
|
||||
s32 j;
|
||||
@@ -8567,14 +8567,14 @@ void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2)
|
||||
g_MpPlayers[playernum].base.mpheadnum = savebufferReadBits(buffer, 7);
|
||||
g_MpPlayers[playernum].base.mpbodynum = savebufferReadBits(buffer, 7);
|
||||
|
||||
func0f0d579c(buffer, &thing);
|
||||
savebufferReadGuid(buffer, &guid);
|
||||
|
||||
if (g_MpPlayers[playernum].base.mpheadnum >= mpGetNumHeads2()) {
|
||||
if (thing.unk00 != 0 && thing.unk04 != 0) {
|
||||
if (guid.filenum != 0 && guid.deviceserial != 0) {
|
||||
if (g_MenuData.unk668 < 11) {
|
||||
g_MenuData.unk668++;
|
||||
g_MenuData.unk5d8[g_MenuData.unk668].unk00 = thing.unk00;
|
||||
g_MenuData.unk5d8[g_MenuData.unk668].unk04 = thing.unk04;
|
||||
g_MenuData.unk5d8[g_MenuData.unk668].fileguid.filenum = guid.filenum;
|
||||
g_MenuData.unk5d8[g_MenuData.unk668].fileguid.deviceserial = guid.deviceserial;
|
||||
g_MenuData.unk5d8[g_MenuData.unk668].unk08 = g_MpPlayerNum;
|
||||
g_MenuData.unk5d8[g_MenuData.unk668].unk09 = g_MpPlayerNum;
|
||||
}
|
||||
@@ -8585,7 +8585,7 @@ void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2)
|
||||
} else {
|
||||
savebufferReadBits(buffer, 7);
|
||||
savebufferReadBits(buffer, 7);
|
||||
func0f0d579c(buffer, &thing);
|
||||
savebufferReadGuid(buffer, &guid);
|
||||
}
|
||||
|
||||
g_MpPlayers[playernum].base.displayoptions = savebufferReadBits(buffer, 8);
|
||||
@@ -8635,14 +8635,14 @@ void mpplayerfileSaveWad(s32 playernum, struct savebuffer *buffer)
|
||||
savebufferOr(buffer, g_MpPlayers[playernum].base.mpbodynum, 7);
|
||||
|
||||
if (g_MpPlayers[playernum].base.mpheadnum >= mpGetNumHeads2()) {
|
||||
struct maybesavelocation_2d8 thing;
|
||||
func0f1507b4(g_MpPlayers[playernum].base.mpheadnum - mpGetNumHeads2(), &thing);
|
||||
func0f0d575c(buffer, &thing);
|
||||
struct fileguid guid;
|
||||
func0f1507b4(g_MpPlayers[playernum].base.mpheadnum - mpGetNumHeads2(), &guid);
|
||||
savebufferWriteGuid(buffer, &guid);
|
||||
} else {
|
||||
struct maybesavelocation_2d8 thing;
|
||||
thing.unk04 = 0;
|
||||
thing.unk00 = 0;
|
||||
func0f0d575c(buffer, &thing);
|
||||
struct fileguid guid;
|
||||
guid.deviceserial = 0;
|
||||
guid.filenum = 0;
|
||||
savebufferWriteGuid(buffer, &guid);
|
||||
}
|
||||
|
||||
savebufferOr(buffer, g_MpPlayers[playernum].base.displayoptions, 8);
|
||||
@@ -8759,47 +8759,47 @@ void mpplayerfileGetOverview(char *arg0, char *name, u32 *playtime)
|
||||
*playtime = savebufferReadBits(&buffer, 28);
|
||||
}
|
||||
|
||||
s32 mpplayerfileSave(s32 playernum, s32 arg1, s32 arg2, u16 arg3)
|
||||
s32 mpplayerfileSave(s32 playernum, s32 device, s32 arg2, u16 deviceserial)
|
||||
{
|
||||
s32 tmp;
|
||||
s32 uStack8;
|
||||
s32 filenum;
|
||||
struct savebuffer buffer;
|
||||
|
||||
if (arg1 >= 0) {
|
||||
if (device >= 0) {
|
||||
savebufferClear(&buffer);
|
||||
mpplayerfileSaveWad(playernum, &buffer);
|
||||
func0f0d54c4(&buffer);
|
||||
|
||||
var80075bd0[2] = true;
|
||||
|
||||
tmp = func0f116828(arg1, arg2, 0x20, buffer.bytes, &uStack8, 0);
|
||||
tmp = func0f116828(device, arg2, 0x20, buffer.bytes, &filenum, 0);
|
||||
|
||||
if (tmp == 0) {
|
||||
g_MpPlayers[playernum].unk4c.unk00 = uStack8;
|
||||
g_MpPlayers[playernum].unk4c.unk04 = arg3;
|
||||
g_MpPlayers[playernum].fileguid.filenum = filenum;
|
||||
g_MpPlayers[playernum].fileguid.deviceserial = deviceserial;
|
||||
return 0;
|
||||
}
|
||||
|
||||
var800a21f8.unk00 = tmp;
|
||||
var800a21f8.filenum = tmp;
|
||||
return -1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 mpplayerfileLoad(s32 playernum, s32 arg1, s32 arg2, u16 arg3)
|
||||
s32 mpplayerfileLoad(s32 playernum, s32 device, s32 filenum, u16 deviceserial)
|
||||
{
|
||||
s32 tmp;
|
||||
struct savebuffer buffer;
|
||||
|
||||
if (arg1 >= 0) {
|
||||
if (device >= 0) {
|
||||
savebufferClear(&buffer);
|
||||
|
||||
tmp = func0f116800(arg1, arg2, buffer.bytes, 0);
|
||||
tmp = func0f116800(device, filenum, buffer.bytes, 0);
|
||||
|
||||
if (tmp == 0) {
|
||||
g_MpPlayers[playernum].unk4c.unk00 = arg2;
|
||||
g_MpPlayers[playernum].unk4c.unk04 = arg3;
|
||||
g_MpPlayers[playernum].fileguid.filenum = filenum;
|
||||
g_MpPlayers[playernum].fileguid.deviceserial = deviceserial;
|
||||
|
||||
mpplayerfileLoadWad(playernum, &buffer, 1);
|
||||
func0f0d54c4(&buffer);
|
||||
@@ -8808,7 +8808,7 @@ s32 mpplayerfileLoad(s32 playernum, s32 arg1, s32 arg2, u16 arg3)
|
||||
return 0;
|
||||
}
|
||||
|
||||
var800a21f8.unk00 = tmp;
|
||||
var800a21f8.filenum = tmp;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -9457,45 +9457,45 @@ void mpsetupfileGetOverview(char *arg0, char *filename, u16 *numsims, u16 *stage
|
||||
*scenarionum = savebufferReadBits(&buffer, 3);
|
||||
}
|
||||
|
||||
s32 mpsetupfileSave(s32 arg0, s32 arg1, u16 arg2)
|
||||
s32 mpsetupfileSave(s32 device, s32 filenum, u16 deviceserial)
|
||||
{
|
||||
s32 tmp;
|
||||
s32 sp100;
|
||||
struct savebuffer buffer;
|
||||
|
||||
if (arg0 >= 0) {
|
||||
if (device >= 0) {
|
||||
savebufferClear(&buffer);
|
||||
mpsetupfileSaveWad(&buffer);
|
||||
func0f0d54c4(&buffer);
|
||||
|
||||
tmp = func0f116828(arg0, arg1, 0x40, buffer.bytes, &sp100, 0);
|
||||
tmp = func0f116828(device, filenum, 0x40, buffer.bytes, &sp100, 0);
|
||||
var80075bd0[1] = true;
|
||||
|
||||
if (tmp == 0) {
|
||||
g_MpSetup.unk20.unk00 = sp100;
|
||||
g_MpSetup.unk20.unk04 = arg2;
|
||||
g_MpSetup.fileguid.filenum = sp100;
|
||||
g_MpSetup.fileguid.deviceserial = deviceserial;
|
||||
return 0;
|
||||
}
|
||||
|
||||
var800a21f8.unk00 = tmp;
|
||||
var800a21f8.filenum = tmp;
|
||||
return -1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 mpsetupfileLoad(s32 arg0, s32 arg1, u16 arg2)
|
||||
s32 mpsetupfileLoad(s32 device, s32 filenum, u16 deviceserial)
|
||||
{
|
||||
s32 tmp;
|
||||
struct savebuffer buffer;
|
||||
|
||||
if (arg0 >= 0) {
|
||||
if (device >= 0) {
|
||||
savebufferClear(&buffer);
|
||||
tmp = func0f116800(arg0, arg1, buffer.bytes, 0);
|
||||
tmp = func0f116800(device, filenum, buffer.bytes, 0);
|
||||
|
||||
if (tmp == 0) {
|
||||
g_MpSetup.unk20.unk00 = arg1;
|
||||
g_MpSetup.unk20.unk04 = arg2;
|
||||
g_MpSetup.fileguid.filenum = filenum;
|
||||
g_MpSetup.fileguid.deviceserial = deviceserial;
|
||||
|
||||
mpsetupfileLoadWad(&buffer);
|
||||
func0f0d54c4(&buffer);
|
||||
@@ -9503,7 +9503,7 @@ s32 mpsetupfileLoad(s32 arg0, s32 arg1, u16 arg2)
|
||||
return 0;
|
||||
}
|
||||
|
||||
var800a21f8.unk00 = tmp;
|
||||
var800a21f8.filenum = tmp;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -575,7 +575,7 @@ s32 menuhandlerMpSaveSetupOverwrite(s32 operation, struct menuitem *item, union
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
menuPopDialog();
|
||||
func0f1094e4(&g_MpSetup.unk20, FILEOP_SAVE_MPSETUP, NULL);
|
||||
func0f1094e4(&g_MpSetup.fileguid, FILEOP_SAVE_MPSETUP, NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -4520,8 +4520,8 @@ s32 menuhandlerMpRestoreHandicapDefaults(s32 operation, struct menuitem *item, u
|
||||
s32 menudialogMpReady(s32 operation, struct menudialog *dialog, union handlerdata *data)
|
||||
{
|
||||
if (operation == MENUOP_OPEN) {
|
||||
if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 && g_MpPlayers[g_MpPlayerNum].unk4c.unk04) {
|
||||
func0f1094e4(&g_MpPlayers[g_MpPlayerNum].unk4c, FILEOP_SAVE_MPPLAYER, (void *)g_MpPlayerNum);
|
||||
if (g_MpPlayers[g_MpPlayerNum].fileguid.filenum && g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial) {
|
||||
func0f1094e4(&g_MpPlayers[g_MpPlayerNum].fileguid, FILEOP_SAVE_MPPLAYER, (void *)g_MpPlayerNum);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7407,7 +7407,7 @@ s32 menuhandlerMpLock(s32 operation, struct menuitem *item, union handlerdata *d
|
||||
s32 menuhandlerMpSavePlayer(s32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 == false) {
|
||||
if (g_MpPlayers[g_MpPlayerNum].fileguid.filenum == 0) {
|
||||
filemgrPushSelectLocationDialog(6, FILETYPE_MPPLAYER);
|
||||
} else {
|
||||
menuPushDialog(&g_MpSavePlayerMenuDialog);
|
||||
@@ -7419,7 +7419,7 @@ s32 menuhandlerMpSavePlayer(s32 operation, struct menuitem *item, union handlerd
|
||||
|
||||
char *mpMenuTextSavePlayerOrCopy(struct menuitem *item)
|
||||
{
|
||||
if (g_MpPlayers[g_MpPlayerNum].unk4c.unk00 == false) {
|
||||
if (g_MpPlayers[g_MpPlayerNum].fileguid.filenum == 0) {
|
||||
return langGet(L_MPMENU_038); // "Save Player"
|
||||
}
|
||||
|
||||
@@ -7446,11 +7446,11 @@ s32 menuhandler0017ef30(s32 operation, struct menuitem *item, union handlerdata
|
||||
s32 menuhandlerMpSaveSettings(s32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
if (g_MpSetup.unk20.unk00 == false) {
|
||||
if (g_MpSetup.fileguid.filenum == 0) {
|
||||
menuPushDialog(&g_MpSaveSetupNameMenuDialog);
|
||||
} else {
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
func0f108324(g_MpSetup.unk20.unk04);
|
||||
func0f108324(g_MpSetup.fileguid.deviceserial);
|
||||
#endif
|
||||
|
||||
menuPushDialog(&g_MpSaveSetupExistsMenuDialog);
|
||||
|
||||
+7
-7
@@ -254,9 +254,9 @@ s32 func0f116800(s8 arg0, s32 arg1, void *arg2, s32 arg3)
|
||||
return func0f118bc8(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
s32 func0f116828(s8 arg0, s32 arg1, s32 arg2, void *arg3, s32 *arg4, s32 arg5)
|
||||
s32 func0f116828(s8 device, s32 arg1, s32 arg2, void *arg3, s32 *arg4, s32 arg5)
|
||||
{
|
||||
return func0f11789c(arg0, arg1, arg2, arg3, arg4, arg5);
|
||||
return func0f11789c(device, arg1, arg2, arg3, arg4, arg5);
|
||||
}
|
||||
|
||||
bool filemgrDeleteFile(s8 arg0, s32 arg1)
|
||||
@@ -284,7 +284,7 @@ u32 func0f116914(s8 device)
|
||||
return func0f116c94(device);
|
||||
}
|
||||
|
||||
s32 func0f11693c(s8 device)
|
||||
s32 pakGetDeviceSerial(s8 device)
|
||||
{
|
||||
return func0f116c54(device);
|
||||
}
|
||||
@@ -3014,7 +3014,7 @@ void func0f1189d8(void)
|
||||
gamefileLoadDefaults(&g_GameFile);
|
||||
gamefileApplyOptions(&g_GameFile);
|
||||
|
||||
g_FilemgrLoadedMainFile.unk04 = 0;
|
||||
g_GameFileGuid.deviceserial = 0;
|
||||
g_Vars.unk0004e4 = 0xf5;
|
||||
g_Vars.paksconnected = prevvalue;
|
||||
}
|
||||
@@ -16918,16 +16918,16 @@ glabel func0f11e618
|
||||
/* f11e6ac: 00000000 */ sll $zero,$zero,0x0
|
||||
);
|
||||
|
||||
s8 pakSearch(s32 arg0)
|
||||
s8 pakFindBySerial(s32 findserial)
|
||||
{
|
||||
s8 device = -1;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (func0f116aec(i)) {
|
||||
s32 value = func0f11693c(i);
|
||||
s32 serial = pakGetDeviceSerial(i);
|
||||
|
||||
if (arg0 == value) {
|
||||
if (findserial == serial) {
|
||||
device = i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4298,8 +4298,8 @@ glabel var7f1b94e4
|
||||
/* f19fbc0: 2484907c */ addiu $a0,$a0,%lo(g_FrCompletedMenuDialog)
|
||||
/* f19fbc4: 0fc3e178 */ jal func0f0f85e0
|
||||
/* f19fbc8: 2405000d */ addiu $a1,$zero,0xd
|
||||
/* f19fbcc: 3c04800a */ lui $a0,%hi(g_FilemgrLoadedMainFile)
|
||||
/* f19fbd0: 248422c0 */ addiu $a0,$a0,%lo(g_FilemgrLoadedMainFile)
|
||||
/* f19fbcc: 3c04800a */ lui $a0,%hi(g_GameFileGuid)
|
||||
/* f19fbd0: 248422c0 */ addiu $a0,$a0,%lo(g_GameFileGuid)
|
||||
/* f19fbd4: 00002825 */ or $a1,$zero,$zero
|
||||
/* f19fbd8: 0fc42539 */ jal func0f1094e4
|
||||
/* f19fbdc: 00003025 */ or $a2,$zero,$zero
|
||||
@@ -6426,7 +6426,7 @@ glabel var7f1b94e4
|
||||
// case FRMENUTYPE_COMPLETED:
|
||||
// sndStart(var80095200, SFX_TRAINING_COMPLETE, NULL, -1, -1, -1, -1, -1);
|
||||
// func0f0f85e0(&g_FrCompletedMenuDialog, MENUROOT_TRAINING);
|
||||
// func0f1094e4(&g_FilemgrLoadedMainFile, FILEOP_SAVE_GAME_000, 0);
|
||||
// func0f1094e4(&g_GameFileGuid, FILEOP_SAVE_GAME_000, 0);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
+2
-2
@@ -197,9 +197,9 @@ extern u32 g_CheatsActiveBank0;
|
||||
extern u32 g_CheatsActiveBank1;
|
||||
extern u32 g_CheatsEnabledBank0;
|
||||
extern u32 g_CheatsEnabledBank1;
|
||||
extern struct savelocation_2d8 var800a21f8;
|
||||
extern struct fileguid var800a21f8;
|
||||
extern struct gamefile g_GameFile;
|
||||
extern struct savelocation_2d8 g_FilemgrLoadedMainFile;
|
||||
extern struct fileguid g_GameFileGuid;
|
||||
extern s8 g_AltTitleUnlocked;
|
||||
extern u8 g_AltTitleEnabled;
|
||||
extern struct padsfileheader *g_PadsFile;
|
||||
|
||||
@@ -85,8 +85,8 @@ u32 func0f14fbfc(void);
|
||||
u32 func0f14fdb0(void);
|
||||
u32 func0f14ff94(void);
|
||||
u32 func0f150068(void);
|
||||
s32 func0f15015c(s32 arg0, s32 arg1, u8 *arg2);
|
||||
void func0f1507b4(s32 arg0, struct maybesavelocation_2d8 *arg1);
|
||||
s32 func0f15015c(s32 device, s32 filenum, u8 *arg2);
|
||||
void func0f1507b4(s32 arg0, struct fileguid *guid);
|
||||
|
||||
extern const char var7f1b6050[];
|
||||
extern const char var7f1b6058[];
|
||||
|
||||
@@ -21,8 +21,8 @@ void savebufferReadString(struct savebuffer *buffer, char *dst, bool addlinebrea
|
||||
void func0f0d55a4(struct savebuffer *buffer, char *src);
|
||||
void func0f0d564c(u8 *data, char *dst, bool addlinebreak);
|
||||
void func0f0d5690(u8 *dst, char *buffer);
|
||||
void func0f0d575c(struct savebuffer *buffer, struct maybesavelocation_2d8 *arg1);
|
||||
void func0f0d579c(struct savebuffer *buffer, struct maybesavelocation_2d8 *arg1);
|
||||
void savebufferWriteGuid(struct savebuffer *buffer, struct fileguid *guid);
|
||||
void savebufferReadGuid(struct savebuffer *buffer, struct fileguid *guid);
|
||||
void formatTime(char *dst, s32 time, u32 arg2);
|
||||
void func0f0d5a7c(void);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ char *filemgrGetDeviceName(s32 index);
|
||||
char *filemgrMenuTextDeviceName(struct menuitem *item);
|
||||
void filemgrGetSelectName(char *buffer, struct filelistfile *file, u32 filetype);
|
||||
char *filemgrMenuTextDeleteFileName(struct menuitem *item);
|
||||
void func0f108324(s32 arg0);
|
||||
void func0f108324(s32 deviceserial);
|
||||
void func0f1083b0(struct filelistfile *file);
|
||||
void func0f1083d0(struct filelistfile *file, s32 filetype);
|
||||
char *filemgrMenuTextFailReason(struct menuitem *item);
|
||||
@@ -22,8 +22,8 @@ void filemgrHandleSuccess(void);
|
||||
void filemgrEraseCorruptFile(void);
|
||||
char *filemgrMenuTextInsertOriginalPak(struct menuitem *item);
|
||||
void filemgrRetrySave(s32 arg0);
|
||||
bool filemgrAttemptOperation(s32 arg0, bool closeonsuccess);
|
||||
bool func0f1094e4(struct savelocation_2d8 *arg0, s32 fileop, void *arg2);
|
||||
bool filemgrAttemptOperation(s32 device, bool closeonsuccess);
|
||||
bool func0f1094e4(struct fileguid *guid, s32 fileop, void *arg2);
|
||||
void filemgrDeleteCurrentFile(void);
|
||||
void func0f1097d0(s32 device);
|
||||
void func0f109954(s32 arg0);
|
||||
@@ -38,7 +38,7 @@ char *filemgrMenuTextLocationName2(struct menuitem *item);
|
||||
char *filemgrMenuTextSaveLocationSpaces(struct menuitem *item);
|
||||
void filemgrPushSelectLocationDialog(s32 arg0, u32 filetype);
|
||||
char *filemgrMenuTextFileInUseDescription(struct menuitem *item);
|
||||
Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, s32 arg2, s32 arg3);
|
||||
Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, s32 filenum, s32 deviceserial);
|
||||
bool filemgrIsFileInUse(struct filelistfile *file);
|
||||
s32 filemgrFileToCopyOrDeleteListMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data, bool isdelete);
|
||||
void filemgrPushDeleteFileDialog(s32 listnum);
|
||||
|
||||
@@ -10,8 +10,8 @@ void gamefileUnsetFlag(u32 value);
|
||||
void gamefilePrintFlags(void);
|
||||
void gamefileApplyOptions(struct gamefile *file);
|
||||
void gamefileLoadDefaults(struct gamefile *file);
|
||||
s32 gamefileLoad(s32 arg0);
|
||||
s32 gamefileSave(s32 arg0, s32 arg1, u16 arg2);
|
||||
s32 gamefileLoad(s32 device);
|
||||
s32 gamefileSave(s32 device, s32 filenum, u16 deviceserial);
|
||||
void gamefileGetOverview(char *arg0, char *name, u8 *stage, u8 *difficulty, u32 *time);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -102,8 +102,8 @@ void mpplayerfileSaveGunFuncs(struct savebuffer *buffer, s32 playernum);
|
||||
void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2);
|
||||
void mpplayerfileSaveWad(s32 playernum, struct savebuffer *buffer);
|
||||
void mpplayerfileGetOverview(char *arg0, char *name, u32 *playtime);
|
||||
s32 mpplayerfileSave(s32 playernum, s32 arg1, s32 arg2, u16 arg3);
|
||||
s32 mpplayerfileLoad(s32 playernum, s32 arg1, s32 arg2, u16 arg3);
|
||||
s32 mpplayerfileSave(s32 playernum, s32 device, s32 arg2, u16 deviceserial);
|
||||
s32 mpplayerfileLoad(s32 playernum, s32 device, s32 arg2, u16 deviceserial);
|
||||
s32 mpGetNumPresets(void);
|
||||
bool mpIsPresetUnlocked(s32 presetnum);
|
||||
s32 mpGetNumUnlockedPresets(void);
|
||||
@@ -113,8 +113,8 @@ u32 func0f18dec4(void);
|
||||
void mpsetupfileLoadWad(struct savebuffer *buffer);
|
||||
void mpsetupfileSaveWad(struct savebuffer *buffer);
|
||||
void mpsetupfileGetOverview(char *arg0, char *filename, u16 *numsims, u16 *stagenum, u16 *scenarionum);
|
||||
s32 mpsetupfileSave(s32 arg0, s32 arg1, u16 arg2);
|
||||
s32 mpsetupfileLoad(s32 arg0, s32 arg1, u16 arg2);
|
||||
s32 mpsetupfileSave(s32 device, s32 filenum, u16 deviceserial);
|
||||
s32 mpsetupfileLoad(s32 device, s32 filenum, u16 deviceserial);
|
||||
void func0f18e558(void);
|
||||
struct modelfiledata *func0f18e57c(s32 index, s32 *headnum);
|
||||
|
||||
|
||||
@@ -13,12 +13,12 @@ bool pakIsConnected(s8 device);
|
||||
s32 func0f1167b0(s8 device, u32 arg1, u32 *buffer1024);
|
||||
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);
|
||||
s32 func0f116828(s8 device, s32 arg1, s32 arg2, void *arg3, s32 *filenum, s32 arg5);
|
||||
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(s8 device);
|
||||
s32 func0f11693c(s8 device);
|
||||
s32 pakGetDeviceSerial(s8 device);
|
||||
void func0f11698c(s8 device);
|
||||
void func0f116994(void);
|
||||
void func0f1169c8(s8 device, s32 arg1);
|
||||
@@ -41,7 +41,7 @@ u32 func0f117430(void);
|
||||
u32 func0f117520(s8 arg0, u32 arg1, u32 *arg2);
|
||||
void pakDumpBuffer(u8 *buffer, u32 len, char *name);
|
||||
void pakDumpEeprom(void);
|
||||
s32 func0f11789c(s8 arg0, s32 arg1, s32 arg2, void *arg3, s32 *arg4, s32 arg5);
|
||||
s32 func0f11789c(s8 device, s32 arg1, s32 arg2, void *arg3, s32 *arg4, s32 arg5);
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
s32 pakInitPak(OSMesgQueue *mq, OSPfs *pfs, s32 channel, s32 *arg3);
|
||||
@@ -137,7 +137,7 @@ void pakSetBitflag(s32 flagnum, u8 *bitstream, bool set);
|
||||
bool pakHasBitflag(u32 flagnum, u8 *stream);
|
||||
void pakClearAllBitflags(u8 *flags);
|
||||
void func0f11e618(char *src, char *dst, u32 len);
|
||||
s8 pakSearch(s32 arg0);
|
||||
s8 pakFindBySerial(s32 deviceserial);
|
||||
s32 func0f11e750(s8 arg0);
|
||||
bool func0f11e78c(void);
|
||||
bool func0f11e7f0(char *a, char *b);
|
||||
|
||||
+16
-28
@@ -86,6 +86,11 @@ struct playerstats {
|
||||
/*0x7c*/ f32 damtransmitted;
|
||||
};
|
||||
|
||||
struct fileguid {
|
||||
s32 filenum;
|
||||
u16 deviceserial;
|
||||
};
|
||||
|
||||
struct g_vars {
|
||||
/*000000*/ s32 diffframe60;
|
||||
/*000004*/ f32 diffframe60f;
|
||||
@@ -197,8 +202,8 @@ struct g_vars {
|
||||
/*000470*/ s32 perfectbuddynum;
|
||||
/*000474*/ s32 numaibuddies;
|
||||
/*000478*/ bool aibuddiesspawned;
|
||||
/*00047c*/ u32 unk00047c;
|
||||
/*000480*/ u16 unk000480;
|
||||
/*00047c*/ s32 bossfilenum;
|
||||
/*000480*/ u16 bossdeviceserial;
|
||||
/*000482*/ u16 unk000482;
|
||||
/*000484*/ s32 mphilltime;
|
||||
/*000488*/ s32 totalkills;
|
||||
@@ -3875,14 +3880,9 @@ struct textureconfig {
|
||||
u8 t;
|
||||
};
|
||||
|
||||
struct menu_e68_800 {
|
||||
s32 unk00;
|
||||
u16 unk04;
|
||||
};
|
||||
|
||||
struct perfectheadtexturelist {
|
||||
u8 unk000[16][0x80];
|
||||
struct menu_e68_800 unk800[16];
|
||||
struct fileguid fileguids[16];
|
||||
s32 lastupdated240;
|
||||
struct textureconfig selectedtexture;
|
||||
};
|
||||
@@ -4507,8 +4507,8 @@ struct menu {
|
||||
/*0xe41*/ u8 unke41;
|
||||
/*0xe42*/ u8 fileop;
|
||||
/*0xe44*/ void *unke44;
|
||||
/*0xe48*/ u32 unke48;
|
||||
/*0xe4c*/ u32 unke4c;
|
||||
/*0xe48*/ u32 filenum;
|
||||
/*0xe4c*/ u32 deviceserial;
|
||||
/*0xe50*/ u16 isretryingsave;
|
||||
/*0xe52*/ u8 device;
|
||||
/*0xe53*/ char unke53[1];
|
||||
@@ -4560,20 +4560,10 @@ struct mpchr {
|
||||
/*0x47*/ u8 simtype;
|
||||
};
|
||||
|
||||
struct savelocation_2d8 {
|
||||
u32 unk00;
|
||||
u16 unk04;
|
||||
};
|
||||
|
||||
struct maybesavelocation_2d8 {
|
||||
u32 unk00;
|
||||
u16 unk04;
|
||||
};
|
||||
|
||||
struct mpplayer {
|
||||
/*0x00*/ struct mpchr base;
|
||||
/*0x48*/ u16 options;
|
||||
/*0x4c*/ struct savelocation_2d8 unk4c;
|
||||
/*0x4c*/ struct fileguid fileguid;
|
||||
/*0x54*/ u32 kills;
|
||||
/*0x58*/ u32 deaths;
|
||||
/*0x5c*/ u32 gamesplayed;
|
||||
@@ -4642,7 +4632,7 @@ struct mpsetup {
|
||||
/*0x800acb9e*/ u16 chrslots;
|
||||
/*0x800acba0*/ u8 weapons[6];
|
||||
/*0x800acba6*/ u8 paused;
|
||||
/*0x800acba8*/ struct savelocation_2d8 unk20;
|
||||
/*0x800acba8*/ struct fileguid fileguid;
|
||||
};
|
||||
|
||||
struct bossfile {
|
||||
@@ -4695,8 +4685,8 @@ struct mparena {
|
||||
};
|
||||
|
||||
struct filelistfile {
|
||||
u32 unk00;
|
||||
u16 unk04;
|
||||
s32 filenum;
|
||||
u16 deviceserial;
|
||||
char unk06[6]; // length unknown
|
||||
u32 unk0c;
|
||||
u32 unk10;
|
||||
@@ -4710,7 +4700,7 @@ struct filelist {
|
||||
/*0x000*/ struct filelistfile files[30];
|
||||
/*0x2d0*/ s16 numfiles;
|
||||
/*0x2d2*/ s8 spacesfree[5]; // per device - controller paks then game pak
|
||||
/*0x2d8*/ struct savelocation_2d8 unk2d8[5];
|
||||
/*0x2d8*/ struct fileguid deviceguids[5];
|
||||
/*0x300*/ s8 devicestartindexes[5]; // game pak then controller paks
|
||||
/*0x308*/ s8 unk305[5]; // controller paks then game pak - error count?
|
||||
/*0x30a*/ u8 numdevices;
|
||||
@@ -5344,9 +5334,7 @@ struct frdata {
|
||||
};
|
||||
|
||||
struct menudata_5d8 {
|
||||
s32 unk00;
|
||||
u16 unk04;
|
||||
u16 unk06;
|
||||
struct fileguid fileguid;
|
||||
u8 unk08;
|
||||
u8 unk09;
|
||||
u8 unk0a;
|
||||
|
||||
Reference in New Issue
Block a user