Files
2024-05-04 17:12:16 +02:00

95 lines
3.6 KiB
C++

#ifndef GHOSTFILE_H
#define GHOSTFILE_H
#include "kartEnums.h"
#include "Osako/GIRecord.h"
#include "Osako/PadRecorder.h"
#include "Osako/SaveFile.h"
#define FILENAME_SIZE 32
union UUData
{
struct
{
u32 bit1 : 6;
u32 bit2 : 6;
u32 bit3 : 6;
u32 bit4 : 6;
} s;
u8 arr[4];
};
class GhostFile : public SaveFile
{ // Autogenerated
public:
// Global
virtual ~GhostFile(); // 0x8020e3ac
void setup(); // 0x8020e3f4
bool updateKartPadRecord(const KartPadRecord &); // 0x8020e5c4
bool available(ECourseID); // 0x8020e6b0
bool isValidGhostOnRace(); // 0x8020e6e8
static void makeFileName(char *, const GIRecord *); // 0x8020e738
static bool analysisFileName(GIRecord *, const char *); // 0x8020e828
void remakeFileName(); // 0x8020e918
static u8 uuencode(char *, u8, const u8 *, u8); // 0x8020e990
static u8 uudecode(u8 *, u8, const char *, u8); // 0x8020eae4
virtual int getAccessWay(); // 0x8020ebf0, overide
virtual char *getFileName(); // 0x8020ebfc, overide
virtual int getFileNo(); // 0x8020ec08, overide
virtual int getBannerFormat(); // 0x8020ec14, overide
virtual s32 getCommentOffset(); // 0x8020ec1c, overide
virtual u8 getIconNum(); // 0x8020ec2c, overide
virtual int getIconOffset(); // 0x8020ec34, overide
virtual u8 getIconAnim(); // 0x8020ec3c, overide
virtual u8 getIconFormat(u8); // 0x8020ec44, overide
virtual u8 getIconSpeed(u8); // 0x8020ec4c, overide
virtual void *getBuf(); // 0x8020ec54, overide
virtual u32 getFileSize(); // 0x8020ec5c, overide
virtual s32 getLength(); // 0x8020ec68, overide
virtual s32 getOffset(); // 0x8020ec74, overide
virtual void setCheckData(s64); // 0x8020ec7c, overide
virtual void checkData(); // 0x8020eccc, overide
// Inline/Unused
GhostFile();
// Inline
virtual void setPart(SaveFile::FilePart) {} // 0x8020ed28, overide
virtual void fetch() {} // 0x8020ed2c, overide
virtual void store() {} // 0x8020ed30, overide
// Fabricated
struct CheckData
{
u8 mGameVersion; // Version of the game, always 0?
u32 mChecksum; // CRC32 of the block
}; // Size: 0x8
// vtable 0x0
struct Header
{
u8 mBanner[BANNER_SIZE]; // 20
u8 mBannerPallete[PALETTE_SIZE]; // C20
u8 mIcon[ICON_SIZE]; // E20
u8 mIconPalette[PALETTE_SIZE]; // 1220
} mHeader ALIGN(32);
// Fabricated but sort of replicates SystemFile
struct FileData
{
char mComment[COMMENT_SIZE]; // 1420
char mTagData[TAG_SIZE]; // 1440
KartPadRecord mPadRecord; // 1460
CheckData mCheckData; // A018
} mFileData;
// only used by the class, not part of the file structure
char mFileName[32]; // A020
int mFileNo; // A040
int mAccessWay; // A044
int mGhostType; // A048
};
extern GhostFile gGhostFile; // Size: 0xa060(aligned)
#endif // GHOSTFILE_H