diff --git a/CMakeLists.txt b/CMakeLists.txt index 80d31788..93723b1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,7 +151,7 @@ set(SERVICE_SOURCE_FILES src/core/services/service_manager.cpp src/core/services src/core/services/act.cpp src/core/services/nfc.cpp src/core/services/dlp_srvr.cpp src/core/services/ir_user.cpp src/core/services/http.cpp src/core/services/soc.cpp src/core/services/ssl.cpp src/core/services/news_u.cpp src/core/services/amiibo_device.cpp - src/core/services/csnd.cpp src/core/services/nwm_uds.cpp src/core/services/ns.cpp + src/core/services/csnd.cpp src/core/services/nwm_uds.cpp src/core/services/ns.cpp src/core/services/news_s.cpp ) set(PICA_SOURCE_FILES src/core/PICA/gpu.cpp src/core/PICA/regs.cpp src/core/PICA/shader_unit.cpp src/core/PICA/shader_interpreter.cpp src/core/PICA/dynapica/shader_rec.cpp @@ -196,7 +196,7 @@ set(HEADER_FILES include/emulator.hpp include/helpers.hpp include/termcolor.hpp include/applets/applet.hpp include/applets/mii_selector.hpp include/math_util.hpp include/services/soc.hpp include/services/news_u.hpp include/applets/software_keyboard.hpp include/applets/applet_manager.hpp include/fs/archive_user_save_data.hpp include/services/amiibo_device.hpp include/services/nfc_types.hpp include/swap.hpp include/services/csnd.hpp include/services/nwm_uds.hpp - include/fs/archive_system_save_data.hpp include/lua.hpp include/services/ns.hpp + include/fs/archive_system_save_data.hpp include/lua.hpp include/services/ns.hpp include/services/news_s.hpp ) cmrc_add_resource_library( diff --git a/include/kernel/handles.hpp b/include/kernel/handles.hpp index 2dd80c31..67f81275 100644 --- a/include/kernel/handles.hpp +++ b/include/kernel/handles.hpp @@ -40,6 +40,7 @@ namespace KernelHandles { NDM, // ????? NS_S, // Nintendo Shell service NWM_UDS, // Local multiplayer + NEWS_S, // news:u on steroids NEWS_U, // This service literally has 1 command (AddNotification) and I don't even understand what it does PTM_U, // PTM service (Used for accessing various console info, such as battery, shell and pedometer state) PTM_SYSM, // PTM system service @@ -98,6 +99,7 @@ namespace KernelHandles { case MCU_HWC: return "MCU::HWC"; case MIC: return "MIC"; case NDM: return "NDM"; + case NEWS_S: return "NEWS_S"; case NEWS_U: return "NEWS_U"; case NWM_UDS: return "nwm::UDS"; case NFC: return "NFC"; diff --git a/include/services/news_s.hpp b/include/services/news_s.hpp new file mode 100644 index 00000000..7d2e8f10 --- /dev/null +++ b/include/services/news_s.hpp @@ -0,0 +1,18 @@ +#pragma once +#include "helpers.hpp" +#include "kernel_types.hpp" +#include "logger.hpp" +#include "memory.hpp" + +class NewsSService { + Handle handle = KernelHandles::NEWS_S; + Memory& mem; + MAKE_LOG_FUNCTION(log, newsLogger) + + // Service commands + + public: + NewsSService(Memory& mem) : mem(mem) {} + void reset(); + void handleSyncRequest(u32 messagePointer); +}; \ No newline at end of file diff --git a/include/services/service_manager.hpp b/include/services/service_manager.hpp index 017ab3a2..00e4cbf1 100644 --- a/include/services/service_manager.hpp +++ b/include/services/service_manager.hpp @@ -29,6 +29,7 @@ #include "services/mic.hpp" #include "services/ndm.hpp" #include "services/nwm_uds.hpp" +#include "services/news_s.hpp" #include "services/news_u.hpp" #include "services/nfc.hpp" #include "services/nim.hpp" @@ -72,6 +73,7 @@ class ServiceManager { LDRService ldr; MICService mic; NDMService ndm; + NewsSService news_s; NewsUService news_u; NFCService nfc; NwmUdsService nwm_uds; diff --git a/src/core/services/news_s.cpp b/src/core/services/news_s.cpp new file mode 100644 index 00000000..81f7424c --- /dev/null +++ b/src/core/services/news_s.cpp @@ -0,0 +1,15 @@ +#include "ipc.hpp" +#include "services/news_s.hpp" + +namespace NewsCommands { + enum : u32 {}; +} + +void NewsSService::reset() {} + +void NewsSService::handleSyncRequest(u32 messagePointer) { + const u32 command = mem.read32(messagePointer); + switch (command) { + default: Helpers::panic("news:s service requested. Command: %08X\n", command); + } +} \ No newline at end of file diff --git a/src/core/services/service_manager.cpp b/src/core/services/service_manager.cpp index df68fe6d..016e2fa4 100644 --- a/src/core/services/service_manager.cpp +++ b/src/core/services/service_manager.cpp @@ -37,9 +37,11 @@ void ServiceManager::reset() { mcu_hwc.reset(); mic.reset(); ndm.reset(); + news_s.reset(); news_u.reset(); nfc.reset(); nim.reset(); + ns.reset(); ptm.reset(); soc.reset(); ssl.reset(); @@ -125,6 +127,7 @@ static std::map serviceMap = { { "mcu::HWC", KernelHandles::MCU_HWC }, { "mic:u", KernelHandles::MIC }, { "ndm:u", KernelHandles::NDM }, + { "news:s", KernelHandles::NEWS_S }, { "news:u", KernelHandles::NEWS_U }, { "nfc:u", KernelHandles::NFC }, { "ns:s", KernelHandles::NS_S },