mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-20 19:44:58 +00:00
Write proper pointers
This commit is contained in:
parent
099a3066e5
commit
a167a6d53f
3 changed files with 17 additions and 7 deletions
|
@ -78,10 +78,20 @@ void AMService::getProgramInfos(u32 messagePointer) {
|
|||
const u32 titleInfos = mem.read32(messagePointer + 24);
|
||||
log("AM::GetProgramInfos (media type = %X, title count = %X, title IDs pointer = %X, title infos pointer = %X) (Stubbed)\n", mediaType, titleCount, titleIDs, titleInfos);
|
||||
|
||||
for (u32 title = 0; title < titleCount; title++) {
|
||||
const u64 id = mem.read64(titleIDs + sizeof(u64) * title);
|
||||
|
||||
mem.write64(titleInfos + 0x18 * title, id); // Title ID
|
||||
mem.write64(titleInfos + 0x18 * title + 8, 0); // Size
|
||||
mem.write16(titleInfos + 0x18 * title + 16, 0); // Version
|
||||
mem.write16(titleInfos + 0x18 * title + 18, 0); // Padding
|
||||
mem.write32(titleInfos + 0x18 * title + 20, 0); // Type
|
||||
}
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x3, 1, 4));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
mem.write32(messagePointer + 8, IPC::pointerHeader(0, sizeof(u64) * titleCount, IPC::BufferType::Send));
|
||||
mem.write32(messagePointer + 12, 0xC0DEC0DE);
|
||||
mem.write32(messagePointer + 12, titleIDs);
|
||||
mem.write32(messagePointer + 16, IPC::pointerHeader(1, sizeof(u32) * titleCount, IPC::BufferType::Receive));
|
||||
mem.write32(messagePointer + 20, 0xC0DEC0DE);
|
||||
mem.write32(messagePointer + 20, titleInfos);
|
||||
}
|
|
@ -392,9 +392,9 @@ void APTService::receiveDeliverArg(u32 messagePointer) {
|
|||
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 + 24, parameter);
|
||||
mem.write32(messagePointer + 28, IPC::pointerHeader(1, sizeof(u32) * hmacSize, IPC::BufferType::Send));
|
||||
mem.write32(messagePointer + 32, 0xDEADBEEF);
|
||||
mem.write32(messagePointer + 32, hmac);
|
||||
}
|
||||
|
||||
void APTService::loadSysMenuArg(u32 messagePointer) {
|
||||
|
@ -404,7 +404,7 @@ void APTService::loadSysMenuArg(u32 messagePointer) {
|
|||
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);
|
||||
mem.write32(messagePointer + 12, outputSize);
|
||||
}
|
||||
|
||||
void APTService::getCaptureInfo(u32 messagePointer) {
|
||||
|
@ -415,5 +415,5 @@ void APTService::getCaptureInfo(u32 messagePointer) {
|
|||
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);
|
||||
mem.write32(messagePointer + 12, captureBufferInfo);
|
||||
}
|
|
@ -283,7 +283,7 @@ void CFGService::setConfigInfoBlk4(u32 messagePointer) {
|
|||
mem.write32(messagePointer, IPC::responseHeader(0x401, 1, 2));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
mem.write32(messagePointer + 8, IPC::pointerHeader(0, size, IPC::BufferType::Receive));
|
||||
mem.write32(messagePointer + 12, 0xCAFE0000); // Nonsensical pointer to see if anything uses this
|
||||
mem.write32(messagePointer + 12, input);
|
||||
}
|
||||
|
||||
void CFGService::updateConfigNANDSavegame(u32 messagePointer) {
|
||||
|
|
Loading…
Add table
Reference in a new issue