Decompile pak0f118bc8, discover pakfileheader and rename many pak symbols

This commit is contained in:
Ryan Dwyer
2021-09-18 21:03:25 +10:00
parent d41d349528
commit cd3e03ca42
15 changed files with 541 additions and 658 deletions
+10 -10
View File
@@ -60,25 +60,25 @@ void func0f1106f4(u8 *dst)
u32 func0f110720(void)
{
struct pakthing16 sp840;
struct pakfileheader header;
u32 sp3c[513];
u32 sp38 = 0;
s32 i;
if (pak0f1167b0(SAVEDEVICE_GAMEPAK, 0x10, sp3c) == 0) {
if (pak0f1167b0(SAVEDEVICE_GAMEPAK, PAKFILETYPE_BOSS, sp3c) == 0) {
for (i = 0; sp3c[i] != 0; i++) {
pak0f119368(SAVEDEVICE_GAMEPAK, sp3c[i], &sp840);
pakFindFile(SAVEDEVICE_GAMEPAK, sp3c[i], &header);
if (sp840.unk0c_22 == 0) {
if (!header.occupied) {
sp38 = sp3c[i];
break;
}
}
for (i = 0; sp3c[i] != 0; i++) {
pak0f119368(SAVEDEVICE_GAMEPAK, sp3c[i], &sp840);
pakFindFile(SAVEDEVICE_GAMEPAK, sp3c[i], &header);
if (sp840.unk0c_22) {
if (header.occupied) {
sp38 = sp3c[i];
break;
}
@@ -113,7 +113,7 @@ void bossfileLoad(void)
savebufferReadGuid(&buffer, &guid);
g_Vars.bossfilenum = guid.filenum;
g_Vars.bossfileid = guid.fileid;
g_Vars.bossdeviceserial = guid.deviceserial;
g_BossFile.unk89 = savebufferReadBits(&buffer, 1);
@@ -160,7 +160,7 @@ void bossfileSave(void)
savebufferClear(&buffer);
guid.filenum = g_Vars.bossfilenum;
guid.fileid = g_Vars.bossfileid;
guid.deviceserial = g_Vars.bossdeviceserial;
savebufferWriteGuid(&buffer, &guid);
@@ -194,7 +194,7 @@ void bossfileSave(void)
faultAssert("fileGuid", "bossfile.c", PAL ? 377 : 375);
}
if (pak0f116828(SAVEDEVICE_GAMEPAK, tmp, 0x10, buffer.bytes, NULL, 0)) {
if (pak0f116828(SAVEDEVICE_GAMEPAK, tmp, PAKFILETYPE_BOSS, buffer.bytes, NULL, 0)) {
sp12c = true;
}
}
@@ -215,7 +215,7 @@ void bossfileSetDefaults(void)
g_BossFile.usingmultipletunes = false;
g_BossFile.unk89 = 0;
g_BossFile.locktype = MPLOCKTYPE_NONE;
g_Vars.bossfilenum = 0;
g_Vars.bossfileid = 0;
g_Vars.bossdeviceserial = 0;
g_Vars.unk000482 = (PAL ? 7 : 0);
g_AltTitleUnlocked = 0;
+3 -3
View File
@@ -2640,7 +2640,7 @@ glabel var7f1b72f0
/* f14ba2c: 00000000 */ nop
/* f14ba30: 00022600 */ sll $a0,$v0,0x18
/* f14ba34: 00046603 */ sra $t4,$a0,0x18
/* f14ba38: 0fc45c84 */ jal pak0f117210
/* f14ba38: 0fc45c84 */ jal pakGetUnk008
/* f14ba3c: 01802025 */ or $a0,$t4,$zero
/* f14ba40: 24010001 */ addiu $at,$zero,0x1
/* f14ba44: 1041001b */ beq $v0,$at,.L0f14bab4
@@ -3389,7 +3389,7 @@ glabel var7f1b7338
/* f14c450: 00000000 */ nop
/* f14c454: 00022600 */ sll $a0,$v0,0x18
/* f14c458: 00045e03 */ sra $t3,$a0,0x18
/* f14c45c: 0fc45c84 */ jal pak0f117210
/* f14c45c: 0fc45c84 */ jal pakGetUnk008
/* f14c460: 01602025 */ or $a0,$t3,$zero
/* f14c464: 24010001 */ addiu $at,$zero,0x1
/* f14c468: 10410007 */ beq $v0,$at,.L0f14c488
@@ -4118,7 +4118,7 @@ glabel func0f14cdb8
/* f14ceb0: 00000000 */ nop
/* f14ceb4: 00022600 */ sll $a0,$v0,0x18
/* f14ceb8: 00047e03 */ sra $t7,$a0,0x18
/* f14cebc: 0fc45c84 */ jal pak0f117210
/* f14cebc: 0fc45c84 */ jal pakGetUnk008
/* f14cec0: 01e02025 */ or $a0,$t7,$zero
/* f14cec4: 2401000c */ addiu $at,$zero,0xc
/* f14cec8: 1041001e */ beq $v0,$at,.L0f14cf44
+20 -14
View File
@@ -118,12 +118,12 @@ void filelistsTick(void)
for (; i < 5; i++) {
#if VERSION >= VERSION_NTSC_1_0
if (pak0f1167d8(i) && var800a2330[i] != pak0f11702c(i)) {
if (pak0f1167d8(i) && var800a2330[i] != pakGetUnk264(i)) {
updateall = true;
var800a2330[i] = pak0f11702c(i);
var800a2330[i] = pakGetUnk264(i);
}
#else
s32 tmp = pak0f11702c(i);
s32 tmp = pakGetUnk264(i);
pak0f11698c(i);
@@ -171,7 +171,13 @@ void filelistsTick(void)
void filelistUpdate(struct filelist *list)
{
const u32 sp3a88[] = {0x80, 0x40, 0x20, 0x08};
const u32 sp3a88[] = {
PAKFILETYPE_GAME,
PAKFILETYPE_MPSETUP,
PAKFILETYPE_MPPLAYER,
PAKFILETYPE_008,
};
s32 sp1288[2560];
u32 spa88[512];
s8 filedevices[2560];
@@ -218,7 +224,7 @@ void filelistUpdate(struct filelist *list)
list->spacesfree[dis2dev[i]] = pak0f118148(dis2dev[i]);
}
list->deviceguids[dis2dev[i]].filenum = 0;
list->deviceguids[dis2dev[i]].fileid = 0;
list->deviceguids[dis2dev[i]].deviceserial = pakGetDeviceSerial(dis2dev[i]);
} else {
// PFS error?
@@ -249,7 +255,7 @@ void filelistUpdate(struct filelist *list)
}
file->deviceserial = pakGetDeviceSerial(filedevices[i]);
file->filenum = sp1288[i];
file->fileid = sp1288[i];
list->numfiles++;
} else if (maybepfserr == 10) {
@@ -259,8 +265,8 @@ void filelistUpdate(struct filelist *list)
if (list->unk305[filedevices[i]] >= 2) {
list->spacesfree[filedevices[i]]++;
if (list->deviceguids[filedevices[i]].filenum == 0) {
list->deviceguids[filedevices[i]].filenum = sp1288[i];
if (list->deviceguids[filedevices[i]].fileid == 0) {
list->deviceguids[filedevices[i]].fileid = sp1288[i];
list->deviceguids[filedevices[i]].deviceserial = pakGetDeviceSerial(filedevices[i]);
}
}
@@ -400,7 +406,7 @@ const char var7f1b3a14[] = "gamefile.c";
// }
//
// for (i = 0; i != ARRAYCOUNT(g_Menus[playernum].headtextures->fileguids); i++) {
// g_Menus[playernum].fm.headtextures->fileguids[i].filenum = 0;
// g_Menus[playernum].fm.headtextures->fileguids[i].fileid = 0;
// g_Menus[playernum].fm.headtextures->fileguids[i].deviceserial = 0;
// }
//
@@ -433,20 +439,20 @@ void pheadFreeTextures(s32 playernum)
}
}
struct textureconfig *pheadGetTexture(s32 playernum, s32 filenum, u16 deviceserial)
struct textureconfig *pheadGetTexture(s32 playernum, s32 fileid, u16 deviceserial)
{
s32 i;
s32 freeslot = -1;
s32 indextouse = -1;
for (i = 0; i < 16; i++) {
if (g_Menus[playernum].fm.headtextures->fileguids[i].filenum == filenum
if (g_Menus[playernum].fm.headtextures->fileguids[i].fileid == fileid
&& g_Menus[playernum].fm.headtextures->fileguids[i].deviceserial == deviceserial) {
indextouse = i;
break;
}
if (g_Menus[playernum].fm.headtextures->fileguids[i].filenum == 0) {
if (g_Menus[playernum].fm.headtextures->fileguids[i].fileid == 0) {
if (g_Menus[playernum].fm.headtextures->fileguids[i].deviceserial == 0) {
freeslot = i;
}
@@ -470,9 +476,9 @@ struct textureconfig *pheadGetTexture(s32 playernum, s32 filenum, u16 deviceseri
g_Menus[playernum].fm.headtextures->lastupdated240 = g_Vars.thisframe240;
func0f15015c(device, filenum, g_Menus[playernum].fm.headtextures->unk000[freeslot]);
func0f15015c(device, fileid, g_Menus[playernum].fm.headtextures->unk000[freeslot]);
g_Menus[playernum].fm.headtextures->fileguids[freeslot].filenum = filenum;
g_Menus[playernum].fm.headtextures->fileguids[freeslot].fileid = fileid;
g_Menus[playernum].fm.headtextures->fileguids[freeslot].deviceserial = deviceserial;
indextouse = freeslot;
+34 -34
View File
@@ -481,7 +481,7 @@ void filemgrHandleSuccess(void)
align16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1]));
break;
case FILEOP_LOAD_GAME:
g_Vars.bossfilenum = g_Menus[g_MpPlayerNum].fm.filenum;
g_Vars.bossfileid = g_Menus[g_MpPlayerNum].fm.fileid;
g_Vars.bossdeviceserial = g_Menus[g_MpPlayerNum].fm.deviceserial;
bossfileSave();
@@ -593,7 +593,7 @@ void filemgrEraseCorruptFile(void)
device = pakFindBySerial(g_Menus[g_MpPlayerNum].fm.deviceserial);
if (device >= 0) {
pakDeleteFile(device, g_Menus[g_MpPlayerNum].fm.filenum);
pakDeleteFile(device, g_Menus[g_MpPlayerNum].fm.fileid);
}
for (i = 0; i < 4; i++) {
@@ -730,18 +730,18 @@ bool filemgrAttemptOperation(s32 device, bool closeonsuccess)
case FILEOP_SAVE_GAME_000:
case FILEOP_SAVE_GAME_001:
errno = gamefileSave(device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
g_Menus[g_MpPlayerNum].fm.deviceserial);
break;
case FILEOP_SAVE_MPPLAYER:
errno = mpplayerfileSave(
(s32) g_Menus[g_MpPlayerNum].fm.unke44, device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
g_Menus[g_MpPlayerNum].fm.deviceserial);
break;
case FILEOP_SAVE_MPSETUP:
errno = mpsetupfileSave(device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
g_Menus[g_MpPlayerNum].fm.deviceserial);
showfilesaved = true;
break;
@@ -751,7 +751,7 @@ bool filemgrAttemptOperation(s32 device, bool closeonsuccess)
sp2c = 0;
func0f0d5690(g_Menus[g_MpPlayerNum].fm.unke44, g_Menus[g_MpPlayerNum].fm.filename);
errno = pak0f116828(device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
sp30[g_Menus[g_MpPlayerNum].fm.fileop - 6],
g_Menus[g_MpPlayerNum].fm.unke44, &sp2c, 0);
var80075bd0[g_Menus[g_MpPlayerNum].fm.fileop - 6] = 1;
@@ -763,19 +763,19 @@ bool filemgrAttemptOperation(s32 device, bool closeonsuccess)
errno = mpplayerfileLoad(
(s32) g_Menus[g_MpPlayerNum].fm.unke44,
device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
g_Menus[g_MpPlayerNum].fm.deviceserial);
break;
case FILEOP_LOAD_MPSETUP:
errno = mpsetupfileLoad(device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
g_Menus[g_MpPlayerNum].fm.deviceserial);
break;
case FILEOP_READ_GAME:
case FILEOP_READ_MPSETUP:
case FILEOP_READ_MPPLAYER:
errno = pak0f116800(device,
g_Menus[g_MpPlayerNum].fm.filenum,
g_Menus[g_MpPlayerNum].fm.fileid,
g_Menus[g_MpPlayerNum].fm.unke44, 0);
break;
}
@@ -1068,10 +1068,10 @@ bool filemgrSaveOrLoad(struct fileguid *guid, s32 fileop, u32 playernum)
g_Menus[g_MpPlayerNum].fm.fileop = fileop;
g_Menus[g_MpPlayerNum].fm.mpplayernum = playernum;
g_Menus[g_MpPlayerNum].fm.isretryingsave = 0;
var800a21f8.filenum = 0;
var800a21f8.fileid = 0;
}
g_Menus[g_MpPlayerNum].fm.filenum = guid->filenum;
g_Menus[g_MpPlayerNum].fm.fileid = guid->fileid;
g_Menus[g_MpPlayerNum].fm.deviceserial = guid->deviceserial;
if (fileop != -1) {
@@ -1118,7 +1118,7 @@ void filemgrDeleteCurrentFile(void)
s32 i;
if (device >= 0) {
if (pakDeleteFile(device, g_FilemgrFileToDelete.filenum) != 0) {
if (pakDeleteFile(device, g_FilemgrFileToDelete.fileid) != 0) {
error = true;
}
} else {
@@ -1133,7 +1133,7 @@ void filemgrDeleteCurrentFile(void)
} else {
// If deleting a loaded MP player, reset them to default
for (i = 0; i < 4; i++) {
if (g_FilemgrFileToDelete.filenum == g_MpPlayers[i].fileguid.filenum
if (g_FilemgrFileToDelete.fileid == g_MpPlayers[i].fileguid.fileid
&& g_FilemgrFileToDelete.deviceserial == g_MpPlayers[i].fileguid.deviceserial) {
mpPlayerSetDefaults(i, true);
}
@@ -1233,7 +1233,7 @@ void func0f1097d0(s32 device)
void *thing;
if (g_FileLists[0]) {
var800a21e8.filenum = g_FileLists[0]->deviceguids[device].filenum;
var800a21e8.fileid = g_FileLists[0]->deviceguids[device].fileid;
var800a21e8.deviceserial = g_FileLists[0]->deviceguids[device].deviceserial;
thing = func00012ab0(align16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1]));
@@ -1258,7 +1258,7 @@ const char var7f1b3284[] = "Saving...\n";
void filemgrSaveGameToDevice(s32 device)
{
if (g_FileLists[0]) {
g_GameFileGuid.filenum = g_FileLists[0]->deviceguids[device].filenum;
g_GameFileGuid.fileid = g_FileLists[0]->deviceguids[device].fileid;
g_GameFileGuid.deviceserial = g_FileLists[0]->deviceguids[device].deviceserial;
filemgrSaveOrLoad(&g_GameFileGuid, FILEOP_SAVE_GAME_000, 0);
@@ -1479,17 +1479,17 @@ void filemgrSaveToDevice(void)
// empty
} else if (g_Menus[g_MpPlayerNum].fm.unke3e == 6) {
struct fileguid guid;
guid.filenum = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].filenum;
guid.fileid = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].fileid;
guid.deviceserial = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].deviceserial;
filemgrSaveOrLoad(&guid, FILEOP_SAVE_MPPLAYER, (u32)g_MpPlayerNum);
} else if (g_Menus[g_MpPlayerNum].fm.unke3e == 7) {
struct fileguid guid;
guid.filenum = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].filenum;
guid.fileid = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].fileid;
guid.deviceserial = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].deviceserial;
filemgrSaveOrLoad(&guid, FILEOP_SAVE_MPSETUP, 0);
} else if (g_Menus[g_MpPlayerNum].fm.unke3e >= 9) {
struct fileguid guid;
guid.filenum = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].filenum;
guid.fileid = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].fileid;
guid.deviceserial = g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->deviceguids[g_Menus[g_MpPlayerNum].fm.device2].deviceserial;
filemgrSaveOrLoad(&guid, -1, 0);
} else {
@@ -1955,11 +1955,11 @@ char *filemgrMenuTextFileInUseDescription(struct menuitem *item)
* but filemgrRenderPerfectHeadThumbnail will only match if
* it's an s32 with a 0xffff mask.
*/
struct textureconfig *pheadGetTexture(s32 playernum, s32 filenum, s32 deviceserial);
struct textureconfig *pheadGetTexture(s32 playernum, s32 fileid, s32 deviceserial);
Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, s32 filenum, s32 deviceserial)
Gfx *filemgrRenderPerfectHeadThumbnail(Gfx *gdl, struct menuitemrenderdata *renderdata, s32 fileid, s32 deviceserial)
{
struct textureconfig *texture = pheadGetTexture(g_MpPlayerNum, filenum, deviceserial & 0xffff);
struct textureconfig *texture = pheadGetTexture(g_MpPlayerNum, fileid, deviceserial & 0xffff);
if (texture) {
gSPDisplayList(gdl++, &var800613a0);
@@ -2009,7 +2009,7 @@ bool filemgrIsFileInUse(struct filelistfile *file)
#if VERSION >= VERSION_NTSC_1_0
if (menuIsDialogOpen(&g_FilemgrCopyMenuDialog)
&& file->filenum == g_FilemgrFileToCopy.filenum
&& file->fileid == g_FilemgrFileToCopy.fileid
&& file->deviceserial == g_FilemgrFileToCopy.deviceserial) {
return true;
}
@@ -2020,7 +2020,7 @@ bool filemgrIsFileInUse(struct filelistfile *file)
#else
if (g_MenuData.root == MENUROOT_FILEMGR
&& menuIsDialogOpen(&g_FilemgrCopyMenuDialog)
&& file->filenum == g_FilemgrFileToCopy.filenum
&& file->fileid == g_FilemgrFileToCopy.fileid
&& file->deviceserial == g_FilemgrFileToCopy.deviceserial) {
return true;
}
@@ -2030,17 +2030,17 @@ bool filemgrIsFileInUse(struct filelistfile *file)
return false;
}
if (file->filenum == g_GameFileGuid.filenum && file->deviceserial == g_GameFileGuid.deviceserial) {
if (file->fileid == g_GameFileGuid.fileid && file->deviceserial == g_GameFileGuid.deviceserial) {
return true;
}
if (file->filenum == g_MpSetup.fileguid.filenum && file->deviceserial == g_MpSetup.fileguid.deviceserial) {
if (file->fileid == g_MpSetup.fileguid.fileid && file->deviceserial == g_MpSetup.fileguid.deviceserial) {
return true;
}
for (i = 0; i < 4; i++) {
if ((g_MpSetup.chrslots & (1 << i))
&& g_MpPlayers[i].fileguid.filenum == file->filenum
&& g_MpPlayers[i].fileguid.fileid == file->fileid
&& g_MpPlayers[i].fileguid.deviceserial == file->deviceserial) {
return true;
}
@@ -2082,7 +2082,7 @@ s32 filemgrFileToCopyOrDeleteListMenuHandler(s32 operation, struct menuitem *ite
struct filelistfile *file = &list->files[data->list.unk04];
if (g_Menus[g_MpPlayerNum].fm.filetypeplusone == 4) {
gdl = filemgrRenderPerfectHeadThumbnail(gdl, renderdata, file->filenum, file->deviceserial);
gdl = filemgrRenderPerfectHeadThumbnail(gdl, renderdata, file->fileid, file->deviceserial);
} else {
u32 colour = renderdata->colour;
char text[32];
@@ -2140,7 +2140,7 @@ s32 filemgrFileToDeleteListMenuHandler(s32 operation, struct menuitem *item, uni
menuPushDialog(&g_FilemgrFileInUseMenuDialog);
} else {
filemgrSetFileToDelete(file, g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->filetype);
g_FilemgrFileToDelete.filenum = file->filenum;
g_FilemgrFileToDelete.fileid = file->fileid;
g_FilemgrFileToDelete.deviceserial = file->deviceserial;
menuPushDialog(&g_FilemgrConfirmDeleteMenuDialog);
}
@@ -2162,7 +2162,7 @@ s32 filemgrFileToCopyListMenuHandler(s32 operation, struct menuitem *item, union
struct filelistfile *file = &list->files[data->list.value];
if (file) {
g_FilemgrFileToCopy.filenum = file->filenum;
g_FilemgrFileToCopy.fileid = file->fileid;
g_FilemgrFileToCopy.deviceserial = file->deviceserial;
#if VERSION >= VERSION_NTSC_1_0
@@ -2657,7 +2657,7 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
if (data->list.unk04 == 1) {
if (data->list.groupstartindex == 1 && g_Menus[g_MpPlayerNum].fm.unke2c == 1) {
for (i = 0; i < g_FileLists[0]->numfiles; i++) {
if (g_GameFileGuid.filenum == g_FileLists[0]->files[i].filenum
if (g_GameFileGuid.fileid == g_FileLists[0]->files[i].fileid
&& g_GameFileGuid.deviceserial == g_FileLists[0]->files[i].deviceserial) {
data->list.value = i;
}
@@ -2674,12 +2674,12 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
g_Menus[g_MpPlayerNum].fm.unke2c = 0;
}
if (pass && g_Vars.bossfilenum) {
if (pass && g_Vars.bossfileid) {
for (j = 0; j < g_FileLists[0]->numfiles; j++) {
if (g_Vars.bossfilenum == g_FileLists[0]->files[j].filenum
if (g_Vars.bossfileid == g_FileLists[0]->files[j].fileid
&& g_Vars.bossdeviceserial == g_FileLists[0]->files[j].deviceserial) {
data->list.value = j;
g_Vars.bossfilenum = 0;
g_Vars.bossfileid = 0;
}
}
}
@@ -2818,7 +2818,7 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
struct filelistfile *file = &g_FileLists[0]->files[data->list.value];
if (file) {
g_GameFileGuid.filenum = file->filenum;
g_GameFileGuid.fileid = file->fileid;
g_GameFileGuid.deviceserial = file->deviceserial;
filemgrSaveOrLoad(&g_GameFileGuid, FILEOP_LOAD_GAME, 0);
}
+6 -6
View File
@@ -908,8 +908,8 @@ s32 gamefileLoad(s32 device)
if (device >= 0) {
savebufferClear(&buffer);
tmp = pak0f116800(device, g_GameFileGuid.filenum, buffer.bytes, 0);
var800a21f8.filenum = tmp;
tmp = pak0f116800(device, g_GameFileGuid.fileid, buffer.bytes, 0);
var800a21f8.fileid = tmp;
if (tmp == 0) {
cheatsDisableAll();
@@ -998,7 +998,7 @@ s32 gamefileLoad(s32 device)
return -1;
}
s32 gamefileSave(s32 device, s32 filenum, u16 deviceserial)
s32 gamefileSave(s32 device, s32 fileid, u16 deviceserial)
{
u32 stack;
s32 sp140;
@@ -1133,11 +1133,11 @@ s32 gamefileSave(s32 device, s32 filenum, u16 deviceserial)
func0f0d54c4(&buffer);
tmp = pak0f116828(device, filenum, 0x80, buffer.bytes, &sp140, 0);
var800a21f8.filenum = tmp;
tmp = pak0f116828(device, fileid, PAKFILETYPE_GAME, buffer.bytes, &sp140, 0);
var800a21f8.fileid = tmp;
if (tmp == 0) {
g_GameFileGuid.filenum = sp140;
g_GameFileGuid.fileid = sp140;
g_GameFileGuid.deviceserial = deviceserial;
return 0;
+1 -1
View File
@@ -601,7 +601,7 @@ 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].fileguid.filenum == 0
&& g_MpPlayers[g_MpPlayerNum].fileguid.fileid == 0
&& g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial == 0) {
g_MpPlayers[g_MpPlayerNum].options |= OPTION_ASKEDSAVEPLAYER;
menuPushDialog(&g_MpEndscreenSavePlayerMenuDialog);
+21 -21
View File
@@ -408,7 +408,7 @@ 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].fileguid.filenum = 0;
g_MpPlayers[playernum].fileguid.fileid = 0;
g_MpPlayers[playernum].fileguid.deviceserial = 0;
if (autonames) {
@@ -484,7 +484,7 @@ void mpSetDefaultSetup(void)
func0f187fec();
g_MpSetup.fileguid.filenum = 0;
g_MpSetup.fileguid.fileid = 0;
g_MpSetup.fileguid.deviceserial = 0;
strcpy(g_MpSetup.name, "");
@@ -8570,10 +8570,10 @@ void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2)
savebufferReadGuid(buffer, &guid);
if (g_MpPlayers[playernum].base.mpheadnum >= mpGetNumHeads2()) {
if (guid.filenum != 0 && guid.deviceserial != 0) {
if (guid.fileid != 0 && guid.deviceserial != 0) {
if (g_MenuData.unk668 < 11) {
g_MenuData.unk668++;
g_MenuData.unk5d8[g_MenuData.unk668].fileguid.filenum = guid.filenum;
g_MenuData.unk5d8[g_MenuData.unk668].fileguid.fileid = guid.fileid;
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;
@@ -8641,7 +8641,7 @@ void mpplayerfileSaveWad(s32 playernum, struct savebuffer *buffer)
} else {
struct fileguid guid;
guid.deviceserial = 0;
guid.filenum = 0;
guid.fileid = 0;
savebufferWriteGuid(buffer, &guid);
}
@@ -8762,7 +8762,7 @@ void mpplayerfileGetOverview(char *arg0, char *name, u32 *playtime)
s32 mpplayerfileSave(s32 playernum, s32 device, s32 arg2, u16 deviceserial)
{
s32 tmp;
s32 filenum;
s32 fileid;
struct savebuffer buffer;
if (device >= 0) {
@@ -8772,22 +8772,22 @@ s32 mpplayerfileSave(s32 playernum, s32 device, s32 arg2, u16 deviceserial)
var80075bd0[2] = true;
tmp = pak0f116828(device, arg2, 0x20, buffer.bytes, &filenum, 0);
tmp = pak0f116828(device, arg2, PAKFILETYPE_MPPLAYER, buffer.bytes, &fileid, 0);
if (tmp == 0) {
g_MpPlayers[playernum].fileguid.filenum = filenum;
g_MpPlayers[playernum].fileguid.fileid = fileid;
g_MpPlayers[playernum].fileguid.deviceserial = deviceserial;
return 0;
}
var800a21f8.filenum = tmp;
var800a21f8.fileid = tmp;
return -1;
}
return -1;
}
s32 mpplayerfileLoad(s32 playernum, s32 device, s32 filenum, u16 deviceserial)
s32 mpplayerfileLoad(s32 playernum, s32 device, s32 fileid, u16 deviceserial)
{
s32 tmp;
struct savebuffer buffer;
@@ -8795,10 +8795,10 @@ s32 mpplayerfileLoad(s32 playernum, s32 device, s32 filenum, u16 deviceserial)
if (device >= 0) {
savebufferClear(&buffer);
tmp = pak0f116800(device, filenum, buffer.bytes, 0);
tmp = pak0f116800(device, fileid, buffer.bytes, 0);
if (tmp == 0) {
g_MpPlayers[playernum].fileguid.filenum = filenum;
g_MpPlayers[playernum].fileguid.fileid = fileid;
g_MpPlayers[playernum].fileguid.deviceserial = deviceserial;
mpplayerfileLoadWad(playernum, &buffer, 1);
@@ -8808,7 +8808,7 @@ s32 mpplayerfileLoad(s32 playernum, s32 device, s32 filenum, u16 deviceserial)
return 0;
}
var800a21f8.filenum = tmp;
var800a21f8.fileid = tmp;
return -1;
}
@@ -9457,7 +9457,7 @@ void mpsetupfileGetOverview(char *arg0, char *filename, u16 *numsims, u16 *stage
*scenarionum = savebufferReadBits(&buffer, 3);
}
s32 mpsetupfileSave(s32 device, s32 filenum, u16 deviceserial)
s32 mpsetupfileSave(s32 device, s32 fileid, u16 deviceserial)
{
s32 tmp;
s32 sp100;
@@ -9468,33 +9468,33 @@ s32 mpsetupfileSave(s32 device, s32 filenum, u16 deviceserial)
mpsetupfileSaveWad(&buffer);
func0f0d54c4(&buffer);
tmp = pak0f116828(device, filenum, 0x40, buffer.bytes, &sp100, 0);
tmp = pak0f116828(device, fileid, PAKFILETYPE_MPSETUP, buffer.bytes, &sp100, 0);
var80075bd0[1] = true;
if (tmp == 0) {
g_MpSetup.fileguid.filenum = sp100;
g_MpSetup.fileguid.fileid = sp100;
g_MpSetup.fileguid.deviceserial = deviceserial;
return 0;
}
var800a21f8.filenum = tmp;
var800a21f8.fileid = tmp;
return -1;
}
return -1;
}
s32 mpsetupfileLoad(s32 device, s32 filenum, u16 deviceserial)
s32 mpsetupfileLoad(s32 device, s32 fileid, u16 deviceserial)
{
s32 tmp;
struct savebuffer buffer;
if (device >= 0) {
savebufferClear(&buffer);
tmp = pak0f116800(device, filenum, buffer.bytes, 0);
tmp = pak0f116800(device, fileid, buffer.bytes, 0);
if (tmp == 0) {
g_MpSetup.fileguid.filenum = filenum;
g_MpSetup.fileguid.fileid = fileid;
g_MpSetup.fileguid.deviceserial = deviceserial;
mpsetupfileLoadWad(&buffer);
@@ -9503,7 +9503,7 @@ s32 mpsetupfileLoad(s32 device, s32 filenum, u16 deviceserial)
return 0;
}
var800a21f8.filenum = tmp;
var800a21f8.fileid = tmp;
return -1;
}
+4 -4
View File
@@ -4520,7 +4520,7 @@ 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].fileguid.filenum && g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial) {
if (g_MpPlayers[g_MpPlayerNum].fileguid.fileid && g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial) {
filemgrSaveOrLoad(&g_MpPlayers[g_MpPlayerNum].fileguid, FILEOP_SAVE_MPPLAYER, 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].fileguid.filenum == 0) {
if (g_MpPlayers[g_MpPlayerNum].fileguid.fileid == 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].fileguid.filenum == 0) {
if (g_MpPlayers[g_MpPlayerNum].fileguid.fileid == 0) {
return langGet(L_MPMENU_038); // "Save Player"
}
@@ -7446,7 +7446,7 @@ 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.fileguid.filenum == 0) {
if (g_MpSetup.fileguid.fileid == 0) {
menuPushDialog(&g_MpSaveSetupNameMenuDialog);
} else {
#if VERSION >= VERSION_NTSC_1_0
+310 -443
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -919,13 +919,13 @@ glabel func0f0d5690
void savebufferWriteGuid(struct savebuffer *buffer, struct fileguid *guid)
{
savebufferOr(buffer, guid->filenum, 7);
savebufferOr(buffer, guid->fileid, 7);
savebufferOr(buffer, guid->deviceserial, 13);
}
void savebufferReadGuid(struct savebuffer *buffer, struct fileguid *guid)
{
guid->filenum = savebufferReadBits(buffer, 7);
guid->fileid = savebufferReadBits(buffer, 7);
guid->deviceserial = savebufferReadBits(buffer, 13);
}
+86 -76
View File
@@ -924,6 +924,82 @@
#define GAILIST_INIT_SEARCH 0x002c // unused
#define GAILIST_INVINCIBLE_AND_IDLE (VERSION >= VERSION_NTSC_1_0 ? 0x002d : 0x002c)
#define GAMEFILEFLAG_P1_FORWARDPITCH 0x00
#define GAMEFILEFLAG_P1_AUTOAIM 0x01
#define GAMEFILEFLAG_P1_AIMCONTROL 0x02
#define GAMEFILEFLAG_P1_SIGHTONSCREEN 0x03
#define GAMEFILEFLAG_P1_LOOKAHEAD 0x04
#define GAMEFILEFLAG_P1_AMMOONSCREEN 0x05
#define GAMEFILEFLAG_SCREENSIZE_WIDE 0x06
#define GAMEFILEFLAG_SCREENRATIO 0x07
#define GAMEFILEFLAG_SCREENSIZE_CINEMA 0x08
#define GAMEFILEFLAG_P1_HEADROLL 0x09
#define GAMEFILEFLAG_P1_SHOWGUNFUNCTION 0x0a
#define GAMEFILEFLAG_INGAMESUBTITLES 0x0b
#define GAMEFILEFLAG_P2_FORWARDPITCH 0x0c
#define GAMEFILEFLAG_P2_AUTOAIM 0x0d
#define GAMEFILEFLAG_P2_AIMCONTROL 0x0e
#define GAMEFILEFLAG_P2_SIGHTONSCREEN 0x0f
#define GAMEFILEFLAG_P2_LOOKAHEAD 0x10
#define GAMEFILEFLAG_P2_AMMOONSCREEN 0x11
#define GAMEFILEFLAG_P2_HEADROLL 0x12
#define GAMEFILEFLAG_P2_SHOWGUNFUNCTION 0x13
#define GAMEFILEFLAG_CUTSCENESUBTITLES 0x14
#define GAMEFILEFLAG_P1_ALWAYSSHOWTARGET 0x15
#define GAMEFILEFLAG_P2_ALWAYSSHOWTARGET 0x16
#define GAMEFILEFLAG_P1_SHOWZOOMRANGE 0x17
#define GAMEFILEFLAG_P2_SHOWZOOMRANGE 0x18
#define GAMEFILEFLAG_SCREENSPLIT 0x19
#define GAMEFILEFLAG_P1_SHOWMISSIONTIME 0x1a
#define GAMEFILEFLAG_P2_SHOWMISSIONTIME 0x1b
#define GAMEFILEFLAG_COOPRADARON 0x1c
#define GAMEFILEFLAG_COOPFRIENDLYFIRE 0x1d
#define GAMEFILEFLAG_ANTIRADARON 0x1e
#define GAMEFILEFLAG_ANTIPLAYERNUM 0x1f
#define GAMEFILEFLAG_P1_PAINTBALL 0x20
#define GAMEFILEFLAG_P2_PAINTBALL 0x21
#define GAMEFILEFLAG_HIRES 0x22
#define GAMEFILEFLAG_USED_TRANSFERPAK 0x23
#define GAMEFILEFLAG_CI_TOUR_DONE 0x24
#define GAMEFILEFLAG_CI_HOLO7_DONE 0x29
#define GAMEFILEFLAG_CI_HOLO6_DONE 0x2a
#define GAMEFILEFLAG_CI_HOLO5_DONE 0x2b
#define GAMEFILEFLAG_CI_HOLO4_DONE 0x2c
#define GAMEFILEFLAG_CI_HOLO3_DONE 0x2d
#define GAMEFILEFLAG_CI_HOLO2_DONE 0x2e
#define GAMEFILEFLAG_CI_HOLO1_DONE 0x2f
#define GAMEFILEFLAG_CI_CLOAK_DONE 0x30
#define GAMEFILEFLAG_CI_DISGUISE_DONE 0x31
#define GAMEFILEFLAG_CI_XRAY_DONE 0x32
#define GAMEFILEFLAG_CI_IR_DONE 0x33
#define GAMEFILEFLAG_CI_RTRACKER_DONE 0x34
#define GAMEFILEFLAG_CI_DOORDECODER_DONE 0x35
#define GAMEFILEFLAG_CI_NIGHTVISION_DONE 0x36
#define GAMEFILEFLAG_CI_CAMSPY_DONE 0x37
#define GAMEFILEFLAG_CI_ECMMINE_DONE 0x38
#define GAMEFILEFLAG_CI_UPLINK_DONE 0x39
#define GAMEFILEFLAG_CI_TOUR_STARTED 0x3a
#define GAMEFILEFLAG_CRASHSITE_BIKE 0x3b
#define GAMEFILEFLAG_DEFENSE_JON 0x3c
#define GAMEFILEFLAG_AF1_ENTRY 0x3d
#define GAMEFILEFLAG_RESCUE_MECHANIC_DEAD 0x3e
#define GAMEFILEFLAG_G5_MINE 0x3f // true if thrown on top door
#define GAMEFILEFLAG_LANGFILTERON 0x40
#define GAMEFILEFLAG_FOUNDTIMEDMINE 0x41
#define GAMEFILEFLAG_FOUNDPROXYMINE 0x42
#define GAMEFILEFLAG_FOUNDREMOTEMINE 0x43
#define GAMEFILEFLAG_44 0x44
#define GAMEFILEFLAG_45 0x45
#define GAMEFILEFLAG_46 0x46
#define GAMEFILEFLAG_HOWTO_HOVERCRATE 0x47
#define GAMEFILEFLAG_HOWTO_HOVERBIKE 0x48
#define GAMEFILEFLAG_HOWTO_DOORS 0x49
#define GAMEFILEFLAG_HOWTO_ELEVATORS 0x4a
#define GAMEFILEFLAG_HOWTO_TERMINALS 0x4b
#define GAMEFILEFLAG_4C 0x4c
#define GAMEFILEFLAG_4D 0x4d
#define GAMEFILEFLAG_4E 0x4e
#define GOPOSFLAG_SPEED 0x03 // bits 0x01 and 0x02 combined
#define GOPOSFLAG_INIT 0x04
#define GOPOSFLAG_FORPATHSTART 0x08
@@ -2996,6 +3072,16 @@
#define PAKERROR_EEPROM_INVALIDOP 0x83
#define PAKERROR_EEPROM_INVALIDARG 0x84
#define PAKFILETYPE_001 0x001
#define PAKFILETYPE_002 0x002
#define PAKFILETYPE_004 0x004
#define PAKFILETYPE_008 0x008 // suspected to be PerfectHead
#define PAKFILETYPE_BOSS 0x010
#define PAKFILETYPE_MPPLAYER 0x020
#define PAKFILETYPE_MPSETUP 0x040
#define PAKFILETYPE_GAME 0x080
#define PAKFILETYPE_100 0x100
#define PATHFLAG_CIRCULAR 1
#define PATHFLAG_FLYING 2
#define PATHFLAG_INUSE 4
@@ -3151,82 +3237,6 @@
#define SAVEDEVICE_GAMEPAK 4
#define SAVEDEVICE_INVALID 5
#define GAMEFILEFLAG_P1_FORWARDPITCH 0x00
#define GAMEFILEFLAG_P1_AUTOAIM 0x01
#define GAMEFILEFLAG_P1_AIMCONTROL 0x02
#define GAMEFILEFLAG_P1_SIGHTONSCREEN 0x03
#define GAMEFILEFLAG_P1_LOOKAHEAD 0x04
#define GAMEFILEFLAG_P1_AMMOONSCREEN 0x05
#define GAMEFILEFLAG_SCREENSIZE_WIDE 0x06
#define GAMEFILEFLAG_SCREENRATIO 0x07
#define GAMEFILEFLAG_SCREENSIZE_CINEMA 0x08
#define GAMEFILEFLAG_P1_HEADROLL 0x09
#define GAMEFILEFLAG_P1_SHOWGUNFUNCTION 0x0a
#define GAMEFILEFLAG_INGAMESUBTITLES 0x0b
#define GAMEFILEFLAG_P2_FORWARDPITCH 0x0c
#define GAMEFILEFLAG_P2_AUTOAIM 0x0d
#define GAMEFILEFLAG_P2_AIMCONTROL 0x0e
#define GAMEFILEFLAG_P2_SIGHTONSCREEN 0x0f
#define GAMEFILEFLAG_P2_LOOKAHEAD 0x10
#define GAMEFILEFLAG_P2_AMMOONSCREEN 0x11
#define GAMEFILEFLAG_P2_HEADROLL 0x12
#define GAMEFILEFLAG_P2_SHOWGUNFUNCTION 0x13
#define GAMEFILEFLAG_CUTSCENESUBTITLES 0x14
#define GAMEFILEFLAG_P1_ALWAYSSHOWTARGET 0x15
#define GAMEFILEFLAG_P2_ALWAYSSHOWTARGET 0x16
#define GAMEFILEFLAG_P1_SHOWZOOMRANGE 0x17
#define GAMEFILEFLAG_P2_SHOWZOOMRANGE 0x18
#define GAMEFILEFLAG_SCREENSPLIT 0x19
#define GAMEFILEFLAG_P1_SHOWMISSIONTIME 0x1a
#define GAMEFILEFLAG_P2_SHOWMISSIONTIME 0x1b
#define GAMEFILEFLAG_COOPRADARON 0x1c
#define GAMEFILEFLAG_COOPFRIENDLYFIRE 0x1d
#define GAMEFILEFLAG_ANTIRADARON 0x1e
#define GAMEFILEFLAG_ANTIPLAYERNUM 0x1f
#define GAMEFILEFLAG_P1_PAINTBALL 0x20
#define GAMEFILEFLAG_P2_PAINTBALL 0x21
#define GAMEFILEFLAG_HIRES 0x22
#define GAMEFILEFLAG_USED_TRANSFERPAK 0x23
#define GAMEFILEFLAG_CI_TOUR_DONE 0x24
#define GAMEFILEFLAG_CI_HOLO7_DONE 0x29
#define GAMEFILEFLAG_CI_HOLO6_DONE 0x2a
#define GAMEFILEFLAG_CI_HOLO5_DONE 0x2b
#define GAMEFILEFLAG_CI_HOLO4_DONE 0x2c
#define GAMEFILEFLAG_CI_HOLO3_DONE 0x2d
#define GAMEFILEFLAG_CI_HOLO2_DONE 0x2e
#define GAMEFILEFLAG_CI_HOLO1_DONE 0x2f
#define GAMEFILEFLAG_CI_CLOAK_DONE 0x30
#define GAMEFILEFLAG_CI_DISGUISE_DONE 0x31
#define GAMEFILEFLAG_CI_XRAY_DONE 0x32
#define GAMEFILEFLAG_CI_IR_DONE 0x33
#define GAMEFILEFLAG_CI_RTRACKER_DONE 0x34
#define GAMEFILEFLAG_CI_DOORDECODER_DONE 0x35
#define GAMEFILEFLAG_CI_NIGHTVISION_DONE 0x36
#define GAMEFILEFLAG_CI_CAMSPY_DONE 0x37
#define GAMEFILEFLAG_CI_ECMMINE_DONE 0x38
#define GAMEFILEFLAG_CI_UPLINK_DONE 0x39
#define GAMEFILEFLAG_CI_TOUR_STARTED 0x3a
#define GAMEFILEFLAG_CRASHSITE_BIKE 0x3b
#define GAMEFILEFLAG_DEFENSE_JON 0x3c
#define GAMEFILEFLAG_AF1_ENTRY 0x3d
#define GAMEFILEFLAG_RESCUE_MECHANIC_DEAD 0x3e
#define GAMEFILEFLAG_G5_MINE 0x3f // true if thrown on top door
#define GAMEFILEFLAG_LANGFILTERON 0x40
#define GAMEFILEFLAG_FOUNDTIMEDMINE 0x41
#define GAMEFILEFLAG_FOUNDPROXYMINE 0x42
#define GAMEFILEFLAG_FOUNDREMOTEMINE 0x43
#define GAMEFILEFLAG_44 0x44
#define GAMEFILEFLAG_45 0x45
#define GAMEFILEFLAG_46 0x46
#define GAMEFILEFLAG_HOWTO_HOVERCRATE 0x47
#define GAMEFILEFLAG_HOWTO_HOVERBIKE 0x48
#define GAMEFILEFLAG_HOWTO_DOORS 0x49
#define GAMEFILEFLAG_HOWTO_ELEVATORS 0x4a
#define GAMEFILEFLAG_HOWTO_TERMINALS 0x4b
#define GAMEFILEFLAG_4C 0x4c
#define GAMEFILEFLAG_4D 0x4d
#define GAMEFILEFLAG_4E 0x4e
#define SCREENRATIO_NORMAL 0
#define SCREENRATIO_16_9 1
+25 -25
View File
@@ -4,17 +4,17 @@
#include "data.h"
#include "types.h"
u32 pak0f1165d0(s8 device);
u32 pak0f1165f8(s8 device, u32 arg1);
s32 pak0f116658(s8 arg0, s32 arg1);
u32 pakGetAlignment(s8 device);
u32 pakAlign(s8 device, u32 size);
s32 pakGetAlignedFileLenByBodyLen(s8 device, s32 bodylen);
u32 pak0f116684(u32 arg0);
u32 pakGenerateSerial(s8 device);
bool pakIsConnected(s8 device);
s32 pak0f1167b0(s8 device, u32 arg1, u32 *buffer1024);
s32 pak0f1167b0(s8 device, u32 filetype, u32 *buffer1024);
u32 pak0f1167d8(s8 arg0);
s32 pak0f116800(s8 arg0, s32 arg1, void *arg2, s32 arg3);
s32 pak0f116828(s8 device, s32 arg1, s32 arg2, void *arg3, s32 *filenum, s32 arg5);
bool pakDeleteFile(s8 device, s32 filenum);
s32 pak0f116800(s8 device, s32 fileid, u8 *body, s32 arg3);
s32 pak0f116828(s8 device, s32 fileid, s32 filetype, u8 *body, s32 *outfileid, s32 arg5);
bool pakDeleteFile(s8 device, s32 fileid);
s32 pakDeleteGameNote(s8 device, u16 company_code, u32 game_code, char *game_name, char *ext_name);
s32 pak0f1168c4(s8 device, struct pakdata **arg1);
u32 pak0f116914(s8 device);
@@ -26,22 +26,22 @@ bool pak0f116aec(s8 device);
bool pak0f116b5c(s8 device);
void pak0f116bdc(s8 device, u8 *arg1, u8 *arg2);
u16 pakGetSerial(s8 device);
u32 pak0f116c94(s8 device);
void pak0f116db0(s8 device, s32 value);
u32 pakGetUnk000(s8 device);
void pakSetUnk010(s8 device, s32 value);
s32 pak0f116df0(s8 device, struct pakdata **arg1);
s32 pakDeleteGameNote2(s8 device, u16 company_code, u32 game_code, char *game_name, char *ext_name);
s32 pakDeleteFile2(s8 device, s32 filenum);
s32 pak0f11702c(s8 device);
s32 pakDeleteFile2(s8 device, s32 fileid);
s32 pakGetUnk264(s8 device);
u32 pak0f11706c(s8 device);
s32 pak0f117094(s8 device, u32 arg1);
s32 pakGetBodyLenByType(s8 device, u32 filetype);
void pak0f117150(s8 device, u8 *ptr);
void pak0f1171b4(s8 device, s32 arg1, s32 arg2);
s32 pak0f117210(s8 device);
s32 pakGetUnk008(s8 device);
u32 pak0f117430(void);
u32 pak0f117520(s8 device, u32 arg1, struct pakthing16 *arg2);
u32 pakReadHeaderAtOffset(s8 device, u32 arg1, struct pakfileheader *header);
void pakDumpBuffer(u8 *buffer, u32 len, char *name);
void pakDumpEeprom(void);
s32 pak0f11789c(s8 device, s32 arg1, s32 arg2, void *arg3, s32 *arg4, s32 arg5);
s32 pak0f11789c(s8 device, s32 fileid, s32 filetype, u8 *body, s32 *outfileid, s32 arg5);
#if VERSION >= VERSION_NTSC_1_0
s32 pakInitPak(OSMesgQueue *mq, OSPfs *pfs, s32 channel, s32 *arg3);
@@ -55,10 +55,10 @@ s32 pakFreeBlocks(OSPfs *pfs, s32 *bytes_not_used);
s32 pakFileState(OSPfs *pfs, s32 file_no, OSPfsState *note);
s32 pakAllocateFile(OSPfs *pfs, u16 company_code, u32 game_code, char *game_name, char *ext_name, s32 size, s32 *file_no);
u32 pakDeleteGameNote3(OSPfs *pfs, u16 company_code, u32 game_code, char *game_name, char *ext_name);
s32 pakFindFile(OSPfs *pfs, u16 company_code, u32 game_code, char *game_name, char *ext_name, s32 *file_no);
s32 pakFindNote(OSPfs *pfs, u16 company_code, u32 game_code, char *game_name, char *ext_name, s32 *file_no);
s32 pak0f117ec0(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, u8 *ext_name, u32 numbytes);
s32 pak0f117f80(s8 device);
s32 pak0f117fc0(s8 device);
s32 pakGetUnk2a8(s8 device);
u32 pakGetNoteLen(s8 device);
s32 pak0f118000(s8 device);
s32 pak0f11807c(s8 device);
s32 pak0f118148(s8 device);
@@ -66,14 +66,14 @@ s32 pak0f118230(s8 device, s32 arg1);
s32 pak0f118334(s8 device, s32 numpages);
void pak0f1185e0(s8 device, s32 arg1, s32 param_3);
u32 pak0f118674(s8 arg0, u32 arg1, u32 arg2);
void pak0f1189d8(void);
void pakInitAll(void);
void pakCalculateChecksum(u8 *arg0, u8 *arg1, u16 *arg2);
s32 pak0f118bc8(s8 arg0, s32 arg1, void *arg2, s32 arg3);
s32 pak0f118d18(s8 device, u32 arg1, u32 *buffer1024);
s32 pak0f118bc8(s8 device, s32 fileid, u8 *body, s32 arg3);
s32 pak0f118d18(s8 device, u32 filetype, u32 *buffer1024);
s32 pak0f1190bc(s8 device, s32 arg1, s32 *arg2);
u32 pak0f119298(s8 device);
void pak0f119340(u32 arg0);
s32 pak0f119368(s8 device, u32 arg1, struct pakthing16 *pakthing16);
s32 pakFindFile(s8 device, u32 fileid, struct pakfileheader *header);
#if VERSION >= VERSION_NTSC_FINAL
bool pak0f119478(u32 arg0, u32 arg1, u32 *arg2);
#endif
@@ -85,7 +85,7 @@ u32 pak0f11a0e8(void);
u32 pak0f11a1d0(void);
void pak0f11a2e4(void);
void pak0f11a32c(s8 device, u8 arg1, u32 line, char *file);
void pak0f11a434(s8 arg0);
void pakInit(s8 arg0);
s32 pak0f11a504(s8 device, OSPfs *pfs, s32 file_no, u8 flag, u32 address, u32 len, u8 *buffer);
s32 pak0f11a574(s8 device);
u32 pak0f11a7dc(void);
@@ -96,9 +96,9 @@ u32 pak0f11b178(void);
u32 pak0f11b488(void);
s32 pakScrub(s8 device);
bool pak0f11b75c(s8 device, u32 *arg1);
u32 pak0f11b86c(void);
s32 pak0f11b86c(s32 device, u32 uVar2, u8 *data, struct pakfileheader *header, s32 arg3);
u32 pak0f11bbd8(void);
s32 pak0f11bc54(s8 device, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8);
s32 pak0f11bc54(s8 device, s32 arg1, s32 filetype, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8);
bool pakRepair(s8 device);
u32 pak0f11c39c(u32 arg0, s8 device, u32 ar2, u32 arg3);
void pak0f11c54c(void);
+14 -14
View File
@@ -87,7 +87,7 @@ struct playerstats {
};
struct fileguid {
s32 filenum;
s32 fileid;
u16 deviceserial;
};
@@ -202,7 +202,7 @@ struct g_vars {
/*000470*/ s32 perfectbuddynum;
/*000474*/ s32 numaibuddies;
/*000478*/ bool aibuddiesspawned;
/*00047c*/ s32 bossfilenum;
/*00047c*/ s32 bossfileid;
/*000480*/ u16 bossdeviceserial;
/*000482*/ u16 unk000482;
/*000484*/ s32 mphilltime;
@@ -3863,7 +3863,7 @@ struct menudata_filemgr {
void *unke44;
s32 mpplayernum;
};
/*0xe48*/ u32 filenum;
/*0xe48*/ u32 fileid;
/*0xe4c*/ u32 deviceserial;
/*0xe50*/ u16 isretryingsave;
/*0xe52*/ u8 device2;
@@ -4678,7 +4678,7 @@ struct mparena {
};
struct filelistfile {
s32 filenum;
s32 fileid;
u16 deviceserial;
char name[16];
};
@@ -5045,7 +5045,7 @@ struct pak {
/*0x294*/ u32 unk294;
/*0x298*/ u32 unk298;
/*0x29c*/ s32 noteindex;
/*0x2a0*/ u32 unk2a0;
/*0x2a0*/ u32 notelen;
/*0x2a4*/ u32 unk2a4;
/*0x2a8*/ u32 unk2a8;
/*0x2ac*/ u32 unk2ac;
@@ -6674,17 +6674,17 @@ struct pakthing {
u16 unk10;
};
struct pakthing16 {
struct pakfileheader {
u32 unk00;
u32 unk04;
u32 unk08_01 : 9;
u32 unk08_10 : 3;
u32 unk08_13 : 8;
u32 unk08_21 : 12;
u32 unk0c_01 : 13;
u32 unk0c_14 : 7;
u16 sum1;
u16 sum2;
u32 filetype : 9; // PAKFILETYPE constant
u32 bodylen : 11; // not aligned
u32 filelen : 12; // aligned to 0x10
u32 deviceserial : 13;
u32 fileid : 7;
u32 unk0c_21 : 9;
u32 unk0c_22 : 1;
u32 occupied : 1;
};
struct var80067e6c {
+1 -1
View File
@@ -555,7 +555,7 @@ void joy00014238(void)
for (i = 0; i < 4; i++) {
if (joy000155f4(i) == 13) {
pak0f116db0(i, 11);
pakSetUnk010(i, 11);
}
}
+4 -4
View File
@@ -660,7 +660,7 @@ glabel mainInit
/* d7b0: 00000000 */ nop
/* d7b4: 0fc52bf6 */ jal func0f14a328
/* d7b8: 00000000 */ nop
/* d7bc: 0fc4652e */ jal pak0f1189d8
/* d7bc: 0fc4652e */ jal pakInitAll
/* d7c0: 00000000 */ nop
/* d7c4: 0fc52c1b */ jal func0f14a3bc
/* d7c8: 00000000 */ nop
@@ -1063,7 +1063,7 @@ glabel mainInit
/* da74: 00000000 */ nop
/* da78: 0fc528ca */ jal func0f14a328
/* da7c: 00000000 */ nop
/* da80: 0fc46276 */ jal pak0f1189d8
/* da80: 0fc46276 */ jal pakInitAll
/* da84: 00000000 */ nop
/* da88: 0fc528ef */ jal func0f14a3bc
/* da8c: 00000000 */ nop
@@ -1436,7 +1436,7 @@ glabel mainInit
/* df84: 00000000 */ sll $zero,$zero,0x0
/* df88: 0fc512be */ jal func0f14a328
/* df8c: 00000000 */ sll $zero,$zero,0x0
/* df90: 0fc44b4c */ jal pak0f1189d8
/* df90: 0fc44b4c */ jal pakInitAll
/* df94: 00000000 */ sll $zero,$zero,0x0
/* df98: 0fc512e3 */ jal func0f14a3bc
/* df9c: 00000000 */ sll $zero,$zero,0x0
@@ -1665,7 +1665,7 @@ const char var70053aa0[] = " -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400";
// stub0f000840();
// mpSetDefaultSetup();
// func0f14a328();
// pak0f1189d8();
// pakInitAll();
// func0f14a3bc();
// func000233c0();
// func0f000100();