mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
80 lines
2.3 KiB
C++
80 lines
2.3 KiB
C++
#include <wchar.h>
|
|
#include <string.h>
|
|
#include <nn/fs.h>
|
|
#include "savedata.h"
|
|
#include <nn/fs/fs_ResultPrivate.h>
|
|
#include <nn/fs/CTR/MPCore/fs_ApiForHwCheck.h>
|
|
#include <nn/am/am_ApiSystemMenu.h>
|
|
#include <nn/am/am_ApiLocalImporter.h>
|
|
|
|
//プロダクトコード
|
|
//結果は PrdCord に格納
|
|
bool SaveData::GetPrdCode()
|
|
{
|
|
PrdCode[0] = 0;//clear
|
|
s32 numPrograms;
|
|
nn::ProgramId programId;
|
|
|
|
LastNnResult = nn::am::InitializeForLocalImporter();
|
|
if (LastNnResult.IsFailure()){
|
|
nn::am::FinalizeForLocalImporter();
|
|
return false;
|
|
}
|
|
LastNnResult = nn::am::GetProgramList(&numPrograms, &programId, 1, nn::fs::MEDIA_TYPE_CTRCARD);
|
|
if (LastNnResult.IsFailure()){
|
|
nn::am::FinalizeForLocalImporter();
|
|
return false;
|
|
}
|
|
LastNnResult = nn::am::GetProductCode( (nn::ProductCode*)&PrdCode,nn::fs::MEDIA_TYPE_CTRCARD,programId);
|
|
nn::am::FinalizeForLocalImporter();
|
|
PrdCode[sizeof(nn::ProductCode)] = 0;//表示時のオーバラン対策
|
|
return LastNnResult.IsSuccess();
|
|
}
|
|
|
|
//セーブ作成、成功時はマウント状態
|
|
myResult SaveData::Format(tArcInfo *pinfo)
|
|
{
|
|
if ( IsMounted )return RESULT_ALREADY_MOUNT;
|
|
LastNnResult = nn::fs::FormatCtrCardSaveData(pinfo->FileEntry,pinfo->DirEntry,pinfo->Dup);
|
|
if (LastNnResult.IsFailure())return RESULT_FAIL_FORMAT;
|
|
if ( Mount() != RESULT_OK )return RESULT_FAIL_MOUNT;
|
|
IsMounted = true;
|
|
return RESULT_OK;
|
|
}
|
|
|
|
|
|
//コミット
|
|
bool SaveData::Commit()
|
|
{
|
|
LastNnResult=nn::fs::CommitSaveData(devName);
|
|
return LastNnResult.IsSuccess();
|
|
}
|
|
|
|
|
|
//マウント
|
|
bool SaveData::MountCore()
|
|
{
|
|
//リストア先の場合、コール元でチェック(エラーによってはフォーマットすれば使える)
|
|
LastNnResult = nn::fs::MountCtrCardSaveDataForCheck(devName);
|
|
return LastNnResult.IsSuccess();
|
|
}
|
|
|
|
//フォーマット情報
|
|
void SaveData::GetFormatInfoCore(tArcInfo *ifo)
|
|
{
|
|
LastNnResult = nn::fs::GetCtrCardSaveDataFormatInfo(&ifo->FileEntry,&ifo->DirEntry,&ifo->Dup);
|
|
}
|
|
|
|
|
|
//コンストラクタ
|
|
SaveData::SaveData()
|
|
{
|
|
PrdCode[0] = 0;
|
|
strcpy(devName,"data:");
|
|
SetRootPath(L"data:");
|
|
|
|
}
|
|
|
|
|
|
|