Commit Graph

19446 Commits

Author SHA1 Message Date
Whatcookie
2d1be09180 SPU LLVM: Use TBL for AArch64 ROTQBY shuffles 2026-06-06 18:51:35 +02:00
Rad0van
d25972e196 JIT/AArch64: advertise +i8mm to the LLVM target machine
The PPU/SPU recompilers emit i8mm intrinsics (ummla/smmla, used by the
SPU GBB/GBH gather paths) gated on utils::has_i8mm(). The JIT's MAttrs
list mirrored dotprod/sha3/sve from HWCAP but never added i8mm, and the
resolved -mcpu on Apple silicon is the cortex-a78 fallback (no i8mm), so
the backend aborted with "Cannot select: intrinsic %llvm.aarch64.neon.ummla"
on every game. Mirror i8mm into MAttrs like the other features.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 52d121fee79cc569c9ac273852edd0e493ae51fc)
2026-06-06 18:34:38 +03:00
Megamouse
62d32ab45e Update SDL to 3.4.10 2026-06-06 01:23:02 +02:00
Megamouse
1ca995cc96 Update FAudio to 26.06 2026-06-06 01:23:02 +02:00
Malcolm
3164d44952 SPU LLVM: Use I8MM for GBH and GBB 2026-06-05 23:19:35 +02:00
Sanjay Govind
546f3082a2
usb_device: present wii instruments as PS3 instruments (#18796)
The instruments work exactly the same but the IDs are different, so
doing this allows them to work in games
2026-06-05 21:08:46 +02:00
Nico Franke
8d9abd396b
Make FFB direction encoding for emulated G27 configurable (#18776)
This adds a dropdown in the emulated G27 settings dialog ("Force
feedback direction encoding") with three options: Steering Axis
(default), Cartesian, Polar. Default is Steering Axis so existing users
see no change.

RPCS3 right now hardcodes SDL_HAPTIC_STEERING_AXIS for the spring and
constant-force effects it sends to the host wheel. That's SDL's
recommended encoding for wheels and works on the hardware the code was
written against. Some Windows DirectInput drivers (like my MOZA R3) do
not react to these affects at all. This now allows changing it to an
encoding that works.
2026-06-05 20:09:35 +02:00
Megamouse
8112c7cc19 Initialize rtmidi async
On my system this opening the settings takes 10 seconds on a cold boot.
Letting it initialize async during boot reduces this delay drastically.
2026-06-05 16:28:33 +02:00
kd-11
bf85a3fdd9 rsx/vk: Suppress the pool growth signal a bit
- Still allows for growth when needed but avoids creating larger sets unless there really is demand for it
2026-06-05 15:42:32 +02:00
kd-11
8e370c2cf1 rsx/vk: Implement auto-scaling of descriptor pool sizes 2026-06-05 15:42:32 +02:00
Malcolm
6349ea2ee9 SPU LLVM: SVE multiply optimizations
- Reduces most SPU multiply instructions to a single operation
- Add SVE length detection, only use SVE instructions for 128b sve for
  now
2026-06-05 14:58:24 +02:00
Whatcookie
2f2ac69d60 SPU LLVM: Idiomatic FSM implementation
- Compiles down to just 2 instructions on Neon, instead of falling back to scalar instructions
- Remove this workaround when LLVM fixes this issue upstream: https://github.com/llvm/llvm-project/issues/200325
2026-06-05 09:48:16 +02:00
Malcolm
4a92d96cf4 SPU LLVM: Use 128-bit SVE2 for FMS 2026-06-05 08:41:17 +02:00
Windsurf7
9a2243bfcb
Add "Enable Mouse-based Gyro" setting to I/O config (#18835)
This is a continuation of my work on #18113.

Addresses issue #18197.

Adds a new checkbox in the I/O settings tab that enables mouse-based
gyro emulation at game startup, making the feature more discoverable to
users.
2026-06-04 14:49:48 +02:00
digant73
97704e35e0 Remove duplicated code 2026-06-04 12:06:42 +03:00
Ani
40e9ee5af0 rpcs3_version: Bump to 0.0.41 2026-06-04 02:58:57 +02:00
Megamouse
3fa1241ac0 Initialize render_creator in headless mode 2026-06-02 21:49:09 +02:00
Megamouse
62747bb40d Set OpenGl as default renderer if vulkan is not supported 2026-06-02 21:49:09 +02:00
Megamouse
44b33f1962 Force renderer to default renderer if not supported 2026-06-02 21:49:09 +02:00
Megamouse
cc999d4210 Force disable some settings in headless mode 2026-06-02 21:49:09 +02:00
Megamouse
7c2bd56776 cellMusic: don't set current_track to umax on prev
There's no reason to do that and it might cause OOB access elsewhere.
2026-06-02 21:49:09 +02:00
Megamouse
5fc7450865 Fix uninitialized members in queue_submit_t 2026-06-02 16:10:21 +02:00
Megamouse
4ca0f0b11d cpu: fix prefetch list 2026-06-02 16:10:21 +02:00
Megamouse
66de4022b1 Fix ARCH_X64 define for hypervisor_context_t 2026-06-02 16:10:21 +02:00
Megamouse
2b9368abf5 Fix potential OOB access in try_to_enum_value 2026-06-02 16:10:21 +02:00
Megamouse
f8a5a6ad93 cellMusicDecode: fix track index on next if already on last track
Fixes an OOB exception
2026-06-01 08:58:52 +02:00
Megamouse
fa1aa9dcf3 cellMusicDecode: Fix track selection on prev/next track 2026-06-01 08:58:52 +02:00
Megamouse
883a6889e0 cellMusicDecode: Fix read position on prev/next track 2026-06-01 08:58:52 +02:00
Megamouse
1b5a895346 cellMusic: fix log level of "Comparing track" message 2026-06-01 08:58:52 +02:00
Megamouse
2187f8ae51 cellMusic: Fix OOB playlist access
current_track can be umax
2026-06-01 08:58:52 +02:00
Megamouse
17f1fc31bc cellMusic: fix occasional deadlock during auto-play in playlist mode 2026-06-01 08:58:52 +02:00
Elad
ecf77ecef0 Add type-safe idm::last_id() overload 2026-05-31 19:54:10 +03:00
Elad
db474c292f utils: Make utils::serial::operator T() explicit 2026-05-31 19:54:10 +03:00
Elad
b08e805020 PPU Analyser: Fix possible infinite loop
Because of possible overflow.
2026-05-31 19:54:10 +03:00
Megamouse
7b540cdb20 cellMusic: don't send status callback if we just keep playing automatically 2026-05-31 15:49:32 +02:00
Megamouse
059e70069d cellMusic: improve music list playback 2026-05-31 15:49:32 +02:00
Megamouse
9c719a5857 trophies: fix return value of GetUnlockedPlatinumID with invalid file 2026-05-31 15:49:32 +02:00
Megamouse
375eb21c07 Fix some format and logger typos 2026-05-31 15:49:32 +02:00
Megamouse
1bd246d2d3 Fix some gcc warnings 2026-05-30 23:58:51 +02:00
Megamouse
8c82ce8bed Fix slicing warning in tar_object::save_directory 2026-05-30 19:31:16 +02:00
Megamouse
eafa6a9a25 Gracefully exit after headless installation. 2026-05-30 19:31:16 +02:00
Megamouse
b9d027a76c Implement fake ps move external devices 2026-05-30 15:48:56 +02:00
Megamouse
0a45c84e16 Update OpenCv to 4.13.0 2026-05-30 13:14:25 +02:00
Megamouse
a88951baf3 Qt: clarify package installation during boot 2026-05-30 10:51:59 +02:00
Megamouse
66349fcb5b Qt: Move code to class 2026-05-30 10:51:59 +02:00
Megamouse
c6602f673b cli: allow headless installs 2026-05-30 10:51:59 +02:00
Megamouse
7c6b3dcdb9 Update ffmpeg to 8.1.1 2026-05-29 10:23:19 +02:00
Malcolm
c11979d124 Revert "SPU LLVM: Remove dead interpreter ret fallback"
This reverts commit 3058a71d72.
2026-05-29 02:24:05 +02:00
Malcolm
3058a71d72 SPU LLVM: Remove dead interpreter ret fallback 2026-05-28 14:10:51 +03:00
Arsh Kumar Singh
b41b10a031
RawSPU: bound ELF loads; PPUInterpreter: fix modulo 127->128 (#18797)
Two small fixes that stop the emulator from writing past buffer
boundaries.

RawSPU: when loading a program onto an SPU processor, it now checks that
the program actually fits in 256 KB before copying it. Before this, a
corrupted file could write past the buffer into random host memory.

PPUInterpreter: a one-character typo fix. A modulo operation used % 127
instead of % 128 when computing cross-boundary data sizes. This caused
reservation checks to compare the wrong number of bytes on every load
that crossed a cache line. This fix was pointed out by @AniLeo in the
spam PR #18795 (Discovered by Opus 4.7)


The PS3 hardware enforces these limits:
- Each SPU has exactly 256 KB of memory (from Cell Broadband Engine
Handbook v1.1)
- The PPE cache line is 128 bytes — all reservation logic uses this
granularity

Neither fix should affect the usual games. They only applying to
corrupted or malformed files. Will highly appreciate feedback and
suggestions for this PR

Tested on CI: CI passes on my fork 9 of 10 platforms (Mac Intel failed
downloading a dependency).

Title and Desc written by Codex
2026-05-27 15:27:58 +00:00