mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-08-04 07:08:48 +00:00
Stub ReceiveDeliverArg/LoadSysMenuArg/GetCaptureInfo
This commit is contained in:
parent
cd79917cd7
commit
c00d2c09f5
2 changed files with 47 additions and 0 deletions
|
@ -37,15 +37,18 @@ class APTService {
|
||||||
void checkNew3DSApp(u32 messagePointer);
|
void checkNew3DSApp(u32 messagePointer);
|
||||||
void enable(u32 messagePointer);
|
void enable(u32 messagePointer);
|
||||||
void getAppletInfo(u32 messagePointer);
|
void getAppletInfo(u32 messagePointer);
|
||||||
|
void getCaptureInfo(u32 messagePointer);
|
||||||
void getSharedFont(u32 messagePointer);
|
void getSharedFont(u32 messagePointer);
|
||||||
void getWirelessRebootInfo(u32 messagePointer);
|
void getWirelessRebootInfo(u32 messagePointer);
|
||||||
void glanceParameter(u32 messagePointer);
|
void glanceParameter(u32 messagePointer);
|
||||||
void initialize(u32 messagePointer);
|
void initialize(u32 messagePointer);
|
||||||
void inquireNotification(u32 messagePointer);
|
void inquireNotification(u32 messagePointer);
|
||||||
void isRegistered(u32 messagePointer);
|
void isRegistered(u32 messagePointer);
|
||||||
|
void loadSysMenuArg(u32 messagePointer);
|
||||||
void notifyToWait(u32 messagePointer);
|
void notifyToWait(u32 messagePointer);
|
||||||
void preloadLibraryApplet(u32 messagePointer);
|
void preloadLibraryApplet(u32 messagePointer);
|
||||||
void prepareToStartLibraryApplet(u32 messagePointer);
|
void prepareToStartLibraryApplet(u32 messagePointer);
|
||||||
|
void receiveDeliverArg(u32 messagePointer);
|
||||||
void receiveParameter(u32 messagePointer);
|
void receiveParameter(u32 messagePointer);
|
||||||
void replySleepQuery(u32 messagePointer);
|
void replySleepQuery(u32 messagePointer);
|
||||||
void setApplicationCpuTimeLimit(u32 messagePointer);
|
void setApplicationCpuTimeLimit(u32 messagePointer);
|
||||||
|
|
|
@ -18,10 +18,13 @@ namespace APTCommands {
|
||||||
PreloadLibraryApplet = 0x00160040,
|
PreloadLibraryApplet = 0x00160040,
|
||||||
PrepareToStartLibraryApplet = 0x00180040,
|
PrepareToStartLibraryApplet = 0x00180040,
|
||||||
StartLibraryApplet = 0x001E0084,
|
StartLibraryApplet = 0x001E0084,
|
||||||
|
ReceiveDeliverArg = 0x00350080,
|
||||||
|
LoadSysMenuArg = 0x00360040,
|
||||||
ReplySleepQuery = 0x003E0080,
|
ReplySleepQuery = 0x003E0080,
|
||||||
NotifyToWait = 0x00430040,
|
NotifyToWait = 0x00430040,
|
||||||
GetSharedFont = 0x00440000,
|
GetSharedFont = 0x00440000,
|
||||||
GetWirelessRebootInfo = 0x00450040,
|
GetWirelessRebootInfo = 0x00450040,
|
||||||
|
GetCaptureInfo = 0x004A0040,
|
||||||
AppletUtility = 0x004B00C2,
|
AppletUtility = 0x004B00C2,
|
||||||
SetApplicationCpuTimeLimit = 0x004F0080,
|
SetApplicationCpuTimeLimit = 0x004F0080,
|
||||||
GetApplicationCpuTimeLimit = 0x00500040,
|
GetApplicationCpuTimeLimit = 0x00500040,
|
||||||
|
@ -82,12 +85,15 @@ void APTService::handleSyncRequest(u32 messagePointer) {
|
||||||
case APTCommands::InquireNotification: [[likely]] inquireNotification(messagePointer); break;
|
case APTCommands::InquireNotification: [[likely]] inquireNotification(messagePointer); break;
|
||||||
case APTCommands::IsRegistered: isRegistered(messagePointer); break;
|
case APTCommands::IsRegistered: isRegistered(messagePointer); break;
|
||||||
case APTCommands::GetApplicationCpuTimeLimit: getApplicationCpuTimeLimit(messagePointer); break;
|
case APTCommands::GetApplicationCpuTimeLimit: getApplicationCpuTimeLimit(messagePointer); break;
|
||||||
|
case APTCommands::GetCaptureInfo: getCaptureInfo(messagePointer); break;
|
||||||
case APTCommands::GetLockHandle: getLockHandle(messagePointer); break;
|
case APTCommands::GetLockHandle: getLockHandle(messagePointer); break;
|
||||||
case APTCommands::GetWirelessRebootInfo: getWirelessRebootInfo(messagePointer); break;
|
case APTCommands::GetWirelessRebootInfo: getWirelessRebootInfo(messagePointer); break;
|
||||||
case APTCommands::GlanceParameter: glanceParameter(messagePointer); break;
|
case APTCommands::GlanceParameter: glanceParameter(messagePointer); break;
|
||||||
|
case APTCommands::LoadSysMenuArg: loadSysMenuArg(messagePointer); break;
|
||||||
case APTCommands::NotifyToWait: notifyToWait(messagePointer); break;
|
case APTCommands::NotifyToWait: notifyToWait(messagePointer); break;
|
||||||
case APTCommands::PreloadLibraryApplet: preloadLibraryApplet(messagePointer); break;
|
case APTCommands::PreloadLibraryApplet: preloadLibraryApplet(messagePointer); break;
|
||||||
case APTCommands::PrepareToStartLibraryApplet: prepareToStartLibraryApplet(messagePointer); break;
|
case APTCommands::PrepareToStartLibraryApplet: prepareToStartLibraryApplet(messagePointer); break;
|
||||||
|
case APTCommands::ReceiveDeliverArg: receiveDeliverArg(messagePointer); break;
|
||||||
case APTCommands::ReceiveParameter: [[likely]] receiveParameter(messagePointer); break;
|
case APTCommands::ReceiveParameter: [[likely]] receiveParameter(messagePointer); break;
|
||||||
case APTCommands::ReplySleepQuery: replySleepQuery(messagePointer); break;
|
case APTCommands::ReplySleepQuery: replySleepQuery(messagePointer); break;
|
||||||
case APTCommands::SetApplicationCpuTimeLimit: setApplicationCpuTimeLimit(messagePointer); break;
|
case APTCommands::SetApplicationCpuTimeLimit: setApplicationCpuTimeLimit(messagePointer); break;
|
||||||
|
@ -373,3 +379,41 @@ void APTService::getWirelessRebootInfo(u32 messagePointer) {
|
||||||
mem.write8(messagePointer + 0x104 + i, 0); // Temporarily stub this until we add SetWirelessRebootInfo
|
mem.write8(messagePointer + 0x104 + i, 0); // Temporarily stub this until we add SetWirelessRebootInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void APTService::receiveDeliverArg(u32 messagePointer) {
|
||||||
|
const u32 parameterSize = mem.read32(messagePointer + 4);
|
||||||
|
const u32 hmacSize = mem.read32(messagePointer + 8);
|
||||||
|
const u32 parameter = mem.read32(messagePointer + 0x104);
|
||||||
|
const u32 hmac = mem.read32(messagePointer + 0x10C);
|
||||||
|
log("APT::ReceiveDeliverArg (parameter size = %X, HMAC size = %X, parameter pointer = %X, HMAC pointer = %X) (stubbed)\n", parameterSize, hmacSize, parameter, hmac);
|
||||||
|
|
||||||
|
mem.write32(messagePointer, IPC::responseHeader(0x35, 4, 4));
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
mem.write32(messagePointer + 8, 0); // Program ID
|
||||||
|
mem.write8(messagePointer + 16, 1); // Is valid response
|
||||||
|
mem.write32(messagePointer + 20, IPC::pointerHeader(0, sizeof(u32) * parameterSize, IPC::BufferType::Send));
|
||||||
|
mem.write32(messagePointer + 24, 0xDEADBEEF); // TODO: look into how this works if program reads from this address
|
||||||
|
mem.write32(messagePointer + 28, IPC::pointerHeader(1, sizeof(u32) * hmacSize, IPC::BufferType::Send));
|
||||||
|
mem.write32(messagePointer + 32, 0xDEADBEEF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void APTService::loadSysMenuArg(u32 messagePointer) {
|
||||||
|
const u32 outputSize = mem.read32(messagePointer + 4);
|
||||||
|
log("APT::LoadSysMenuArg (output size = %X) (stubbed)\n", outputSize);
|
||||||
|
|
||||||
|
mem.write32(messagePointer, IPC::responseHeader(0x35, 4, 4));
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
mem.write32(messagePointer + 8, IPC::pointerHeader(0, sizeof(u32) * outputSize, IPC::BufferType::Send));
|
||||||
|
mem.write32(messagePointer + 12, 0xDEADBEEF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void APTService::getCaptureInfo(u32 messagePointer) {
|
||||||
|
const u32 size = mem.read32(messagePointer + 4);
|
||||||
|
const u32 captureBufferInfo = mem.read32(messagePointer + 0x104);
|
||||||
|
log("APT::GetCaptureInfo (size = %X, capture buffer info pointer = %X) (Stubbed)\n", size, captureBufferInfo);
|
||||||
|
|
||||||
|
mem.write32(messagePointer, IPC::responseHeader(0x4A, 1, 2));
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
mem.write32(messagePointer + 8, IPC::pointerHeader(0, sizeof(u32) * size, IPC::BufferType::Send));
|
||||||
|
mem.write32(messagePointer + 12, 0xDEADDEAD);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue