From 5f25b84c0d92513341691fb8ee82421fd78b93bf Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sat, 5 Aug 2023 00:13:46 +0300 Subject: [PATCH 1/2] Fix UB --- src/core/services/apt.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/services/apt.cpp b/src/core/services/apt.cpp index becf637f..124e5c95 100644 --- a/src/core/services/apt.cpp +++ b/src/core/services/apt.cpp @@ -242,7 +242,7 @@ void APTService::getApplicationCpuTimeLimit(u32 messagePointer) { void APTService::setScreencapPostPermission(u32 messagePointer) { u32 perm = mem.read32(messagePointer + 4); - log("APT::SetScreencapPostPermission (perm = %d)\n"); + log("APT::SetScreencapPostPermission (perm = %d)\n", perm); mem.write32(messagePointer, IPC::responseHeader(0x55, 1, 0)); // Apparently only 1-3 are valid values, but I see 0 used in some games like Pokemon Rumble @@ -282,4 +282,4 @@ void APTService::getWirelessRebootInfo(u32 messagePointer) { for (u32 i = 0; i < size; i++) { mem.write8(messagePointer + 0x104 + i, 0); // Temporarily stub this until we add SetWirelessRebootInfo } -} \ No newline at end of file +} From c7f7c173b4924e520d576028bec49db277bc4aaf Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 6 Aug 2023 15:50:13 +0300 Subject: [PATCH 2/2] Change shared memory remap panic to warning --- src/core/memory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index ee616b63..3b987507 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -394,7 +394,8 @@ MemoryInfo Memory::queryMemory(u32 vaddr) { u8* Memory::mapSharedMemory(Handle handle, u32 vaddr, u32 myPerms, u32 otherPerms) { for (auto& e : sharedMemBlocks) { if (e.handle == handle) { - if (e.mapped) Helpers::panic("Allocated shared memory block twice. Is this allowed?"); + // Virtual Console titles trigger this. TODO: Investigate how it should work + if (e.mapped) Helpers::warn("Allocated shared memory block twice. Is this allowed?"); const u32 paddr = e.paddr; const u32 size = e.size;