added sys_modules folder and ability to load system modules (currently we try ngs2)

This commit is contained in:
georgemoralis 2024-05-13 15:01:45 +03:00
parent 98316575fb
commit 882292f1ce
3 changed files with 11 additions and 0 deletions

View File

@ -36,6 +36,7 @@ static auto UserPaths = [] {
create_path(PathType::ScreenshotsDir, user_dir / SCREENSHOTS_DIR); create_path(PathType::ScreenshotsDir, user_dir / SCREENSHOTS_DIR);
create_path(PathType::ShaderDir, user_dir / SHADER_DIR); create_path(PathType::ShaderDir, user_dir / SHADER_DIR);
create_path(PathType::SaveDataDir, user_dir / SAVEDATA_DIR); create_path(PathType::SaveDataDir, user_dir / SAVEDATA_DIR);
create_path(PathType::SysModuleDir, user_dir / SYSMODULES_DIR);
return paths; return paths;
}(); }();

View File

@ -14,6 +14,7 @@ enum class PathType {
ScreenshotsDir, // Where screenshots are stored. ScreenshotsDir, // Where screenshots are stored.
ShaderDir, // Where shaders are stored. ShaderDir, // Where shaders are stored.
SaveDataDir, // Where guest save data is stored. SaveDataDir, // Where guest save data is stored.
SysModuleDir, // Where system modules are stored.
}; };
constexpr auto PORTABLE_DIR = "user"; constexpr auto PORTABLE_DIR = "user";
@ -23,6 +24,7 @@ constexpr auto LOG_DIR = "log";
constexpr auto SCREENSHOTS_DIR = "screenshots"; constexpr auto SCREENSHOTS_DIR = "screenshots";
constexpr auto SHADER_DIR = "shader"; constexpr auto SHADER_DIR = "shader";
constexpr auto SAVEDATA_DIR = "savedata"; constexpr auto SAVEDATA_DIR = "savedata";
constexpr auto SYSMODULES_DIR = "sys_modules";
// Filenames // Filenames
constexpr auto LOG_FILE = "shad_log.txt"; constexpr auto LOG_FILE = "shad_log.txt";

View File

@ -70,6 +70,14 @@ int main(int argc, char* argv[]) {
Libraries::InitHLELibs(&linker->getHLESymbols()); Libraries::InitHLELibs(&linker->getHLESymbols());
linker->LoadModule(path); linker->LoadModule(path);
// check if we have system modules to load
const auto& sys_module_path = Common::FS::GetUserPath(Common::FS::PathType::SysModuleDir);
for (const auto& entry : std::filesystem::directory_iterator(sys_module_path)) {
if (entry.path().filename() == "libSceNgs2.sprx") {
LOG_INFO(Loader, "Loading {}", entry.path().string().c_str());
linker->LoadModule(entry.path().string().c_str());
}
}
// Check if there is a libc.prx in sce_module folder // Check if there is a libc.prx in sce_module folder
bool found = false; bool found = false;
if (Config::isLleLibc()) { if (Config::isLleLibc()) {