From 7ae2a8840b55ea25d404ce2b9d500dd38e0b4504 Mon Sep 17 00:00:00 2001 From: Ani Date: Sat, 25 Mar 2017 14:25:24 +0000 Subject: [PATCH] Register HLE libmedi, cellCrossController, cellSysutilNpEula Motorstorm Apocalypse calls for cellMediatorGetSignatureLength, cellMediatorCreateContext, cellMediatorGetProviderUrl, cellMediatorGetStatus LittleBigPlanet 2 and 3 may call for 0x37E1F502 (unknown name) on cellCrossController Resistance 3 and Uncharted 2 may call for the functions registered on cellSysutilNpEula --- rpcs3/Emu/Cell/PPUModule.cpp | 6 +++ rpcs3/Emu/Cell/PPUModule.h | 3 ++ rpcs3/cellCrossController.cpp | 17 ++++++++ rpcs3/cellSysutilNpEula.cpp | 31 ++++++++++++++ rpcs3/emucore.vcxproj | 3 ++ rpcs3/emucore.vcxproj.filters | 9 ++++ rpcs3/libmedi.cpp | 80 +++++++++++++++++++++++++++++++++++ 7 files changed, 149 insertions(+) create mode 100644 rpcs3/cellCrossController.cpp create mode 100644 rpcs3/cellSysutilNpEula.cpp create mode 100644 rpcs3/libmedi.cpp 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); +});