PS3 emulator/debugger
Go to file
Vishrut Sachan 11050a7032
ISO: Add metadata cache to speed up game list scanning (#18546)
Every launch constructs a fresh iso_archive for each ISO game, which
calls iso_form_hierarchy() and walks the full directory tree. On top of
that, qt_utils opens a second iso_archive just for icon loading, so
every ISO game ends up doing two full directory tree walks on every
launch.
This adds a metadata cache keyed by ISO path + mtime stored under
fs::get_config_dir()/iso_cache/. Each entry stores the raw SFO binary,
resolved icon/movie/audio paths and raw icon bytes.

- On cache hit, iso_archive construction is skipped entirely for both
game list scanning and icon loading
- On cache miss archive is scanned as before and the result is persisted
to disk
- Cache is automatically invalidated when the ISO file's mtime changes

Tested with a decrypted PS3 disc ISO (God of War III):

- First launch writes cache files correctly to iso_cache/
- Second launch reads from cache with correct title and icon
- touch game.iso correctly invalidates the cache and triggers a rescan
2026-04-12 09:07:25 +00:00
.ci Update Qt to 6.11.0 2026-03-30 10:58:19 +02:00
.github Update docker to 1.11 2026-04-08 12:19:58 +02:00
3rdparty Update soundtouch to 2.4.1 2026-04-05 11:14:11 +02:00
bin Qt: Remove some unused code 2026-03-21 16:10:26 +01:00
buildfiles CMake: fix the case USE_SYSTEM_ZLIB=OFF and USE_SYSTEM_CURL=OFF 2026-03-29 14:45:53 +02:00
darwin/util MacOS: silence some warnings 2024-12-28 19:58:59 +01:00
rpcs3 ISO: Add metadata cache to speed up game list scanning (#18546) 2026-04-12 09:07:25 +00:00
Utilities LLVM: Add source location for bitcast error 2026-04-04 01:08:05 +03:00
.clang-format Disable AlignConsecutiveAssignments 2022-10-22 11:32:04 +02:00
.editorconfig Set default to utf-8 for MSVC 2020-12-06 15:30:12 +03:00
.gdbinit Add .gdbinit config file 2020-11-12 23:43:38 +03:00
.gitignore Add Zed config files to gitignore 2026-03-22 13:16:58 +01:00
.gitmodules Flatbuffers to Protobuf (#18082) 2026-01-24 09:37:47 +01:00
BUILDING.md Update Qt to 6.11.0 2026-03-30 10:58:19 +02:00
CMakeLists.txt CMake: remove option USE_MSVC_STATIC_CRT and clean up 2026-03-25 08:30:41 +01:00
CMakePresets.json Add opencv to cmake 2024-11-16 15:10:20 +01:00
git-clang-format
LICENSE
objdump.cpp Remove std::strcpy 2025-11-02 14:22:11 +02:00
pre-commit.readme
README.md [CI] FreeBSD build (#17293) 2025-06-12 09:33:40 +03:00
rpcs3.sln Flatbuffers to Protobuf (#18082) 2026-01-24 09:37:47 +01:00
usertype.dat

RPCS3

GitHub Actions RPCS3 Discord Server

The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.

You can find some basic information on our website. Game info is being populated on the Wiki. For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our forums and our Discord server.

Support Lead Developers Nekotekina and kd-11 on Patreon

Contributing

If you want to help the project but do not code, the best way to help out is to test games and make bug reports. See:

If you want to contribute as a developer, please take a look at the following pages:

You should also contact any of the developers in the forums or in the Discord server to learn more about the current state of the emulator.

Building

See BUILDING.md for more information about how to setup an environment to build RPCS3.

Running

Check our friendly quickstart guide to make sure your computer meets the minimum system requirements to run RPCS3.

Don't forget to have your graphics driver up to date and to install the Visual C++ Redistributable Packages for Visual Studio 2022 if you are a Windows user.

License

Most files are licensed under the terms of GNU GPL-2.0-only License; see LICENSE file for details. Some files may be licensed differently; check appropriate file headers for details.