From 6b51683bb1e8772260a51a1bbf029fce773ecad8 Mon Sep 17 00:00:00 2001
From: archshift <admin@archshift.com>
Date: Sun, 14 Dec 2014 22:48:55 -0800
Subject: [PATCH 1/4] Added am:app service stub.

Apparently nothing at all is known about this service...
---
 src/core/CMakeLists.txt          |  2 ++
 src/core/hle/service/am_app.cpp  | 23 +++++++++++++++++++++++
 src/core/hle/service/am_app.h    | 27 +++++++++++++++++++++++++++
 src/core/hle/service/service.cpp |  2 ++
 4 files changed, 54 insertions(+)
 create mode 100644 src/core/hle/service/am_app.cpp
 create mode 100644 src/core/hle/service/am_app.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 567d7454e2..352bb5b2b3 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -32,6 +32,7 @@ set(SRCS
             hle/kernel/shared_memory.cpp
             hle/kernel/thread.cpp
             hle/service/ac_u.cpp
+            hle/service/am_app.cpp
             hle/service/am_net.cpp
             hle/service/apt_u.cpp
             hle/service/boss_u.cpp
@@ -111,6 +112,7 @@ set(HEADERS
             hle/kernel/shared_memory.h
             hle/kernel/thread.h
             hle/service/ac_u.h
+            hle/service/am_app.h
             hle/service/am_net.h
             hle/service/apt_u.h
             hle/service/boss_u.h
diff --git a/src/core/hle/service/am_app.cpp b/src/core/hle/service/am_app.cpp
new file mode 100644
index 0000000000..05c34832b7
--- /dev/null
+++ b/src/core/hle/service/am_app.cpp
@@ -0,0 +1,23 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "common/log.h"
+#include "core/hle/hle.h"
+#include "core/hle/service/am_app.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace AM_APP
+
+namespace AM_APP {
+
+const Interface::FunctionInfo FunctionTable[] = {
+};
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Interface class
+
+Interface::Interface() {
+    Register(FunctionTable, ARRAY_SIZE(FunctionTable));
+}
+
+} // namespace
diff --git a/src/core/hle/service/am_app.h b/src/core/hle/service/am_app.h
new file mode 100644
index 0000000000..86a5f5b749
--- /dev/null
+++ b/src/core/hle/service/am_app.h
@@ -0,0 +1,27 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// 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();
+
+    /**
+     * Gets the string port name used by CTROS for the service
+     * @return Port name of service
+     */
+    std::string GetPortName() const override {
+        return "am:app";
+    }
+};
+
+} // namespace
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index e6973572b9..287cd48e18 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -7,6 +7,7 @@
 
 #include "core/hle/service/service.h"
 #include "core/hle/service/ac_u.h"
+#include "core/hle/service/am_app.h"
 #include "core/hle/service/am_net.h"
 #include "core/hle/service/apt_u.h"
 #include "core/hle/service/boss_u.h"
@@ -84,6 +85,7 @@ void Init() {
 
     g_manager->AddService(new SRV::Interface);
     g_manager->AddService(new AC_U::Interface);
+    g_manager->AddService(new AM_APP::Interface);
     g_manager->AddService(new AM_NET::Interface);
     g_manager->AddService(new APT_U::Interface);
     g_manager->AddService(new BOSS_U::Interface);

From 6117fad03604dca573b5b19ebbb571a28df89421 Mon Sep 17 00:00:00 2001
From: archshift <admin@archshift.com>
Date: Sun, 14 Dec 2014 22:49:33 -0800
Subject: [PATCH 2/4] Added stub for ldr:ro service...

---
 src/core/CMakeLists.txt          |  2 ++
 src/core/hle/service/ldr_ro.cpp  | 28 ++++++++++++++++++++++++++++
 src/core/hle/service/ldr_ro.h    | 27 +++++++++++++++++++++++++++
 src/core/hle/service/service.cpp |  2 ++
 4 files changed, 59 insertions(+)
 create mode 100644 src/core/hle/service/ldr_ro.cpp
 create mode 100644 src/core/hle/service/ldr_ro.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 352bb5b2b3..3cf383f327 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -47,6 +47,7 @@ set(SRCS
             hle/service/hid_user.cpp
             hle/service/ir_rst.cpp
             hle/service/ir_u.cpp
+            hle/service/ldr_ro.cpp
             hle/service/mic_u.cpp
             hle/service/ndm_u.cpp
             hle/service/nwm_uds.cpp
@@ -127,6 +128,7 @@ set(HEADERS
             hle/service/hid_user.h
             hle/service/ir_rst.h
             hle/service/ir_u.h
+            hle/service/ldr_ro.h
             hle/service/mic_u.h
             hle/service/ndm_u.h
             hle/service/nwm_uds.h
diff --git a/src/core/hle/service/ldr_ro.cpp b/src/core/hle/service/ldr_ro.cpp
new file mode 100644
index 0000000000..91b1a6fc5a
--- /dev/null
+++ b/src/core/hle/service/ldr_ro.cpp
@@ -0,0 +1,28 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "common/log.h"
+#include "core/hle/hle.h"
+#include "core/hle/service/ldr_ro.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace LDR_RO
+
+namespace LDR_RO {
+
+const Interface::FunctionInfo FunctionTable[] = {
+    {0x000100C2, nullptr,               "Initialize"},
+    {0x00020082, nullptr,               "CRR_Load"},
+    {0x00030042, nullptr,               "CRR_Unload"},
+    {0x000402C2, nullptr,               "CRO_LoadAndFix"},
+    {0x000500C2, nullptr,               "CRO_ApplyRelocationPatchesAndLink"}
+};
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Interface class
+
+Interface::Interface() {
+    Register(FunctionTable, ARRAY_SIZE(FunctionTable));
+}
+
+} // namespace
diff --git a/src/core/hle/service/ldr_ro.h b/src/core/hle/service/ldr_ro.h
new file mode 100644
index 0000000000..32d7c29cff
--- /dev/null
+++ b/src/core/hle/service/ldr_ro.h
@@ -0,0 +1,27 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace LDR_RO
+
+namespace LDR_RO {
+
+class Interface : public Service::Interface {
+public:
+    Interface();
+
+    /**
+     * Gets the string port name used by CTROS for the service
+     * @return Port name of service
+     */
+    std::string GetPortName() const override {
+        return "ldr:ro";
+    }
+};
+
+} // namespace
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 287cd48e18..b91081542d 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -22,6 +22,7 @@
 #include "core/hle/service/hid_user.h"
 #include "core/hle/service/ir_rst.h"
 #include "core/hle/service/ir_u.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/nwm_uds.h"
@@ -100,6 +101,7 @@ void Init() {
     g_manager->AddService(new HID_User::Interface);
     g_manager->AddService(new IR_RST::Interface);
     g_manager->AddService(new IR_U::Interface);
+    g_manager->AddService(new LDR_RO::Interface);
     g_manager->AddService(new MIC_U::Interface);
     g_manager->AddService(new NDM_U::Interface);
     g_manager->AddService(new NWM_UDS::Interface);

From 1356a6b313cbf1d5c4570d957988a1e241a28699 Mon Sep 17 00:00:00 2001
From: archshift <admin@archshift.com>
Date: Sun, 14 Dec 2014 22:50:54 -0800
Subject: [PATCH 3/4] Added stub for cecd:u service...

I couldn't find any information about this service...
---
 src/core/CMakeLists.txt          |  2 ++
 src/core/hle/service/cecd_u.cpp  | 23 +++++++++++++++++++++++
 src/core/hle/service/cecd_u.h    | 27 +++++++++++++++++++++++++++
 src/core/hle/service/service.cpp |  2 ++
 4 files changed, 54 insertions(+)
 create mode 100644 src/core/hle/service/cecd_u.cpp
 create mode 100644 src/core/hle/service/cecd_u.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 3cf383f327..9707360428 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -36,6 +36,7 @@ set(SRCS
             hle/service/am_net.cpp
             hle/service/apt_u.cpp
             hle/service/boss_u.cpp
+            hle/service/cecd_u.cpp
             hle/service/cfg_i.cpp
             hle/service/cfg_u.cpp
             hle/service/csnd_snd.cpp
@@ -117,6 +118,7 @@ set(HEADERS
             hle/service/am_net.h
             hle/service/apt_u.h
             hle/service/boss_u.h
+            hle/service/cecd_u.h
             hle/service/cfg_i.h
             hle/service/cfg_u.h
             hle/service/csnd_snd.h
diff --git a/src/core/hle/service/cecd_u.cpp b/src/core/hle/service/cecd_u.cpp
new file mode 100644
index 0000000000..d72f1da3f3
--- /dev/null
+++ b/src/core/hle/service/cecd_u.cpp
@@ -0,0 +1,23 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "common/log.h"
+#include "core/hle/hle.h"
+#include "core/hle/service/cecd_u.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace CECD_U
+
+namespace CECD_U {
+
+const Interface::FunctionInfo FunctionTable[] = {
+};
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Interface class
+
+Interface::Interface() {
+    Register(FunctionTable, ARRAY_SIZE(FunctionTable));
+}
+
+} // namespace
diff --git a/src/core/hle/service/cecd_u.h b/src/core/hle/service/cecd_u.h
new file mode 100644
index 0000000000..969e1ed1bb
--- /dev/null
+++ b/src/core/hle/service/cecd_u.h
@@ -0,0 +1,27 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace CECD_U
+
+namespace CECD_U {
+
+class Interface : public Service::Interface {
+public:
+    Interface();
+
+    /**
+     * Gets the string port name used by CTROS for the service
+     * @return Port name of service
+     */
+    std::string GetPortName() const override {
+        return "cecd:u";
+    }
+};
+
+} // namespace
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index b91081542d..1b9822ddf2 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -11,6 +11,7 @@
 #include "core/hle/service/am_net.h"
 #include "core/hle/service/apt_u.h"
 #include "core/hle/service/boss_u.h"
+#include "core/hle/service/cecd_u.h"
 #include "core/hle/service/cfg_i.h"
 #include "core/hle/service/cfg_u.h"
 #include "core/hle/service/csnd_snd.h"
@@ -90,6 +91,7 @@ void Init() {
     g_manager->AddService(new AM_NET::Interface);
     g_manager->AddService(new APT_U::Interface);
     g_manager->AddService(new BOSS_U::Interface);
+    g_manager->AddService(new CECD_U::Interface);
     g_manager->AddService(new CFG_I::Interface);
     g_manager->AddService(new CFG_U::Interface);
     g_manager->AddService(new CSND_SND::Interface);

From 89eef9eb6db81da44922b0968ea6705412b12ca6 Mon Sep 17 00:00:00 2001
From: archshift <admin@archshift.com>
Date: Sun, 14 Dec 2014 22:55:51 -0800
Subject: [PATCH 4/4] Added stub for nim:aoc service...

---
 src/core/CMakeLists.txt          |  2 ++
 src/core/hle/service/nim_aoc.cpp | 31 +++++++++++++++++++++++++++++++
 src/core/hle/service/nim_aoc.h   | 27 +++++++++++++++++++++++++++
 src/core/hle/service/service.cpp |  2 ++
 4 files changed, 62 insertions(+)
 create mode 100644 src/core/hle/service/nim_aoc.cpp
 create mode 100644 src/core/hle/service/nim_aoc.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 9707360428..dcbe12a890 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -50,6 +50,7 @@ set(SRCS
             hle/service/ir_u.cpp
             hle/service/ldr_ro.cpp
             hle/service/mic_u.cpp
+            hle/service/nim_aoc.cpp
             hle/service/ndm_u.cpp
             hle/service/nwm_uds.cpp
             hle/service/pm_app.cpp
@@ -132,6 +133,7 @@ set(HEADERS
             hle/service/ir_u.h
             hle/service/ldr_ro.h
             hle/service/mic_u.h
+            hle/service/nim_aoc.h
             hle/service/ndm_u.h
             hle/service/nwm_uds.h
             hle/service/pm_app.h
diff --git a/src/core/hle/service/nim_aoc.cpp b/src/core/hle/service/nim_aoc.cpp
new file mode 100644
index 0000000000..04c1e0cf33
--- /dev/null
+++ b/src/core/hle/service/nim_aoc.cpp
@@ -0,0 +1,31 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "common/log.h"
+#include "core/hle/hle.h"
+#include "core/hle/service/nim_aoc.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace NIM_AOC
+
+namespace NIM_AOC {
+
+const Interface::FunctionInfo FunctionTable[] = {
+    {0x00030042, nullptr,               "SetApplicationId"},
+    {0x00040042, nullptr,               "SetTin"},
+    {0x000902D0, nullptr,               "ListContentSetsEx"},
+    {0x00180000, nullptr,               "GetBalance"},
+    {0x001D0000, nullptr,               "GetCustomerSupportCode"},
+    {0x00210000, nullptr,               "Initialize"},
+    {0x00240282, nullptr,               "CalculateContentsRequiredSize"},
+    {0x00250000, nullptr,               "RefreshServerTime"},
+};
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Interface class
+
+Interface::Interface() {
+    Register(FunctionTable, ARRAY_SIZE(FunctionTable));
+}
+
+} // namespace
diff --git a/src/core/hle/service/nim_aoc.h b/src/core/hle/service/nim_aoc.h
new file mode 100644
index 0000000000..2cc6731188
--- /dev/null
+++ b/src/core/hle/service/nim_aoc.h
@@ -0,0 +1,27 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2+
+// 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();
+
+    /**
+     * Gets the string port name used by CTROS for the service
+     * @return Port name of service
+     */
+    std::string GetPortName() const override {
+        return "nim:aoc";
+    }
+};
+
+} // namespace
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 1b9822ddf2..b33172932b 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -25,6 +25,7 @@
 #include "core/hle/service/ir_u.h"
 #include "core/hle/service/ldr_ro.h"
 #include "core/hle/service/mic_u.h"
+#include "core/hle/service/nim_aoc.h"
 #include "core/hle/service/ndm_u.h"
 #include "core/hle/service/nwm_uds.h"
 #include "core/hle/service/pm_app.h"
@@ -105,6 +106,7 @@ void Init() {
     g_manager->AddService(new IR_U::Interface);
     g_manager->AddService(new LDR_RO::Interface);
     g_manager->AddService(new MIC_U::Interface);
+    g_manager->AddService(new NIM_AOC::Interface);
     g_manager->AddService(new NDM_U::Interface);
     g_manager->AddService(new NWM_UDS::Interface);
     g_manager->AddService(new PM_APP::Interface);