summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/common/logging/backend.cpp1
-rw-r--r--src/common/logging/log.h5
-rw-r--r--src/core/CMakeLists.txt80
-rw-r--r--src/core/hle/service/am/am.cpp55
-rw-r--r--src/core/hle/service/am/am.h47
-rw-r--r--src/core/hle/service/am/am_app.cpp20
-rw-r--r--src/core/hle/service/am/am_app.h22
-rw-r--r--src/core/hle/service/am/am_net.cpp (renamed from src/core/hle/service/am_net.cpp)17
-rw-r--r--src/core/hle/service/am/am_net.h22
-rw-r--r--src/core/hle/service/am/am_sys.cpp22
-rw-r--r--src/core/hle/service/am/am_sys.h22
-rw-r--r--src/core/hle/service/am/am_u.cpp22
-rw-r--r--src/core/hle/service/am/am_u.h22
-rw-r--r--src/core/hle/service/am_app.cpp23
-rw-r--r--src/core/hle/service/am_app.h23
-rw-r--r--src/core/hle/service/am_net.h23
-rw-r--r--src/core/hle/service/am_sys.cpp62
-rw-r--r--src/core/hle/service/am_sys.h23
-rw-r--r--src/core/hle/service/boss/boss.cpp29
-rw-r--r--src/core/hle/service/boss/boss.h20
-rw-r--r--src/core/hle/service/boss/boss_p.cpp20
-rw-r--r--src/core/hle/service/boss/boss_p.h22
-rw-r--r--src/core/hle/service/boss/boss_u.cpp21
-rw-r--r--src/core/hle/service/boss/boss_u.h22
-rw-r--r--src/core/hle/service/boss_p.cpp23
-rw-r--r--src/core/hle/service/boss_p.h23
-rw-r--r--src/core/hle/service/boss_u.cpp24
-rw-r--r--src/core/hle/service/boss_u.h23
-rw-r--r--src/core/hle/service/cam/cam.cpp35
-rw-r--r--src/core/hle/service/cam/cam.h20
-rw-r--r--src/core/hle/service/cam/cam_c.cpp20
-rw-r--r--src/core/hle/service/cam/cam_c.h22
-rw-r--r--src/core/hle/service/cam/cam_q.cpp20
-rw-r--r--src/core/hle/service/cam/cam_q.h22
-rw-r--r--src/core/hle/service/cam/cam_s.cpp20
-rw-r--r--src/core/hle/service/cam/cam_s.h22
-rw-r--r--src/core/hle/service/cam/cam_u.cpp20
-rw-r--r--src/core/hle/service/cam/cam_u.h22
-rw-r--r--src/core/hle/service/cam_u.cpp23
-rw-r--r--src/core/hle/service/cam_u.h23
-rw-r--r--src/core/hle/service/cecd/cecd.cpp31
-rw-r--r--src/core/hle/service/cecd/cecd.h20
-rw-r--r--src/core/hle/service/cecd/cecd_s.cpp20
-rw-r--r--src/core/hle/service/cecd/cecd_s.h (renamed from src/core/hle/service/cecd_s.h)13
-rw-r--r--src/core/hle/service/cecd/cecd_u.cpp20
-rw-r--r--src/core/hle/service/cecd/cecd_u.h (renamed from src/core/hle/service/cecd_u.h)13
-rw-r--r--src/core/hle/service/cecd_s.cpp23
-rw-r--r--src/core/hle/service/cecd_u.cpp23
-rw-r--r--src/core/hle/service/frd/frd.cpp29
-rw-r--r--src/core/hle/service/frd/frd.h20
-rw-r--r--src/core/hle/service/frd/frd_a.cpp20
-rw-r--r--src/core/hle/service/frd/frd_a.h (renamed from src/core/hle/service/frd_a.h)13
-rw-r--r--src/core/hle/service/frd/frd_u.cpp (renamed from src/core/hle/service/frd_u.cpp)17
-rw-r--r--src/core/hle/service/frd/frd_u.h (renamed from src/core/hle/service/frd_u.h)13
-rw-r--r--src/core/hle/service/frd_a.cpp23
-rw-r--r--src/core/hle/service/news/news.cpp31
-rw-r--r--src/core/hle/service/news/news.h20
-rw-r--r--src/core/hle/service/news/news_s.cpp21
-rw-r--r--src/core/hle/service/news/news_s.h (renamed from src/core/hle/service/news_s.h)13
-rw-r--r--src/core/hle/service/news/news_u.cpp21
-rw-r--r--src/core/hle/service/news/news_u.h (renamed from src/core/hle/service/news_u.h)13
-rw-r--r--src/core/hle/service/news_s.cpp24
-rw-r--r--src/core/hle/service/news_u.cpp24
-rw-r--r--src/core/hle/service/nim/nim.cpp42
-rw-r--r--src/core/hle/service/nim/nim.h30
-rw-r--r--src/core/hle/service/nim/nim_aoc.cpp (renamed from src/core/hle/service/nim_aoc.cpp)16
-rw-r--r--src/core/hle/service/nim/nim_aoc.h22
-rw-r--r--src/core/hle/service/nim/nim_s.cpp22
-rw-r--r--src/core/hle/service/nim/nim_s.h22
-rw-r--r--src/core/hle/service/nim/nim_u.cpp27
-rw-r--r--src/core/hle/service/nim/nim_u.h22
-rw-r--r--src/core/hle/service/nim_aoc.h23
-rw-r--r--src/core/hle/service/nim_u.cpp48
-rw-r--r--src/core/hle/service/nim_u.h23
-rw-r--r--src/core/hle/service/service.cpp58
75 files changed, 1190 insertions, 637 deletions
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp
index 6ca8cb78d..d85e58373 100644
--- a/src/common/logging/backend.cpp
+++ b/src/common/logging/backend.cpp
@@ -37,6 +37,7 @@ namespace Log {
SUB(Service, APT) \
SUB(Service, GSP) \
SUB(Service, AC) \
+ SUB(Service, AM) \
SUB(Service, PTM) \
SUB(Service, LDR) \
SUB(Service, NIM) \
diff --git a/src/common/logging/log.h b/src/common/logging/log.h
index d720d7fe0..5b3a731e9 100644
--- a/src/common/logging/log.h
+++ b/src/common/logging/log.h
@@ -57,13 +57,14 @@ enum class Class : ClassType {
Service_APT, ///< The APT (Applets) service
Service_GSP, ///< The GSP (GPU control) service
Service_AC, ///< The AC (WiFi status) service
+ Service_AM, ///< The AM (Application manager) service
Service_PTM, ///< The PTM (Power status & misc.) service
Service_LDR, ///< The LDR (3ds dll loader) service
Service_NIM, ///< The NIM (Network interface manager) service
- Service_NWM, ///< The NWM (Network manager) service
+ Service_NWM, ///< The NWM (Network wlan manager) service
Service_CFG, ///< The CFG (Configuration) service
Service_DSP, ///< The DSP (DSP control) service
- Service_HID, ///< The HID (User input) service
+ Service_HID, ///< The HID (Human interface device) service
Service_SOC, ///< The SOC (Socket) service
Service_Y2R, ///< The Y2R (YUV to RGB conversion) service
HW, ///< Low-level hardware emulation
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index bbc285168..057b8ca0c 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -39,18 +39,26 @@ set(SRCS
hle/kernel/vm_manager.cpp
hle/service/ac_u.cpp
hle/service/act_u.cpp
- hle/service/am_app.cpp
- hle/service/am_net.cpp
- hle/service/am_sys.cpp
+ hle/service/am/am.cpp
+ hle/service/am/am_app.cpp
+ hle/service/am/am_net.cpp
+ hle/service/am/am_sys.cpp
+ hle/service/am/am_u.cpp
hle/service/apt/apt.cpp
hle/service/apt/apt_a.cpp
hle/service/apt/apt_s.cpp
hle/service/apt/apt_u.cpp
- hle/service/boss_p.cpp
- hle/service/boss_u.cpp
- hle/service/cam_u.cpp
- hle/service/cecd_s.cpp
- hle/service/cecd_u.cpp
+ hle/service/boss/boss.cpp
+ hle/service/boss/boss_p.cpp
+ hle/service/boss/boss_u.cpp
+ hle/service/cam/cam.cpp
+ hle/service/cam/cam_c.cpp
+ hle/service/cam/cam_q.cpp
+ hle/service/cam/cam_s.cpp
+ hle/service/cam/cam_u.cpp
+ hle/service/cecd/cecd.cpp
+ hle/service/cecd/cecd_s.cpp
+ hle/service/cecd/cecd_u.cpp
hle/service/cfg/cfg.cpp
hle/service/cfg/cfg_i.cpp
hle/service/cfg/cfg_s.cpp
@@ -58,8 +66,9 @@ set(SRCS
hle/service/csnd_snd.cpp
hle/service/dsp_dsp.cpp
hle/service/err_f.cpp
- hle/service/frd_a.cpp
- hle/service/frd_u.cpp
+ hle/service/frd/frd.cpp
+ hle/service/frd/frd_a.cpp
+ hle/service/frd/frd_u.cpp
hle/service/fs/archive.cpp
hle/service/fs/fs_user.cpp
hle/service/gsp_gpu.cpp
@@ -75,10 +84,13 @@ set(SRCS
hle/service/ldr_ro.cpp
hle/service/mic_u.cpp
hle/service/ndm_u.cpp
- hle/service/news_s.cpp
- hle/service/news_u.cpp
- hle/service/nim_aoc.cpp
- hle/service/nim_u.cpp
+ hle/service/news/news.cpp
+ hle/service/news/news_s.cpp
+ hle/service/news/news_u.cpp
+ hle/service/nim/nim.cpp
+ hle/service/nim/nim_aoc.cpp
+ hle/service/nim/nim_s.cpp
+ hle/service/nim/nim_u.cpp
hle/service/ns_s.cpp
hle/service/nwm_uds.cpp
hle/service/pm_app.cpp
@@ -152,18 +164,26 @@ set(HEADERS
hle/result.h
hle/service/ac_u.h
hle/service/act_u.h
- hle/service/am_app.h
- hle/service/am_net.h
- hle/service/am_sys.h
+ hle/service/am/am.h
+ hle/service/am/am_app.h
+ hle/service/am/am_net.h
+ hle/service/am/am_sys.h
+ hle/service/am/am_u.h
hle/service/apt/apt.h
hle/service/apt/apt_a.h
hle/service/apt/apt_s.h
hle/service/apt/apt_u.h
- hle/service/boss_p.h
- hle/service/boss_u.h
- hle/service/cam_u.h
- hle/service/cecd_s.h
- hle/service/cecd_u.h
+ hle/service/boss/boss.h
+ hle/service/boss/boss_p.h
+ hle/service/boss/boss_u.h
+ hle/service/cam/cam.h
+ hle/service/cam/cam_c.h
+ hle/service/cam/cam_q.h
+ hle/service/cam/cam_s.h
+ hle/service/cam/cam_u.h
+ hle/service/cecd/cecd.h
+ hle/service/cecd/cecd_s.h
+ hle/service/cecd/cecd_u.h
hle/service/cfg/cfg.h
hle/service/cfg/cfg_i.h
hle/service/cfg/cfg_s.h
@@ -171,8 +191,9 @@ set(HEADERS
hle/service/csnd_snd.h
hle/service/dsp_dsp.h
hle/service/err_f.h
- hle/service/frd_a.h
- hle/service/frd_u.h
+ hle/service/frd/frd.h
+ hle/service/frd/frd_a.h
+ hle/service/frd/frd_u.h
hle/service/fs/archive.h
hle/service/fs/fs_user.h
hle/service/gsp_gpu.h
@@ -188,10 +209,13 @@ set(HEADERS
hle/service/ldr_ro.h
hle/service/mic_u.h
hle/service/ndm_u.h
- hle/service/news_s.h
- hle/service/news_u.h
- hle/service/nim_aoc.h
- hle/service/nim_u.h
+ hle/service/news/news.h
+ hle/service/news/news_s.h
+ hle/service/news/news_u.h
+ hle/service/nim/nim.h
+ hle/service/nim/nim_aoc.h
+ hle/service/nim/nim_s.h
+ hle/service/nim/nim_u.h
hle/service/ns_s.h
hle/service/nwm_uds.h
hle/service/pm_app.h
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
new file mode 100644
index 000000000..57dc1ece7
--- /dev/null
+++ b/src/core/hle/service/am/am.cpp
@@ -0,0 +1,55 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/am/am_app.h"
+#include "core/hle/service/am/am_net.h"
+#include "core/hle/service/am/am_sys.h"
+
+#include "core/hle/hle.h"
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+
+namespace Service {
+namespace AM {
+
+void TitleIDListGetTotal(Service::Interface* self) {
+ u32* cmd_buff = Kernel::GetCommandBuffer();
+ u32 media_type = cmd_buff[1] & 0xFF;
+
+ cmd_buff[1] = RESULT_SUCCESS.raw;
+ cmd_buff[2] = 0;
+
+ LOG_WARNING(Service_AM, "(STUBBED) media_type %u", media_type);
+}
+
+void GetTitleIDList(Service::Interface* self) {
+ u32* cmd_buff = Kernel::GetCommandBuffer();
+ u32 num_titles = cmd_buff[1];
+ u32 media_type = cmd_buff[2] & 0xFF;
+ u32 addr = cmd_buff[4];
+
+ cmd_buff[1] = RESULT_SUCCESS.raw;
+ cmd_buff[2] = 0;
+
+ LOG_WARNING(Service_AM, "(STUBBED) Requested %u titles from media type %u", num_titles, media_type);
+}
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new AM_APP_Interface);
+ AddService(new AM_NET_Interface);
+ AddService(new AM_SYS_Interface);
+}
+
+void Shutdown() {
+
+}
+
+} // namespace AM
+
+} // namespace Service
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
new file mode 100644
index 000000000..063b8bd09
--- /dev/null
+++ b/src/core/hle/service/am/am.h
@@ -0,0 +1,47 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace AM {
+
+/**
+ * AM::TitleIDListGetTotal service function
+ * Gets the number of installed titles in the requested media type
+ * Inputs:
+ * 0 : Command header (0x00010040)
+ * 1 : Media type to load the titles from
+ * Outputs:
+ * 1 : Result, 0 on success, otherwise error code
+ * 2 : The number of titles in the requested media type
+ */
+void TitleIDListGetTotal(Service::Interface* self);
+
+/**
+ * AM::GetTitleIDList service function
+ * Loads information about the desired number of titles from the desired media type into an array
+ * Inputs:
+ * 0 : Command header (0x00020082)
+ * 1 : The maximum number of titles to load
+ * 2 : Media type to load the titles from
+ * 3 : Descriptor of the output buffer pointer
+ * 4 : Address of the output buffer
+ * Outputs:
+ * 1 : Result, 0 on success, otherwise error code
+ * 2 : The number of titles loaded from the requested media type
+ */
+void GetTitleIDList(Service::Interface* self);
+
+/// Initialize AM service
+void Init();
+
+/// Shutdown AM service
+void Shutdown();
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_app.cpp b/src/core/hle/service/am/am_app.cpp
new file mode 100644
index 000000000..c6fc81bc3
--- /dev/null
+++ b/src/core/hle/service/am/am_app.cpp
@@ -0,0 +1,20 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/am/am.h"
+#include "core/hle/service/am/am_app.h"
+
+namespace Service {
+namespace AM {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+AM_APP_Interface::AM_APP_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_app.h b/src/core/hle/service/am/am_app.h
new file mode 100644
index 000000000..fd6017d14
--- /dev/null
+++ b/src/core/hle/service/am/am_app.h
@@ -0,0 +1,22 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace AM {
+
+class AM_APP_Interface : public Service::Interface {
+public:
+ AM_APP_Interface();
+
+ std::string GetPortName() const override {
+ return "am:app";
+ }
+};
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am_net.cpp b/src/core/hle/service/am/am_net.cpp
index ba2a499f1..b1af0e9d8 100644
--- a/src/core/hle/service/am_net.cpp
+++ b/src/core/hle/service/am/am_net.cpp
@@ -3,12 +3,11 @@
// Refer to the license.txt file included.
#include "core/hle/hle.h"
-#include "core/hle/service/am_net.h"
+#include "core/hle/service/am/am.h"
+#include "core/hle/service/am/am_net.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace AM_NET
-
-namespace AM_NET {
+namespace Service {
+namespace AM {
const Interface::FunctionInfo FunctionTable[] = {
{0x08010000, nullptr, "OpenTicket"},
@@ -33,11 +32,9 @@ const Interface::FunctionInfo FunctionTable[] = {
{0x081B00C2, nullptr, "InstallTitlesFinish"},
};
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
+AM_NET_Interface::AM_NET_Interface() {
Register(FunctionTable);
}
-} // namespace
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_net.h b/src/core/hle/service/am/am_net.h
new file mode 100644
index 000000000..25d2c3f23
--- /dev/null
+++ b/src/core/hle/service/am/am_net.h
@@ -0,0 +1,22 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace AM {
+
+class AM_NET_Interface : public Service::Interface {
+public:
+ AM_NET_Interface();
+
+ std::string GetPortName() const override {
+ return "am:net";
+ }
+};
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_sys.cpp b/src/core/hle/service/am/am_sys.cpp
new file mode 100644
index 000000000..864fc14df
--- /dev/null
+++ b/src/core/hle/service/am/am_sys.cpp
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/am/am.h"
+#include "core/hle/service/am/am_sys.h"
+
+namespace Service {
+namespace AM {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x00010040, TitleIDListGetTotal, "TitleIDListGetTotal"},
+ {0x00020082, GetTitleIDList, "GetTitleIDList"},
+};
+
+AM_SYS_Interface::AM_SYS_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_sys.h b/src/core/hle/service/am/am_sys.h
new file mode 100644
index 000000000..b114f1d35
--- /dev/null
+++ b/src/core/hle/service/am/am_sys.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace AM {
+
+class AM_SYS_Interface : public Service::Interface {
+public:
+ AM_SYS_Interface();
+
+ std::string GetPortName() const override {
+ return "am:sys";
+ }
+};
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_u.cpp b/src/core/hle/service/am/am_u.cpp
new file mode 100644
index 000000000..6bf84b36b
--- /dev/null
+++ b/src/core/hle/service/am/am_u.cpp
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/am/am.h"
+#include "core/hle/service/am/am_u.h"
+
+namespace Service {
+namespace AM {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x00010040, TitleIDListGetTotal, "TitleIDListGetTotal"},
+ {0x00020082, GetTitleIDList, "GetTitleIDList"},
+};
+
+AM_U_Interface::AM_U_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am/am_u.h b/src/core/hle/service/am/am_u.h
new file mode 100644
index 000000000..3b2454b6c
--- /dev/null
+++ b/src/core/hle/service/am/am_u.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace AM {
+
+class AM_U_Interface : public Service::Interface {
+public:
+ AM_U_Interface();
+
+ std::string GetPortName() const override {
+ return "am:u";
+ }
+};
+
+} // namespace AM
+} // namespace Service
diff --git a/src/core/hle/service/am_app.cpp b/src/core/hle/service/am_app.cpp
deleted file mode 100644
index 684b753f0..000000000
--- a/src/core/hle/service/am_app.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/am_app.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace AM_APP
-
-namespace AM_APP {
-
-// Empty arrays are illegal -- commented out until an entry is added.
-//const Interface::FunctionInfo FunctionTable[] = { };
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- //Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/am_app.h b/src/core/hle/service/am_app.h
deleted file mode 100644
index 50dc2f5a2..000000000
--- a/src/core/hle/service/am_app.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace AM_APP
-
-namespace AM_APP {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "am:app";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/am_net.h b/src/core/hle/service/am_net.h
deleted file mode 100644
index 616c33ee8..000000000
--- a/src/core/hle/service/am_net.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace AM_NET
-
-namespace AM_NET {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "am:net";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/am_sys.cpp b/src/core/hle/service/am_sys.cpp
deleted file mode 100644
index f9e3fe4b7..000000000
--- a/src/core/hle/service/am_sys.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "common/logging/log.h"
-
-#include "core/hle/hle.h"
-#include "core/hle/service/am_sys.h"
-
-namespace AM_SYS {
-
-/**
- * Gets the number of installed titles in the requested media type
- * Inputs:
- * 0: Command header (0x00010040)
- * 1: Media type to load the titles from
- * Outputs:
- * 1: Result, 0 on success, otherwise error code
- * 2: The number of titles in the requested media type
- */
-static void TitleIDListGetTotal(Service::Interface* self) {
- u32* cmd_buff = Kernel::GetCommandBuffer();
- u32 media_type = cmd_buff[1] & 0xFF;
-
- cmd_buff[1] = RESULT_SUCCESS.raw;
- cmd_buff[2] = 0;
- LOG_WARNING(Service_CFG, "(STUBBED) media_type %u", media_type);
-}
-
-/**
- * Loads information about the desired number of titles from the desired media type into an array
- * Inputs:
- * 0: Command header (0x00020082)
- * 1: The maximum number of titles to load
- * 2: Media type to load the titles from
- * 3: Descriptor of the output buffer pointer
- * 4: Address of the output buffer
- * Outputs:
- * 1: Result, 0 on success, otherwise error code
- * 2: The number of titles loaded from the requested media type
- */
-static void GetTitleIDList(Service::Interface* self) {
- u32* cmd_buff = Kernel::GetCommandBuffer();
- u32 num_titles = cmd_buff[1];
- u32 media_type = cmd_buff[2] & 0xFF;
- u32 addr = cmd_buff[4];
-
- cmd_buff[1] = RESULT_SUCCESS.raw;
- cmd_buff[2] = 0;
- LOG_WARNING(Service_CFG, "(STUBBED) Requested %u titles from media type %u", num_titles, media_type);
-}
-
-const Interface::FunctionInfo FunctionTable[] = {
- {0x00010040, TitleIDListGetTotal, "TitleIDListGetTotal"},
- {0x00020082, GetTitleIDList, "GetTitleIDList"},
-};
-
-Interface::Interface() {
- Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/am_sys.h b/src/core/hle/service/am_sys.h
deleted file mode 100644
index bb6178a43..000000000
--- a/src/core/hle/service/am_sys.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace AM_SYS
-
-namespace AM_SYS {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "am:sys";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/boss/boss.cpp b/src/core/hle/service/boss/boss.cpp
new file mode 100644
index 000000000..d38140f19
--- /dev/null
+++ b/src/core/hle/service/boss/boss.cpp
@@ -0,0 +1,29 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/boss/boss.h"
+#include "core/hle/service/boss/boss_p.h"
+#include "core/hle/service/boss/boss_u.h"
+
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+#include "core/hle/hle.h"
+
+namespace Service {
+namespace BOSS {
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new BOSS_P_Interface);
+ AddService(new BOSS_U_Interface);
+}
+
+void Shutdown() {
+}
+
+} // namespace BOSS
+
+} // namespace Service
diff --git a/src/core/hle/service/boss/boss.h b/src/core/hle/service/boss/boss.h
new file mode 100644
index 000000000..a6942ada6
--- /dev/null
+++ b/src/core/hle/service/boss/boss.h
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace BOSS {
+
+/// Initialize BOSS service(s)
+void Init();
+
+/// Shutdown BOSS service(s)
+void Shutdown();
+
+} // namespace BOSS
+} // namespace Service
diff --git a/src/core/hle/service/boss/boss_p.cpp b/src/core/hle/service/boss/boss_p.cpp
new file mode 100644
index 000000000..089f5f186
--- /dev/null
+++ b/src/core/hle/service/boss/boss_p.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/boss/boss.h"
+#include "core/hle/service/boss/boss_p.h"
+
+namespace Service {
+namespace BOSS {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+// const Interface::FunctionInfo FunctionTable[] = { };
+
+BOSS_P_Interface::BOSS_P_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace BOSS
+} // namespace Service
diff --git a/src/core/hle/service/boss/boss_p.h b/src/core/hle/service/boss/boss_p.h
new file mode 100644
index 000000000..32112c251
--- /dev/null
+++ b/src/core/hle/service/boss/boss_p.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace BOSS {
+
+class BOSS_P_Interface : public Service::Interface {
+public:
+ BOSS_P_Interface();
+
+ std::string GetPortName() const override {
+ return "boss:P";
+ }
+};
+
+} // namespace BOSS
+} // namespace Service
diff --git a/src/core/hle/service/boss/boss_u.cpp b/src/core/hle/service/boss/boss_u.cpp
new file mode 100644
index 000000000..ed978b963
--- /dev/null
+++ b/src/core/hle/service/boss/boss_u.cpp
@@ -0,0 +1,21 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/boss/boss.h"
+#include "core/hle/service/boss/boss_u.h"
+
+namespace Service {
+namespace BOSS {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x00020100, nullptr, "GetStorageInfo"},
+};
+
+BOSS_U_Interface::BOSS_U_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace BOSS
+} // namespace Service
diff --git a/src/core/hle/service/boss/boss_u.h b/src/core/hle/service/boss/boss_u.h
new file mode 100644
index 000000000..d047d8cf2
--- /dev/null
+++ b/src/core/hle/service/boss/boss_u.h
@@ -0,0 +1,22 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace BOSS {
+
+class BOSS_U_Interface : public Service::Interface {
+public:
+ BOSS_U_Interface();
+
+ std::string GetPortName() const override {
+ return "boss:U";
+ }
+};
+
+} // namespace BOSS
+} // namespace Service
diff --git a/src/core/hle/service/boss_p.cpp b/src/core/hle/service/boss_p.cpp
deleted file mode 100644
index 8280830e5..000000000
--- a/src/core/hle/service/boss_p.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/boss_p.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace BOSS_P
-
-namespace BOSS_P {
-
-// Empty arrays are illegal -- commented out until an entry is added.
-// const Interface::FunctionInfo FunctionTable[] = { };
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- //Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/boss_p.h b/src/core/hle/service/boss_p.h
deleted file mode 100644
index 6fb51d57d..000000000
--- a/src/core/hle/service/boss_p.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace BOSS_P
-
-namespace BOSS_P {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "boss:P";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/boss_u.cpp b/src/core/hle/service/boss_u.cpp
deleted file mode 100644
index 2c322bdfd..000000000
--- a/src/core/hle/service/boss_u.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/boss_u.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace BOSS_U
-
-namespace BOSS_U {
-
-const Interface::FunctionInfo FunctionTable[] = {
- {0x00020100, nullptr, "GetStorageInfo"},
-};
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/boss_u.h b/src/core/hle/service/boss_u.h
deleted file mode 100644
index 89e77fe47..000000000
--- a/src/core/hle/service/boss_u.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace BOSS_U
-
-namespace BOSS_U {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "boss:U";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/cam/cam.cpp b/src/core/hle/service/cam/cam.cpp
new file mode 100644
index 000000000..4f34b699b
--- /dev/null
+++ b/src/core/hle/service/cam/cam.cpp
@@ -0,0 +1,35 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/cam/cam.h"
+#include "core/hle/service/cam/cam_c.h"
+#include "core/hle/service/cam/cam_q.h"
+#include "core/hle/service/cam/cam_s.h"
+#include "core/hle/service/cam/cam_u.h"
+
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+#include "core/hle/hle.h"
+
+namespace Service {
+namespace CAM {
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new CAM_C_Interface);
+ AddService(new CAM_Q_Interface);
+ AddService(new CAM_S_Interface);
+ AddService(new CAM_U_Interface);
+}
+
+void Shutdown() {
+}
+
+} // namespace CAM
+
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam.h b/src/core/hle/service/cam/cam.h
new file mode 100644
index 000000000..edd524841
--- /dev/null
+++ b/src/core/hle/service/cam/cam.h
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace CAM {
+
+/// Initialize CAM service(s)
+void Init();
+
+/// Shutdown CAM service(s)
+void Shutdown();
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_c.cpp b/src/core/hle/service/cam/cam_c.cpp
new file mode 100644
index 000000000..d35adcb9f
--- /dev/null
+++ b/src/core/hle/service/cam/cam_c.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/cam/cam.h"
+#include "core/hle/service/cam/cam_c.h"
+
+namespace Service {
+namespace CAM {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+CAM_C_Interface::CAM_C_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_c.h b/src/core/hle/service/cam/cam_c.h
new file mode 100644
index 000000000..6b296c00d
--- /dev/null
+++ b/src/core/hle/service/cam/cam_c.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace CAM {
+
+class CAM_C_Interface : public Service::Interface {
+public:
+ CAM_C_Interface();
+
+ std::string GetPortName() const override {
+ return "cam:c";
+ }
+};
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_q.cpp b/src/core/hle/service/cam/cam_q.cpp
new file mode 100644
index 000000000..c2760a102
--- /dev/null
+++ b/src/core/hle/service/cam/cam_q.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/cam/cam.h"
+#include "core/hle/service/cam/cam_q.h"
+
+namespace Service {
+namespace CAM {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+CAM_Q_Interface::CAM_Q_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_q.h b/src/core/hle/service/cam/cam_q.h
new file mode 100644
index 000000000..07cc12534
--- /dev/null
+++ b/src/core/hle/service/cam/cam_q.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace CAM {
+
+class CAM_Q_Interface : public Service::Interface {
+public:
+ CAM_Q_Interface();
+
+ std::string GetPortName() const override {
+ return "cam:q";
+ }
+};
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_s.cpp b/src/core/hle/service/cam/cam_s.cpp
new file mode 100644
index 000000000..aefbf7df4
--- /dev/null
+++ b/src/core/hle/service/cam/cam_s.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/cam/cam.h"
+#include "core/hle/service/cam/cam_s.h"
+
+namespace Service {
+namespace CAM {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+CAM_S_Interface::CAM_S_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_s.h b/src/core/hle/service/cam/cam_s.h
new file mode 100644
index 000000000..0a5d6fca2
--- /dev/null
+++ b/src/core/hle/service/cam/cam_s.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace CAM {
+
+class CAM_S_Interface : public Service::Interface {
+public:
+ CAM_S_Interface();
+
+ std::string GetPortName() const override {
+ return "cam:s";
+ }
+};
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_u.cpp b/src/core/hle/service/cam/cam_u.cpp
new file mode 100644
index 000000000..1c6aca955
--- /dev/null
+++ b/src/core/hle/service/cam/cam_u.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/cam/cam.h"
+#include "core/hle/service/cam/cam_u.h"
+
+namespace Service {
+namespace CAM {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+CAM_U_Interface::CAM_U_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam/cam_u.h b/src/core/hle/service/cam/cam_u.h
new file mode 100644
index 000000000..369264037
--- /dev/null
+++ b/src/core/hle/service/cam/cam_u.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace CAM {
+
+class CAM_U_Interface : public Service::Interface {
+public:
+ CAM_U_Interface();
+
+ std::string GetPortName() const override {
+ return "cam:u";
+ }
+};
+
+} // namespace CAM
+} // namespace Service
diff --git a/src/core/hle/service/cam_u.cpp b/src/core/hle/service/cam_u.cpp
deleted file mode 100644
index ecda0dbdf..000000000
--- a/src/core/hle/service/cam_u.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/cam_u.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace CAM_U
-
-namespace CAM_U {
-
-// Empty arrays are illegal -- commented out until an entry is added.
-//const Interface::FunctionInfo FunctionTable[] = { };
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- //Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/cam_u.h b/src/core/hle/service/cam_u.h
deleted file mode 100644
index 878c20a84..000000000
--- a/src/core/hle/service/cam_u.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace CAM_U
-
-namespace CAM_U {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "cam:u";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/cecd/cecd.cpp b/src/core/hle/service/cecd/cecd.cpp
new file mode 100644
index 000000000..db0e52b79
--- /dev/null
+++ b/src/core/hle/service/cecd/cecd.cpp
@@ -0,0 +1,31 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/cecd/cecd.h"
+#include "core/hle/service/cecd/cecd_s.h"
+#include "core/hle/service/cecd/cecd_u.h"
+
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+#include "core/hle/hle.h"
+
+namespace Service {
+namespace CECD {
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new CECD_S_Interface);
+ AddService(new CECD_U_Interface);
+}
+
+void Shutdown() {
+}
+
+} // namespace CECD
+
+} // namespace Service
diff --git a/src/core/hle/service/cecd/cecd.h b/src/core/hle/service/cecd/cecd.h
new file mode 100644
index 000000000..32fd2045d
--- /dev/null
+++ b/src/core/hle/service/cecd/cecd.h
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace CECD {
+
+/// Initialize CECD service(s)
+void Init();
+
+/// Shutdown CECD service(s)
+void Shutdown();
+
+} // namespace CECD
+} // namespace Service
diff --git a/src/core/hle/service/cecd/cecd_s.cpp b/src/core/hle/service/cecd/cecd_s.cpp
new file mode 100644
index 000000000..72d7e8d44
--- /dev/null
+++ b/src/core/hle/service/cecd/cecd_s.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/cecd/cecd.h"
+#include "core/hle/service/cecd/cecd_s.h"
+
+namespace Service {
+namespace CECD {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+CECD_S_Interface::CECD_S_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace CECD
+} // namespace Service
diff --git a/src/core/hle/service/cecd_s.h b/src/core/hle/service/cecd/cecd_s.h
index d880d0391..df5c01849 100644
--- a/src/core/hle/service/cecd_s.h
+++ b/src/core/hle/service/cecd/cecd_s.h
@@ -6,18 +6,17 @@
#include "core/hle/service/service.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace CECD_S
+namespace Service {
+namespace CECD {
-namespace CECD_S {
-
-class Interface : public Service::Interface {
+class CECD_S_Interface : public Interface {
public:
- Interface();
+ CECD_S_Interface();
std::string GetPortName() const override {
return "cecd:s";
}
};
-} // namespace
+} // namespace CECD
+} // namespace Service
diff --git a/src/core/hle/service/cecd/cecd_u.cpp b/src/core/hle/service/cecd/cecd_u.cpp
new file mode 100644
index 000000000..0a23bafbc
--- /dev/null
+++ b/src/core/hle/service/cecd/cecd_u.cpp
@@ -0,0 +1,20 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/cecd/cecd.h"
+#include "core/hle/service/cecd/cecd_u.h"
+
+namespace Service {
+namespace CECD {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+//const Interface::FunctionInfo FunctionTable[] = { };
+
+CECD_U_Interface::CECD_U_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace CECD
+} // namespace Service
diff --git a/src/core/hle/service/cecd_u.h b/src/core/hle/service/cecd/cecd_u.h
index e67564135..394030ffc 100644
--- a/src/core/hle/service/cecd_u.h
+++ b/src/core/hle/service/cecd/cecd_u.h
@@ -6,18 +6,17 @@
#include "core/hle/service/service.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace CECD_U
+namespace Service {
+namespace CECD {
-namespace CECD_U {
-
-class Interface : public Service::Interface {
+class CECD_U_Interface : public Interface {
public:
- Interface();
+ CECD_U_Interface();
std::string GetPortName() const override {
return "cecd:u";
}
};
-} // namespace
+} // namespace CECD
+} // namespace Service
diff --git a/src/core/hle/service/cecd_s.cpp b/src/core/hle/service/cecd_s.cpp
deleted file mode 100644
index b298f151d..000000000
--- a/src/core/hle/service/cecd_s.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/cecd_s.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace CECD_S
-
-namespace CECD_S {
-
-// Empty arrays are illegal -- commented out until an entry is added.
-//const Interface::FunctionInfo FunctionTable[] = { };
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- //Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/cecd_u.cpp b/src/core/hle/service/cecd_u.cpp
deleted file mode 100644
index 9125364bc..000000000
--- a/src/core/hle/service/cecd_u.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/cecd_u.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace CECD_U
-
-namespace CECD_U {
-
-// Empty arrays are illegal -- commented out until an entry is added.
-//const Interface::FunctionInfo FunctionTable[] = { };
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- //Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/frd/frd.cpp b/src/core/hle/service/frd/frd.cpp
new file mode 100644
index 000000000..2911ab402
--- /dev/null
+++ b/src/core/hle/service/frd/frd.cpp
@@ -0,0 +1,29 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/frd/frd.h"
+#include "core/hle/service/frd/frd_a.h"
+#include "core/hle/service/frd/frd_u.h"
+
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+#include "core/hle/hle.h"
+
+namespace Service {
+namespace FRD {
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new FRD_A_Interface);
+ AddService(new FRD_U_Interface);
+}
+
+void Shutdown() {
+}
+
+} // namespace FRD
+
+} // namespace Service
diff --git a/src/core/hle/service/frd/frd.h b/src/core/hle/service/frd/frd.h
new file mode 100644
index 000000000..41f7a2f6b
--- /dev/null
+++ b/src/core/hle/service/frd/frd.h
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace FRD {
+
+/// Initialize FRD service(s)
+void Init();
+
+/// Shutdown FRD service(s)
+void Shutdown();
+
+} // namespace FRD
+} // namespace Service
diff --git a/src/core/hle/service/frd/frd_a.cpp b/src/core/hle/service/frd/frd_a.cpp
new file mode 100644
index 000000000..1c438a337
--- /dev/null
+++ b/src/core/hle/service/frd/frd_a.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/frd/frd.h"
+#include "core/hle/service/frd/frd_a.h"
+
+namespace Service {
+namespace FRD {
+
+// Empty arrays are illegal -- commented out until an entry is added.
+// const Interface::FunctionInfo FunctionTable[] = { };
+
+FRD_A_Interface::FRD_A_Interface() {
+ //Register(FunctionTable);
+}
+
+} // namespace FRD
+} // namespace Service
diff --git a/src/core/hle/service/frd_a.h b/src/core/hle/service/frd/frd_a.h
index f068c6108..006d1cadd 100644
--- a/src/core/hle/service/frd_a.h
+++ b/src/core/hle/service/frd/frd_a.h
@@ -6,18 +6,17 @@
#include "core/hle/service/service.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace FRD_A
+namespace Service {
+namespace FRD {
-namespace FRD_A {
-
-class Interface : public Service::Interface {
+class FRD_A_Interface : public Service::Interface {
public:
- Interface();
+ FRD_A_Interface();
std::string GetPortName() const override {
return "frd:a";
}
};
-} // namespace
+} // namespace FRD
+} // namespace Service
diff --git a/src/core/hle/service/frd_u.cpp b/src/core/hle/service/frd/frd_u.cpp
index 6d2ff1e21..439c7282e 100644
--- a/src/core/hle/service/frd_u.cpp
+++ b/src/core/hle/service/frd/frd_u.cpp
@@ -3,12 +3,11 @@
// Refer to the license.txt file included.
#include "core/hle/hle.h"
-#include "core/hle/service/frd_u.h"
+#include "core/hle/service/frd/frd.h"
+#include "core/hle/service/frd/frd_u.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace FRD_U
-
-namespace FRD_U {
+namespace Service {
+namespace FRD {
const Interface::FunctionInfo FunctionTable[] = {
{0x00050000, nullptr, "GetFriendKey"},
@@ -22,11 +21,9 @@ const Interface::FunctionInfo FunctionTable[] = {
{0x00320042, nullptr, "SetClientSdkVersion"}
};
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
+FRD_U_Interface::FRD_U_Interface() {
Register(FunctionTable);
}
-} // namespace
+} // namespace FRD
+} // namespace Service
diff --git a/src/core/hle/service/frd_u.h b/src/core/hle/service/frd/frd_u.h
index ab8897d5b..07e43f155 100644
--- a/src/core/hle/service/frd_u.h
+++ b/src/core/hle/service/frd/frd_u.h
@@ -6,18 +6,17 @@
#include "core/hle/service/service.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace FRD_U
+namespace Service {
+namespace FRD {
-namespace FRD_U {
-
-class Interface : public Service::Interface {
+class FRD_U_Interface : public Service::Interface {
public:
- Interface();
+ FRD_U_Interface();
std::string GetPortName() const override {
return "frd:u";
}
};
-} // namespace
+} // namespace FRD
+} // namespace Service
diff --git a/src/core/hle/service/frd_a.cpp b/src/core/hle/service/frd_a.cpp
deleted file mode 100644
index 569979319..000000000
--- a/src/core/hle/service/frd_a.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/frd_a.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace FRD_A
-
-namespace FRD_A {
-
-// Empty arrays are illegal -- commented out until an entry is added.
-// const Interface::FunctionInfo FunctionTable[] = { };
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- //Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/news/news.cpp b/src/core/hle/service/news/news.cpp
new file mode 100644
index 000000000..63cbd3850
--- /dev/null
+++ b/src/core/hle/service/news/news.cpp
@@ -0,0 +1,31 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/news/news.h"
+#include "core/hle/service/news/news_s.h"
+#include "core/hle/service/news/news_u.h"
+
+#include "core/hle/hle.h"
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+
+namespace Service {
+namespace NEWS {
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new NEWS_S_Interface);
+ AddService(new NEWS_U_Interface);
+}
+
+void Shutdown() {
+}
+
+} // namespace NEWS
+
+} // namespace Service
diff --git a/src/core/hle/service/news/news.h b/src/core/hle/service/news/news.h
new file mode 100644
index 000000000..b31ade255
--- /dev/null
+++ b/src/core/hle/service/news/news.h
@@ -0,0 +1,20 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace NEWS {
+
+/// Initialize NEWS service(s)
+void Init();
+
+/// Shutdown NEWS service(s)
+void Shutdown();
+
+} // namespace NEWS
+} // namespace Service
diff --git a/src/core/hle/service/news/news_s.cpp b/src/core/hle/service/news/news_s.cpp
new file mode 100644
index 000000000..2f8c37d9e
--- /dev/null
+++ b/src/core/hle/service/news/news_s.cpp
@@ -0,0 +1,21 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/news/news.h"
+#include "core/hle/service/news/news_s.h"
+
+namespace Service {
+namespace NEWS {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x000100C6, nullptr, "AddNotification"},
+};
+
+NEWS_S_Interface::NEWS_S_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace NEWS
+} // namespace Service
diff --git a/src/core/hle/service/news_s.h b/src/core/hle/service/news/news_s.h
index f8b4636d5..f58b969a8 100644
--- a/src/core/hle/service/news_s.h
+++ b/src/core/hle/service/news/news_s.h
@@ -6,18 +6,17 @@
#include "core/hle/service/service.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NEWS_S
+namespace Service {
+namespace NEWS {
-namespace NEWS_S {
-
-class Interface : public Service::Interface {
+class NEWS_S_Interface : public Service::Interface {
public:
- Interface();
+ NEWS_S_Interface();
std::string GetPortName() const override {
return "news:s";
}
};
-} // namespace
+} // namespace NEWS
+} // namespace Service
diff --git a/src/core/hle/service/news/news_u.cpp b/src/core/hle/service/news/news_u.cpp
new file mode 100644
index 000000000..81f45a244
--- /dev/null
+++ b/src/core/hle/service/news/news_u.cpp
@@ -0,0 +1,21 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/news/news.h"
+#include "core/hle/service/news/news_u.h"
+
+namespace Service {
+namespace NEWS {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x000100C6, nullptr, "AddNotification"},
+};
+
+NEWS_U_Interface::NEWS_U_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace NEWS
+} // namespace Service
diff --git a/src/core/hle/service/news_u.h b/src/core/hle/service/news/news_u.h
index 0473cd19c..2720053d0 100644
--- a/src/core/hle/service/news_u.h
+++ b/src/core/hle/service/news/news_u.h
@@ -6,18 +6,17 @@
#include "core/hle/service/service.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NEWS_U
+namespace Service {
+namespace NEWS {
-namespace NEWS_U {
-
-class Interface : public Service::Interface {
+class NEWS_U_Interface : public Service::Interface {
public:
- Interface();
+ NEWS_U_Interface();
std::string GetPortName() const override {
return "news:u";
}
};
-} // namespace
+} // namespace NEWS
+} // namespace Service
diff --git a/src/core/hle/service/news_s.cpp b/src/core/hle/service/news_s.cpp
deleted file mode 100644
index 302d588c7..000000000
--- a/src/core/hle/service/news_s.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/news_s.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NEWS_S
-
-namespace NEWS_S {
-
-const Interface::FunctionInfo FunctionTable[] = {
- {0x000100C6, nullptr, "AddNotification"},
-};
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/news_u.cpp b/src/core/hle/service/news_u.cpp
deleted file mode 100644
index 7d835aa30..000000000
--- a/src/core/hle/service/news_u.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "core/hle/hle.h"
-#include "core/hle/service/news_u.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NEWS_U
-
-namespace NEWS_U {
-
-const Interface::FunctionInfo FunctionTable[] = {
- {0x000100C8, nullptr, "AddNotification"},
-};
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/nim/nim.cpp b/src/core/hle/service/nim/nim.cpp
new file mode 100644
index 000000000..73b0ee52a
--- /dev/null
+++ b/src/core/hle/service/nim/nim.cpp
@@ -0,0 +1,42 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+
+#include "core/hle/service/service.h"
+#include "core/hle/service/nim/nim.h"
+#include "core/hle/service/nim/nim_aoc.h"
+#include "core/hle/service/nim/nim_s.h"
+#include "core/hle/service/nim/nim_u.h"
+
+#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/shared_memory.h"
+#include "core/hle/hle.h"
+
+namespace Service {
+namespace NIM {
+
+void CheckSysUpdateAvailable(Service::Interface* self) {
+ u32* cmd_buff = Kernel::GetCommandBuffer();
+
+ cmd_buff[1] = RESULT_SUCCESS.raw;
+ cmd_buff[2] = 0; // No update available
+
+ LOG_WARNING(Service_NWM, "(STUBBED) called");
+}
+
+void Init() {
+ using namespace Kernel;
+
+ AddService(new NIM_AOC_Interface);
+ AddService(new NIM_S_Interface);
+ AddService(new NIM_U_Interface);
+}
+
+void Shutdown() {
+}
+
+} // namespace NIM
+
+} // namespace Service
diff --git a/src/core/hle/service/nim/nim.h b/src/core/hle/service/nim/nim.h
new file mode 100644
index 000000000..f7635c747
--- /dev/null
+++ b/src/core/hle/service/nim/nim.h
@@ -0,0 +1,30 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/kernel.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace NIM {
+
+/**
+ * NIM::CheckSysUpdateAvailable service function
+ * Inputs:
+ * 1 : None
+ * Outputs:
+ * 1 : Result of function, 0 on success, otherwise error code
+ * 2 : flag, 0 = no system update available, 1 = system update available.
+ */
+void CheckSysUpdateAvailable(Service::Interface* self);
+
+/// Initialize NIM service(s)
+void Init();
+
+/// Shutdown NIM service(s)
+void Shutdown();
+
+} // namespace NIM
+} // namespace Service
diff --git a/src/core/hle/service/nim_aoc.cpp b/src/core/hle/service/nim/nim_aoc.cpp
index 7a6aea91a..e6b1b6145 100644
--- a/src/core/hle/service/nim_aoc.cpp
+++ b/src/core/hle/service/nim/nim_aoc.cpp
@@ -3,12 +3,11 @@
// Refer to the license.txt file included.
#include "core/hle/hle.h"
-#include "core/hle/service/nim_aoc.h"
+#include "core/hle/service/nim/nim.h"
+#include "core/hle/service/nim/nim_aoc.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NIM_AOC
-
-namespace NIM_AOC {
+namespace Service {
+namespace NIM {
const Interface::FunctionInfo FunctionTable[] = {
{0x00030042, nullptr, "SetApplicationId"},
@@ -20,11 +19,10 @@ const Interface::FunctionInfo FunctionTable[] = {
{0x00240282, nullptr, "CalculateContentsRequiredSize"},
{0x00250000, nullptr, "RefreshServerTime"},
};
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-Interface::Interface() {
+NIM_AOC_Interface::NIM_AOC_Interface() {
Register(FunctionTable);
}
-} // namespace
+} // namespace NIM
+} // namespace Service
diff --git a/src/core/hle/service/nim/nim_aoc.h b/src/core/hle/service/nim/nim_aoc.h
new file mode 100644
index 000000000..aace45b5a
--- /dev/null
+++ b/src/core/hle/service/nim/nim_aoc.h
@@ -0,0 +1,22 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace NIM {
+
+class NIM_AOC_Interface : public Service::Interface {
+public:
+ NIM_AOC_Interface();
+
+ std::string GetPortName() const override {
+ return "nim:aoc";
+ }
+};
+
+} // namespace NIM
+} // namespace Service
diff --git a/src/core/hle/service/nim/nim_s.cpp b/src/core/hle/service/nim/nim_s.cpp
new file mode 100644
index 000000000..5d8bc059f
--- /dev/null
+++ b/src/core/hle/service/nim/nim_s.cpp
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/nim/nim.h"
+#include "core/hle/service/nim/nim_s.h"
+
+namespace Service {
+namespace NIM {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x000A0000, nullptr, "CheckSysupdateAvailableSOAP"},
+};
+
+NIM_S_Interface::NIM_S_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace NIM
+} // namespace Service
+
diff --git a/src/core/hle/service/nim/nim_s.h b/src/core/hle/service/nim/nim_s.h
new file mode 100644
index 000000000..f4bf73d26
--- /dev/null
+++ b/src/core/hle/service/nim/nim_s.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace NIM {
+
+class NIM_S_Interface : public Service::Interface {
+public:
+ NIM_S_Interface();
+
+ std::string GetPortName() const override {
+ return "nim:s";
+ }
+};
+
+} // namespace NIM
+} // namespace Service
diff --git a/src/core/hle/service/nim/nim_u.cpp b/src/core/hle/service/nim/nim_u.cpp
new file mode 100644
index 000000000..066570a85
--- /dev/null
+++ b/src/core/hle/service/nim/nim_u.cpp
@@ -0,0 +1,27 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/hle.h"
+#include "core/hle/service/nim/nim.h"
+#include "core/hle/service/nim/nim_u.h"
+
+namespace Service {
+namespace NIM {
+
+const Interface::FunctionInfo FunctionTable[] = {
+ {0x00010000, nullptr, "StartSysUpdate"},
+ {0x00020000, nullptr, "GetUpdateDownloadProgress"},
+ {0x00040000, nullptr, "FinishTitlesInstall"},
+ {0x00050000, nullptr, "CheckForSysUpdateEvent"},
+ {0x00090000, CheckSysUpdateAvailable, "CheckSysUpdateAvailable"},
+ {0x000A0000, nullptr, "GetState"},
+};
+
+NIM_U_Interface::NIM_U_Interface() {
+ Register(FunctionTable);
+}
+
+} // namespace NIM
+} // namespace Service
+
diff --git a/src/core/hle/service/nim/nim_u.h b/src/core/hle/service/nim/nim_u.h
new file mode 100644
index 000000000..bc89dc0f3
--- /dev/null
+++ b/src/core/hle/service/nim/nim_u.h
@@ -0,0 +1,22 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included..
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace NIM {
+
+class NIM_U_Interface : public Service::Interface {
+public:
+ NIM_U_Interface();
+
+ std::string GetPortName() const override {
+ return "nim:u";
+ }
+};
+
+} // namespace NIM
+} // namespace Service
diff --git a/src/core/hle/service/nim_aoc.h b/src/core/hle/service/nim_aoc.h
deleted file mode 100644
index aeb71eed2..000000000
--- a/src/core/hle/service/nim_aoc.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NIM_AOC
-
-namespace NIM_AOC {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "nim:aoc";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/nim_u.cpp b/src/core/hle/service/nim_u.cpp
deleted file mode 100644
index 5f13bd98e..000000000
--- a/src/core/hle/service/nim_u.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "common/logging/log.h"
-
-#include "core/hle/hle.h"
-#include "core/hle/service/nim_u.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NIM_U
-
-namespace NIM_U {
-
-/**
- * NIM_U::CheckSysUpdateAvailable service function
- * Inputs:
- * 1 : None
- * Outputs:
- * 1 : Result of function, 0 on success, otherwise error code
- * 2 : flag, 0 = no system update available, 1 = system update available.
- */
-static void CheckSysUpdateAvailable(Service::Interface* self) {
- u32* cmd_buff = Kernel::GetCommandBuffer();
-
- cmd_buff[1] = RESULT_SUCCESS.raw;
- cmd_buff[2] = 0; // No update available
-
- LOG_WARNING(Service_NWM, "(STUBBED) called");
-}
-
-const Interface::FunctionInfo FunctionTable[] = {
- {0x00010000, nullptr, "StartSysUpdate"},
- {0x00020000, nullptr, "GetUpdateDownloadProgress"},
- {0x00040000, nullptr, "FinishTitlesInstall"},
- {0x00050000, nullptr, "CheckForSysUpdateEvent"},
- {0x00090000, CheckSysUpdateAvailable, "CheckSysUpdateAvailable"},
- {0x000A0000, nullptr, "GetState"},
-};
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface class
-
-Interface::Interface() {
- Register(FunctionTable);
-}
-
-} // namespace
diff --git a/src/core/hle/service/nim_u.h b/src/core/hle/service/nim_u.h
deleted file mode 100644
index 57a1f6acf..000000000
--- a/src/core/hle/service/nim_u.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/hle/service/service.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Namespace NIM_U
-
-namespace NIM_U {
-
-class Interface : public Service::Interface {
-public:
- Interface();
-
- std::string GetPortName() const override {
- return "nim:u";
- }
-};
-
-} // namespace
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index dc667500c..d681cc3dc 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -8,29 +8,15 @@
#include "core/hle/service/service.h"
#include "core/hle/service/ac_u.h"
#include "core/hle/service/act_u.h"
-#include "core/hle/service/am_app.h"
-#include "core/hle/service/am_net.h"
-#include "core/hle/service/am_sys.h"
-#include "core/hle/service/boss_p.h"
-#include "core/hle/service/boss_u.h"
-#include "core/hle/service/cam_u.h"
-#include "core/hle/service/cecd_u.h"
-#include "core/hle/service/cecd_s.h"
#include "core/hle/service/csnd_snd.h"
#include "core/hle/service/dsp_dsp.h"
#include "core/hle/service/err_f.h"
-#include "core/hle/service/frd_a.h"
-#include "core/hle/service/frd_u.h"
#include "core/hle/service/gsp_gpu.h"
#include "core/hle/service/gsp_lcd.h"
#include "core/hle/service/http_c.h"
#include "core/hle/service/ldr_ro.h"
#include "core/hle/service/mic_u.h"
#include "core/hle/service/ndm_u.h"
-#include "core/hle/service/news_s.h"
-#include "core/hle/service/news_u.h"
-#include "core/hle/service/nim_aoc.h"
-#include "core/hle/service/nim_u.h"
#include "core/hle/service/ns_s.h"
#include "core/hle/service/nwm_uds.h"
#include "core/hle/service/pm_app.h"
@@ -39,11 +25,18 @@
#include "core/hle/service/ssl_c.h"
#include "core/hle/service/y2r_u.h"
+#include "core/hle/service/am/am.h"
#include "core/hle/service/apt/apt.h"
+#include "core/hle/service/boss/boss.h"
+#include "core/hle/service/cam/cam.h"
+#include "core/hle/service/cecd/cecd.h"
+#include "core/hle/service/frd/frd.h"
#include "core/hle/service/fs/archive.h"
#include "core/hle/service/cfg/cfg.h"
#include "core/hle/service/hid/hid.h"
#include "core/hle/service/ir/ir.h"
+#include "core/hle/service/news/news.h"
+#include "core/hle/service/nim/nim.h"
#include "core/hle/service/ptm/ptm.h"
namespace Service {
@@ -111,36 +104,29 @@ void Init() {
AddNamedPort(new ERR_F::Interface);
Service::FS::ArchiveInit();
- Service::CFG::Init();
+ Service::AM::Init();
Service::APT::Init();
- Service::PTM::Init();
+ Service::BOSS::Init();
+ Service::CAM::Init();
+ Service::CECD::Init();
+ Service::CFG::Init();
+ Service::FRD::Init();
Service::HID::Init();
Service::IR::Init();
+ Service::NEWS::Init();
+ Service::NIM::Init();
+ Service::PTM::Init();
AddService(new AC_U::Interface);
AddService(new ACT_U::Interface);
- AddService(new AM_APP::Interface);
- AddService(new AM_NET::Interface);
- AddService(new AM_SYS::Interface);
- AddService(new BOSS_P::Interface);
- AddService(new BOSS_U::Interface);
- AddService(new CAM_U::Interface);
- AddService(new CECD_S::Interface);
- AddService(new CECD_U::Interface);
AddService(new CSND_SND::Interface);
AddService(new DSP_DSP::Interface);
- AddService(new FRD_A::Interface);
- AddService(new FRD_U::Interface);
AddService(new GSP_GPU::Interface);
AddService(new GSP_LCD::Interface);
AddService(new HTTP_C::Interface);
AddService(new LDR_RO::Interface);
AddService(new MIC_U::Interface);
AddService(new NDM_U::Interface);
- AddService(new NEWS_S::Interface);
- AddService(new NEWS_U::Interface);
- AddService(new NIM_AOC::Interface);
- AddService(new NIM_U::Interface);
AddService(new NS_S::Interface);
AddService(new NWM_UDS::Interface);
AddService(new PM_APP::Interface);
@@ -153,11 +139,19 @@ void Init() {
/// Shutdown ServiceManager
void Shutdown() {
+
+ Service::PTM::Shutdown();
+ Service::NIM::Shutdown();
+ Service::NEWS::Shutdown();
Service::IR::Shutdown();
Service::HID::Shutdown();
- Service::PTM::Shutdown();
- Service::APT::Shutdown();
+ Service::FRD::Shutdown();
Service::CFG::Shutdown();
+ Service::CECD::Shutdown();
+ Service::CAM::Shutdown();
+ Service::BOSS::Shutdown();
+ Service::APT::Shutdown();
+ Service::AM::Shutdown();
Service::FS::ArchiveShutdown();
g_srv_services.clear();