Fix PPU SELF Precompilation

This commit is contained in:
Elad Ashkenazi 2023-08-14 17:00:46 +03:00
parent 0e23b89352
commit 968762c135
4 changed files with 6 additions and 5 deletions

View file

@ -2243,7 +2243,6 @@ bool ppu_load_exec(const ppu_exec_object& elf, bool virtual_load, const std::str
else else
{ {
g_ps3_process_info = old_process_info; g_ps3_process_info = old_process_info;
Emu.ConfigurePPUCache();
} }
if (!load_libs.empty()) if (!load_libs.empty())

View file

@ -11,6 +11,7 @@
#include "Emu/Memory/vm_locking.h" #include "Emu/Memory/vm_locking.h"
#include "Emu/RSX/Core/RSXReservationLock.hpp" #include "Emu/RSX/Core/RSXReservationLock.hpp"
#include "Emu/VFS.h" #include "Emu/VFS.h"
#include "Emu/vfs_config.h"
#include "Emu/system_progress.hpp" #include "Emu/system_progress.hpp"
#include "Emu/system_utils.hpp" #include "Emu/system_utils.hpp"
#include "PPUThread.h" #include "PPUThread.h"
@ -3574,7 +3575,7 @@ extern void ppu_precompile(std::vector<std::string>& dir_queue, std::vector<ppu_
break; break;
} }
if (std::memcpy(main_module.sha1, _main.sha1, sizeof(_main.sha1)) == 0) if (std::memcmp(main_module.sha1, _main.sha1, sizeof(_main.sha1)) == 0)
{ {
break; break;
} }
@ -3587,6 +3588,7 @@ extern void ppu_precompile(std::vector<std::string>& dir_queue, std::vector<ppu_
obj.clear(), src.close(); // Clear decrypted file and elf object memory obj.clear(), src.close(); // Clear decrypted file and elf object memory
_main.name = ' '; // Make ppu_finalize work _main.name = ' '; // Make ppu_finalize work
Emu.ConfigurePPUCache(!Emu.IsPathInsideDir(_main.path, g_cfg_vfs.get_dev_flash()));
ppu_initialize(_main); ppu_initialize(_main);
ppu_finalize(_main); ppu_finalize(_main);
_main = {}; _main = {};

View file

@ -3243,13 +3243,13 @@ s32 error_code::error_report(s32 result, const logs::message* channel, const cha
return result; return result;
} }
void Emulator::ConfigurePPUCache() const void Emulator::ConfigurePPUCache(bool with_title_id) const
{ {
auto& _main = g_fxo->get<main_ppu_module>(); auto& _main = g_fxo->get<main_ppu_module>();
_main.cache = rpcs3::utils::get_cache_dir(); _main.cache = rpcs3::utils::get_cache_dir();
if (!m_title_id.empty() && m_cat != "1P") if (with_title_id && !m_title_id.empty() && m_cat != "1P")
{ {
_main.cache += GetTitleID(); _main.cache += GetTitleID();
_main.cache += '/'; _main.cache += '/';

View file

@ -353,7 +353,7 @@ public:
std::string GetFormattedTitle(double fps) const; std::string GetFormattedTitle(double fps) const;
void ConfigurePPUCache() const; void ConfigurePPUCache(bool with_title_id = true) const;
std::set<std::string> GetGameDirs() const; std::set<std::string> GetGameDirs() const;
void AddGamesFromDir(const std::string& path); void AddGamesFromDir(const std::string& path);