From ae7333031453d089e598882ba5198cb28bf8165a Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 29 Jul 2015 18:39:34 +0300 Subject: [PATCH] cellJpgEnc, cellKey2char, cellSheap added ModuleManager cleanup --- rpcs3/Emu/SysCalls/ModuleManager.cpp | 73 ++++++++++++++------- rpcs3/Emu/SysCalls/ModuleManager.h | 9 +-- rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp | 24 ++++++- rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp | 24 ++++++- rpcs3/Emu/SysCalls/Modules/cellJpgEnc.cpp | 31 +++++---- rpcs3/Emu/SysCalls/Modules/cellKey2char.cpp | 21 +++--- rpcs3/Emu/SysCalls/Modules/cellSheap.cpp | 48 +++++++------- rpcs3/emucore.vcxproj.filters | 18 ++--- 8 files changed, 154 insertions(+), 94 deletions(-) diff --git a/rpcs3/Emu/SysCalls/ModuleManager.cpp b/rpcs3/Emu/SysCalls/ModuleManager.cpp index a75e6db1ab..0026d0a912 100644 --- a/rpcs3/Emu/SysCalls/ModuleManager.cpp +++ b/rpcs3/Emu/SysCalls/ModuleManager.cpp @@ -24,6 +24,8 @@ extern Module cellHttp; extern Module cellHttps; extern Module cellHttpUtil; extern Module cellJpgDec; +extern Module cellJpgEnc; +extern Module cellKey2char; extern Module cellL10n; extern Module cellMic; extern Module cellNetCtl; @@ -38,6 +40,7 @@ extern Module cellSaveData; extern Module cellMinisSaveData; extern Module cellScreenshot; extern Module cellSearch; +extern Module cellSheap; extern Module cellSpurs; extern Module cellSpursJq; extern Module cellSsl; @@ -69,11 +72,26 @@ extern Module sys_lv2dbg; struct ModuleInfo { - s32 id; //-1 is used by module with only name - const char* name; - Module* module; + const s32 id; // -1 if the module doesn't have corresponding CELL_SYSMODULE_* id + const char* const name; + Module* const module; + + explicit operator bool() const + { + return module != nullptr; + } + + operator Module*() const + { + return module; + } + + Module* operator ->() const + { + return module; + } } -static const g_module_list[] = +const g_module_list[] = { { 0x0000, "sys_net", &sys_net }, { 0x0001, "cellHttp", &cellHttp }, @@ -87,7 +105,7 @@ static const g_module_list[] = { 0x0009, "cellRtc", &cellRtc }, { 0x000a, "cellSpurs", &cellSpurs }, { 0x000b, "cellOvis", &cellOvis }, - { 0x000c, "cellSheap", nullptr }, + { 0x000c, "cellSheap", &cellSheap }, { 0x000d, "cellSync", &cellSync }, { 0x000e, "sys_fs", &cellFs }, { 0x000f, "cellJpgDec", &cellJpgDec }, @@ -108,7 +126,7 @@ static const g_module_list[] = { 0x001e, "cellL10n", &cellL10n }, { 0x001f, "cellResc", &cellResc }, { 0x0020, "cellDaisy", nullptr }, - { 0x0021, "cellKey2char", nullptr }, + { 0x0021, "cellKey2char", &cellKey2char }, { 0x0022, "cellMic", &cellMic }, { 0x0023, "cellCamera", &cellCamera }, { 0x0024, "cellVdecMpeg2", nullptr }, @@ -132,7 +150,7 @@ static const g_module_list[] = { 0x003a, "sceNpClans", &sceNpClans }, { 0x003b, "cellSysutilOskExt", nullptr }, { 0x003c, "cellVdecDivx", nullptr }, - { 0x003d, "cellJpgEnc", nullptr }, + { 0x003d, "cellJpgEnc", &cellJpgEnc }, { 0x003e, "cellGame", &cellGame }, { 0x003f, "cellBGDLUtility", &cellBGDL }, { 0x0040, "cellFreetypeTT", nullptr }, @@ -185,53 +203,58 @@ static const g_module_list[] = void ModuleManager::Init() { - if (initialized) + if (m_init) { Close(); } clear_ppu_functions(); - for (auto& m : g_module_list) + for (auto& module : g_module_list) { - if (m.module) + if (module) { - m.module->Init(); + module->Init(); } } - initialized = true; + m_init = true; } ModuleManager::ModuleManager() - : initialized(false) { } ModuleManager::~ModuleManager() { + Close(); } void ModuleManager::Close() { - for (auto& m : g_module_list) + if (!m_init) { - if (m.module && m.module->on_stop) + return; + } + + for (auto& module : g_module_list) + { + if (module && module->on_stop) { - m.module->on_stop(); + module->on_stop(); } } - initialized = false; + m_init = false; } Module* ModuleManager::GetModuleByName(const char* name) { - for (auto& m : g_module_list) + for (auto& module : g_module_list) { - if (!strcmp(name, m.name)) + if (!strcmp(name, module.name)) { - return m.module; + return module; } } @@ -240,11 +263,11 @@ Module* ModuleManager::GetModuleByName(const char* name) Module* ModuleManager::GetModuleById(u16 id) { - for (auto& m : g_module_list) + for (auto& module : g_module_list) { - if (m.id == id) + if (module.id == id) { - return m.module; + return module; } } @@ -253,9 +276,9 @@ Module* ModuleManager::GetModuleById(u16 id) bool ModuleManager::CheckModuleId(u16 id) { - for (auto& m : g_module_list) + for (auto& module : g_module_list) { - if (m.id == id) + if (module.id == id) { return true; } diff --git a/rpcs3/Emu/SysCalls/ModuleManager.h b/rpcs3/Emu/SysCalls/ModuleManager.h index 68dc46444d..45a4c7d69c 100644 --- a/rpcs3/Emu/SysCalls/ModuleManager.h +++ b/rpcs3/Emu/SysCalls/ModuleManager.h @@ -4,7 +4,7 @@ class Module; class ModuleManager { - bool initialized; + bool m_init = false; public: ModuleManager(); @@ -12,7 +12,8 @@ public: void Init(); void Close(); - Module* GetModuleByName(const char* name); - Module* GetModuleById(u16 id); - bool CheckModuleId(u16 id); + + static Module* GetModuleByName(const char* name); + static Module* GetModuleById(u16 id); + static bool CheckModuleId(u16 id); }; diff --git a/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp b/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp index 1e332cdab0..cea04c4bf9 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp @@ -74,6 +74,11 @@ s32 cellGifDecOpen( return CELL_OK; } +s32 cellGifDecExtOpen() +{ + throw EXCEPTION(""); +} + s32 cellGifDecReadHeader( CellGifDecMainHandle mainHandle, CellGifDecSubHandle subHandle, @@ -131,6 +136,11 @@ s32 cellGifDecReadHeader( return CELL_OK; } +s32 cellGifDecExtReadHeader() +{ + throw EXCEPTION(""); +} + s32 cellGifDecSetParameter( CellGifDecMainHandle mainHandle, CellGifDecSubHandle subHandle, @@ -167,6 +177,11 @@ s32 cellGifDecSetParameter( return CELL_OK; } +s32 cellGifDecExtSetParameter() +{ + throw EXCEPTION(""); +} + s32 cellGifDecDecodeData( CellGifDecMainHandle mainHandle, CellGifDecSubHandle subHandle, @@ -293,6 +308,11 @@ s32 cellGifDecDecodeData( return CELL_OK; } +s32 cellGifDecExtDecodeData() +{ + throw EXCEPTION(""); +} + s32 cellGifDecClose(CellGifDecMainHandle mainHandle, CellGifDecSubHandle subHandle) { cellGifDec.Warning("cellGifDecClose(mainHandle=0x%x, subHandle=0x%x)", mainHandle, subHandle); @@ -327,8 +347,8 @@ Module cellGifDec("cellGifDec", []() REG_FUNC(cellGifDec, cellGifDecClose); REG_FUNC(cellGifDec, cellGifDecDestroy); - /*REG_FUNC(cellGifDec, cellGifDecExtOpen); + REG_FUNC(cellGifDec, cellGifDecExtOpen); REG_FUNC(cellGifDec, cellGifDecExtReadHeader); REG_FUNC(cellGifDec, cellGifDecExtSetParameter); - REG_FUNC(cellGifDec, cellGifDecExtDecodeData);*/ + REG_FUNC(cellGifDec, cellGifDecExtDecodeData); }); diff --git a/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp b/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp index 0548d82ac0..6566b4a8e0 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp @@ -68,6 +68,11 @@ s32 cellJpgDecOpen(u32 mainHandle, vm::ptr subHandle, vm::ptr return CELL_OK; } +s32 cellJpgDecExtReadHeader() +{ + throw EXCEPTION(""); +} + s32 cellJpgDecDecodeData(u32 mainHandle, u32 subHandle, vm::ptr data, vm::cptr dataCtrlParam, vm::ptr dataOutInfo) { cellJpgDec.Log("cellJpgDecDecodeData(mainHandle=0x%x, subHandle=0x%x, data=*0x%x, dataCtrlParam=*0x%x, dataOutInfo=*0x%x)", mainHandle, subHandle, data, dataCtrlParam, dataOutInfo); @@ -293,6 +303,11 @@ s32 cellJpgDecDecodeData(u32 mainHandle, u32 subHandle, vm::ptr data, vm::cp return CELL_OK; } +s32 cellJpgDecExtDecodeData() +{ + throw EXCEPTION(""); +} + s32 cellJpgDecSetParameter(u32 mainHandle, u32 subHandle, vm::cptr inParam, vm::ptr outParam) { cellJpgDec.Log("cellJpgDecSetParameter(mainHandle=0x%x, subHandle=0x%x, inParam=*0x%x, outParam=*0x%x)", mainHandle, subHandle, inParam, outParam); @@ -338,6 +353,11 @@ s32 cellJpgDecSetParameter(u32 mainHandle, u32 subHandle, vm::cptr Emu\SysCalls\currently_unused - - Emu\SysCalls\currently_unused - - - Emu\SysCalls\currently_unused - Emu\SysCalls\currently_unused @@ -446,9 +440,6 @@ Emu\SysCalls\currently_unused - - Emu\SysCalls\currently_unused - Emu\SysCalls\currently_unused @@ -887,6 +878,15 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules +