mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-22 18:53:28 +01:00
Fix Create PPU Cache
This commit is contained in:
parent
b0a346709e
commit
a560121775
@ -1682,7 +1682,7 @@ void ppu_unload_prx(const lv2_prx& prx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ppu_load_exec(const ppu_exec_object& elf, utils::serial* ar)
|
bool ppu_load_exec(const ppu_exec_object& elf, const std::string& elf_path, utils::serial* ar)
|
||||||
{
|
{
|
||||||
if (elf != elf_error::ok)
|
if (elf != elf_error::ok)
|
||||||
{
|
{
|
||||||
@ -2126,7 +2126,7 @@ bool ppu_load_exec(const ppu_exec_object& elf, utils::serial* ar)
|
|||||||
|
|
||||||
// Set path (TODO)
|
// Set path (TODO)
|
||||||
_main.name.clear();
|
_main.name.clear();
|
||||||
_main.path = vfs::get(Emu.argv[0]);
|
_main.path = elf_path;
|
||||||
|
|
||||||
_main.elf_entry = static_cast<u32>(elf.header.e_entry);
|
_main.elf_entry = static_cast<u32>(elf.header.e_entry);
|
||||||
_main.seg0_code_end = end;
|
_main.seg0_code_end = end;
|
||||||
|
@ -70,7 +70,7 @@ std::string g_cfg_defaults;
|
|||||||
|
|
||||||
atomic_t<u64> g_watchdog_hold_ctr{0};
|
atomic_t<u64> g_watchdog_hold_ctr{0};
|
||||||
|
|
||||||
extern bool ppu_load_exec(const ppu_exec_object&, utils::serial* = nullptr);
|
extern bool ppu_load_exec(const ppu_exec_object&, const std::string&, utils::serial* = nullptr);
|
||||||
extern void spu_load_exec(const spu_exec_object&);
|
extern void spu_load_exec(const spu_exec_object&);
|
||||||
extern void spu_load_rel_exec(const spu_rel_object&);
|
extern void spu_load_rel_exec(const spu_rel_object&);
|
||||||
extern void ppu_precompile(std::vector<std::string>& dir_queue, std::vector<ppu_module*>* loaded_prx);
|
extern void ppu_precompile(std::vector<std::string>& dir_queue, std::vector<ppu_module*>* loaded_prx);
|
||||||
@ -1383,7 +1383,7 @@ game_boot_result Emulator::Load(const std::string& title_id, bool is_disc_patch,
|
|||||||
|
|
||||||
const ppu_exec_object obj = src;
|
const ppu_exec_object obj = src;
|
||||||
|
|
||||||
if (obj == elf_error::ok && ppu_load_exec(obj))
|
if (obj == elf_error::ok && ppu_load_exec(obj, path))
|
||||||
{
|
{
|
||||||
g_fxo->get<main_ppu_module>().path = path;
|
g_fxo->get<main_ppu_module>().path = path;
|
||||||
}
|
}
|
||||||
@ -1960,7 +1960,7 @@ game_boot_result Emulator::Load(const std::string& title_id, bool is_disc_patch,
|
|||||||
|
|
||||||
g_fxo->init<main_ppu_module>();
|
g_fxo->init<main_ppu_module>();
|
||||||
|
|
||||||
if (ppu_load_exec(ppu_exec, DeserialManager()))
|
if (ppu_load_exec(ppu_exec, m_path, DeserialManager()))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
// Overlay (OVL) executable (only load it)
|
// Overlay (OVL) executable (only load it)
|
||||||
|
@ -1564,7 +1564,7 @@ bool game_list_frame::CreatePPUCache(const std::string& path, const std::string&
|
|||||||
Emu.GracefulShutdown(false);
|
Emu.GracefulShutdown(false);
|
||||||
Emu.SetForceBoot(true);
|
Emu.SetForceBoot(true);
|
||||||
|
|
||||||
if (const auto error = Emu.BootGame(path, serial, true); error != game_boot_result::no_errors)
|
if (const auto error = Emu.BootGame(fs::is_file(path) ? fs::get_parent_dir(path) : path, serial, true); error != game_boot_result::no_errors)
|
||||||
{
|
{
|
||||||
game_list_log.error("Could not create PPU Cache for %s, error: %s", path, error);
|
game_list_log.error("Could not create PPU Cache for %s, error: %s", path, error);
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user