diff --git a/rpcs3/Emu/SysCalls/ModuleManager.cpp b/rpcs3/Emu/SysCalls/ModuleManager.cpp
index 0ae472b06f..ce1a2f5925 100644
--- a/rpcs3/Emu/SysCalls/ModuleManager.cpp
+++ b/rpcs3/Emu/SysCalls/ModuleManager.cpp
@@ -52,6 +52,7 @@ extern Module sceNpCommerce2;
extern Module sceNpSns;
extern Module sceNpTrophy;
extern Module sceNpTus;
+extern Module sceNpUtil;
extern Module sys_io;
extern Module sys_net;
extern Module sysPrxForUser;
@@ -120,7 +121,7 @@ static const g_module_list[] =
{ 0x0037, "cellGameExec", nullptr },
{ 0x0038, "sceNp2", &sceNp2 },
{ 0x0039, "cellSysutilAp", &cellSysutilAp },
- { 0x003a, "cellSysutilNpClans", nullptr },
+ { 0x003a, "sceNpClans", &sceNpClans },
{ 0x003b, "cellSysutilOskExt", nullptr },
{ 0x003c, "cellVdecDivx", nullptr },
{ 0x003d, "cellJpgEnc", nullptr },
@@ -143,7 +144,7 @@ static const g_module_list[] =
{ 0x0052, "cellPngEnc", nullptr },
{ 0x0053, "cellMusicDecode2", nullptr },
{ 0x0055, "cellSync2", &cellSync2 },
- { 0x0056, "sceNpUtil", nullptr },
+ { 0x0056, "sceNpUtil", &sceNpUtil },
{ 0x0057, "cellRudp", &cellRudp },
{ 0x0059, "sceNpSns", &sceNpSns },
{ 0x005a, "cellGem", &cellGem },
diff --git a/rpcs3/Emu/SysCalls/Modules/sceNp.cpp b/rpcs3/Emu/SysCalls/Modules/sceNp.cpp
index 7d69bbf725..08101bdb03 100644
--- a/rpcs3/Emu/SysCalls/Modules/sceNp.cpp
+++ b/rpcs3/Emu/SysCalls/Modules/sceNp.cpp
@@ -1535,62 +1535,6 @@ s32 sceNpSignalingGetPeerNetInfoResult()
return CELL_OK;
}
-s32 sceNpUtilCmpNpId()
-{
- UNIMPLEMENTED_FUNC(sceNp);
- return CELL_OK;
-}
-
-s32 sceNpUtilCmpNpIdInOrder()
-{
- UNIMPLEMENTED_FUNC(sceNp);
- return CELL_OK;
-}
-
-s32 sceNpUtilBandwidthTestInitStart(u32 prio, size_t stack)
-{
- UNIMPLEMENTED_FUNC(sceNp);
-
- if (sceNpInstance.m_bSceNpUtilBandwidthTestInitialized)
- return SCE_NP_ERROR_ALREADY_INITIALIZED;
-
- sceNpInstance.m_bSceNpUtilBandwidthTestInitialized = true;
-
- return CELL_OK;
-}
-
-s32 sceNpUtilBandwidthTestGetStatus()
-{
- UNIMPLEMENTED_FUNC(sceNp);
-
- if (!sceNpInstance.m_bSceNpUtilBandwidthTestInitialized)
- return SCE_NP_ERROR_NOT_INITIALIZED;
-
- return CELL_OK;
-}
-
-s32 sceNpUtilBandwidthTestShutdown()
-{
- UNIMPLEMENTED_FUNC(sceNp);
-
- if (!sceNpInstance.m_bSceNpUtilBandwidthTestInitialized)
- return SCE_NP_ERROR_NOT_INITIALIZED;
-
- sceNpInstance.m_bSceNpUtilBandwidthTestInitialized = false;
-
- return CELL_OK;
-}
-
-s32 sceNpUtilBandwidthTestAbort()
-{
- UNIMPLEMENTED_FUNC(sceNp);
-
- if (!sceNpInstance.m_bSceNpUtilBandwidthTestInitialized)
- return SCE_NP_ERROR_NOT_INITIALIZED;
-
- return CELL_OK;
-}
-
s32 _sceNpSysutilClientMalloc()
{
UNIMPLEMENTED_FUNC(sceNp);
@@ -1608,12 +1552,9 @@ Module sceNp("sceNp", []()
sceNpInstance.m_bSceNpInitialized = false;
sceNpInstance.m_bScoreInitialized = false;
sceNpInstance.m_bLookupInitialized = false;
- sceNpInstance.m_bSceNpUtilBandwidthTestInitialized = false;
REG_FUNC(sceNp, sceNpInit);
- REG_FUNC(sceNp, sceNpUtilBandwidthTestInitStart);
REG_FUNC(sceNp, sceNpTerm);
- REG_FUNC(sceNp, sceNpUtilBandwidthTestShutdown);
REG_FUNC(sceNp, sceNpDrmIsAvailable);
REG_FUNC(sceNp, sceNpDrmIsAvailable2);
REG_FUNC(sceNp, sceNpDrmVerifyUpgradeLicense);
@@ -1830,10 +1771,6 @@ Module sceNp("sceNp", []()
REG_FUNC(sceNp, sceNpSignalingGetPeerNetInfo);
REG_FUNC(sceNp, sceNpSignalingCancelPeerNetInfo);
REG_FUNC(sceNp, sceNpSignalingGetPeerNetInfoResult);
- REG_FUNC(sceNp, sceNpUtilCmpNpId);
- REG_FUNC(sceNp, sceNpUtilCmpNpIdInOrder);
- REG_FUNC(sceNp, sceNpUtilBandwidthTestGetStatus);
- REG_FUNC(sceNp, sceNpUtilBandwidthTestAbort);
REG_FUNC(sceNp, _sceNpSysutilClientMalloc);
REG_FUNC(sceNp, _sceNpSysutilClientFree);
});
diff --git a/rpcs3/Emu/SysCalls/Modules/sceNp.h b/rpcs3/Emu/SysCalls/Modules/sceNp.h
index eee17a67b8..75f5dd5e8d 100644
--- a/rpcs3/Emu/SysCalls/Modules/sceNp.h
+++ b/rpcs3/Emu/SysCalls/Modules/sceNp.h
@@ -224,13 +224,11 @@ struct sceNpInternal
bool m_bSceNpInitialized;
bool m_bScoreInitialized;
bool m_bLookupInitialized;
- bool m_bSceNpUtilBandwidthTestInitialized;
sceNpInternal()
: m_bSceNpInitialized(false),
- m_bScoreInitialized(false),
- m_bLookupInitialized(false),
- m_bSceNpUtilBandwidthTestInitialized(false)
+ m_bScoreInitialized(false),
+ m_bLookupInitialized(false)
{
}
};
diff --git a/rpcs3/Emu/SysCalls/Modules/sceNpUtil.cpp b/rpcs3/Emu/SysCalls/Modules/sceNpUtil.cpp
new file mode 100644
index 0000000000..dc92203c4c
--- /dev/null
+++ b/rpcs3/Emu/SysCalls/Modules/sceNpUtil.cpp
@@ -0,0 +1,87 @@
+#include "stdafx.h"
+#include "Emu/Memory/Memory.h"
+#include "Emu/SysCalls/Modules.h"
+
+#include "sceNp.h"
+
+extern Module sceNpUtil;
+
+struct sceNpUtilInternal
+{
+ bool m_bSceNpUtilBandwidthTestInitialized;
+
+ sceNpUtilInternal()
+ : m_bSceNpUtilBandwidthTestInitialized(false)
+ {
+ }
+};
+
+sceNpUtilInternal sceNpUtilInstance;
+
+s32 sceNpUtilCmpNpId()
+{
+ UNIMPLEMENTED_FUNC(sceNpUtil);
+ return CELL_OK;
+}
+
+s32 sceNpUtilCmpNpIdInOrder()
+{
+ UNIMPLEMENTED_FUNC(sceNpUtil);
+ return CELL_OK;
+}
+
+s32 sceNpUtilBandwidthTestInitStart(u32 prio, size_t stack)
+{
+ UNIMPLEMENTED_FUNC(sceNpUtil);
+
+ if (sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized)
+ return SCE_NP_ERROR_ALREADY_INITIALIZED;
+
+ sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized = true;
+
+ return CELL_OK;
+}
+
+s32 sceNpUtilBandwidthTestGetStatus()
+{
+ UNIMPLEMENTED_FUNC(sceNpUtil);
+
+ if (!sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized)
+ return SCE_NP_ERROR_NOT_INITIALIZED;
+
+ return CELL_OK;
+}
+
+s32 sceNpUtilBandwidthTestShutdown()
+{
+ UNIMPLEMENTED_FUNC(sceNpUtil);
+
+ if (!sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized)
+ return SCE_NP_ERROR_NOT_INITIALIZED;
+
+ sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized = false;
+
+ return CELL_OK;
+}
+
+s32 sceNpUtilBandwidthTestAbort()
+{
+ UNIMPLEMENTED_FUNC(sceNpUtil);
+
+ if (!sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized)
+ return SCE_NP_ERROR_NOT_INITIALIZED;
+
+ return CELL_OK;
+}
+
+Module sceNpUtil("sceNpUtil", []()
+{
+ sceNpUtilInstance.m_bSceNpUtilBandwidthTestInitialized = false;
+
+ REG_FUNC(sceNpUtil, sceNpUtilBandwidthTestInitStart);
+ REG_FUNC(sceNpUtil, sceNpUtilBandwidthTestShutdown);
+ REG_FUNC(sceNpUtil, sceNpUtilCmpNpId);
+ REG_FUNC(sceNpUtil, sceNpUtilCmpNpIdInOrder);
+ REG_FUNC(sceNpUtil, sceNpUtilBandwidthTestGetStatus);
+ REG_FUNC(sceNpUtil, sceNpUtilBandwidthTestAbort);
+});
\ No newline at end of file
diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj
index a9c2ef1f1f..23be6cacef 100644
--- a/rpcs3/emucore.vcxproj
+++ b/rpcs3/emucore.vcxproj
@@ -277,6 +277,7 @@
+
diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters
index 7255ac0037..36ed770f1e 100644
--- a/rpcs3/emucore.vcxproj.filters
+++ b/rpcs3/emucore.vcxproj.filters
@@ -881,6 +881,9 @@
Emu\CPU\Cell
+
+ Emu\SysCalls\Modules
+