PS3 emulator/debugger
Find a file
elad335 75e00d2098 PPU/cellSpurs: MGS4: Fix cellSpursAddUrgentCommand race condition
cellSpursAddUrgentCommand searches in 4 slots for an empty slot to put the command at.
At first, it seems to do so unordered.

Meanwhile, on SPU side, it expects an order between all the commands because it pops them it in FIFO manner.
Not keeping track of how many commands are queued in total.

After second observation of cellSpursAddUrgentCommand, something odd comes takes places here.
Usually, reservation loops are individual and are expected to be closed without any changes of the previous loop affected by the proceeding one.
But in this case, after a single failure, the entire operayion is reset, a loop of 4 reservation operations suddenly is reset completely.

This makes one wonder if it the HW expects sometjing else here, perhaps it caches the reservation internally here?
After some adjustments to LDARX and STDCX to cache the reservation between succeeding loops, Metal Gear Solid 4 no longer freezes!
2025-03-28 19:19:28 +03:00
.ci Update Qt to 6.8.3 2025-03-27 09:25:02 +01:00
.github Update Qt to 6.8.3 2025-03-27 09:25:02 +01:00
3rdparty Update libusb to 1.0.28 2025-03-20 23:52:10 +01:00
bin Qt: use white checkmarks in Darker Style 2025-03-17 23:11:31 +01:00
buildfiles VS/MSVC: Move LTCG and GL to CI only 2025-03-27 04:35:27 +01:00
darwin/util MacOS: silence some warnings 2024-12-28 19:58:59 +01:00
rpcs3 PPU/cellSpurs: MGS4: Fix cellSpursAddUrgentCommand race condition 2025-03-28 19:19:28 +03:00
Utilities patches: fix c_utf8 validation 2025-03-24 21:44:23 +01:00
.cirrus.yml Update Qt to 6.8.3 2025-03-27 09:25:02 +01: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 gitignore cleanup 2024-11-16 17:36:56 +01:00
.gitmodules Fix discord-rpc build when ASLR is enabled 2025-03-18 02:32:05 +01:00
azure-pipelines.yml Update Qt to 6.8.3 2025-03-27 09:25:02 +01:00
BUILDING.md Update Qt to 6.8.3 2025-03-27 09:25:02 +01:00
CMakeLists.txt Add memory breakpoints 2025-03-04 15:41:36 +01:00
CMakePresets.json Add opencv to cmake 2024-11-16 15:10:20 +01:00
git-clang-format Add a git pre-commit hook running clang-format 2016-08-27 15:40:41 +02:00
LICENSE Few bugs fixed and license file added 2014-02-13 11:33:07 +01:00
objdump.cpp Implement utils::memory_map_fd (partial) 2022-01-26 15:46:16 +03:00
pre-commit.readme Add a git pre-commit hook running clang-format 2016-08-27 15:40:41 +02:00
README.md Readme: Improve build tags 2025-03-12 20:26:06 +01:00
rpcs3.sln Fix discord-rpc build when ASLR is enabled 2025-03-18 02:32:05 +01:00
usertype.dat .clang-format added 2016-08-12 14:32:57 +03:00

RPCS3

Azure Build Status Cirrus CI - Base Branch Build Status 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 2019 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.