From ea3f9ef2605df9a4c1e444aaa98d2cb745ff9256 Mon Sep 17 00:00:00 2001 From: Nomi Date: Mon, 25 Sep 2023 12:14:50 +0200 Subject: [PATCH] Stub LaunchTitle --- include/services/ns.hpp | 1 + src/core/services/ns.cpp | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/services/ns.hpp b/include/services/ns.hpp index 0e615703..c435ba7e 100644 --- a/include/services/ns.hpp +++ b/include/services/ns.hpp @@ -10,6 +10,7 @@ class NSService { MAKE_LOG_FUNCTION(log, nsLogger) // Service commands + void launchTitle(u32 messagePointer); public: enum class Type { diff --git a/src/core/services/ns.cpp b/src/core/services/ns.cpp index 35cfcc2d..c260e2ed 100644 --- a/src/core/services/ns.cpp +++ b/src/core/services/ns.cpp @@ -3,7 +3,7 @@ namespace NSCommands { enum : u32 { - a, + LaunchTitle = 0x000200C0, }; } @@ -14,6 +14,18 @@ void NSService::handleSyncRequest(u32 messagePointer, Type type) { // ns:s commands switch (command) { + case NSCommands::LaunchTitle: launchTitle(messagePointer); break; + default: Helpers::panic("NS service requested. Command: %08X\n", command); } +} + +void NSService::launchTitle(u32 messagePointer) { + const u64 titleID = mem.read64(messagePointer + 4); + const u32 launchFlags = mem.read32(messagePointer + 12); + log("NS::LaunchTitle (title ID = %llX, launch flags = %X) (stubbed)\n", titleID, launchFlags); + + mem.write32(messagePointer, IPC::responseHeader(0x2, 2, 0)); + mem.write32(messagePointer + 4, Result::Success); + mem.write32(messagePointer + 8, 0); // Process ID } \ No newline at end of file