[BOSS] Stub functions for Pokemon X/Y

This commit is contained in:
wheremyfoodat 2023-03-17 03:58:02 +02:00
parent 97e71533ef
commit 384e920559
2 changed files with 19 additions and 1 deletions

View file

@ -12,8 +12,10 @@ class BOSSService {
// Service commands
void initializeSession(u32 messagePointer);
void getOptoutFlag(u32 messagePointer);
void getStorageEntryInfo(u32 messagePointer); // Unknown what this is, name taken from Citra
void getTaskIdList(u32 messagePointer);
void receiveProperty(u32 messagePointer);
void unregisterStorage(u32 messagePointer);
s8 optoutFlag;
public:

View file

@ -3,9 +3,11 @@
namespace BOSSCommands {
enum : u32 {
InitializeSession = 0x00010082,
UnregisterStorage = 0x00030000,
GetOptoutFlag = 0x000A0000,
GetTaskIdList = 0x000E0000,
ReceiveProperty = 0x00160082
ReceiveProperty = 0x00160082,
GetStorageEntryInfo = 0x00300000
};
}
@ -23,9 +25,11 @@ void BOSSService::handleSyncRequest(u32 messagePointer) {
const u32 command = mem.read32(messagePointer);
switch (command) {
case BOSSCommands::GetOptoutFlag: getOptoutFlag(messagePointer); break;
case BOSSCommands::GetStorageEntryInfo: getStorageEntryInfo(messagePointer); break;
case BOSSCommands::GetTaskIdList: getTaskIdList(messagePointer); break;
case BOSSCommands::InitializeSession: initializeSession(messagePointer); break;
case BOSSCommands::ReceiveProperty: receiveProperty(messagePointer); break;
case BOSSCommands::UnregisterStorage: unregisterStorage(messagePointer); break;
default: Helpers::panic("BOSS service requested. Command: %08X\n", command);
}
}
@ -46,6 +50,13 @@ void BOSSService::getTaskIdList(u32 messagePointer) {
mem.write32(messagePointer + 4, Result::Success);
}
void BOSSService::getStorageEntryInfo(u32 messagePointer) {
log("BOSS::GetStorageEntryInfo (undocumented)\n");
mem.write32(messagePointer + 4, Result::Success);
mem.write32(messagePointer + 8, 0); // u32, unknown meaning
mem.write16(messagePointer + 12, 0); // s16, unknown meaning
}
void BOSSService::receiveProperty(u32 messagePointer) {
const u32 id = mem.read32(messagePointer + 4);
const u32 size = mem.read32(messagePointer + 8);
@ -54,4 +65,9 @@ void BOSSService::receiveProperty(u32 messagePointer) {
log("BOSS::ReceiveProperty(stubbed) (id = %d, size = %08X, ptr = %08X)\n", id, size, ptr);
mem.write32(messagePointer + 4, Result::Success);
mem.write32(messagePointer + 8, 0); // Read size
}
void BOSSService::unregisterStorage(u32 messagePointer) {
log("BOSS::UnregisterStorage (stubbed)\n");
mem.write32(messagePointer + 4, Result::Success);
}