mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-12 18:46:08 +00:00
109
include/MetroidPrime/CMemoryCardDriver.hpp
Normal file
109
include/MetroidPrime/CMemoryCardDriver.hpp
Normal file
@@ -0,0 +1,109 @@
|
||||
#ifndef _CMEMORYCARDDRIVER
|
||||
#define _CMEMORYCARDDRIVER
|
||||
|
||||
#include "MetroidPrime/Player/CGameState.hpp"
|
||||
|
||||
class CMemoryCardDriver {
|
||||
public:
|
||||
enum EState {
|
||||
kS_Initial = 0,
|
||||
kS_Ready = 1,
|
||||
kS_NoCard = 2,
|
||||
kS_DriverClosed = 3,
|
||||
kS_CardFormatted = 4,
|
||||
kS_CardProbeDone = 5,
|
||||
kS_CardMountDone = 6,
|
||||
kS_CardCheckDone = 7,
|
||||
kS_FileCreateDone = 8,
|
||||
kS_FileCreateTransactionalDone = 9,
|
||||
kS_FileWriteTransactionalDone = 10,
|
||||
kS_FileDeleteAltTransactionalDone = 11,
|
||||
kS_CardProbeFailed = 12,
|
||||
kS_CardMountFailed = 13,
|
||||
kS_CardCheckFailed = 14,
|
||||
kS_FileDeleteBadFailed = 15,
|
||||
kS_FileDeleteAltFailed = 16,
|
||||
kS_FileBad = 17,
|
||||
kS_FileCreateFailed = 18,
|
||||
kS_FileWriteFailed = 19,
|
||||
kS_FileCreateTransactionalFailed = 20,
|
||||
kS_FileWriteTransactionalFailed = 21,
|
||||
kS_FileDeleteAltTransactionalFailed = 22,
|
||||
kS_FileRenameBtoAFailed = 23,
|
||||
kS_CardFormatFailed = 24,
|
||||
kS_CardProbe = 25,
|
||||
kS_CardMount = 26,
|
||||
kS_CardCheck = 27,
|
||||
kS_FileDeleteBad = 28,
|
||||
kS_FileRead = 29,
|
||||
kS_FileDeleteAlt = 30,
|
||||
kS_FileCreate = 31,
|
||||
kS_FileWrite = 32,
|
||||
kS_FileCreateTransactional = 33,
|
||||
kS_FileWriteTransactional = 34,
|
||||
kS_FileDeleteAltTransactional = 35,
|
||||
kS_FileRenameBtoA = 36,
|
||||
kS_CardFormat = 37
|
||||
};
|
||||
|
||||
enum EError {
|
||||
kE_OK,
|
||||
kE_CardBroken,
|
||||
kE_CardWrongCharacterSet,
|
||||
kE_CardIOError,
|
||||
kE_CardWrongDevice,
|
||||
kE_CardFull,
|
||||
kE_CardStillFull, /* After attempting alt-delete (if needed) */
|
||||
kE_CardNon8KSectors,
|
||||
kE_FileMissing,
|
||||
kE_FileCorrupted
|
||||
};
|
||||
|
||||
static bool IsCardBusy(EState);
|
||||
static bool IsCardWriting(EState);
|
||||
CMemoryCardDriver();
|
||||
void ClearFileInfo();
|
||||
~CMemoryCardDriver();
|
||||
void Update();
|
||||
void HandleCardError(int);
|
||||
void UpdateMountCard(int);
|
||||
void UpdateCardCheck();
|
||||
void UpdateFileRead();
|
||||
void UpdateFileDeleteAlt();
|
||||
void UpdateFileDeleteBad();
|
||||
void UpdateFileCreate();
|
||||
void UpdateFileWrite();
|
||||
void UpdateFileCreateTransactional();
|
||||
void UpdateFileWriteTransactional();
|
||||
void UpdateFileRenameBtoA();
|
||||
void StartFileRenameBtoA();
|
||||
void WriteBackupBuf();
|
||||
void UpdateFileAltDeleteTransactional();
|
||||
void UpdateCardFormat();
|
||||
void StartCardProbe();
|
||||
void UpdateCardProbe();
|
||||
void StartMountCard();
|
||||
void StartCardCheck();
|
||||
void ClearError();
|
||||
void CheckCardCapacity();
|
||||
void NoCardFound();
|
||||
void IndexFiles();
|
||||
void StartFileDeleteBad();
|
||||
void StartFileCreate();
|
||||
void StartFileWrite();
|
||||
void StartFileCreateTransactional();
|
||||
void StartFileWriteTransactional();
|
||||
void StartFileDeleteAltTransactional();
|
||||
void StartCardFormat();
|
||||
void InitializeFileInfo();
|
||||
void ReadFinished();
|
||||
void EraseFileSlot(int);
|
||||
void BuildNewFileSlot(int);
|
||||
void BuildExistingFileSlot(int);
|
||||
void ImportPersistentOptions();
|
||||
void ExportPersistentOptions();
|
||||
const CGameState::GameFileStateInfo* GetGameFileStateInfo(int);
|
||||
bool GetCardFreeBytes();
|
||||
};
|
||||
|
||||
#endif // _CMEMORYCARDDRIVER
|
||||
Reference in New Issue
Block a user