mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-20 12:39:13 +12:00
[APT] Implement new 3DS check, [OS] Fix mem allog bug & impl more of HID
This commit is contained in:
parent
c4cb20f846
commit
0aaf1c317d
14 changed files with 143 additions and 60 deletions
|
@ -2,7 +2,15 @@
|
|||
|
||||
namespace APTCommands {
|
||||
enum : u32 {
|
||||
GetLockHandle = 0x00010040
|
||||
GetLockHandle = 0x00010040,
|
||||
CheckNew3DS = 0x01020000
|
||||
};
|
||||
}
|
||||
|
||||
namespace Model {
|
||||
enum : u8 {
|
||||
Old3DS = 0,
|
||||
New3DS = 1
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -18,11 +26,17 @@ void APTService::reset() {}
|
|||
void APTService::handleSyncRequest(u32 messagePointer) {
|
||||
const u32 command = mem.read32(messagePointer);
|
||||
switch (command) {
|
||||
case APTCommands::CheckNew3DS: checkNew3DS(messagePointer); break;
|
||||
case APTCommands::GetLockHandle: getLockHandle(messagePointer); break;
|
||||
default: Helpers::panic("APT service requested. Command: %08X\n", command);
|
||||
}
|
||||
}
|
||||
|
||||
void APTService::checkNew3DS(u32 messagePointer) {
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
mem.write8(messagePointer + 8, Model::Old3DS); // u8, Status (0 = Old 3DS, 1 = New 3DS)
|
||||
}
|
||||
|
||||
void APTService::getLockHandle(u32 messagePointer) {
|
||||
log("APT::GetLockHandle (Failure)\n");
|
||||
mem.write32(messagePointer + 4, Result::Failure); // Result code
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace FSCommands {
|
|||
namespace Result {
|
||||
enum : u32 {
|
||||
Success = 0,
|
||||
Failure = 0xFFFF'FFFF
|
||||
Failure = 0xFFFFFFFF
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,9 @@ namespace Result {
|
|||
};
|
||||
}
|
||||
|
||||
void HIDService::reset() {}
|
||||
void HIDService::reset() {
|
||||
sharedMem = nullptr;
|
||||
}
|
||||
|
||||
void HIDService::handleSyncRequest(u32 messagePointer) {
|
||||
const u32 command = mem.read32(messagePointer);
|
||||
|
@ -24,7 +26,15 @@ void HIDService::handleSyncRequest(u32 messagePointer) {
|
|||
}
|
||||
|
||||
void HIDService::getIPCHandles(u32 messagePointer) {
|
||||
log("HID::GetIPCHandles (Failure)\n");
|
||||
mem.write32(messagePointer + 4, Result::Failure); // Result code
|
||||
log("HID::GetIPCHandles\n");
|
||||
mem.write32(messagePointer + 4, Result::Success); // Result code
|
||||
mem.write32(messagePointer + 8, 0x14000000); // Translation descriptor
|
||||
mem.write32(messagePointer + 12, KernelHandles::HIDSharedMemHandle); // Shared memory handle
|
||||
|
||||
// HID event handles
|
||||
mem.write32(messagePointer + 16, KernelHandles::HIDEvent0);
|
||||
mem.write32(messagePointer + 20, KernelHandles::HIDEvent1);
|
||||
mem.write32(messagePointer + 24, KernelHandles::HIDEvent2);
|
||||
mem.write32(messagePointer + 28, KernelHandles::HIDEvent3);
|
||||
mem.write32(messagePointer + 32, KernelHandles::HIDEvent4);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue