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
+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 {