rpcs3/rpcs3/Emu
elad335 047f71b434 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:56:54 +03:00
..
Audio static analysis: more const ref 2025-03-05 00:12:30 +01:00
Cell PPU/cellSpurs: MGS4: Fix cellSpursAddUrgentCommand race condition 2025-03-28 19:56:54 +03:00
CPU Coding style issues fixes 2025-03-10 21:09:27 +01:00
Io Update SDL to 3.2.8 2025-03-08 10:03:00 +01:00
Memory vm: removed c_page_size, it cannot be used by globals 2025-03-10 21:09:27 +01:00
NP Set PSN to disconnected when net status is disconnected 2025-03-25 21:46:38 +01:00
RSX overlays: hide friends list in home menu if rpcn is not configured 2025-03-27 18:08:30 +01:00
cache_utils.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cache_utils.hpp Move unspecific Emulator code out of System.cpp 2021-04-24 11:21:22 +03:00
CMakeLists.txt android stuff 2025-03-10 21:09:27 +01:00
config_mode.h Decrease some include madness 2023-04-26 21:37:44 +02:00
GameInfo.h Qt: Remove default "Unknown" in GameInfo struct 2023-12-03 01:05:28 +01:00
games_config.cpp Decrease log level of config file move error 2025-01-22 02:18:07 +01:00
games_config.h [TESTERS NEEDED] Improved contextual menu (#16038) 2024-09-14 21:51:42 +02:00
GDB.cpp cfg: remove string::get() 2025-03-10 21:09:27 +01:00
GDB.h Headers cleanup 2025-02-11 20:38:35 +01:00
IdManager.cpp Headers cleanup 2025-02-11 20:38:35 +01:00
IdManager.h use concepts instead of std::enable_if 2025-02-26 11:04:02 +02:00
IPC.h Headers cleanup 2025-02-11 20:38:35 +01:00
IPC_config.cpp windows: move config.yml and games.yml to /config/ 2025-01-16 21:33:33 +01:00
IPC_config.h Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
IPC_socket.cpp Start/Stop IPC when changing the config setting 2023-12-15 18:08:07 +01:00
IPC_socket.h Coding style issues fixes 2025-03-10 21:09:27 +01:00
localized_string.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
localized_string.h Remove BOM markers 2020-12-06 15:30:12 +03:00
localized_string_id.h overlays: add ability to hide hidden trophies 2025-03-02 23:02:22 +01:00
perf_meter.cpp Headers cleanup 2025-02-11 20:38:35 +01:00
perf_meter.hpp SPU: Inline and batch MFC list transfers 2022-10-09 19:27:46 +03:00
perf_monitor.cpp Headers cleanup 2025-02-11 20:38:35 +01:00
perf_monitor.hpp Headers cleanup 2025-02-11 20:38:35 +01:00
savestate_utils.cpp Headers cleanup 2025-02-11 20:38:35 +01:00
savestate_utils.hpp Qt: Add Recent savestates menu 2025-01-23 22:55:07 +01:00
scoped_progress_dialog.cpp Fix warning 2024-12-17 20:46:07 +01:00
System.cpp Loader: deny boot if the firmware is too old 2025-03-28 18:18:09 +03:00
System.h Loader: deny boot if the firmware is too old 2025-03-28 18:18:09 +03:00
system_config.cpp fix some warnings 2024-04-15 19:28:28 +02:00
system_config.h config: Set default Driver Wake-Up Delay to 0 2025-03-28 18:46:41 +03:00
system_config_types.cpp cellGem: implement real ps move handler 2024-11-16 09:45:31 +01:00
system_config_types.h RPCN v1.4 2025-02-12 15:00:50 +01:00
system_progress.cpp Show message while creating savestate in continuous mode 2025-01-06 15:49:09 +01:00
system_progress.hpp Show message while creating savestate in continuous mode 2025-01-06 15:49:09 +01:00
system_utils.cpp Loader: deny boot if the firmware is too old 2025-03-28 18:18:09 +03:00
system_utils.hpp Loader: deny boot if the firmware is too old 2025-03-28 18:18:09 +03:00
title.cpp Cleanup and move sysinfo.h -> util/sysinfo.hpp 2020-12-18 12:55:54 +03:00
title.h Remove whitespace 2023-02-15 08:58:02 +01:00
VFS.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
VFS.h Ensure HDD1 is never damaged or corrupted due to unexpected RPCS3/game termination 2024-01-11 20:24:53 +02:00
vfs_config.cpp Headers cleanup 2025-02-11 20:38:35 +01:00
vfs_config.h Deprecate HDD0/disc, make RPCS3/games movable (#13265) 2023-01-23 08:00:46 +01:00