#ifndef _SUB_H_ #define _SUB_H_ #include #include "../../../common/savefile/membak.h" #include "../../../common/savefile/exsave.h" #include "../../../common/savefile/savefile.h" #include "../../../common/savefile/savedata.h" #include "../../../common/my_defs.h" //セーブデータの検証データが512単位なので #define FILEBUFF_SIZE 512 //クラス宣言 class CsmSaveFile { public: char PrdCode[20]; private: bool finalized; s64 pos_card;//カードのリード位置 //ドライバの仕様で速度的に4バイトアラインした方がいい(SDK 0.14.23 時点) char fileBuffer[FILEBUFF_SIZE] NN_ATTRIBUTE_ALIGN(4); char fileBuffer2[FILEBUFF_SIZE] NN_ATTRIBUTE_ALIGN(4); private: SaveData savedata; ExSave exsave; MemBak memsave; public: CsmSaveFile(); ~CsmSaveFile(); //void Initialize(); bool IsExist(TgtDev dev); bool Delete(TgtDev dev); void Finalize(); nn::Result LastNnResult(TgtDev dev); myResult Mount(TgtDev dev); void Unmount(TgtDev dev); void Unmount(); myResult Create(TgtDev dev,u32 entryDir,u32 entryFile); void ResetPath(TgtDev dev); myResult GetPath(TgtDev dev,wchar_t *path); bool Open(TgtDev dev,wchar_t *path); bool OpenW(TgtDev dev,wchar_t *path,s64 size=0); bool CreateFile(TgtDev dev,wchar_t *path,s64 size); void Close(TgtDev dev); void Close(); void CloseW(TgtDev dev); s64 FileSize(TgtDev dev); s32 Write(TgtDev dev,char *buffer,size_t size); s32 Read(TgtDev dev,char *buffer,size_t size); myResult Copy(TgtDev dest,TgtDev src,wchar_t *path,wchar_t *pathw = 0); myResult OpnCpy(TgtDev dest,TgtDev src,size_t size); myResult OpnCmp(TgtDev dest,TgtDev src,size_t size); bool stsActive(TgtDev dev); bool stsFormatted(TgtDev dev); bool MakeDir(TgtDev dev,wchar_t *path,bool *mkdir); bool DeleteFile(TgtDev dev,wchar_t *path); bool Flush(TgtDev dev); //Card bool GetPrdCode(); bool GetInfo(tArcInfo *pinfo,tDcList *pDcList,size_t clsz = 0); bool ReadBlock(char* buffer,size_t size); myResult Format(tArcInfo *pinfo){return savedata.Format(pinfo);}; bool Commit(){return savedata.Commit();}; //SD bool SetPos(s64 pos){return exsave.SetPosW(pos);}; }; #endif