Kaynağa Gözat

Merge pull request #855 from purpasmart96/service_rearrangment

Services: Continue separation of services into their own folders
bunnei 11 yıl önce
ebeveyn
işleme
9850f98339
75 değiştirilmiş dosya ile 1190 ekleme ve 637 silme
  1. 1 0
      src/common/logging/backend.cpp
  2. 3 2
      src/common/logging/log.h
  3. 52 28
      src/core/CMakeLists.txt
  4. 55 0
      src/core/hle/service/am/am.cpp
  5. 47 0
      src/core/hle/service/am/am.h
  6. 20 0
      src/core/hle/service/am/am_app.cpp
  7. 22 0
      src/core/hle/service/am/am_app.h
  8. 7 10
      src/core/hle/service/am/am_net.cpp
  9. 22 0
      src/core/hle/service/am/am_net.h
  10. 22 0
      src/core/hle/service/am/am_sys.cpp
  11. 22 0
      src/core/hle/service/am/am_sys.h
  12. 22 0
      src/core/hle/service/am/am_u.cpp
  13. 22 0
      src/core/hle/service/am/am_u.h
  14. 0 23
      src/core/hle/service/am_app.cpp
  15. 0 23
      src/core/hle/service/am_app.h
  16. 0 23
      src/core/hle/service/am_net.h
  17. 0 62
      src/core/hle/service/am_sys.cpp
  18. 0 23
      src/core/hle/service/am_sys.h
  19. 29 0
      src/core/hle/service/boss/boss.cpp
  20. 20 0
      src/core/hle/service/boss/boss.h
  21. 20 0
      src/core/hle/service/boss/boss_p.cpp
  22. 22 0
      src/core/hle/service/boss/boss_p.h
  23. 21 0
      src/core/hle/service/boss/boss_u.cpp
  24. 22 0
      src/core/hle/service/boss/boss_u.h
  25. 0 23
      src/core/hle/service/boss_p.cpp
  26. 0 23
      src/core/hle/service/boss_p.h
  27. 0 24
      src/core/hle/service/boss_u.cpp
  28. 0 23
      src/core/hle/service/boss_u.h
  29. 35 0
      src/core/hle/service/cam/cam.cpp
  30. 20 0
      src/core/hle/service/cam/cam.h
  31. 20 0
      src/core/hle/service/cam/cam_c.cpp
  32. 22 0
      src/core/hle/service/cam/cam_c.h
  33. 20 0
      src/core/hle/service/cam/cam_q.cpp
  34. 22 0
      src/core/hle/service/cam/cam_q.h
  35. 20 0
      src/core/hle/service/cam/cam_s.cpp
  36. 22 0
      src/core/hle/service/cam/cam_s.h
  37. 20 0
      src/core/hle/service/cam/cam_u.cpp
  38. 22 0
      src/core/hle/service/cam/cam_u.h
  39. 0 23
      src/core/hle/service/cam_u.cpp
  40. 0 23
      src/core/hle/service/cam_u.h
  41. 31 0
      src/core/hle/service/cecd/cecd.cpp
  42. 20 0
      src/core/hle/service/cecd/cecd.h
  43. 20 0
      src/core/hle/service/cecd/cecd_s.cpp
  44. 6 7
      src/core/hle/service/cecd/cecd_s.h
  45. 20 0
      src/core/hle/service/cecd/cecd_u.cpp
  46. 6 7
      src/core/hle/service/cecd/cecd_u.h
  47. 0 23
      src/core/hle/service/cecd_s.cpp
  48. 0 23
      src/core/hle/service/cecd_u.cpp
  49. 29 0
      src/core/hle/service/frd/frd.cpp
  50. 20 0
      src/core/hle/service/frd/frd.h
  51. 20 0
      src/core/hle/service/frd/frd_a.cpp
  52. 6 7
      src/core/hle/service/frd/frd_a.h
  53. 7 10
      src/core/hle/service/frd/frd_u.cpp
  54. 6 7
      src/core/hle/service/frd/frd_u.h
  55. 0 23
      src/core/hle/service/frd_a.cpp
  56. 31 0
      src/core/hle/service/news/news.cpp
  57. 20 0
      src/core/hle/service/news/news.h
  58. 21 0
      src/core/hle/service/news/news_s.cpp
  59. 6 7
      src/core/hle/service/news/news_s.h
  60. 21 0
      src/core/hle/service/news/news_u.cpp
  61. 6 7
      src/core/hle/service/news/news_u.h
  62. 0 24
      src/core/hle/service/news_s.cpp
  63. 0 24
      src/core/hle/service/news_u.cpp
  64. 42 0
      src/core/hle/service/nim/nim.cpp
  65. 30 0
      src/core/hle/service/nim/nim.h
  66. 7 9
      src/core/hle/service/nim/nim_aoc.cpp
  67. 22 0
      src/core/hle/service/nim/nim_aoc.h
  68. 22 0
      src/core/hle/service/nim/nim_s.cpp
  69. 22 0
      src/core/hle/service/nim/nim_s.h
  70. 27 0
      src/core/hle/service/nim/nim_u.cpp
  71. 22 0
      src/core/hle/service/nim/nim_u.h
  72. 0 23
      src/core/hle/service/nim_aoc.h
  73. 0 48
      src/core/hle/service/nim_u.cpp
  74. 0 23
      src/core/hle/service/nim_u.h
  75. 26 32
      src/core/hle/service/service.cpp

+ 1 - 0
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) \

+ 3 - 2
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

+ 52 - 28
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

+ 55 - 0
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

+ 47 - 0
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

+ 20 - 0
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

+ 22 - 0
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

+ 7 - 10
src/core/hle/service/am_net.cpp → 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

+ 22 - 0
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

+ 22 - 0
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

+ 22 - 0
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

+ 22 - 0
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

+ 22 - 0
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

+ 0 - 23
src/core/hle/service/am_app.cpp

@@ -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

+ 0 - 23
src/core/hle/service/am_app.h

@@ -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

+ 0 - 23
src/core/hle/service/am_net.h

@@ -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

+ 0 - 62
src/core/hle/service/am_sys.cpp

@@ -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

+ 0 - 23
src/core/hle/service/am_sys.h

@@ -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

+ 29 - 0
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

+ 20 - 0
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

+ 20 - 0
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

+ 22 - 0
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

+ 21 - 0
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

+ 22 - 0
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

+ 0 - 23
src/core/hle/service/boss_p.cpp

@@ -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

+ 0 - 23
src/core/hle/service/boss_p.h

@@ -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

+ 0 - 24
src/core/hle/service/boss_u.cpp

@@ -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

+ 0 - 23
src/core/hle/service/boss_u.h

@@ -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

+ 35 - 0
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

+ 20 - 0
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

+ 20 - 0
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

+ 22 - 0
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

+ 20 - 0
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

+ 22 - 0
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

+ 20 - 0
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

+ 22 - 0
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

+ 20 - 0
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

+ 22 - 0
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

+ 0 - 23
src/core/hle/service/cam_u.cpp

@@ -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

+ 0 - 23
src/core/hle/service/cam_u.h

@@ -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

+ 31 - 0
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

+ 20 - 0
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

+ 20 - 0
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

+ 6 - 7
src/core/hle/service/cecd_s.h → 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

+ 20 - 0
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

+ 6 - 7
src/core/hle/service/cecd_u.h → 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

+ 0 - 23
src/core/hle/service/cecd_s.cpp

@@ -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

+ 0 - 23
src/core/hle/service/cecd_u.cpp

@@ -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

+ 29 - 0
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

+ 20 - 0
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

+ 20 - 0
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

+ 6 - 7
src/core/hle/service/frd_a.h → 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

+ 7 - 10
src/core/hle/service/frd_u.cpp → 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

+ 6 - 7
src/core/hle/service/frd_u.h → 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

+ 0 - 23
src/core/hle/service/frd_a.cpp

@@ -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

+ 31 - 0
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

+ 20 - 0
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

+ 21 - 0
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

+ 6 - 7
src/core/hle/service/news_s.h → 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

+ 21 - 0
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

+ 6 - 7
src/core/hle/service/news_u.h → 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

+ 0 - 24
src/core/hle/service/news_s.cpp

@@ -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

+ 0 - 24
src/core/hle/service/news_u.cpp

@@ -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

+ 42 - 0
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

+ 30 - 0
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

+ 7 - 9
src/core/hle/service/nim_aoc.cpp → 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

+ 22 - 0
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

+ 22 - 0
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
+

+ 22 - 0
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

+ 27 - 0
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
+

+ 22 - 0
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

+ 0 - 23
src/core/hle/service/nim_aoc.h

@@ -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

+ 0 - 48
src/core/hle/service/nim_u.cpp

@@ -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

+ 0 - 23
src/core/hle/service/nim_u.h

@@ -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

+ 26 - 32
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();