From 823d58ac9ba8527e64cb2d4c755156dbd17c5cd0 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Fri, 9 Dec 2016 01:01:35 -0500
Subject: [PATCH 1/2] service: Drop '_Interface' from cfg service names

---
 src/core/hle/service/cfg/cfg.cpp   | 6 +++---
 src/core/hle/service/cfg/cfg_i.cpp | 2 +-
 src/core/hle/service/cfg/cfg_i.h   | 4 ++--
 src/core/hle/service/cfg/cfg_s.cpp | 2 +-
 src/core/hle/service/cfg/cfg_s.h   | 4 ++--
 src/core/hle/service/cfg/cfg_u.cpp | 2 +-
 src/core/hle/service/cfg/cfg_u.h   | 4 ++--
 7 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp
index d554c3f54f..8f1ec47cc5 100644
--- a/src/core/hle/service/cfg/cfg.cpp
+++ b/src/core/hle/service/cfg/cfg.cpp
@@ -528,9 +528,9 @@ ResultCode LoadConfigNANDSaveFile() {
 }
 
 void Init() {
-    AddService(new CFG_I_Interface);
-    AddService(new CFG_S_Interface);
-    AddService(new CFG_U_Interface);
+    AddService(new CFG_I);
+    AddService(new CFG_S);
+    AddService(new CFG_U);
 
     LoadConfigNANDSaveFile();
 }
diff --git a/src/core/hle/service/cfg/cfg_i.cpp b/src/core/hle/service/cfg/cfg_i.cpp
index 46312da4b8..e8db0fc42d 100644
--- a/src/core/hle/service/cfg/cfg_i.cpp
+++ b/src/core/hle/service/cfg/cfg_i.cpp
@@ -56,7 +56,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x08180042, nullptr, "SecureInfoGetSerialNo"},
 };
 
-CFG_I_Interface::CFG_I_Interface() {
+CFG_I::CFG_I() {
     Register(FunctionTable);
 }
 
diff --git a/src/core/hle/service/cfg/cfg_i.h b/src/core/hle/service/cfg/cfg_i.h
index d0a2cce39e..8cfd47633b 100644
--- a/src/core/hle/service/cfg/cfg_i.h
+++ b/src/core/hle/service/cfg/cfg_i.h
@@ -9,9 +9,9 @@
 namespace Service {
 namespace CFG {
 
-class CFG_I_Interface : public Service::Interface {
+class CFG_I final : public Interface {
 public:
-    CFG_I_Interface();
+    CFG_I();
 
     std::string GetPortName() const override {
         return "cfg:i";
diff --git a/src/core/hle/service/cfg/cfg_s.cpp b/src/core/hle/service/cfg/cfg_s.cpp
index 564a9bb086..9386fe33dd 100644
--- a/src/core/hle/service/cfg/cfg_s.cpp
+++ b/src/core/hle/service/cfg/cfg_s.cpp
@@ -33,7 +33,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x04090000, nullptr, "UpdateConfigBlk00040003"},
 };
 
-CFG_S_Interface::CFG_S_Interface() {
+CFG_S::CFG_S() {
     Register(FunctionTable);
 }
 
diff --git a/src/core/hle/service/cfg/cfg_s.h b/src/core/hle/service/cfg/cfg_s.h
index 5568d6485c..99fea46ee0 100644
--- a/src/core/hle/service/cfg/cfg_s.h
+++ b/src/core/hle/service/cfg/cfg_s.h
@@ -9,9 +9,9 @@
 namespace Service {
 namespace CFG {
 
-class CFG_S_Interface : public Service::Interface {
+class CFG_S final : public Interface {
 public:
-    CFG_S_Interface();
+    CFG_S();
 
     std::string GetPortName() const override {
         return "cfg:s";
diff --git a/src/core/hle/service/cfg/cfg_u.cpp b/src/core/hle/service/cfg/cfg_u.cpp
index 4c82846c02..7b66fee228 100644
--- a/src/core/hle/service/cfg/cfg_u.cpp
+++ b/src/core/hle/service/cfg/cfg_u.cpp
@@ -23,7 +23,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x000B0000, nullptr, "IsFangateSupported"},
 };
 
-CFG_U_Interface::CFG_U_Interface() {
+CFG_U::CFG_U() {
     Register(FunctionTable);
 }
 
diff --git a/src/core/hle/service/cfg/cfg_u.h b/src/core/hle/service/cfg/cfg_u.h
index 5303d8ac68..fc78447142 100644
--- a/src/core/hle/service/cfg/cfg_u.h
+++ b/src/core/hle/service/cfg/cfg_u.h
@@ -9,9 +9,9 @@
 namespace Service {
 namespace CFG {
 
-class CFG_U_Interface : public Service::Interface {
+class CFG_U final : public Interface {
 public:
-    CFG_U_Interface();
+    CFG_U();
 
     std::string GetPortName() const override {
         return "cfg:u";

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 2/2] 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 c2c04473c0..e26677079e 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 8f1ec47cc5..65655f45dc 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 0000000000..4ce02d1154
--- /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 0000000000..c337718e74
--- /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