diff --git a/include/services/am.hpp b/include/services/am.hpp index e406b2ef..89362371 100644 --- a/include/services/am.hpp +++ b/include/services/am.hpp @@ -10,6 +10,7 @@ class AMService { MAKE_LOG_FUNCTION(log, amLogger) // Service commands + void getDLCTitleInfo(u32 messagePointer); void listTitleInfo(u32 messagePointer); public: diff --git a/src/core/kernel/events.cpp b/src/core/kernel/events.cpp index b74b5536..df729f1d 100644 --- a/src/core/kernel/events.cpp +++ b/src/core/kernel/events.cpp @@ -51,10 +51,9 @@ void Kernel::signalEvent() { const Handle handle = regs[0]; const auto event = getObject(handle, KernelObjectType::Event); logSVC("SignalEvent(event handle = %X)\n", handle); - printf("Stubbed SignalEvent!!\n"); if (event == nullptr) [[unlikely]] { - Helpers::warn("Signalled non-existent event: %X\n", handle); + logThread("Signalled non-existent event: %X\n", handle); regs[0] = SVCResult::Success; //regs[0] = SVCResult::BadHandle; return; diff --git a/src/core/kernel/threads.cpp b/src/core/kernel/threads.cpp index 9198d069..d55b5472 100644 --- a/src/core/kernel/threads.cpp +++ b/src/core/kernel/threads.cpp @@ -80,7 +80,7 @@ void Kernel::switchToNextThread() { std::optional newThreadIndex = getNextThread(); if (!newThreadIndex.has_value()) { - Helpers::warn("Kernel tried to switch to the next thread but none found. Switching to random thread\n"); + log("Kernel tried to switch to the next thread but none found. Switching to random thread\n"); switchThread(rand() % threadCount); } else { switchThread(newThreadIndex.value()); @@ -308,7 +308,7 @@ bool Kernel::shouldWaitOnObject(KernelObject* object) { return !object->getData()->fired; default: - Helpers::warn("Not sure whether to wait on object (type: %s)", object->getTypeName()); + logThread("Not sure whether to wait on object (type: %s)", object->getTypeName()); return true; } } \ No newline at end of file diff --git a/src/core/services/am.cpp b/src/core/services/am.cpp index 5771f598..00abb6e2 100644 --- a/src/core/services/am.cpp +++ b/src/core/services/am.cpp @@ -2,6 +2,7 @@ namespace AMCommands { enum : u32 { + GetDLCTitleInfo = 0x10050084, ListTitleInfo = 0x10070102 }; } @@ -17,6 +18,7 @@ void AMService::reset() {} void AMService::handleSyncRequest(u32 messagePointer) { const u32 command = mem.read32(messagePointer); switch (command) { + case AMCommands::GetDLCTitleInfo: getDLCTitleInfo(messagePointer); break; case AMCommands::ListTitleInfo: listTitleInfo(messagePointer); break; default: Helpers::panic("AM service requested. Command: %08X\n", command); } @@ -40,4 +42,9 @@ void AMService::listTitleInfo(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); mem.write32(messagePointer + 8, ticketCount); +} + +void AMService::getDLCTitleInfo(u32 messagePointer) { + log("AM::GetDLCTitleInfo (stubbed to fail)\n"); + mem.write32(messagePointer + 4, -1); } \ No newline at end of file