RPCS3 is a multi-platform open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows, Linux, macOS and FreeBSD. The purpose of the project is to completely and accurately emulate the Sony PlayStation 3 Computer Entertainment System in its entirety with the power of open-source community and reverse engineering.
Our goal is to preserve the legacy of the PlayStation 3 hardware and its vast library by bringing it and its exclusives to the PC platform. We want to achieve this by targeting and supporting multiple operating systems as well as being compatible with a wide range of computer hardware with realistic requirements.
What input devices can I use with RPCS3?
We currently support keyboard / mouse inputs and native DualShock 3, DualShock 4 and DualSense controllers. We plan to add additional input methods in the future as we implement more meaningful features to the emulator.
What PlayStation 3 peripherals can I use with RPCS3?
We currently have support for the PlayStation Eye Camera, however PlayStation 3 Move controller support is still under development.
Can I just insert a PlayStation 3 game disc and start playing games?
In its current state, RPCS3 does not support reading game data directly from PlayStation 3 format discs. PlayStation 3 discs are formatted in a very special way that can only be read with an actual PlayStation 3 system, or a compatible Blu-ray drive from select manufacturers. For more information on what Blu-ray drives are capable of reading games, please refer to the Quickstart Guide.
Where do I get PlayStation 3 games and software?
Typically, you want to dump your own PlayStation 3 games and software from your own console. We believe that this is the most efficient and safest way to migrate your disc-based games and digital games from your console to your PC.
You can also dump games using select compatible Blu-ray drives. Not every Blu-ray drive will recognize PlayStation 3 games due to how data is formatted on the disc. For more information on what Blu-ray drives are capable of reading games, please refer to the Quickstart Guide.
RPCS3 uses the GNU General Public License Version 2 (June 1991). According to the license, you are welcome to use RPCS3 and its source code for any purpose, but distributing RPCS3 requires that the source code be released and attribution given. For more details on how the GNU General Public License system works, please refer to GNU.org
High Resolution Rendering
One of the most anticipated features has just been added to RPCS3! High resolution rendering allows users to play at resolutions far exceeding what the PS3 could handle. If you thought your favourite PS3 games were starting to look a bit dated, just wait until you get to experience them in up to 10k! Although, we doubt many users will have the setup necessary to benefit from 10k today, emulation is all about preserving for tomorrow.
Performance
Rendering a modern PC game in high resolutions such as 4k, while beautiful, is quite taxing on your hardware and there is often a massive hit in performance. However, since most of the workload for RPCS3 is on the CPU and GPU usage is low, there is a lot of untapped performance just waiting to be used. All processing is done CPU side, and as far as the GPU is concerned it is simply rendering 2006 era graphics (yes, the PS3 is 11 years old now). We're happy to report that anyone with a dedicated graphics card that has Vulkan support can expect identical performance at 4k.
Anisotropic Filtering (AF)
High resolution support wasn't the only thing that was added in this update! Another reason for such a massive upgrade in visual fidelity is having full 16x AF support. This greatly improves how textures can look, especially when viewed at an angle. Take a look at the below screenshots of Ni no Kuni as an example of the default AF vs forced 16x. The difference is especially noticeable on the ground inside the gate.
RPCS3 Compatibility List
These are the current compatible games that have been tested with the emulator. This list is subject to change frequently.
What's New
- Update submodules by @Megamouse in #17847
- Refactor camera code to support different camera handlers by @Megamouse in #17948
- [BSD] Use FreeBSD 14.3 vm by @qurious-pixel in #17947
- [TEST] vk: Disable VK_EXT_attachment_feedback_loop_layout support for adrenalin driver by @kd-11 in #17765
- Qt: deploy and apply Qt translations by @Megamouse in #17930
- macOs: Deploy Qt translations by @Megamouse in #17951
- Qt: Fix image dimensions passed to camera_video_sink::present by @Megamouse in #17955
- Add SDL camera handler by @Megamouse in #16849
- [macOS CI] Slim down builds (via static LLVM+FFmpeg), unify scripts by @schm1dtmac in #17954
- rsx/fp: Harden the FP decompiler a bit when bogus inputs are passed in. by @kd-11 in #17959
- [macOS Updater] Cleanup remnants of the old app bundle post-update by @schm1dtmac in #17962
- Downgrade SDL to 3.2.30 by @Megamouse in #17971
- Qt: try to fix drag and drop issues by @Megamouse in #17972
- USB: Fixed G27 crash during reinitialization by @Florin9doi in #17970
- Add multi-selection context menu by @digant73 in #17782
- Refactor game_list_frame by @Megamouse in #17975
- Qt: Fix game list multi-selection after Refresh by @Megamouse in #17976
- move disk usage dialog box to game list's context menu by @digant73 in #17977
- Windows Clang Qt translations by @qurious-pixel in #17981
- Update SDL to 3.4.0 by @Megamouse in #17974
- Qt: Add mulit selection to game grid by @Megamouse in #17982
- gl: Do not overwrite texture-cache image dimensions when updating format by @kd-11 in #17985
- Qt/input: fix pressure intensity button availability by @Megamouse in #17987
- Full decrypted ISO support by @Functionable in #17855
- Iso: clean up by @Megamouse in #17995
- Qt: Add more ISO menu options, fix loading of some ISO icons by @Megamouse in #18003
- ISO: optimizations by @Megamouse in #18004
- UI: colored ANSI logs by @ZephyrCodesStuff in #17993
- Update ffmpeg to 7.1.2 by @Megamouse in #17017
- Fixed SingStar previews by @Florin9doi in #18008
- sys_fs: Add PPU sleep by @elad335 in #18009
- Windows ARM build by @qurious-pixel in #17770
- Fixed more SingStar previews, this time for v05.00 by @Florin9doi in #18011
- cellVdec: impove error logging by @Megamouse in #18012
- VS: update googletest package by @Megamouse in #18016
- USB: Usbd support for microphones by @Florin9doi in #17994
- Setup to deploy aarch64 binaries by @hcorion in #18023
- rsx/zcull: Fix handling of report clear commands by @kd-11 in #18019
- rsx/nv3089: Fix image_in source line length estimation by @elad335 in #18025
- Emulation restart fixes by @Megamouse in #18022
- sceNp.cpp: Add suffix to TODO sceNpLookupUserProfileAsync by @valters-tomsons in #18020
- Fix windows aarch64 deploy by @hcorion in #18027
- Add Delete command to RPCN by @RipleyTom in #18028
- rsx/gcm: Fix cellGcmGetTimeStampLocation by @elad335 in #18034
- rsx/gcm: Do not rely on GCM IOMAP table in HLE gcmIoOffsetToAddress by @elad335 in #18038
- rsx: Fixup get_address() after #18038 by @elad335 in #18040
- Export AVVER for Release Title name by @qurious-pixel in #18042
- Qt: remove all shortcut files if requested by @Megamouse in #18006
- Prepend win64 on all Windows artifacts by @qurious-pixel in #18043
- cellVdec: Add MPEG4 profile 3 by @DaniElectra in #18045
- LLVM: enable FMA for ARM cpus unconditionally by @Whatcookie in #18057
- PPU LLVM: Use arm fmax/fmin for vmaxfp/vminfp by @Whatcookie in #18060
- utils: Scale busy_wait according to ARM timer frequency by @Whatcookie in #18055
- Fix iconv for Windows Clang by @qurious-pixel in #18063
- USB: Summonride updates by @Florin9doi in #18069
- Flatbuffers to Protobuf by @RipleyTom in #18082
- Migration bugfixes by @RipleyTom in #18099
- Qt: change UI labels based on device product type by @Rosalie241 in #18088
- change velocity for RB3 pro guitar when it stays the same twice in a row by @Skiski in #18064
- cellVdec: Document codecs and support all MPEG4 profile levels by @DaniElectra in #18049
- [macOS] Properly handle app bundle versioning (& minor CI fix) by @schm1dtmac in #17967
- CI: download dependency if the filename is the same but the checksum changed by @Megamouse in #18098
- rsx: Miscellaneous improvements by @kd-11 in #18102
- USB: Complete Summonride figures by @Florin9doi in #18104
- Qt: allow to disable logging to the log frame while it is hidden by @Megamouse in #18039
- vk: Fix VVL synchronization violations by @kd-11 in #18111
- Revert "vk: Disable VK_EXT_attachment_feedback_loop_layout support for adrenalin driver" by @kd-11 in #18114
- sceNpBasicLimitedSendMessage by @RipleyTom in #18107
- Implement sceNpMatching2GetSignalingOptParamLocal, sceNpMatching2GetMemoryInfo and sceNpMatching2GetCbQueueInfo by @RipleyTom in #18112
- hle: Register some missing Spurs/Font/SaveData/Fs/Sysmodule/sceNpTrophy OS functions by @AniLeo in #18119
- Fix for an emulation shutdown hang by @freakmaxi in #18121
- Add Message logging and fix validation by @RipleyTom in #18118
- Implement sceNpMatching2GetRoomMemberDataExternalList by @RipleyTom in #18126
- Fix generic_async_transaction_context thread handling by @RipleyTom in #18129
- Add mouse-based gyro emulation by @Windsurf7 in #18113
- rsx: Conservative MM flush during CPU handling of nv3089_image_in by @kd-11 in #18137
- vk: Fix NVIDIA crash when resizing the game window quickly by @kd-11 in #18140
- Qt: try to fix update downloader by @Megamouse in #18139
- Switch from FFmpeg av_opt_set_* to swr_alloc_set_opts2 by @trautamaki in #18138
- Log viewer improvements by @Megamouse in #18143
- Update dependencies by @Megamouse in #18144
- Fixed typos in rpcs3/System.cpp by @silviolet in #18146
- ARM: Use ISB instead of yield in place of x86 pause by @Whatcookie in #18151
- Improve add friend logging/dialogs by @RipleyTom in #18153
- rsx/sync: Do not allow short-circuiting behavior when releasing GCM labels via host queue by @kd-11 in #18159
- Guard async transactions against spurious wakeups by @RipleyTom in #18163
- input: fix input guard button offsets for closing native overlays by @Megamouse in #18168
- Qt: Fix ansi highlighter colors by @Megamouse in #18160
- ARM64: Detect some arm features and let LLVM know if they are or aren't present via attributes by @Whatcookie in #18133
- macOS: Check for hw.optional.neon as fallback by @AniLeo in #18176
- Microphone fixes by @RipleyTom in #18182
- Update docker and ccache by @hcorion in #18187
- [Build] Remove quotes protoc by @Niram7777 in #18180
- Update yaml-cpp to 0.9.0 by @Megamouse in #18184
- Updated Fedora build dependencies list by @paplant in #18147
- Update dependencies (7zip, cubeb, FAudio, glext, libpng) by @AniLeo in #18188
- rsx: Reimplement texel value remapping rules [1 of 3] by @kd-11 in #18170
- audio: Default buffering to 34ms by @AniLeo in #18189
- rsx: Reimplement texel value remapping rules [2 of 3] by @kd-11 in #18192
- rsx: Reimplement texel value remapping rules [3 of 3] by @kd-11 in #18202
- Fixorinos by @RipleyTom in #18209
- win/fs: check file handle with GetFileInformationByHandle when creating fs::file by @Megamouse in #18208
- Add safe wrapper for npid to string conversion by @RipleyTom in #18212
- rpcs3: Target c++23 by @AniLeo in #18210
- cellSaveData: fix "Your comparator is not a valid strict-weak ordering" by @oltolm in #18116
- rsx: Improvements to texel remapper logic by @kd-11 in #18216
- cellVdec: replace deprecated std::aligned_union_t with union by @oltolm in #18213
- Implemented sorted emit_data for YAML nodes by @silviolet in #18177
- Various sys_ fixes by @RipleyTom in #18230
- Home Menu improvements by @Megamouse in #18231
- rsx: Support texel remapping with hardware formats by @kd-11 in #18224
- openal: Update to 1.25.1 with up-to-date libpipewire by @AniLeo in #18183
- More sys_ fixes by @RipleyTom in #18239
- Final sys_ fixes by @RipleyTom in #18240
- sys_fs: Fixup op_read by @elad335 in #18241
- Update submodules by @Megamouse in #18233
- Clans: Tiny fixes by @Megamouse in #18242
- Qt: attempt to download up to 3 times on return_code -255 by @Megamouse in #18244
- NP code review by @RipleyTom in #18254
- config/ux: Disable double-click to fullscreen by default by @AniLeo in #18222
- Qt: properly handle cancel of pkg install dialog by @Megamouse in #18261
- rpcs3_version: Bump to 0.0.40 by @AniLeo in #18255
