diff --git a/rpcs3/Emu/Cell/PPUModule.cpp b/rpcs3/Emu/Cell/PPUModule.cpp
index 9065c47a4e..3176f33138 100644
--- a/rpcs3/Emu/Cell/PPUModule.cpp
+++ b/rpcs3/Emu/Cell/PPUModule.cpp
@@ -28,6 +28,7 @@ LOG_CHANNEL(cellBGDL);
LOG_CHANNEL(cellCamera);
LOG_CHANNEL(cellCelp8Enc);
LOG_CHANNEL(cellCelpEnc);
+LOG_CHANNEL(cellCrossController);
LOG_CHANNEL(cellDaisy);
LOG_CHANNEL(cellDmux);
LOG_CHANNEL(cellFiber);
@@ -85,6 +86,7 @@ LOG_CHANNEL(cellSysutilAp);
LOG_CHANNEL(cellSysutilAvc);
LOG_CHANNEL(cellSysutilAvc2);
LOG_CHANNEL(cellSysutilMisc);
+LOG_CHANNEL(cellSysutilNpEula);
LOG_CHANNEL(cellUsbd);
LOG_CHANNEL(cellUsbPspcm);
LOG_CHANNEL(cellUserInfo);
@@ -93,6 +95,7 @@ LOG_CHANNEL(cellVideoExport);
LOG_CHANNEL(cellVideoUpload);
LOG_CHANNEL(cellVoice);
LOG_CHANNEL(cellVpost);
+LOG_CHANNEL(libmedi);
LOG_CHANNEL(libmixer);
LOG_CHANNEL(libsnd3);
LOG_CHANNEL(libsynth2);
@@ -213,6 +216,7 @@ static void ppu_initialize_modules()
&ppu_module_manager::cellCamera,
&ppu_module_manager::cellCelp8Enc,
&ppu_module_manager::cellCelpEnc,
+ &ppu_module_manager::cellCrossController,
&ppu_module_manager::cellDaisy,
&ppu_module_manager::cellDmux,
&ppu_module_manager::cellFiber,
@@ -271,6 +275,7 @@ static void ppu_initialize_modules()
&ppu_module_manager::cellSysutilAp,
&ppu_module_manager::cellSysutilAvc,
&ppu_module_manager::cellSysutilAvc2,
+ &ppu_module_manager::cellSysutilNpEula,
&ppu_module_manager::cellSysutilMisc,
&ppu_module_manager::cellUsbd,
&ppu_module_manager::cellUsbPspcm,
@@ -280,6 +285,7 @@ static void ppu_initialize_modules()
&ppu_module_manager::cellVideoUpload,
&ppu_module_manager::cellVoice,
&ppu_module_manager::cellVpost,
+ &ppu_module_manager::libmedi,
&ppu_module_manager::libmixer,
&ppu_module_manager::libsnd3,
&ppu_module_manager::libsynth2,
diff --git a/rpcs3/Emu/Cell/PPUModule.h b/rpcs3/Emu/Cell/PPUModule.h
index 527e460039..5a2d2a3f15 100644
--- a/rpcs3/Emu/Cell/PPUModule.h
+++ b/rpcs3/Emu/Cell/PPUModule.h
@@ -114,6 +114,7 @@ public:
static const ppu_static_module cellCamera;
static const ppu_static_module cellCelp8Enc;
static const ppu_static_module cellCelpEnc;
+ static const ppu_static_module cellCrossController;
static const ppu_static_module cellDaisy;
static const ppu_static_module cellDmux;
static const ppu_static_module cellFiber;
@@ -172,6 +173,7 @@ public:
static const ppu_static_module cellSysutilAp;
static const ppu_static_module cellSysutilAvc;
static const ppu_static_module cellSysutilAvc2;
+ static const ppu_static_module cellSysutilNpEula;
static const ppu_static_module cellSysutilMisc;
static const ppu_static_module cellUsbd;
static const ppu_static_module cellUsbPspcm;
@@ -181,6 +183,7 @@ public:
static const ppu_static_module cellVideoUpload;
static const ppu_static_module cellVoice;
static const ppu_static_module cellVpost;
+ static const ppu_static_module libmedi;
static const ppu_static_module libmixer;
static const ppu_static_module libsnd3;
static const ppu_static_module libsynth2;
diff --git a/rpcs3/cellCrossController.cpp b/rpcs3/cellCrossController.cpp
new file mode 100644
index 0000000000..1533396e07
--- /dev/null
+++ b/rpcs3/cellCrossController.cpp
@@ -0,0 +1,17 @@
+#include "stdafx.h"
+#include "Emu/System.h"
+#include "Emu/Cell/PPUModule.h"
+
+logs::channel cellCrossController("cellCrossController", logs::level::notice);
+
+s32 cellCrossController_37E1F502() // LittleBigPlanet 2 and 3
+{
+ cellCrossController.todo("cellCrossController_37E1F502");
+ return CELL_OK;
+}
+
+
+DECLARE(ppu_module_manager::cellCrossController)("cellCrossController", []()
+{
+ REG_FNID(cellCrossController, 0x37E1F502, cellCrossController_37E1F502);
+});
diff --git a/rpcs3/cellSysutilNpEula.cpp b/rpcs3/cellSysutilNpEula.cpp
new file mode 100644
index 0000000000..b696f7fbb8
--- /dev/null
+++ b/rpcs3/cellSysutilNpEula.cpp
@@ -0,0 +1,31 @@
+#include "stdafx.h"
+#include "Emu/System.h"
+#include "Emu/Cell/PPUModule.h"
+
+logs::channel cellSysutilNpEula("cellSysutilNpEula", logs::level::notice);
+
+s32 cellSysutilNpEula_59D1629A() // Resistance 3, Uncharted 2
+{
+ cellSysutilNpEula.todo("cellSysutilNpEula_59D1629A");
+ return CELL_OK;
+}
+
+s32 cellSysutilNpEula_5EC05AD8() // Resistance 3
+{
+ cellSysutilNpEula.todo("cellSysutilNpEula_5EC05AD8");
+ return CELL_OK;
+}
+
+s32 cellSysutilNpEula_6599500D() // Resistance 3, Uncharted 2
+{
+ cellSysutilNpEula.todo("cellSysutilNpEula_6599500D");
+ return CELL_OK;
+}
+
+
+DECLARE(ppu_module_manager::cellSysutilNpEula)("cellSysutilNpEula", []()
+{
+ REG_FNID(cellSysutilNpEula, 0x59D1629A, cellSysutilNpEula_59D1629A);
+ REG_FNID(cellSysutilNpEula, 0x5EC05AD8, cellSysutilNpEula_5EC05AD8);
+ REG_FNID(cellSysutilNpEula, 0x6599500D, cellSysutilNpEula_6599500D);
+});
diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj
index 3814079edb..bbe6a7943e 100644
--- a/rpcs3/emucore.vcxproj
+++ b/rpcs3/emucore.vcxproj
@@ -144,6 +144,7 @@
+
@@ -207,6 +208,7 @@
+
@@ -217,6 +219,7 @@
+
diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters
index c4b011d2f7..840db6c849 100644
--- a/rpcs3/emucore.vcxproj.filters
+++ b/rpcs3/emucore.vcxproj.filters
@@ -329,6 +329,9 @@
Emu\Cell\Modules
+
+ Emu\Cell\Modules
+
Emu\Cell\Modules
@@ -518,6 +521,9 @@
Emu\Cell\Modules
+
+ Emu\Cell\Modules
+
Emu\Cell\Modules
@@ -548,6 +554,9 @@
Emu\Cell\Modules
+
+ Emu\Cell\Modules
+
Emu\Cell\Modules
diff --git a/rpcs3/libmedi.cpp b/rpcs3/libmedi.cpp
new file mode 100644
index 0000000000..be8701bc18
--- /dev/null
+++ b/rpcs3/libmedi.cpp
@@ -0,0 +1,80 @@
+#include "stdafx.h"
+#include "Emu/System.h"
+#include "Emu/Cell/PPUModule.h"
+
+logs::channel libmedi("libmedi", logs::level::notice);
+
+s32 cellMediatorCreateContext()
+{
+ libmedi.todo("cellMediatorCreateContext");
+ return CELL_OK;
+}
+
+s32 cellMediatorGetSignatureLength()
+{
+ libmedi.todo("cellMediatorGetSignatureLength");
+ return CELL_OK;
+}
+
+s32 cellMediatorGetUserInfo()
+{
+ libmedi.todo("cellMediatorGetUserInfo");
+ return CELL_OK;
+}
+
+s32 cellMediatorFlushCache()
+{
+ libmedi.todo("cellMediatorFlushCache");
+ return CELL_OK;
+}
+
+s32 cellMediatorSign()
+{
+ libmedi.todo("cellMediatorSign");
+ return CELL_OK;
+}
+
+s32 cellMediatorPostReports()
+{
+ libmedi.todo("cellMediatorPostReports");
+ return CELL_OK;
+}
+
+s32 cellMediatorGetProviderUrl()
+{
+ libmedi.todo("cellMediatorGetProviderUrl");
+ return CELL_OK;
+}
+
+s32 cellMediatorReliablePostReports()
+{
+ libmedi.todo("cellMediatorReliablePostReports");
+ return CELL_OK;
+}
+
+s32 cellMediatorCloseContext()
+{
+ libmedi.todo("cellMediatorCloseContext");
+ return CELL_OK;
+}
+
+s32 cellMediatorGetStatus()
+{
+ libmedi.todo("cellMediatorGetStatus");
+ return CELL_OK;
+}
+
+
+DECLARE(ppu_module_manager::libmedi)("libmedi", []()
+{
+ REG_FUNC(libmedi, cellMediatorCreateContext);
+ REG_FUNC(libmedi, cellMediatorGetSignatureLength);
+ REG_FUNC(libmedi, cellMediatorGetUserInfo);
+ REG_FUNC(libmedi, cellMediatorFlushCache);
+ REG_FUNC(libmedi, cellMediatorSign);
+ REG_FUNC(libmedi, cellMediatorPostReports);
+ REG_FUNC(libmedi, cellMediatorGetProviderUrl);
+ REG_FUNC(libmedi, cellMediatorReliablePostReports);
+ REG_FUNC(libmedi, cellMediatorCloseContext);
+ REG_FUNC(libmedi, cellMediatorGetStatus);
+});