loading of other modules via sceSysmoduleLoadModule

This commit is contained in:
georgemoralis 2024-09-27 10:46:05 +03:00
commit 01fcc627a0
2 changed files with 38 additions and 8 deletions

View file

@ -50,6 +50,34 @@ int PS4_SYSV_ABI sceSysmoduleLoadModule(OrbisSysModule id) {
case OrbisSysModule::ORBIS_SYSMODULE_NGS2: case OrbisSysModule::ORBIS_SYSMODULE_NGS2:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceNgs2.sprx", 0, NULL, Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceNgs2.sprx", 0, NULL,
0, NULL, NULL); 0, NULL, NULL);
break;;
case OrbisSysModule::ORBIS_SYSMODULE_ULT:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceUlt.sprx", 0, NULL, 0,
NULL, NULL);
break;
case OrbisSysModule::ORBIS_SYSMODULE_FIBER:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceFiber.sprx", 0, NULL,
0, NULL, NULL);
break;
case OrbisSysModule::ORBIS_SYSMODULE_JSON:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceJson.sprx", 0, NULL,
0, NULL, NULL);
break;
case OrbisSysModule::ORBIS_SYSMODULE_JSON2:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceJson2.sprx", 0, NULL,
0, NULL, NULL);
break;
case OrbisSysModule::ORBIS_SYSMODULE_FONT:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceFont.sprx", 0, NULL,
0, NULL, NULL);
break;
case OrbisSysModule::ORBIS_SYSMODULE_JPEG_ENC:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceJpegEnc.sprx", 0, NULL,
0, NULL, NULL);
break;
case OrbisSysModule::ORBIS_SYSMODULE_DISC_MAP:
Libraries::Kernel::sceKernelLoadStartModule("/system/common/lib/libSceDiscMap.sprx", 0,
NULL, 0, NULL, NULL);
break; break;
} }
return ORBIS_OK; return ORBIS_OK;

View file

@ -227,18 +227,18 @@ void Emulator::Run(const std::filesystem::path& file) {
void Emulator::LoadSystemModules(const std::filesystem::path& file) { void Emulator::LoadSystemModules(const std::filesystem::path& file) {
constexpr std::array<SysModules, 13> ModulesToLoad{ constexpr std::array<SysModules, 13> ModulesToLoad{
{{"libSceNgs2.sprx", &Libraries::Ngs2::RegisterlibSceNgs2, false}, {{"libSceNgs2.sprx", &Libraries::Ngs2::RegisterlibSceNgs2, false},
{"libSceFiber.sprx", nullptr, true}, {"libSceFiber.sprx", nullptr, false},
{"libSceUlt.sprx", nullptr, true}, {"libSceUlt.sprx", nullptr, false},
{"libSceJson.sprx", nullptr, true}, {"libSceJson.sprx", nullptr, false},
{"libSceJson2.sprx", nullptr, true}, {"libSceJson2.sprx", nullptr, false},
{"libSceLibcInternal.sprx", &Libraries::LibcInternal::RegisterlibSceLibcInternal, true}, {"libSceLibcInternal.sprx", &Libraries::LibcInternal::RegisterlibSceLibcInternal, true},
{"libSceDiscMap.sprx", &Libraries::DiscMap::RegisterlibSceDiscMap, true}, {"libSceDiscMap.sprx", &Libraries::DiscMap::RegisterlibSceDiscMap, false},
{"libSceRtc.sprx", &Libraries::Rtc::RegisterlibSceRtc, true}, {"libSceRtc.sprx", &Libraries::Rtc::RegisterlibSceRtc, true},
{"libSceJpegEnc.sprx", nullptr, true}, {"libSceJpegEnc.sprx", nullptr, false},
{"libSceFont.sprx", nullptr, true}, {"libSceFont.sprx", nullptr, false},
{"libSceRazorCpu.sprx", nullptr, true}, {"libSceRazorCpu.sprx", nullptr, true},
{"libSceCesCs.sprx", nullptr, true}, {"libSceCesCs.sprx", nullptr, true},
{"libSceRudp.sprx", nullptr, true}}}; {"libSceRudp.sprx", nullptr, false}}};
std::vector<std::filesystem::path> found_modules; std::vector<std::filesystem::path> found_modules;
const auto& sys_module_path = Common::FS::GetUserPath(Common::FS::PathType::SysModuleDir); const auto& sys_module_path = Common::FS::GetUserPath(Common::FS::PathType::SysModuleDir);
@ -255,6 +255,8 @@ void Emulator::LoadSystemModules(const std::filesystem::path& file) {
if (result == 0) { if (result == 0) {
continue; continue;
} }
} else {
continue;
} }
} }
if (init_func) { if (init_func) {