diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.cpp b/rpcs3/Emu/Cell/lv2/sys_fs.cpp index 4f8039861c..72fa688835 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_fs.cpp @@ -282,6 +282,29 @@ error_code sys_fs_open(vm::cptr path, s32 flags, vm::ptr fd, s32 mode fs::file file(local_path, open_mode); + if (!file && open_mode == fs::read && fs::g_tls_error == fs::error::noent) + { + // Try to gather split file (TODO) + std::vector fragments; + + for (u32 i = 66600; i <= 66699; i++) + { + if (fs::file fragment{fmt::format("%s.%u", local_path, i)}) + { + fragments.emplace_back(std::move(fragment)); + } + else + { + break; + } + } + + if (!fragments.empty()) + { + file = fs::make_gather(std::move(fragments)); + } + } + if (!file) { if (test(open_mode & fs::excl) && fs::g_tls_error == fs::error::exist)