From c41b4b465a27f8abb987c0b5254a925b8f5d8c68 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 27 Aug 2023 22:14:25 +0300 Subject: [PATCH] Stub SetThisSaveDataSecureValue --- include/services/fs.hpp | 1 + src/core/services/fs.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/services/fs.hpp b/include/services/fs.hpp index 8af39ef1..775c129a 100644 --- a/include/services/fs.hpp +++ b/include/services/fs.hpp @@ -67,6 +67,7 @@ class FSService { void openFileDirectly(u32 messagePointer); void setArchivePriority(u32 messagePointer); void setPriority(u32 messagePointer); + void setThisSaveDataSecureValue(u32 messagePointer); // Used for set/get priority: Not sure what sort of priority this is referring to u32 priority; diff --git a/src/core/services/fs.cpp b/src/core/services/fs.cpp index ec817e4d..00b66f0c 100644 --- a/src/core/services/fs.cpp +++ b/src/core/services/fs.cpp @@ -35,6 +35,7 @@ namespace FSCommands { InitializeWithSdkVersion = 0x08610042, SetPriority = 0x08620040, GetPriority = 0x08630000, + SetThisSaveDataSecureValue = 0x086E00C0, GetThisSaveDataSecureValue = 0x086F0040, TheGameboyVCFunction = 0x08750180, }; @@ -176,6 +177,7 @@ void FSService::handleSyncRequest(u32 messagePointer) { case FSCommands::OpenFileDirectly: [[likely]] openFileDirectly(messagePointer); break; case FSCommands::SetArchivePriority: setArchivePriority(messagePointer); break; case FSCommands::SetPriority: setPriority(messagePointer); break; + case FSCommands::SetThisSaveDataSecureValue: setThisSaveDataSecureValue(messagePointer); break; case FSCommands::AbnegateAccessRight: abnegateAccessRight(messagePointer); break; case FSCommands::TheGameboyVCFunction: theGameboyVCFunction(messagePointer); break; default: Helpers::panic("FS service requested. Command: %08X\n", command); @@ -643,6 +645,19 @@ void FSService::getThisSaveDataSecureValue(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); } +void FSService::setThisSaveDataSecureValue(u32 messagePointer) { + const u64 value = mem.read32(messagePointer + 4); + const u32 slot = mem.read32(messagePointer + 12); + const u32 id = mem.read32(messagePointer + 16); + const u8 variation = mem.read8(messagePointer + 20); + + // TODO: Actually do something with this. + Helpers::warn("Unimplemented FS::SetThisSaveDataSecureValue"); + + mem.write32(messagePointer, IPC::responseHeader(0x86E, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + void FSService::theGameboyVCFunction(u32 messagePointer) { Helpers::warn("Unimplemented FS: function: 0x08750180");