From a2d69adad1603f00dd1a181c23707fe59c036dfd Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Fri, 9 Dec 2016 01:37:05 -0500
Subject: [PATCH] service: Add cfg:nor service

---
 src/core/CMakeLists.txt              |  2 ++
 src/core/hle/service/cfg/cfg.cpp     |  2 ++
 src/core/hle/service/cfg/cfg_nor.cpp | 23 +++++++++++++++++++++++
 src/core/hle/service/cfg/cfg_nor.h   | 22 ++++++++++++++++++++++
 4 files changed, 49 insertions(+)
 create mode 100644 src/core/hle/service/cfg/cfg_nor.cpp
 create mode 100644 src/core/hle/service/cfg/cfg_nor.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index c2c04473c..e26677079 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -77,6 +77,7 @@ set(SRCS
             hle/service/cecd/cecd_u.cpp
             hle/service/cfg/cfg.cpp
             hle/service/cfg/cfg_i.cpp
+            hle/service/cfg/cfg_nor.cpp
             hle/service/cfg/cfg_s.cpp
             hle/service/cfg/cfg_u.cpp
             hle/service/csnd_snd.cpp
@@ -239,6 +240,7 @@ set(HEADERS
             hle/service/cecd/cecd_u.h
             hle/service/cfg/cfg.h
             hle/service/cfg/cfg_i.h
+            hle/service/cfg/cfg_nor.h
             hle/service/cfg/cfg_s.h
             hle/service/cfg/cfg_u.h
             hle/service/csnd_snd.h
diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp
index 8f1ec47cc..65655f45d 100644
--- a/src/core/hle/service/cfg/cfg.cpp
+++ b/src/core/hle/service/cfg/cfg.cpp
@@ -12,6 +12,7 @@
 #include "core/hle/result.h"
 #include "core/hle/service/cfg/cfg.h"
 #include "core/hle/service/cfg/cfg_i.h"
+#include "core/hle/service/cfg/cfg_nor.h"
 #include "core/hle/service/cfg/cfg_s.h"
 #include "core/hle/service/cfg/cfg_u.h"
 #include "core/hle/service/fs/archive.h"
@@ -529,6 +530,7 @@ ResultCode LoadConfigNANDSaveFile() {
 
 void Init() {
     AddService(new CFG_I);
+    AddService(new CFG_NOR);
     AddService(new CFG_S);
     AddService(new CFG_U);
 
diff --git a/src/core/hle/service/cfg/cfg_nor.cpp b/src/core/hle/service/cfg/cfg_nor.cpp
new file mode 100644
index 000000000..4ce02d115
--- /dev/null
+++ b/src/core/hle/service/cfg/cfg_nor.cpp
@@ -0,0 +1,23 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/cfg/cfg.h"
+#include "core/hle/service/cfg/cfg_nor.h"
+
+namespace Service {
+namespace CFG {
+
+const Interface::FunctionInfo FunctionTable[] = {
+    {0x00010040, nullptr, "Initialize"},
+    {0x00020000, nullptr, "Shutdown"},
+    {0x00050082, nullptr, "ReadData"},
+    {0x00060082, nullptr, "WriteData"},
+};
+
+CFG_NOR::CFG_NOR() {
+    Register(FunctionTable);
+}
+
+} // namespace CFG
+} // namespace Service
diff --git a/src/core/hle/service/cfg/cfg_nor.h b/src/core/hle/service/cfg/cfg_nor.h
new file mode 100644
index 000000000..c337718e7
--- /dev/null
+++ b/src/core/hle/service/cfg/cfg_nor.h
@@ -0,0 +1,22 @@
+// Copyright 2016 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 CFG {
+
+class CFG_NOR final : public Interface {
+public:
+    CFG_NOR();
+
+    std::string GetPortName() const override {
+        return "cfg:nor";
+    }
+};
+
+} // namespace CFG
+} // namespace Service