From e27f169acb30a0223a1ce494b2a8788ae3d51f2c Mon Sep 17 00:00:00 2001
From: archshift <admin@archshift.com>
Date: Sun, 16 Nov 2014 22:06:54 -0800
Subject: [PATCH] Add missing boss:U service, needed according to Nintendo Zone
 logs.

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

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index f41d52e801..2315cc7915 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -32,6 +32,7 @@ set(SRCS
             hle/kernel/thread.cpp
             hle/service/ac_u.cpp
             hle/service/apt_u.cpp
+            hle/service/boss_u.cpp
             hle/service/cfg_u.cpp
             hle/service/dsp_dsp.cpp
             hle/service/err_f.cpp
@@ -103,6 +104,7 @@ set(HEADERS
             hle/kernel/thread.h
             hle/service/ac_u.h
             hle/service/apt_u.h
+            hle/service/boss_u.h
             hle/service/cfg_u.h
             hle/service/dsp_dsp.h
             hle/service/err_f.h
diff --git a/src/core/hle/service/boss_u.cpp b/src/core/hle/service/boss_u.cpp
new file mode 100644
index 0000000000..d398edc686
--- /dev/null
+++ b/src/core/hle/service/boss_u.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/boss_u.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Namespace BOSS_U
+
+namespace BOSS_U {
+
+    const Interface::FunctionInfo FunctionTable[] = {
+        {0x00020100, nullptr,               "GetStorageInfo"},
+    };
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////
+    // Interface class
+
+    Interface::Interface() {
+        Register(FunctionTable, ARRAY_SIZE(FunctionTable));
+    }
+    
+    Interface::~Interface() {
+    }
+    
+} // namespace
diff --git a/src/core/hle/service/boss_u.h b/src/core/hle/service/boss_u.h
new file mode 100644
index 0000000000..af39b8e652
--- /dev/null
+++ b/src/core/hle/service/boss_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 BOSS_U
+
+namespace BOSS_U {
+
+    class Interface : public Service::Interface {
+    public:
+        Interface();
+        ~Interface();
+        /**
+         * Gets the string port name used by CTROS for the service
+         * @return Port name of service
+         */
+        std::string GetPortName() const {
+            return "boss:U";
+        }
+    };
+
+} // namespace
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index bb0f80e986..ba7299170f 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -8,6 +8,7 @@
 #include "core/hle/service/service.h"
 #include "core/hle/service/ac_u.h"
 #include "core/hle/service/apt_u.h"
+#include "core/hle/service/boss_u.h"
 #include "core/hle/service/cfg_u.h"
 #include "core/hle/service/dsp_dsp.h"
 #include "core/hle/service/err_f.h"
@@ -78,6 +79,7 @@ void Init() {
     g_manager->AddService(new SRV::Interface);
     g_manager->AddService(new AC_U::Interface);
     g_manager->AddService(new APT_U::Interface);
+    g_manager->AddService(new BOSS_U::Interface);
     g_manager->AddService(new CFG_U::Interface);
     g_manager->AddService(new DSP_DSP::Interface);
     g_manager->AddService(new ERR_F::Interface);