From 843d4c54cbe1b239b7de186f6ee7422f68663a25 Mon Sep 17 00:00:00 2001 From: Nomi Date: Tue, 26 Sep 2023 02:10:34 +0200 Subject: [PATCH] Add NeedsCleanup --- include/services/am.hpp | 1 + src/core/services/am.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/services/am.hpp b/include/services/am.hpp index 672909ff..857e5d59 100644 --- a/include/services/am.hpp +++ b/include/services/am.hpp @@ -14,6 +14,7 @@ class AMService { void getDLCTitleInfo(u32 messagePointer); void getPatchTitleInfo(u32 messagePointer); void listTitleInfo(u32 messagePointer); + void needsCleanup(u32 messagePointer); public: AMService(Memory& mem) : mem(mem) {} diff --git a/src/core/services/am.cpp b/src/core/services/am.cpp index 32e6a0b3..4abebbdd 100644 --- a/src/core/services/am.cpp +++ b/src/core/services/am.cpp @@ -3,6 +3,7 @@ namespace AMCommands { enum : u32 { + NeedsCleanup = 0x00130040, GetDLCTitleInfo = 0x10050084, ListTitleInfo = 0x10070102, GetPatchTitleInfo = 0x100D0084, @@ -17,6 +18,7 @@ void AMService::handleSyncRequest(u32 messagePointer) { case AMCommands::GetPatchTitleInfo: getPatchTitleInfo(messagePointer); break; case AMCommands::GetDLCTitleInfo: getDLCTitleInfo(messagePointer); break; case AMCommands::ListTitleInfo: listTitleInfo(messagePointer); break; + case AMCommands::NeedsCleanup: needsCleanup(messagePointer); break; default: Helpers::panic("AM service requested. Command: %08X\n", command); } } @@ -56,4 +58,13 @@ void AMService::getPatchTitleInfo(u32 messagePointer) { mem.write32(messagePointer, IPC::responseHeader(0x100D, 1, 4)); mem.write32(messagePointer + 4, Result::FailurePlaceholder); +} + +void AMService::needsCleanup(u32 messagePointer) { + const u32 mediaType = mem.read32(messagePointer + 4); + log("AM::NeedsCleanup (media type = %X)\n", mediaType); + + mem.write32(messagePointer, IPC::responseHeader(0x13, 2, 0)); + mem.write32(messagePointer + 4, Result::Success); + mem.write8(messagePointer + 8, 0); // Doesn't need cleanup } \ No newline at end of file