This commit is contained in:
wheremyfoodat 2024-03-08 17:07:40 +02:00
parent 6e48c7fbdd
commit 47a01a8296
3 changed files with 35 additions and 44 deletions

View file

@ -61,7 +61,7 @@ namespace MediaType {
enum : u8 { enum : u8 {
NAND = 0, NAND = 0,
SD = 1, SD = 1,
Gamecard = 2 Gamecard = 2,
}; };
}; };

View file

@ -249,9 +249,10 @@ Rust::Result<std::vector<u8>, HorizonResult> ExtSaveDataArchive::loadIcon() cons
if (size < 0) { if (size < 0) {
return Err(Result::FS::NotFoundInvalid); return Err(Result::FS::NotFoundInvalid);
} }
std::unique_ptr<u8[]> data(new u8[size]);
file.readBytes(data.get(), size); std::vector<u8> icon(size);
return Ok(std::vector(data.get(), data.get() + size)); file.readBytes(icon.data(), size);
return Ok(icon);
} }
std::filesystem::path ExtSaveDataArchive::getFormatInfoPath(const FSPath& path) const { std::filesystem::path ExtSaveDataArchive::getFormatInfoPath(const FSPath& path) const {

View file

@ -165,9 +165,10 @@ FSPath FSService::readPath(u32 type, u32 pointer, u32 size) {
} }
void FSService::writePointer(const u8* data, u32 pointer, u32 size) { void FSService::writePointer(const u8* data, u32 pointer, u32 size) {
for (u32 i = 0; i < size; i++) for (u32 i = 0; i < size; i++) {
mem.write8(pointer + i, data[i]); mem.write8(pointer + i, data[i]);
} }
}
void FSService::handleSyncRequest(u32 messagePointer) { void FSService::handleSyncRequest(u32 messagePointer) {
const u32 command = mem.read32(messagePointer); const u32 command = mem.read32(messagePointer);
@ -536,15 +537,9 @@ void FSService::deleteExtSaveData(u32 messagePointer) {
FSPath path = readPath(PathType::Binary, messagePointer + 4, 8); FSPath path = readPath(PathType::Binary, messagePointer + 4, 8);
switch (mediaType) { switch (mediaType) {
case MediaType::NAND: case MediaType::NAND: sharedExtSaveData_nand.clear(path); break;
sharedExtSaveData_nand.clear(path); case MediaType::SD: extSaveData_sdmc.clear(path); break;
break; default: Helpers::warn("FS::DeleteExtSaveData: Unhandled ExtSaveData MediaType %d", static_cast<s32>(mediaType)); break;
case MediaType::SD:
extSaveData_sdmc.clear(path);
break;
default:
Helpers::warn("FS::DeleteExtSaveData - Unhandled ExtSaveData MediaType %d", static_cast<s32>(mediaType));
break;
} }
*/ */
@ -575,19 +570,14 @@ void FSService::createExtSaveData(u32 messagePointer) {
ExtSaveDataArchive* selected = nullptr; ExtSaveDataArchive* selected = nullptr;
switch(mediaType) { switch(mediaType) {
case MediaType::NAND: case MediaType::NAND: selected = &sharedExtSaveData_nand; break;
selected = &sharedExtSaveData_nand; case MediaType::SD: selected = &extSaveData_sdmc; break;
break; default: Helpers::warn("FS::CreateExtSaveData - Unhandled ExtSaveData MediaType %d", static_cast<s32>(mediaType)); break;
case MediaType::SD:
selected = &extSaveData_sdmc;
break;
default:
Helpers::warn("FS::CreateExtSaveData - Unhandled ExtSaveData MediaType %d", static_cast<s32>(mediaType));
break;
} }
if (selected != nullptr) { if (selected != nullptr) {
selected->format(path, info); selected->format(path, info);
if (smdhSize > 0) { if (smdhSize > 0) {
const FSPath smdh = readPath(PathType::Binary, smdhPointer, smdhSize); const FSPath smdh = readPath(PathType::Binary, smdhPointer, smdhSize);
selected->saveIcon(smdh.binary); selected->saveIcon(smdh.binary);