[ACT] GetAccountDataBlock

This commit is contained in:
wheremyfoodat 2023-08-08 17:21:21 +03:00
parent 25a42dd087
commit c24970f385
2 changed files with 17 additions and 1 deletions

View file

@ -13,6 +13,7 @@ class ACTService {
// Service commands // Service commands
void initialize(u32 messagePointer); void initialize(u32 messagePointer);
void generateUUID(u32 messagePointer); void generateUUID(u32 messagePointer);
void getAccountDataBlock(u32 messagePointer);
public: public:
ACTService(Memory& mem) : mem(mem) {} ACTService(Memory& mem) : mem(mem) {}

View file

@ -4,7 +4,8 @@
namespace ACTCommands { namespace ACTCommands {
enum : u32 { enum : u32 {
Initialize = 0x00010084, Initialize = 0x00010084,
GenerateUUID = 0x000D0040 GetAccountDataBlock = 0x000600C2,
GenerateUUID = 0x000D0040,
}; };
} }
@ -14,6 +15,7 @@ void ACTService::handleSyncRequest(u32 messagePointer) {
const u32 command = mem.read32(messagePointer); const u32 command = mem.read32(messagePointer);
switch (command) { switch (command) {
case ACTCommands::GenerateUUID: generateUUID(messagePointer); break; case ACTCommands::GenerateUUID: generateUUID(messagePointer); break;
case ACTCommands::GetAccountDataBlock: getAccountDataBlock(messagePointer); break;
case ACTCommands::Initialize: initialize(messagePointer); break; case ACTCommands::Initialize: initialize(messagePointer); break;
default: Helpers::panic("ACT service requested. Command: %08X\n", command); default: Helpers::panic("ACT service requested. Command: %08X\n", command);
} }
@ -33,3 +35,16 @@ void ACTService::generateUUID(u32 messagePointer) {
mem.write32(messagePointer, IPC::responseHeader(0xD, 1, 0)); mem.write32(messagePointer, IPC::responseHeader(0xD, 1, 0));
mem.write32(messagePointer + 4, Result::Success); mem.write32(messagePointer + 4, Result::Success);
} }
void ACTService::getAccountDataBlock(u32 messagePointer) {
log("ACT::GetAccountDataBlock (stubbed)\n");
const u32 size = mem.read32(messagePointer + 8);
const u32 blkID = mem.read32(messagePointer + 12);
const u32 outputPointer = mem.read32(messagePointer + 20);
// TODO: This header is probably also wrong
// Also we need to populate the data block here. Half of it is undocumented though >_<
mem.write32(messagePointer, IPC::responseHeader(0x6, 1, 0));
mem.write32(messagePointer + 4, Result::Success);
}