mirror of
https://gitlab.com/GaryOderNichts/re3-wiiu.git
synced 2024-12-26 17:51:50 +01:00
197 lines
4.8 KiB
C
197 lines
4.8 KiB
C
|
#pragma once
|
||
|
#include "common.h"
|
||
|
#ifdef PS2_MENU
|
||
|
#include "Date.h"
|
||
|
|
||
|
#if defined(PS2)
|
||
|
#include <libcdvd.h>
|
||
|
#include <sifdev.h>
|
||
|
#include <libvu0.h>
|
||
|
#endif
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
CARD_ONE = 0,
|
||
|
CARD_TWO,
|
||
|
MAX_CARDS,
|
||
|
};
|
||
|
|
||
|
class CMemoryCardInfo
|
||
|
{
|
||
|
public:
|
||
|
int port;
|
||
|
int slot;
|
||
|
int type;
|
||
|
int free;
|
||
|
int format;
|
||
|
char dir[40];
|
||
|
#if defined(PS2)
|
||
|
sceMcTblGetDir table[15];
|
||
|
#else
|
||
|
struct
|
||
|
{
|
||
|
typedef struct {unsigned char Sec,Min,Hour; unsigned char Day,Month; unsigned short Year;} _time;
|
||
|
_time _Create;
|
||
|
_time _Modify;
|
||
|
unsigned int FileSizeByte;
|
||
|
unsigned short AttrFile;
|
||
|
unsigned char EntryName[32];
|
||
|
}table[15];
|
||
|
#endif
|
||
|
CMemoryCardInfo(void);
|
||
|
};
|
||
|
|
||
|
|
||
|
#define GUFF_FILE_SIZE 147096
|
||
|
#define SAVE_FILE_SIZE 201729
|
||
|
|
||
|
class CMemoryCard
|
||
|
{
|
||
|
public:
|
||
|
enum
|
||
|
{
|
||
|
MAX_SLOTS = 8,
|
||
|
};
|
||
|
|
||
|
enum MCSTATE
|
||
|
{
|
||
|
MCSTATE_OK = 0,
|
||
|
MCSTATE_NEED_500KB,
|
||
|
MCSTATE_NEED_200KB,
|
||
|
MCSTATE_NOCARD,
|
||
|
};
|
||
|
|
||
|
enum SLOTINFO
|
||
|
{
|
||
|
SLOT_PRESENT = 0,
|
||
|
SLOT_NOTPRESENT,
|
||
|
SLOT_CORRUPTED,
|
||
|
};
|
||
|
|
||
|
int _unk0;
|
||
|
int _unk1;
|
||
|
bool m_bWantToLoad;
|
||
|
bool JustLoadedDontFadeInYet;
|
||
|
bool StillToFadeOut;
|
||
|
bool b_FoundRecentSavedGameWantToLoad;
|
||
|
uint32 TimeStartedCountingForFade;
|
||
|
uint32 TimeToStayFadedBeforeFadeOut;
|
||
|
uint32 LastBlockSize;
|
||
|
bool _bunk2;
|
||
|
char ValidSaveName [30];
|
||
|
char MostRecentFile [30];
|
||
|
char _unkName3 [30];
|
||
|
char SaveFileNameJustSaved[30];
|
||
|
char _pad0[3];
|
||
|
wchar *pErrorMsg;
|
||
|
char _unk4[32];
|
||
|
bool _bunk5;
|
||
|
bool _bunk6;
|
||
|
bool _bunk7;
|
||
|
bool _bunk8;
|
||
|
int nError;
|
||
|
wchar _unk9[30];
|
||
|
char LoadFileName[30];
|
||
|
char _pad1[2];
|
||
|
CDate CompileDateAndTime;
|
||
|
int m_LanguageToLoad;
|
||
|
int m_LevelToLoad;
|
||
|
int CurrentCard;
|
||
|
CMemoryCardInfo Cards [MAX_CARDS];
|
||
|
int Slots [MAX_SLOTS];
|
||
|
wchar SlotFileName[MAX_SLOTS][30];
|
||
|
wchar SlotSaveDate[MAX_SLOTS][30];
|
||
|
char _unk10[32];
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
ERR_NONE = 0,
|
||
|
ERR_NOFORMAT = 1,
|
||
|
ERR_DIRNOENTRY = 2,
|
||
|
ERR_OPENNOENTRY = 3,
|
||
|
ERR_DELETENOENTRY = 4,
|
||
|
ERR_DELETEDENIED = 5,
|
||
|
ERR_DELETEFAILED = 6,
|
||
|
ERR_WRITEFULLDEVICE = 7,
|
||
|
ERR_WRITENOENTRY = 8,
|
||
|
ERR_WRITEDENIED = 9,
|
||
|
ERR_FLUSHNOENTRY,
|
||
|
ERR_WRITEFAILED,
|
||
|
ERR_FORMATFAILED = 12,
|
||
|
ERR_FILETABLENOENTRY = 13,
|
||
|
ERR_DIRFULLDEVICE = 14,
|
||
|
ERR_DIRBADENTRY = 15,
|
||
|
ERR_FILEFULLDEVICE = 16,
|
||
|
ERR_FILENOPATHENTRY = 17,
|
||
|
ERR_FILEDENIED = 18,
|
||
|
ERR_FILEUPLIMIT = 19,
|
||
|
ERR_READNOENTRY = 20,
|
||
|
ERR_READDENIED = 21,
|
||
|
ERR_LOADFAILED = 22, // unused
|
||
|
ERR_SAVEFAILED = 23,
|
||
|
ERR_DATACORRUPTED = 24,
|
||
|
ERR_NOROOTDIR = 25,
|
||
|
NO_ERR_SUCCESS = 26,
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
RES_SUCCESS = 1,
|
||
|
RES_FAILED = -1,
|
||
|
};
|
||
|
|
||
|
int32 GetError()
|
||
|
{
|
||
|
return nError;
|
||
|
}
|
||
|
|
||
|
wchar *GetErrorMessage()
|
||
|
{
|
||
|
return pErrorMsg;
|
||
|
}
|
||
|
|
||
|
int32 Init(void);
|
||
|
CMemoryCard(void);
|
||
|
int32 RestoreForStartLoad(void);
|
||
|
int32 LoadSavedGame(void);
|
||
|
int32 CheckCardInserted(int32 cardID);
|
||
|
int32 PopulateCardFlags(int32 cardID, bool bSlotFlag, bool bTypeFlag, bool bFreeFlag, bool bFormatFlag);
|
||
|
int32 FormatCard(int32 cardID);
|
||
|
int32 PopulateFileTable(int32 cardID);
|
||
|
int32 CreateRootDirectory(int32 cardID);
|
||
|
int32 ChangeDirectory(int32 cardID, char *dir);
|
||
|
int32 CreateIconFiles(int32 cardID, char *icon_one, char *icon_two, char *icon_three);
|
||
|
int32 LoadIconFiles(int32 cardID, char *icon_one, char *icon_two, char *icon_three);
|
||
|
int32 CloseMemCardFile(int32 file);
|
||
|
int32 CreateMemCardFileReadWrite(int32 cardID, char *filename);
|
||
|
int32 OpenMemCardFileForReading(int32 cardID, char *filename);
|
||
|
int32 ReadFromMemCard(int32 file, void *buff, int32 size);
|
||
|
int32 DeleteMemoryCardFile(int32 cardID, char *filename);
|
||
|
void PopulateErrorMessage();
|
||
|
int32 WritetoMemCard(int32 file, void *buff, int32 size);
|
||
|
bool SaveGame(void);
|
||
|
bool DoHackRoundSTUPIDSonyDateTimeStuff(int32 port, char *filename);
|
||
|
int32 LookForRootDirectory(int32 cardID);
|
||
|
int32 FillFirstFileWithGuff(int32 cardID);
|
||
|
bool FindMostRecentFileName(int32 cardID, char *filename);
|
||
|
void ClearFileTableBuffer(int32 cardID);
|
||
|
int32 GetClusterAmountForFileCreation(int32 port);
|
||
|
bool DeleteEverythingInGameRoot(int32 cardID);
|
||
|
int32 CheckDataNotCorrupt(char *filename);
|
||
|
int32 GetLanguageToLoad(void);
|
||
|
int32 GetLevelToLoad(void);
|
||
|
bool CreateGameDirectoryFromScratch(int32 cardID);
|
||
|
bool CheckGameDirectoryThere(int32 cardID);
|
||
|
void PopulateSlotInfo(int32 cardID);
|
||
|
int32 GetInfoOnSpecificSlot(int32 slotID);
|
||
|
wchar *GetDateAndTimeOfSavedGame(int32 slotID);
|
||
|
int32 CheckCardStateAtGameStartUp(int32 cardID);
|
||
|
void SaveSlot(int32 slotID);
|
||
|
void DeleteSlot(int32 slotID);
|
||
|
void LoadSlotToBuffer(int32 slotID);
|
||
|
wchar *GetNameOfSavedGame(int32 slotID);
|
||
|
int32 DoClassSaveRoutine(int32 file, uint8 *data, uint32 size);
|
||
|
};
|
||
|
|
||
|
extern CMemoryCard TheMemoryCard;
|
||
|
#endif
|