mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-12 09:09:47 +12:00
[FRD] Implement GetMyScreenName
This commit is contained in:
parent
025231b037
commit
f81d0162d6
2 changed files with 28 additions and 0 deletions
|
@ -19,9 +19,11 @@ class FRDService {
|
||||||
MAKE_LOG_FUNCTION(log, frdLogger)
|
MAKE_LOG_FUNCTION(log, frdLogger)
|
||||||
|
|
||||||
// Service commands
|
// Service commands
|
||||||
|
void attachToEventNotification(u32 messagePointer);
|
||||||
void getFriendKeyList(u32 messagePointer);
|
void getFriendKeyList(u32 messagePointer);
|
||||||
void getMyFriendKey(u32 messagePointer);
|
void getMyFriendKey(u32 messagePointer);
|
||||||
void getMyPresence(u32 messagePointer);
|
void getMyPresence(u32 messagePointer);
|
||||||
|
void getMyScreenName(u32 messsagePointer);
|
||||||
void setClientSDKVersion(u32 messagePointer);
|
void setClientSDKVersion(u32 messagePointer);
|
||||||
void setNotificationMask(u32 messagePointer);
|
void setNotificationMask(u32 messagePointer);
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include "services/frd.hpp"
|
#include "services/frd.hpp"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace FRDCommands {
|
namespace FRDCommands {
|
||||||
enum : u32 {
|
enum : u32 {
|
||||||
|
AttachToEventNotification = 0x00200002,
|
||||||
SetNotificationMask = 0x00210040,
|
SetNotificationMask = 0x00210040,
|
||||||
SetClientSdkVersion = 0x00320042,
|
SetClientSdkVersion = 0x00320042,
|
||||||
GetMyFriendKey = 0x00050000,
|
GetMyFriendKey = 0x00050000,
|
||||||
GetMyPresence = 0x00080000,
|
GetMyPresence = 0x00080000,
|
||||||
|
GetMyScreenName = 0x00090000,
|
||||||
GetFriendKeyList = 0x00110080
|
GetFriendKeyList = 0x00110080
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -21,15 +24,22 @@ void FRDService::reset() {}
|
||||||
void FRDService::handleSyncRequest(u32 messagePointer) {
|
void FRDService::handleSyncRequest(u32 messagePointer) {
|
||||||
const u32 command = mem.read32(messagePointer);
|
const u32 command = mem.read32(messagePointer);
|
||||||
switch (command) {
|
switch (command) {
|
||||||
|
case FRDCommands::AttachToEventNotification: attachToEventNotification(messagePointer); break;
|
||||||
case FRDCommands::GetFriendKeyList: getFriendKeyList(messagePointer); break;
|
case FRDCommands::GetFriendKeyList: getFriendKeyList(messagePointer); break;
|
||||||
case FRDCommands::GetMyFriendKey: getMyFriendKey(messagePointer); break;
|
case FRDCommands::GetMyFriendKey: getMyFriendKey(messagePointer); break;
|
||||||
case FRDCommands::GetMyPresence: getMyPresence(messagePointer); break;
|
case FRDCommands::GetMyPresence: getMyPresence(messagePointer); break;
|
||||||
|
case FRDCommands::GetMyScreenName: getMyScreenName(messagePointer); break;
|
||||||
case FRDCommands::SetClientSdkVersion: setClientSDKVersion(messagePointer); break;
|
case FRDCommands::SetClientSdkVersion: setClientSDKVersion(messagePointer); break;
|
||||||
case FRDCommands::SetNotificationMask: setNotificationMask(messagePointer); break;
|
case FRDCommands::SetNotificationMask: setNotificationMask(messagePointer); break;
|
||||||
default: Helpers::panic("FRD service requested. Command: %08X\n", command);
|
default: Helpers::panic("FRD service requested. Command: %08X\n", command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FRDService::attachToEventNotification(u32 messagePointer) {
|
||||||
|
log("FRD::AttachToEventNotification (Undocumented)\n");
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
}
|
||||||
|
|
||||||
void FRDService::getMyFriendKey(u32 messagePointer) {
|
void FRDService::getMyFriendKey(u32 messagePointer) {
|
||||||
log("FRD::GetMyFriendKey\n");
|
log("FRD::GetMyFriendKey\n");
|
||||||
|
|
||||||
|
@ -67,6 +77,22 @@ void FRDService::getMyPresence(u32 messagePointer) {
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FRDService::getMyScreenName(u32 messagePointer) {
|
||||||
|
log("FRD::GetMyScreenName\n");
|
||||||
|
static const std::u16string name = u"Pander";
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
|
||||||
|
// TODO: Assert the name fits in the response buffer
|
||||||
|
u32 pointer = messagePointer + 8;
|
||||||
|
for (auto c : name) {
|
||||||
|
mem.write16(pointer, static_cast<u16>(c));
|
||||||
|
pointer += sizeof(u16);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add null terminator
|
||||||
|
mem.write16(pointer, static_cast<u16>(u'\0'));
|
||||||
|
}
|
||||||
|
|
||||||
void FRDService::setClientSDKVersion(u32 messagePointer) {
|
void FRDService::setClientSDKVersion(u32 messagePointer) {
|
||||||
u32 version = mem.read32(messagePointer + 4);
|
u32 version = mem.read32(messagePointer + 4);
|
||||||
log("FRD::SetClientSdkVersion (version = %d)\n", version);
|
log("FRD::SetClientSdkVersion (version = %d)\n", version);
|
||||||
|
|
Loading…
Add table
Reference in a new issue