mirror of https://github.com/PrimeDecomp/prime.git
Add body for CMemoryCardDriver
This commit is contained in:
parent
e7e54730a3
commit
b00d23812a
|
@ -3,8 +3,22 @@
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
|
// TODO: likely comes from dolphin sdk
|
||||||
|
enum ECardSlot { kCS_SlotA, kCS_SlotB };
|
||||||
|
enum ECardResult { k_READY };
|
||||||
|
struct FileHandle {};
|
||||||
|
|
||||||
class CMemoryCardSys {
|
class CMemoryCardSys {
|
||||||
public:
|
public:
|
||||||
|
struct CardFileHandle {
|
||||||
|
ECardSlot slot;
|
||||||
|
FileHandle handle;
|
||||||
|
CardFileHandle(ECardSlot slot) : slot(slot) {}
|
||||||
|
int getFileNo() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CCardFileInfo {};
|
||||||
|
|
||||||
CMemoryCardSys();
|
CMemoryCardSys();
|
||||||
~CMemoryCardSys();
|
~CMemoryCardSys();
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,14 @@
|
||||||
|
|
||||||
#include "MetroidPrime/Player/CGameState.hpp"
|
#include "MetroidPrime/Player/CGameState.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/CMemoryCardSys.hpp"
|
||||||
|
|
||||||
|
#include "rstl/auto_ptr.hpp"
|
||||||
|
#include "rstl/pair.hpp"
|
||||||
|
#include "rstl/single_ptr.hpp"
|
||||||
|
#include "rstl/vector.hpp"
|
||||||
|
|
||||||
|
|
||||||
class CMemoryCardDriver {
|
class CMemoryCardDriver {
|
||||||
public:
|
public:
|
||||||
enum EState {
|
enum EState {
|
||||||
|
@ -59,6 +67,57 @@ public:
|
||||||
kE_FileCorrupted
|
kE_FileCorrupted
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct SFileInfo {
|
||||||
|
CMemoryCardSys::CardFileHandle x0_fileInfo;
|
||||||
|
|
||||||
|
rstl::string x14_name;
|
||||||
|
rstl::vector< u8 > x24_saveFileData;
|
||||||
|
rstl::vector< u8 > x34_saveData;
|
||||||
|
// SFileInfo(kabufuda::ECardSlot cardPort, std::string_view name);
|
||||||
|
|
||||||
|
ECardResult Open();
|
||||||
|
ECardResult Close();
|
||||||
|
ECardSlot GetFileCardPort() const { return x0_fileInfo.slot; }
|
||||||
|
int GetFileNo() const { return x0_fileInfo.getFileNo(); }
|
||||||
|
ECardResult StartRead();
|
||||||
|
ECardResult TryFileRead();
|
||||||
|
ECardResult FileRead();
|
||||||
|
ECardResult GetSaveDataOffset(u32& offOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SGameFileSlot {
|
||||||
|
u8 x0_saveBuffer[940];
|
||||||
|
CGameState::GameFileStateInfo x944_fileInfo;
|
||||||
|
|
||||||
|
SGameFileSlot();
|
||||||
|
// explicit SGameFileSlot(CMemoryInStream& in);
|
||||||
|
void InitializeFromGameState();
|
||||||
|
void LoadGameState(u32 idx);
|
||||||
|
// void DoPut(CMemoryStreamOut& w) const { w.Put(x0_saveBuffer.data(), x0_saveBuffer.size()); }
|
||||||
|
};
|
||||||
|
|
||||||
|
enum EFileState { kFS_Unknown, kFS_NoFile, kFS_File, kFS_BadFile };
|
||||||
|
|
||||||
|
ECardSlot x0_cardPort;
|
||||||
|
CAssetId x4_saveBanner;
|
||||||
|
CAssetId x8_saveIcon0;
|
||||||
|
CAssetId xc_saveIcon1;
|
||||||
|
EState x10_state;
|
||||||
|
EError x14_error;
|
||||||
|
s32 x18_cardFreeBytes;
|
||||||
|
s32 x1c_cardFreeFiles;
|
||||||
|
u32 x20_fileTime;
|
||||||
|
u64 x28_cardSerial;
|
||||||
|
u8 x30_systemData[174];
|
||||||
|
rstl::auto_ptr< SGameFileSlot > xe4_fileSlots[3];
|
||||||
|
rstl::vector< rstl::pair< EFileState, SFileInfo > > x100_mcFileInfos;
|
||||||
|
u32 x194_fileIdx;
|
||||||
|
rstl::single_ptr< CMemoryCardSys::CCardFileInfo > x198_fileInfo;
|
||||||
|
bool x19c_;
|
||||||
|
bool x19d_importPersistent;
|
||||||
|
|
||||||
|
public:
|
||||||
static bool IsCardBusy(EState);
|
static bool IsCardBusy(EState);
|
||||||
static bool IsCardWriting(EState);
|
static bool IsCardWriting(EState);
|
||||||
CMemoryCardDriver();
|
CMemoryCardDriver();
|
||||||
|
|
Loading…
Reference in New Issue