mirror of
https://github.com/PabloMK7/citra.git
synced 2025-09-11 21:30:05 +00:00
file_sys: Add support for the BOSS ext save data archive. (#7231)
This commit is contained in:
parent
ea9f522c0c
commit
875f5eaad5
7 changed files with 36 additions and 17 deletions
|
@ -349,14 +349,18 @@ void ArchiveManager::RegisterArchiveTypes() {
|
|||
RegisterArchiveType(std::move(other_savedata_general_factory),
|
||||
ArchiveIdCode::OtherSaveDataGeneral);
|
||||
|
||||
auto extsavedata_factory =
|
||||
std::make_unique<FileSys::ArchiveFactory_ExtSaveData>(sdmc_directory, false);
|
||||
auto extsavedata_factory = std::make_unique<FileSys::ArchiveFactory_ExtSaveData>(
|
||||
sdmc_directory, FileSys::ExtSaveDataType::Normal);
|
||||
RegisterArchiveType(std::move(extsavedata_factory), ArchiveIdCode::ExtSaveData);
|
||||
|
||||
auto sharedextsavedata_factory =
|
||||
std::make_unique<FileSys::ArchiveFactory_ExtSaveData>(nand_directory, true);
|
||||
auto sharedextsavedata_factory = std::make_unique<FileSys::ArchiveFactory_ExtSaveData>(
|
||||
nand_directory, FileSys::ExtSaveDataType::Shared);
|
||||
RegisterArchiveType(std::move(sharedextsavedata_factory), ArchiveIdCode::SharedExtSaveData);
|
||||
|
||||
auto bossextsavedata_factory = std::make_unique<FileSys::ArchiveFactory_ExtSaveData>(
|
||||
sdmc_directory, FileSys::ExtSaveDataType::Boss);
|
||||
RegisterArchiveType(std::move(bossextsavedata_factory), ArchiveIdCode::BossExtSaveData);
|
||||
|
||||
// Create the NCCH archive, basically a small variation of the RomFS archive
|
||||
auto savedatacheck_factory = std::make_unique<FileSys::ArchiveFactory_NCCH>();
|
||||
RegisterArchiveType(std::move(savedatacheck_factory), ArchiveIdCode::NCCH);
|
||||
|
|
|
@ -40,6 +40,7 @@ enum class ArchiveIdCode : u32 {
|
|||
SystemSaveData = 0x00000008,
|
||||
SDMC = 0x00000009,
|
||||
SDMCWriteOnly = 0x0000000A,
|
||||
BossExtSaveData = 0x12345678,
|
||||
NCCH = 0x2345678A,
|
||||
OtherSaveDataGeneral = 0x567890B2,
|
||||
OtherSaveDataPermitted = 0x567890B4,
|
||||
|
|
|
@ -146,7 +146,8 @@ void Module::Interface::GetSystemTime(Kernel::HLERequestContext& ctx) {
|
|||
|
||||
static void WriteGameCoinData(GameCoin gamecoin_data) {
|
||||
const std::string& nand_directory = FileUtil::GetUserPath(FileUtil::UserPath::NANDDir);
|
||||
FileSys::ArchiveFactory_ExtSaveData extdata_archive_factory(nand_directory, true);
|
||||
FileSys::ArchiveFactory_ExtSaveData extdata_archive_factory(nand_directory,
|
||||
FileSys::ExtSaveDataType::Shared);
|
||||
|
||||
FileSys::Path archive_path(ptm_shared_extdata_id);
|
||||
auto archive_result = extdata_archive_factory.Open(archive_path, 0);
|
||||
|
@ -179,7 +180,8 @@ static void WriteGameCoinData(GameCoin gamecoin_data) {
|
|||
|
||||
static GameCoin ReadGameCoinData() {
|
||||
const std::string& nand_directory = FileUtil::GetUserPath(FileUtil::UserPath::NANDDir);
|
||||
FileSys::ArchiveFactory_ExtSaveData extdata_archive_factory(nand_directory, true);
|
||||
FileSys::ArchiveFactory_ExtSaveData extdata_archive_factory(nand_directory,
|
||||
FileSys::ExtSaveDataType::Shared);
|
||||
|
||||
FileSys::Path archive_path(ptm_shared_extdata_id);
|
||||
auto archive_result = extdata_archive_factory.Open(archive_path, 0);
|
||||
|
@ -209,7 +211,8 @@ Module::Module() {
|
|||
// Open the SharedExtSaveData archive 0xF000000B and create the gamecoin.dat file if it doesn't
|
||||
// exist
|
||||
const std::string& nand_directory = FileUtil::GetUserPath(FileUtil::UserPath::NANDDir);
|
||||
FileSys::ArchiveFactory_ExtSaveData extdata_archive_factory(nand_directory, true);
|
||||
FileSys::ArchiveFactory_ExtSaveData extdata_archive_factory(nand_directory,
|
||||
FileSys::ExtSaveDataType::Shared);
|
||||
const FileSys::Path archive_path(ptm_shared_extdata_id);
|
||||
const auto archive_result = extdata_archive_factory.Open(archive_path, 0);
|
||||
// If the archive didn't exist, write the default game coin file
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue